diff --git a/Package.swift b/Package.swift index cc181860b54..2939f5c3331 100644 --- a/Package.swift +++ b/Package.swift @@ -184,7 +184,7 @@ func addProtocolTests() { // MARK: - Generated addDependencies( - clientRuntimeVersion: "0.34.0", + clientRuntimeVersion: "0.35.0", crtVersion: "0.17.0" ) @@ -379,6 +379,7 @@ let serviceTargets: [String] = [ "AWSKinesisVideoWebRTCStorage", "AWSLakeFormation", "AWSLambda", + "AWSLaunchWizard", "AWSLexModelBuildingService", "AWSLexModelsV2", "AWSLexRuntimeService", diff --git a/Package.version b/Package.version index 065d469bdaa..f0e1a438f2b 100644 --- a/Package.version +++ b/Package.version @@ -1 +1 @@ -0.30.0 \ No newline at end of file +0.31.0 \ No newline at end of file diff --git a/Sources/Services/AWSAmplify/AmplifyClient.swift b/Sources/Services/AWSAmplify/AmplifyClient.swift index 10a2fee9bb4..70e09a611fa 100644 --- a/Sources/Services/AWSAmplify/AmplifyClient.swift +++ b/Sources/Services/AWSAmplify/AmplifyClient.swift @@ -212,7 +212,7 @@ extension AmplifyClient: AmplifyClientProtocol { return result } - /// Creates a deployment for a manually deployed Amplify app. Manually deployed apps are not connected to a repository. + /// Creates a deployment for a manually deployed Amplify app. Manually deployed apps are not connected to a repository. The maximum duration between the CreateDeployment call and the StartDeployment call cannot exceed 8 hours. If the duration exceeds 8 hours, the StartDeployment call and the associated Job will fail. /// /// - Parameter CreateDeploymentInput : The request structure for the create a new deployment request. /// @@ -674,7 +674,7 @@ extension AmplifyClient: AmplifyClientProtocol { return result } - /// Returns an existing Amplify app by appID. + /// Returns an existing Amplify app specified by an app ID. /// /// - Parameter GetAppInput : The request structure for the get app request. /// @@ -1339,7 +1339,7 @@ extension AmplifyClient: AmplifyClientProtocol { return result } - /// Starts a deployment for a manually deployed app. Manually deployed apps are not connected to a repository. + /// Starts a deployment for a manually deployed app. Manually deployed apps are not connected to a repository. The maximum duration between the CreateDeployment call and the StartDeployment call cannot exceed 8 hours. If the duration exceeds 8 hours, the StartDeployment call and the associated Job will fail. /// /// - Parameter StartDeploymentInput : The request structure for the start a deployment request. /// diff --git a/Sources/Services/AWSAmplify/AmplifyClientProtocol.swift b/Sources/Services/AWSAmplify/AmplifyClientProtocol.swift index 040ae30b12c..354a34d7407 100644 --- a/Sources/Services/AWSAmplify/AmplifyClientProtocol.swift +++ b/Sources/Services/AWSAmplify/AmplifyClientProtocol.swift @@ -2,7 +2,7 @@ import ClientRuntime -/// Amplify enables developers to develop and deploy cloud-powered mobile and web apps. The Amplify Console provides a continuous delivery and hosting service for web applications. For more information, see the [Amplify Console User Guide](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html). The Amplify Framework is a comprehensive set of SDKs, libraries, tools, and documentation for client app development. For more information, see the [Amplify Framework.](https://docs.amplify.aws/) +/// Amplify enables developers to develop and deploy cloud-powered mobile and web apps. Amplify Hosting provides a continuous delivery and hosting service for web applications. For more information, see the [Amplify Hosting User Guide](https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html). The Amplify Framework is a comprehensive set of SDKs, libraries, tools, and documentation for client app development. For more information, see the [Amplify Framework.](https://docs.amplify.aws/) public protocol AmplifyClientProtocol { /// Creates a new Amplify app. /// @@ -50,7 +50,7 @@ public protocol AmplifyClientProtocol { /// - `NotFoundException` : An entity was not found during an operation. /// - `UnauthorizedException` : An operation failed due to a lack of access. func createBranch(input: CreateBranchInput) async throws -> CreateBranchOutput - /// Creates a deployment for a manually deployed Amplify app. Manually deployed apps are not connected to a repository. + /// Creates a deployment for a manually deployed Amplify app. Manually deployed apps are not connected to a repository. The maximum duration between the CreateDeployment call and the StartDeployment call cannot exceed 8 hours. If the duration exceeds 8 hours, the StartDeployment call and the associated Job will fail. /// /// - Parameter CreateDeploymentInput : The request structure for the create a new deployment request. /// @@ -200,7 +200,7 @@ public protocol AmplifyClientProtocol { /// - `NotFoundException` : An entity was not found during an operation. /// - `UnauthorizedException` : An operation failed due to a lack of access. func generateAccessLogs(input: GenerateAccessLogsInput) async throws -> GenerateAccessLogsOutput - /// Returns an existing Amplify app by appID. + /// Returns an existing Amplify app specified by an app ID. /// /// - Parameter GetAppInput : The request structure for the get app request. /// @@ -408,7 +408,7 @@ public protocol AmplifyClientProtocol { /// - `LimitExceededException` : A resource could not be created because service quotas were exceeded. /// - `UnauthorizedException` : An operation failed due to a lack of access. func listWebhooks(input: ListWebhooksInput) async throws -> ListWebhooksOutput - /// Starts a deployment for a manually deployed app. Manually deployed apps are not connected to a repository. + /// Starts a deployment for a manually deployed app. Manually deployed apps are not connected to a repository. The maximum duration between the CreateDeployment call and the StartDeployment call cannot exceed 8 hours. If the duration exceeds 8 hours, the StartDeployment call and the associated Job will fail. /// /// - Parameter StartDeploymentInput : The request structure for the start a deployment request. /// diff --git a/Sources/Services/AWSAmplify/Paginators.swift b/Sources/Services/AWSAmplify/Paginators.swift new file mode 100644 index 00000000000..527edf32d81 --- /dev/null +++ b/Sources/Services/AWSAmplify/Paginators.swift @@ -0,0 +1,128 @@ +// Code generated by smithy-swift-codegen. DO NOT EDIT! + +import ClientRuntime + +extension AmplifyClient { + /// Paginate over `[ListAppsOutput]` results. + /// + /// When this operation is called, an `AsyncSequence` is created. AsyncSequences are lazy so no service + /// calls are made until the sequence is iterated over. This also means there is no guarantee that the request is valid + /// until then. If there are errors in your request, you will see the failures only after you start iterating. + /// - Parameters: + /// - input: A `[ListAppsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListAppsOutput` + public func listAppsPaginated(input: ListAppsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \ListAppsInput.nextToken, outputKey: \ListAppsOutput.nextToken, paginationFunction: self.listApps(input:)) + } +} + +extension ListAppsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListAppsInput { + return ListAppsInput( + maxResults: self.maxResults, + nextToken: token + )} +} + +extension PaginatorSequence where Input == ListAppsInput, Output == ListAppsOutput { + /// This paginator transforms the `AsyncSequence` returned by `listAppsPaginated` + /// to access the nested member `[AmplifyClientTypes.App]` + /// - Returns: `[AmplifyClientTypes.App]` + public func apps() async throws -> [AmplifyClientTypes.App] { + return try await self.asyncCompactMap { item in item.apps } + } +} +extension AmplifyClient { + /// Paginate over `[ListBranchesOutput]` results. + /// + /// When this operation is called, an `AsyncSequence` is created. AsyncSequences are lazy so no service + /// calls are made until the sequence is iterated over. This also means there is no guarantee that the request is valid + /// until then. If there are errors in your request, you will see the failures only after you start iterating. + /// - Parameters: + /// - input: A `[ListBranchesInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListBranchesOutput` + public func listBranchesPaginated(input: ListBranchesInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \ListBranchesInput.nextToken, outputKey: \ListBranchesOutput.nextToken, paginationFunction: self.listBranches(input:)) + } +} + +extension ListBranchesInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListBranchesInput { + return ListBranchesInput( + appId: self.appId, + maxResults: self.maxResults, + nextToken: token + )} +} + +extension PaginatorSequence where Input == ListBranchesInput, Output == ListBranchesOutput { + /// This paginator transforms the `AsyncSequence` returned by `listBranchesPaginated` + /// to access the nested member `[AmplifyClientTypes.Branch]` + /// - Returns: `[AmplifyClientTypes.Branch]` + public func branches() async throws -> [AmplifyClientTypes.Branch] { + return try await self.asyncCompactMap { item in item.branches } + } +} +extension AmplifyClient { + /// Paginate over `[ListDomainAssociationsOutput]` results. + /// + /// When this operation is called, an `AsyncSequence` is created. AsyncSequences are lazy so no service + /// calls are made until the sequence is iterated over. This also means there is no guarantee that the request is valid + /// until then. If there are errors in your request, you will see the failures only after you start iterating. + /// - Parameters: + /// - input: A `[ListDomainAssociationsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListDomainAssociationsOutput` + public func listDomainAssociationsPaginated(input: ListDomainAssociationsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \ListDomainAssociationsInput.nextToken, outputKey: \ListDomainAssociationsOutput.nextToken, paginationFunction: self.listDomainAssociations(input:)) + } +} + +extension ListDomainAssociationsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListDomainAssociationsInput { + return ListDomainAssociationsInput( + appId: self.appId, + maxResults: self.maxResults, + nextToken: token + )} +} + +extension PaginatorSequence where Input == ListDomainAssociationsInput, Output == ListDomainAssociationsOutput { + /// This paginator transforms the `AsyncSequence` returned by `listDomainAssociationsPaginated` + /// to access the nested member `[AmplifyClientTypes.DomainAssociation]` + /// - Returns: `[AmplifyClientTypes.DomainAssociation]` + public func domainAssociations() async throws -> [AmplifyClientTypes.DomainAssociation] { + return try await self.asyncCompactMap { item in item.domainAssociations } + } +} +extension AmplifyClient { + /// Paginate over `[ListJobsOutput]` results. + /// + /// When this operation is called, an `AsyncSequence` is created. AsyncSequences are lazy so no service + /// calls are made until the sequence is iterated over. This also means there is no guarantee that the request is valid + /// until then. If there are errors in your request, you will see the failures only after you start iterating. + /// - Parameters: + /// - input: A `[ListJobsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListJobsOutput` + public func listJobsPaginated(input: ListJobsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \ListJobsInput.nextToken, outputKey: \ListJobsOutput.nextToken, paginationFunction: self.listJobs(input:)) + } +} + +extension ListJobsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListJobsInput { + return ListJobsInput( + appId: self.appId, + branchName: self.branchName, + maxResults: self.maxResults, + nextToken: token + )} +} + +extension PaginatorSequence where Input == ListJobsInput, Output == ListJobsOutput { + /// This paginator transforms the `AsyncSequence` returned by `listJobsPaginated` + /// to access the nested member `[AmplifyClientTypes.JobSummary]` + /// - Returns: `[AmplifyClientTypes.JobSummary]` + public func jobSummaries() async throws -> [AmplifyClientTypes.JobSummary] { + return try await self.asyncCompactMap { item in item.jobSummaries } + } +} diff --git a/Sources/Services/AWSAmplify/models/Models.swift b/Sources/Services/AWSAmplify/models/Models.swift index 8bc028c6fea..804d915408c 100644 --- a/Sources/Services/AWSAmplify/models/Models.swift +++ b/Sources/Services/AWSAmplify/models/Models.swift @@ -250,9 +250,9 @@ extension AmplifyClientTypes { /// Enables the auto-building of branches for the Amplify app. /// This member is required. public var enableBranchAutoBuild: Swift.Bool? - /// Automatically disconnect a branch in the Amplify Console when you delete a branch from your Git repository. + /// Automatically disconnect a branch in the Amplify console when you delete a branch from your Git repository. public var enableBranchAutoDeletion: Swift.Bool? - /// The environment variables for the Amplify app. + /// The environment variables for the Amplify app. For a list of the environment variables that are accessible to Amplify by default, see [Amplify Environment variables](https://docs.aws.amazon.com/amplify/latest/userguide/amplify-console-environment-variables.html) in the Amplify Hosting User Guide. /// This member is required. public var environmentVariables: [Swift.String:Swift.String]? /// The AWS Identity and Access Management (IAM) service role for the Amazon Resource Name (ARN) of the Amplify app. @@ -521,6 +521,41 @@ extension AmplifyClientTypes { } +extension AmplifyClientTypes.Backend: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case stackArn + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let stackArn = self.stackArn { + try encodeContainer.encode(stackArn, forKey: .stackArn) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let stackArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .stackArn) + stackArn = stackArnDecoded + } +} + +extension AmplifyClientTypes { + /// Describes the backend properties associated with an Amplify Branch. + public struct Backend: Swift.Equatable { + /// The Amazon Resource Name (ARN) for the CloudFormation stack. + public var stackArn: Swift.String? + + public init( + stackArn: Swift.String? = nil + ) + { + self.stackArn = stackArn + } + } + +} + extension AmplifyClientTypes.BackendEnvironment: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case backendEnvironmentArn @@ -669,6 +704,7 @@ extension AmplifyClientTypes.Branch: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case activeJobId case associatedResources + case backend case backendEnvironmentArn case basicAuthCredentials case branchArn @@ -707,6 +743,9 @@ extension AmplifyClientTypes.Branch: Swift.Codable { try associatedResourcesContainer.encode(associatedresource0) } } + if let backend = self.backend { + try encodeContainer.encode(backend, forKey: .backend) + } if let backendEnvironmentArn = self.backendEnvironmentArn { try encodeContainer.encode(backendEnvironmentArn, forKey: .backendEnvironmentArn) } @@ -885,12 +924,14 @@ extension AmplifyClientTypes.Branch: Swift.Codable { sourceBranch = sourceBranchDecoded let backendEnvironmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .backendEnvironmentArn) backendEnvironmentArn = backendEnvironmentArnDecoded + let backendDecoded = try containerValues.decodeIfPresent(AmplifyClientTypes.Backend.self, forKey: .backend) + backend = backendDecoded } } extension AmplifyClientTypes.Branch: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "Branch(activeJobId: \(Swift.String(describing: activeJobId)), associatedResources: \(Swift.String(describing: associatedResources)), backendEnvironmentArn: \(Swift.String(describing: backendEnvironmentArn)), branchArn: \(Swift.String(describing: branchArn)), branchName: \(Swift.String(describing: branchName)), createTime: \(Swift.String(describing: createTime)), customDomains: \(Swift.String(describing: customDomains)), description: \(Swift.String(describing: description)), destinationBranch: \(Swift.String(describing: destinationBranch)), displayName: \(Swift.String(describing: displayName)), enableAutoBuild: \(Swift.String(describing: enableAutoBuild)), enableBasicAuth: \(Swift.String(describing: enableBasicAuth)), enableNotification: \(Swift.String(describing: enableNotification)), enablePerformanceMode: \(Swift.String(describing: enablePerformanceMode)), enablePullRequestPreview: \(Swift.String(describing: enablePullRequestPreview)), environmentVariables: \(Swift.String(describing: environmentVariables)), framework: \(Swift.String(describing: framework)), pullRequestEnvironmentName: \(Swift.String(describing: pullRequestEnvironmentName)), sourceBranch: \(Swift.String(describing: sourceBranch)), stage: \(Swift.String(describing: stage)), tags: \(Swift.String(describing: tags)), thumbnailUrl: \(Swift.String(describing: thumbnailUrl)), totalNumberOfJobs: \(Swift.String(describing: totalNumberOfJobs)), ttl: \(Swift.String(describing: ttl)), updateTime: \(Swift.String(describing: updateTime)), basicAuthCredentials: \"CONTENT_REDACTED\", buildSpec: \"CONTENT_REDACTED\")"} + "Branch(activeJobId: \(Swift.String(describing: activeJobId)), associatedResources: \(Swift.String(describing: associatedResources)), backend: \(Swift.String(describing: backend)), backendEnvironmentArn: \(Swift.String(describing: backendEnvironmentArn)), branchArn: \(Swift.String(describing: branchArn)), branchName: \(Swift.String(describing: branchName)), createTime: \(Swift.String(describing: createTime)), customDomains: \(Swift.String(describing: customDomains)), description: \(Swift.String(describing: description)), destinationBranch: \(Swift.String(describing: destinationBranch)), displayName: \(Swift.String(describing: displayName)), enableAutoBuild: \(Swift.String(describing: enableAutoBuild)), enableBasicAuth: \(Swift.String(describing: enableBasicAuth)), enableNotification: \(Swift.String(describing: enableNotification)), enablePerformanceMode: \(Swift.String(describing: enablePerformanceMode)), enablePullRequestPreview: \(Swift.String(describing: enablePullRequestPreview)), environmentVariables: \(Swift.String(describing: environmentVariables)), framework: \(Swift.String(describing: framework)), pullRequestEnvironmentName: \(Swift.String(describing: pullRequestEnvironmentName)), sourceBranch: \(Swift.String(describing: sourceBranch)), stage: \(Swift.String(describing: stage)), tags: \(Swift.String(describing: tags)), thumbnailUrl: \(Swift.String(describing: thumbnailUrl)), totalNumberOfJobs: \(Swift.String(describing: totalNumberOfJobs)), ttl: \(Swift.String(describing: ttl)), updateTime: \(Swift.String(describing: updateTime)), basicAuthCredentials: \"CONTENT_REDACTED\", buildSpec: \"CONTENT_REDACTED\")"} } extension AmplifyClientTypes { @@ -901,6 +942,8 @@ extension AmplifyClientTypes { public var activeJobId: Swift.String? /// A list of custom resources that are linked to this branch. public var associatedResources: [Swift.String]? + /// Describes the backend properties associated with an Amplify Branch. + public var backend: AmplifyClientTypes.Backend? /// The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app. public var backendEnvironmentArn: Swift.String? /// The basic authorization credentials for a branch of an Amplify app. You must base64-encode the authorization credentials and provide them in the format user:password. @@ -971,6 +1014,7 @@ extension AmplifyClientTypes { public init( activeJobId: Swift.String? = nil, associatedResources: [Swift.String]? = nil, + backend: AmplifyClientTypes.Backend? = nil, backendEnvironmentArn: Swift.String? = nil, basicAuthCredentials: Swift.String? = nil, branchArn: Swift.String? = nil, @@ -1000,6 +1044,7 @@ extension AmplifyClientTypes { { self.activeJobId = activeJobId self.associatedResources = associatedResources + self.backend = backend self.backendEnvironmentArn = backendEnvironmentArn self.basicAuthCredentials = basicAuthCredentials self.branchArn = branchArn @@ -1140,7 +1185,7 @@ extension CreateAppInput: ClientRuntime.URLPathProvider { /// The request structure used to create apps in Amplify. public struct CreateAppInput: Swift.Equatable { - /// The personal access token for a GitHub repository for an Amplify app. The personal access token is used to authorize access to a GitHub repository using the Amplify GitHub App. The token is not stored. Use accessToken for GitHub repositories only. To authorize access to a repository provider such as Bitbucket or CodeCommit, use oauthToken. You must specify either accessToken or oauthToken when you create a new app. Existing Amplify apps deployed from a GitHub repository using OAuth continue to work with CI/CD. However, we strongly recommend that you migrate these apps to use the GitHub App. For more information, see [Migrating an existing OAuth app to the Amplify GitHub App](https://docs.aws.amazon.com/amplify/latest/UserGuide/setting-up-GitHub-access.html#migrating-to-github-app-auth) in the Amplify User Guide . + /// The personal access token for a GitHub repository for an Amplify app. The personal access token is used to authorize access to a GitHub repository using the Amplify GitHub App. The token is not stored. Use accessToken for GitHub repositories only. To authorize access to a repository provider such as Bitbucket or CodeCommit, use oauthToken. You must specify either accessToken or oauthToken when you create a new app. Existing Amplify apps deployed from a GitHub repository using OAuth continue to work with CI/CD. However, we strongly recommend that you migrate these apps to use the GitHub App. For more information, see [Migrating an existing OAuth app to the Amplify GitHub App](https://docs.aws.amazon.com/amplify/latest/userguide/setting-up-GitHub-access.html#migrating-to-github-app-auth) in the Amplify User Guide . public var accessToken: Swift.String? /// The automated branch creation configuration for an Amplify app. public var autoBranchCreationConfig: AmplifyClientTypes.AutoBranchCreationConfig? @@ -1154,7 +1199,7 @@ public struct CreateAppInput: Swift.Equatable { public var customHeaders: Swift.String? /// The custom rewrite and redirect rules for an Amplify app. public var customRules: [AmplifyClientTypes.CustomRule]? - /// The description for an Amplify app. + /// The description of the Amplify app. public var description: Swift.String? /// Enables automated branch creation for an Amplify app. public var enableAutoBranchCreation: Swift.Bool? @@ -1162,20 +1207,20 @@ public struct CreateAppInput: Swift.Equatable { public var enableBasicAuth: Swift.Bool? /// Enables the auto building of branches for an Amplify app. public var enableBranchAutoBuild: Swift.Bool? - /// Automatically disconnects a branch in the Amplify Console when you delete a branch from your Git repository. + /// Automatically disconnects a branch in the Amplify console when you delete a branch from your Git repository. public var enableBranchAutoDeletion: Swift.Bool? - /// The environment variables map for an Amplify app. + /// The environment variables map for an Amplify app. For a list of the environment variables that are accessible to Amplify by default, see [Amplify Environment variables](https://docs.aws.amazon.com/amplify/latest/userguide/amplify-console-environment-variables.html) in the Amplify Hosting User Guide. public var environmentVariables: [Swift.String:Swift.String]? /// The AWS Identity and Access Management (IAM) service role for an Amplify app. public var iamServiceRoleArn: Swift.String? - /// The name for an Amplify app. + /// The name of the Amplify app. /// This member is required. public var name: Swift.String? - /// The OAuth token for a third-party source control system for an Amplify app. The OAuth token is used to create a webhook and a read-only deploy key using SSH cloning. The OAuth token is not stored. Use oauthToken for repository providers other than GitHub, such as Bitbucket or CodeCommit. To authorize access to GitHub as your repository provider, use accessToken. You must specify either oauthToken or accessToken when you create a new app. Existing Amplify apps deployed from a GitHub repository using OAuth continue to work with CI/CD. However, we strongly recommend that you migrate these apps to use the GitHub App. For more information, see [Migrating an existing OAuth app to the Amplify GitHub App](https://docs.aws.amazon.com/amplify/latest/UserGuide/setting-up-GitHub-access.html#migrating-to-github-app-auth) in the Amplify User Guide . + /// The OAuth token for a third-party source control system for an Amplify app. The OAuth token is used to create a webhook and a read-only deploy key using SSH cloning. The OAuth token is not stored. Use oauthToken for repository providers other than GitHub, such as Bitbucket or CodeCommit. To authorize access to GitHub as your repository provider, use accessToken. You must specify either oauthToken or accessToken when you create a new app. Existing Amplify apps deployed from a GitHub repository using OAuth continue to work with CI/CD. However, we strongly recommend that you migrate these apps to use the GitHub App. For more information, see [Migrating an existing OAuth app to the Amplify GitHub App](https://docs.aws.amazon.com/amplify/latest/userguide/setting-up-GitHub-access.html#migrating-to-github-app-auth) in the Amplify User Guide . public var oauthToken: Swift.String? /// The platform for the Amplify app. For a static app, set the platform type to WEB. For a dynamic server-side rendered (SSR) app, set the platform type to WEB_COMPUTE. For an app requiring Amplify Hosting's original SSR support only, set the platform type to WEB_DYNAMIC. public var platform: AmplifyClientTypes.Platform? - /// The repository for an Amplify app. + /// The Git repository for the Amplify app. public var repository: Swift.String? /// The tag for an Amplify app. public var tags: [Swift.String:Swift.String]? @@ -1544,11 +1589,12 @@ enum CreateBackendEnvironmentOutputError: ClientRuntime.HttpResponseErrorBinding extension CreateBranchInput: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "CreateBranchInput(appId: \(Swift.String(describing: appId)), backendEnvironmentArn: \(Swift.String(describing: backendEnvironmentArn)), branchName: \(Swift.String(describing: branchName)), description: \(Swift.String(describing: description)), displayName: \(Swift.String(describing: displayName)), enableAutoBuild: \(Swift.String(describing: enableAutoBuild)), enableBasicAuth: \(Swift.String(describing: enableBasicAuth)), enableNotification: \(Swift.String(describing: enableNotification)), enablePerformanceMode: \(Swift.String(describing: enablePerformanceMode)), enablePullRequestPreview: \(Swift.String(describing: enablePullRequestPreview)), environmentVariables: \(Swift.String(describing: environmentVariables)), framework: \(Swift.String(describing: framework)), pullRequestEnvironmentName: \(Swift.String(describing: pullRequestEnvironmentName)), stage: \(Swift.String(describing: stage)), tags: \(Swift.String(describing: tags)), ttl: \(Swift.String(describing: ttl)), basicAuthCredentials: \"CONTENT_REDACTED\", buildSpec: \"CONTENT_REDACTED\")"} + "CreateBranchInput(appId: \(Swift.String(describing: appId)), backend: \(Swift.String(describing: backend)), backendEnvironmentArn: \(Swift.String(describing: backendEnvironmentArn)), branchName: \(Swift.String(describing: branchName)), description: \(Swift.String(describing: description)), displayName: \(Swift.String(describing: displayName)), enableAutoBuild: \(Swift.String(describing: enableAutoBuild)), enableBasicAuth: \(Swift.String(describing: enableBasicAuth)), enableNotification: \(Swift.String(describing: enableNotification)), enablePerformanceMode: \(Swift.String(describing: enablePerformanceMode)), enablePullRequestPreview: \(Swift.String(describing: enablePullRequestPreview)), environmentVariables: \(Swift.String(describing: environmentVariables)), framework: \(Swift.String(describing: framework)), pullRequestEnvironmentName: \(Swift.String(describing: pullRequestEnvironmentName)), stage: \(Swift.String(describing: stage)), tags: \(Swift.String(describing: tags)), ttl: \(Swift.String(describing: ttl)), basicAuthCredentials: \"CONTENT_REDACTED\", buildSpec: \"CONTENT_REDACTED\")"} } extension CreateBranchInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case backend case backendEnvironmentArn case basicAuthCredentials case branchName @@ -1570,6 +1616,9 @@ extension CreateBranchInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let backend = self.backend { + try encodeContainer.encode(backend, forKey: .backend) + } if let backendEnvironmentArn = self.backendEnvironmentArn { try encodeContainer.encode(backendEnvironmentArn, forKey: .backendEnvironmentArn) } @@ -1644,6 +1693,8 @@ public struct CreateBranchInput: Swift.Equatable { /// The unique ID for an Amplify app. /// This member is required. public var appId: Swift.String? + /// The backend for a Branch of an Amplify app. Use for a backend created from an CloudFormation stack. + public var backend: AmplifyClientTypes.Backend? /// The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app. public var backendEnvironmentArn: Swift.String? /// The basic authorization credentials for the branch. You must base64-encode the authorization credentials and provide them in the format user:password. @@ -1682,6 +1733,7 @@ public struct CreateBranchInput: Swift.Equatable { public init( appId: Swift.String? = nil, + backend: AmplifyClientTypes.Backend? = nil, backendEnvironmentArn: Swift.String? = nil, basicAuthCredentials: Swift.String? = nil, branchName: Swift.String? = nil, @@ -1702,6 +1754,7 @@ public struct CreateBranchInput: Swift.Equatable { ) { self.appId = appId + self.backend = backend self.backendEnvironmentArn = backendEnvironmentArn self.basicAuthCredentials = basicAuthCredentials self.branchName = branchName @@ -1740,10 +1793,12 @@ struct CreateBranchInputBody: Swift.Equatable { let enablePullRequestPreview: Swift.Bool? let pullRequestEnvironmentName: Swift.String? let backendEnvironmentArn: Swift.String? + let backend: AmplifyClientTypes.Backend? } extension CreateBranchInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case backend case backendEnvironmentArn case basicAuthCredentials case branchName @@ -1817,6 +1872,8 @@ extension CreateBranchInputBody: Swift.Decodable { pullRequestEnvironmentName = pullRequestEnvironmentNameDecoded let backendEnvironmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .backendEnvironmentArn) backendEnvironmentArn = backendEnvironmentArnDecoded + let backendDecoded = try containerValues.decodeIfPresent(AmplifyClientTypes.Backend.self, forKey: .backend) + backend = backendDecoded } } @@ -1911,7 +1968,7 @@ public struct CreateDeploymentInput: Swift.Equatable { /// The unique ID for an Amplify app. /// This member is required. public var appId: Swift.String? - /// The name for the branch, for the job. + /// The name of the branch to use for the job. /// This member is required. public var branchName: Swift.String? /// An optional file map that contains the file name as the key and the file content md5 hash as the value. If this argument is provided, the service will generate a unique upload URL per file. Otherwise, the service will only generate a single upload URL for the zipped files. @@ -2625,7 +2682,7 @@ public struct DeleteBranchInput: Swift.Equatable { /// The unique ID for an Amplify app. /// This member is required. public var appId: Swift.String? - /// The name for the branch. + /// The name of the branch. /// This member is required. public var branchName: Swift.String? @@ -2821,7 +2878,7 @@ public struct DeleteJobInput: Swift.Equatable { /// The unique ID for an Amplify app. /// This member is required. public var appId: Swift.String? - /// The name for the branch, for the job. + /// The name of the branch to use for the job. /// This member is required. public var branchName: Swift.String? /// The unique ID for the job. @@ -3681,7 +3738,7 @@ public struct GetBranchInput: Swift.Equatable { /// The unique ID for an Amplify app. /// This member is required. public var appId: Swift.String? - /// The name for the branch. + /// The name of the branch. /// This member is required. public var branchName: Swift.String? @@ -3875,7 +3932,7 @@ public struct GetJobInput: Swift.Equatable { /// The unique ID for an Amplify app. /// This member is required. public var appId: Swift.String? - /// The branch name for the job. + /// The name of the branch to use for the job. /// This member is required. public var branchName: Swift.String? /// The unique ID for the job. @@ -5131,7 +5188,7 @@ public struct ListJobsInput: Swift.Equatable { /// The unique ID for an Amplify app. /// This member is required. public var appId: Swift.String? - /// The name for a branch. + /// The name of the branch to use for the request. /// This member is required. public var branchName: Swift.String? /// The maximum number of records to list in a single response. @@ -5795,7 +5852,7 @@ public struct StartDeploymentInput: Swift.Equatable { /// The unique ID for an Amplify app. /// This member is required. public var appId: Swift.String? - /// The name for the branch, for the job. + /// The name of the branch to use for the job. /// This member is required. public var branchName: Swift.String? /// The job ID for this deployment, generated by the create deployment request. @@ -5944,7 +6001,7 @@ public struct StartJobInput: Swift.Equatable { /// The unique ID for an Amplify app. /// This member is required. public var appId: Swift.String? - /// The branch name for the job. + /// The name of the branch to use for the job. /// This member is required. public var branchName: Swift.String? /// The commit ID from a third-party repository provider for the job. @@ -5955,7 +6012,7 @@ public struct StartJobInput: Swift.Equatable { public var commitTime: ClientRuntime.Date? /// The unique ID for an existing job. This is required if the value of jobType is RETRY. public var jobId: Swift.String? - /// A descriptive reason for starting this job. + /// A descriptive reason for starting the job. public var jobReason: Swift.String? /// Describes the type for the job. The job type RELEASE starts a new job with the latest change from the specified branch. This value is available only for apps that are connected to a repository. The job type RETRY retries an existing job. If the job type value is RETRY, the jobId is also required. /// This member is required. @@ -6247,7 +6304,7 @@ public struct StopJobInput: Swift.Equatable { /// The unique ID for an Amplify app. /// This member is required. public var appId: Swift.String? - /// The name for the branch, for the job. + /// The name of the branch to use for the stop job request. /// This member is required. public var branchName: Swift.String? /// The unique id for the job. @@ -6769,7 +6826,7 @@ extension UpdateAppInput: ClientRuntime.URLPathProvider { /// The request structure for the update app request. public struct UpdateAppInput: Swift.Equatable { - /// The personal access token for a GitHub repository for an Amplify app. The personal access token is used to authorize access to a GitHub repository using the Amplify GitHub App. The token is not stored. Use accessToken for GitHub repositories only. To authorize access to a repository provider such as Bitbucket or CodeCommit, use oauthToken. You must specify either accessToken or oauthToken when you update an app. Existing Amplify apps deployed from a GitHub repository using OAuth continue to work with CI/CD. However, we strongly recommend that you migrate these apps to use the GitHub App. For more information, see [Migrating an existing OAuth app to the Amplify GitHub App](https://docs.aws.amazon.com/amplify/latest/UserGuide/setting-up-GitHub-access.html#migrating-to-github-app-auth) in the Amplify User Guide . + /// The personal access token for a GitHub repository for an Amplify app. The personal access token is used to authorize access to a GitHub repository using the Amplify GitHub App. The token is not stored. Use accessToken for GitHub repositories only. To authorize access to a repository provider such as Bitbucket or CodeCommit, use oauthToken. You must specify either accessToken or oauthToken when you update an app. Existing Amplify apps deployed from a GitHub repository using OAuth continue to work with CI/CD. However, we strongly recommend that you migrate these apps to use the GitHub App. For more information, see [Migrating an existing OAuth app to the Amplify GitHub App](https://docs.aws.amazon.com/amplify/latest/userguide/setting-up-GitHub-access.html#migrating-to-github-app-auth) in the Amplify User Guide . public var accessToken: Swift.String? /// The unique ID for an Amplify app. /// This member is required. @@ -6794,7 +6851,7 @@ public struct UpdateAppInput: Swift.Equatable { public var enableBasicAuth: Swift.Bool? /// Enables branch auto-building for an Amplify app. public var enableBranchAutoBuild: Swift.Bool? - /// Automatically disconnects a branch in the Amplify Console when you delete a branch from your Git repository. + /// Automatically disconnects a branch in the Amplify console when you delete a branch from your Git repository. public var enableBranchAutoDeletion: Swift.Bool? /// The environment variables for an Amplify app. public var environmentVariables: [Swift.String:Swift.String]? @@ -6802,11 +6859,11 @@ public struct UpdateAppInput: Swift.Equatable { public var iamServiceRoleArn: Swift.String? /// The name for an Amplify app. public var name: Swift.String? - /// The OAuth token for a third-party source control system for an Amplify app. The OAuth token is used to create a webhook and a read-only deploy key using SSH cloning. The OAuth token is not stored. Use oauthToken for repository providers other than GitHub, such as Bitbucket or CodeCommit. To authorize access to GitHub as your repository provider, use accessToken. You must specify either oauthToken or accessToken when you update an app. Existing Amplify apps deployed from a GitHub repository using OAuth continue to work with CI/CD. However, we strongly recommend that you migrate these apps to use the GitHub App. For more information, see [Migrating an existing OAuth app to the Amplify GitHub App](https://docs.aws.amazon.com/amplify/latest/UserGuide/setting-up-GitHub-access.html#migrating-to-github-app-auth) in the Amplify User Guide . + /// The OAuth token for a third-party source control system for an Amplify app. The OAuth token is used to create a webhook and a read-only deploy key using SSH cloning. The OAuth token is not stored. Use oauthToken for repository providers other than GitHub, such as Bitbucket or CodeCommit. To authorize access to GitHub as your repository provider, use accessToken. You must specify either oauthToken or accessToken when you update an app. Existing Amplify apps deployed from a GitHub repository using OAuth continue to work with CI/CD. However, we strongly recommend that you migrate these apps to use the GitHub App. For more information, see [Migrating an existing OAuth app to the Amplify GitHub App](https://docs.aws.amazon.com/amplify/latest/userguide/setting-up-GitHub-access.html#migrating-to-github-app-auth) in the Amplify User Guide . public var oauthToken: Swift.String? /// The platform for the Amplify app. For a static app, set the platform type to WEB. For a dynamic server-side rendered (SSR) app, set the platform type to WEB_COMPUTE. For an app requiring Amplify Hosting's original SSR support only, set the platform type to WEB_DYNAMIC. public var platform: AmplifyClientTypes.Platform? - /// The name of the repository for an Amplify app + /// The name of the Git repository for an Amplify app. public var repository: Swift.String? public init( @@ -7022,11 +7079,12 @@ enum UpdateAppOutputError: ClientRuntime.HttpResponseErrorBinding { extension UpdateBranchInput: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "UpdateBranchInput(appId: \(Swift.String(describing: appId)), backendEnvironmentArn: \(Swift.String(describing: backendEnvironmentArn)), branchName: \(Swift.String(describing: branchName)), description: \(Swift.String(describing: description)), displayName: \(Swift.String(describing: displayName)), enableAutoBuild: \(Swift.String(describing: enableAutoBuild)), enableBasicAuth: \(Swift.String(describing: enableBasicAuth)), enableNotification: \(Swift.String(describing: enableNotification)), enablePerformanceMode: \(Swift.String(describing: enablePerformanceMode)), enablePullRequestPreview: \(Swift.String(describing: enablePullRequestPreview)), environmentVariables: \(Swift.String(describing: environmentVariables)), framework: \(Swift.String(describing: framework)), pullRequestEnvironmentName: \(Swift.String(describing: pullRequestEnvironmentName)), stage: \(Swift.String(describing: stage)), ttl: \(Swift.String(describing: ttl)), basicAuthCredentials: \"CONTENT_REDACTED\", buildSpec: \"CONTENT_REDACTED\")"} + "UpdateBranchInput(appId: \(Swift.String(describing: appId)), backend: \(Swift.String(describing: backend)), backendEnvironmentArn: \(Swift.String(describing: backendEnvironmentArn)), branchName: \(Swift.String(describing: branchName)), description: \(Swift.String(describing: description)), displayName: \(Swift.String(describing: displayName)), enableAutoBuild: \(Swift.String(describing: enableAutoBuild)), enableBasicAuth: \(Swift.String(describing: enableBasicAuth)), enableNotification: \(Swift.String(describing: enableNotification)), enablePerformanceMode: \(Swift.String(describing: enablePerformanceMode)), enablePullRequestPreview: \(Swift.String(describing: enablePullRequestPreview)), environmentVariables: \(Swift.String(describing: environmentVariables)), framework: \(Swift.String(describing: framework)), pullRequestEnvironmentName: \(Swift.String(describing: pullRequestEnvironmentName)), stage: \(Swift.String(describing: stage)), ttl: \(Swift.String(describing: ttl)), basicAuthCredentials: \"CONTENT_REDACTED\", buildSpec: \"CONTENT_REDACTED\")"} } extension UpdateBranchInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case backend case backendEnvironmentArn case basicAuthCredentials case buildSpec @@ -7046,6 +7104,9 @@ extension UpdateBranchInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let backend = self.backend { + try encodeContainer.encode(backend, forKey: .backend) + } if let backendEnvironmentArn = self.backendEnvironmentArn { try encodeContainer.encode(backendEnvironmentArn, forKey: .backendEnvironmentArn) } @@ -7114,11 +7175,13 @@ public struct UpdateBranchInput: Swift.Equatable { /// The unique ID for an Amplify app. /// This member is required. public var appId: Swift.String? + /// The backend for a Branch of an Amplify app. Use for a backend created from an CloudFormation stack. + public var backend: AmplifyClientTypes.Backend? /// The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app. public var backendEnvironmentArn: Swift.String? /// The basic authorization credentials for the branch. You must base64-encode the authorization credentials and provide them in the format user:password. public var basicAuthCredentials: Swift.String? - /// The name for the branch. + /// The name of the branch. /// This member is required. public var branchName: Swift.String? /// The build specification (build spec) for the branch. @@ -7150,6 +7213,7 @@ public struct UpdateBranchInput: Swift.Equatable { public init( appId: Swift.String? = nil, + backend: AmplifyClientTypes.Backend? = nil, backendEnvironmentArn: Swift.String? = nil, basicAuthCredentials: Swift.String? = nil, branchName: Swift.String? = nil, @@ -7169,6 +7233,7 @@ public struct UpdateBranchInput: Swift.Equatable { ) { self.appId = appId + self.backend = backend self.backendEnvironmentArn = backendEnvironmentArn self.basicAuthCredentials = basicAuthCredentials self.branchName = branchName @@ -7204,10 +7269,12 @@ struct UpdateBranchInputBody: Swift.Equatable { let enablePullRequestPreview: Swift.Bool? let pullRequestEnvironmentName: Swift.String? let backendEnvironmentArn: Swift.String? + let backend: AmplifyClientTypes.Backend? } extension UpdateBranchInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case backend case backendEnvironmentArn case basicAuthCredentials case buildSpec @@ -7266,6 +7333,8 @@ extension UpdateBranchInputBody: Swift.Decodable { pullRequestEnvironmentName = pullRequestEnvironmentNameDecoded let backendEnvironmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .backendEnvironmentArn) backendEnvironmentArn = backendEnvironmentArnDecoded + let backendDecoded = try containerValues.decodeIfPresent(AmplifyClientTypes.Backend.self, forKey: .backend) + backend = backendDecoded } } diff --git a/Sources/Services/AWSAppRunner/models/Models.swift b/Sources/Services/AWSAppRunner/models/Models.swift index 41641b67abd..6a7b3056b46 100644 --- a/Sources/Services/AWSAppRunner/models/Models.swift +++ b/Sources/Services/AWSAppRunner/models/Models.swift @@ -4376,6 +4376,38 @@ extension InvalidStateExceptionBody: Swift.Decodable { } } +extension AppRunnerClientTypes { + public enum IpAddressType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case dualStack + case ipv4 + case sdkUnknown(Swift.String) + + public static var allCases: [IpAddressType] { + return [ + .dualStack, + .ipv4, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .dualStack: return "DUAL_STACK" + case .ipv4: return "IPV4" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = IpAddressType(rawValue: rawValue) ?? IpAddressType.sdkUnknown(rawValue) + } + } +} + extension ListAutoScalingConfigurationsInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case autoScalingConfigurationName = "AutoScalingConfigurationName" @@ -5683,6 +5715,7 @@ extension AppRunnerClientTypes.NetworkConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case egressConfiguration = "EgressConfiguration" case ingressConfiguration = "IngressConfiguration" + case ipAddressType = "IpAddressType" } public func encode(to encoder: Swift.Encoder) throws { @@ -5693,6 +5726,9 @@ extension AppRunnerClientTypes.NetworkConfiguration: Swift.Codable { if let ingressConfiguration = self.ingressConfiguration { try encodeContainer.encode(ingressConfiguration, forKey: .ingressConfiguration) } + if let ipAddressType = self.ipAddressType { + try encodeContainer.encode(ipAddressType.rawValue, forKey: .ipAddressType) + } } public init(from decoder: Swift.Decoder) throws { @@ -5701,6 +5737,8 @@ extension AppRunnerClientTypes.NetworkConfiguration: Swift.Codable { egressConfiguration = egressConfigurationDecoded let ingressConfigurationDecoded = try containerValues.decodeIfPresent(AppRunnerClientTypes.IngressConfiguration.self, forKey: .ingressConfiguration) ingressConfiguration = ingressConfigurationDecoded + let ipAddressTypeDecoded = try containerValues.decodeIfPresent(AppRunnerClientTypes.IpAddressType.self, forKey: .ipAddressType) + ipAddressType = ipAddressTypeDecoded } } @@ -5711,14 +5749,18 @@ extension AppRunnerClientTypes { public var egressConfiguration: AppRunnerClientTypes.EgressConfiguration? /// Network configuration settings for inbound message traffic. public var ingressConfiguration: AppRunnerClientTypes.IngressConfiguration? + /// App Runner provides you with the option to choose between Internet Protocol version 4 (IPv4) and dual-stack (IPv4 and IPv6) for your incoming public network configuration. This is an optional parameter. If you do not specify an IpAddressType, it defaults to select IPv4. Currently, App Runner supports dual-stack for only Public endpoint. Only IPv4 is supported for Private endpoint. If you update a service that's using dual-stack Public endpoint to a Private endpoint, your App Runner service will default to support only IPv4 for Private endpoint and fail to receive traffic originating from IPv6 endpoint. + public var ipAddressType: AppRunnerClientTypes.IpAddressType? public init( egressConfiguration: AppRunnerClientTypes.EgressConfiguration? = nil, - ingressConfiguration: AppRunnerClientTypes.IngressConfiguration? = nil + ingressConfiguration: AppRunnerClientTypes.IngressConfiguration? = nil, + ipAddressType: AppRunnerClientTypes.IpAddressType? = nil ) { self.egressConfiguration = egressConfiguration self.ingressConfiguration = ingressConfiguration + self.ipAddressType = ipAddressType } } diff --git a/Sources/Services/AWSAppStream/models/Models.swift b/Sources/Services/AWSAppStream/models/Models.swift index 776545ac15e..7c5bc7bf9bb 100644 --- a/Sources/Services/AWSAppStream/models/Models.swift +++ b/Sources/Services/AWSAppStream/models/Models.swift @@ -1926,6 +1926,7 @@ extension AppStreamClientTypes { extension AppStreamClientTypes.ComputeCapacity: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case desiredInstances = "DesiredInstances" + case desiredSessions = "DesiredSessions" } public func encode(to encoder: Swift.Encoder) throws { @@ -1933,12 +1934,17 @@ extension AppStreamClientTypes.ComputeCapacity: Swift.Codable { if let desiredInstances = self.desiredInstances { try encodeContainer.encode(desiredInstances, forKey: .desiredInstances) } + if let desiredSessions = self.desiredSessions { + try encodeContainer.encode(desiredSessions, forKey: .desiredSessions) + } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let desiredInstancesDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .desiredInstances) desiredInstances = desiredInstancesDecoded + let desiredSessionsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .desiredSessions) + desiredSessions = desiredSessionsDecoded } } @@ -1946,14 +1952,17 @@ extension AppStreamClientTypes { /// Describes the capacity for a fleet. public struct ComputeCapacity: Swift.Equatable { /// The desired number of streaming instances. - /// This member is required. public var desiredInstances: Swift.Int? + /// The desired number of user sessions for a multi-session fleet. This is not allowed for single-session fleets. When you create a fleet, you must set either the DesiredSessions or DesiredInstances attribute, based on the type of fleet you create. You can’t define both attributes or leave both attributes blank. + public var desiredSessions: Swift.Int? public init( - desiredInstances: Swift.Int? = nil + desiredInstances: Swift.Int? = nil, + desiredSessions: Swift.Int? = nil ) { self.desiredInstances = desiredInstances + self.desiredSessions = desiredSessions } } @@ -1961,20 +1970,36 @@ extension AppStreamClientTypes { extension AppStreamClientTypes.ComputeCapacityStatus: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case activeUserSessions = "ActiveUserSessions" + case actualUserSessions = "ActualUserSessions" case available = "Available" + case availableUserSessions = "AvailableUserSessions" case desired = "Desired" + case desiredUserSessions = "DesiredUserSessions" case inUse = "InUse" case running = "Running" } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let activeUserSessions = self.activeUserSessions { + try encodeContainer.encode(activeUserSessions, forKey: .activeUserSessions) + } + if let actualUserSessions = self.actualUserSessions { + try encodeContainer.encode(actualUserSessions, forKey: .actualUserSessions) + } if let available = self.available { try encodeContainer.encode(available, forKey: .available) } + if let availableUserSessions = self.availableUserSessions { + try encodeContainer.encode(availableUserSessions, forKey: .availableUserSessions) + } if let desired = self.desired { try encodeContainer.encode(desired, forKey: .desired) } + if let desiredUserSessions = self.desiredUserSessions { + try encodeContainer.encode(desiredUserSessions, forKey: .desiredUserSessions) + } if let inUse = self.inUse { try encodeContainer.encode(inUse, forKey: .inUse) } @@ -1993,31 +2018,55 @@ extension AppStreamClientTypes.ComputeCapacityStatus: Swift.Codable { inUse = inUseDecoded let availableDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .available) available = availableDecoded + let desiredUserSessionsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .desiredUserSessions) + desiredUserSessions = desiredUserSessionsDecoded + let availableUserSessionsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .availableUserSessions) + availableUserSessions = availableUserSessionsDecoded + let activeUserSessionsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .activeUserSessions) + activeUserSessions = activeUserSessionsDecoded + let actualUserSessionsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .actualUserSessions) + actualUserSessions = actualUserSessionsDecoded } } extension AppStreamClientTypes { /// Describes the capacity status for a fleet. public struct ComputeCapacityStatus: Swift.Equatable { + /// The number of user sessions currently being used for streaming sessions. This only applies to multi-session fleets. + public var activeUserSessions: Swift.Int? + /// The total number of session slots that are available for streaming or are currently streaming. ActualUserSessionCapacity = AvailableUserSessionCapacity + ActiveUserSessions This only applies to multi-session fleets. + public var actualUserSessions: Swift.Int? /// The number of currently available instances that can be used to stream sessions. public var available: Swift.Int? + /// The number of idle session slots currently available for user sessions. AvailableUserSessionCapacity = ActualUserSessionCapacity - ActiveUserSessions This only applies to multi-session fleets. + public var availableUserSessions: Swift.Int? /// The desired number of streaming instances. /// This member is required. public var desired: Swift.Int? + /// The total number of sessions slots that are either running or pending. This represents the total number of concurrent streaming sessions your fleet can support in a steady state. DesiredUserSessionCapacity = ActualUserSessionCapacity + PendingUserSessionCapacity This only applies to multi-session fleets. + public var desiredUserSessions: Swift.Int? /// The number of instances in use for streaming. public var inUse: Swift.Int? /// The total number of simultaneous streaming instances that are running. public var running: Swift.Int? public init( + activeUserSessions: Swift.Int? = nil, + actualUserSessions: Swift.Int? = nil, available: Swift.Int? = nil, + availableUserSessions: Swift.Int? = nil, desired: Swift.Int? = nil, + desiredUserSessions: Swift.Int? = nil, inUse: Swift.Int? = nil, running: Swift.Int? = nil ) { + self.activeUserSessions = activeUserSessions + self.actualUserSessions = actualUserSessions self.available = available + self.availableUserSessions = availableUserSessions self.desired = desired + self.desiredUserSessions = desiredUserSessions self.inUse = inUse self.running = running } @@ -3394,6 +3443,7 @@ extension CreateFleetInput: Swift.Encodable { case imageName = "ImageName" case instanceType = "InstanceType" case maxConcurrentSessions = "MaxConcurrentSessions" + case maxSessionsPerInstance = "MaxSessionsPerInstance" case maxUserDurationInSeconds = "MaxUserDurationInSeconds" case name = "Name" case platform = "Platform" @@ -3445,6 +3495,9 @@ extension CreateFleetInput: Swift.Encodable { if let maxConcurrentSessions = self.maxConcurrentSessions { try encodeContainer.encode(maxConcurrentSessions, forKey: .maxConcurrentSessions) } + if let maxSessionsPerInstance = self.maxSessionsPerInstance { + try encodeContainer.encode(maxSessionsPerInstance, forKey: .maxSessionsPerInstance) + } if let maxUserDurationInSeconds = self.maxUserDurationInSeconds { try encodeContainer.encode(maxUserDurationInSeconds, forKey: .maxUserDurationInSeconds) } @@ -3595,7 +3648,9 @@ public struct CreateFleetInput: Swift.Equatable { public var instanceType: Swift.String? /// The maximum concurrent sessions of the Elastic fleet. This is required for Elastic fleets, and not allowed for other fleet types. public var maxConcurrentSessions: Swift.Int? - /// The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance. Specify a value between 600 and 360000. + /// The maximum number of user sessions on an instance. This only applies to multi-session fleets. + public var maxSessionsPerInstance: Swift.Int? + /// The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance. Specify a value between 600 and 432000. public var maxUserDurationInSeconds: Swift.Int? /// A unique name for the fleet. /// This member is required. @@ -3627,6 +3682,7 @@ public struct CreateFleetInput: Swift.Equatable { imageName: Swift.String? = nil, instanceType: Swift.String? = nil, maxConcurrentSessions: Swift.Int? = nil, + maxSessionsPerInstance: Swift.Int? = nil, maxUserDurationInSeconds: Swift.Int? = nil, name: Swift.String? = nil, platform: AppStreamClientTypes.PlatformType? = nil, @@ -3650,6 +3706,7 @@ public struct CreateFleetInput: Swift.Equatable { self.imageName = imageName self.instanceType = instanceType self.maxConcurrentSessions = maxConcurrentSessions + self.maxSessionsPerInstance = maxSessionsPerInstance self.maxUserDurationInSeconds = maxUserDurationInSeconds self.name = name self.platform = platform @@ -3683,6 +3740,7 @@ struct CreateFleetInputBody: Swift.Equatable { let maxConcurrentSessions: Swift.Int? let usbDeviceFilterStrings: [Swift.String]? let sessionScriptS3Location: AppStreamClientTypes.S3Location? + let maxSessionsPerInstance: Swift.Int? } extension CreateFleetInputBody: Swift.Decodable { @@ -3700,6 +3758,7 @@ extension CreateFleetInputBody: Swift.Decodable { case imageName = "ImageName" case instanceType = "InstanceType" case maxConcurrentSessions = "MaxConcurrentSessions" + case maxSessionsPerInstance = "MaxSessionsPerInstance" case maxUserDurationInSeconds = "MaxUserDurationInSeconds" case name = "Name" case platform = "Platform" @@ -3772,6 +3831,8 @@ extension CreateFleetInputBody: Swift.Decodable { usbDeviceFilterStrings = usbDeviceFilterStringsDecoded0 let sessionScriptS3LocationDecoded = try containerValues.decodeIfPresent(AppStreamClientTypes.S3Location.self, forKey: .sessionScriptS3Location) sessionScriptS3Location = sessionScriptS3LocationDecoded + let maxSessionsPerInstanceDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxSessionsPerInstance) + maxSessionsPerInstance = maxSessionsPerInstanceDecoded } } @@ -7858,6 +7919,7 @@ extension DescribeSessionsInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case authenticationType = "AuthenticationType" case fleetName = "FleetName" + case instanceId = "InstanceId" case limit = "Limit" case nextToken = "NextToken" case stackName = "StackName" @@ -7872,6 +7934,9 @@ extension DescribeSessionsInput: Swift.Encodable { if let fleetName = self.fleetName { try encodeContainer.encode(fleetName, forKey: .fleetName) } + if let instanceId = self.instanceId { + try encodeContainer.encode(instanceId, forKey: .instanceId) + } if let limit = self.limit { try encodeContainer.encode(limit, forKey: .limit) } @@ -7899,6 +7964,8 @@ public struct DescribeSessionsInput: Swift.Equatable { /// The name of the fleet. This value is case-sensitive. /// This member is required. public var fleetName: Swift.String? + /// The identifier for the instance hosting the session. + public var instanceId: Swift.String? /// The size of each page of results. The default value is 20 and the maximum value is 50. public var limit: Swift.Int? /// The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page. @@ -7912,6 +7979,7 @@ public struct DescribeSessionsInput: Swift.Equatable { public init( authenticationType: AppStreamClientTypes.AuthenticationType? = nil, fleetName: Swift.String? = nil, + instanceId: Swift.String? = nil, limit: Swift.Int? = nil, nextToken: Swift.String? = nil, stackName: Swift.String? = nil, @@ -7920,6 +7988,7 @@ public struct DescribeSessionsInput: Swift.Equatable { { self.authenticationType = authenticationType self.fleetName = fleetName + self.instanceId = instanceId self.limit = limit self.nextToken = nextToken self.stackName = stackName @@ -7934,12 +8003,14 @@ struct DescribeSessionsInputBody: Swift.Equatable { let nextToken: Swift.String? let limit: Swift.Int? let authenticationType: AppStreamClientTypes.AuthenticationType? + let instanceId: Swift.String? } extension DescribeSessionsInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case authenticationType = "AuthenticationType" case fleetName = "FleetName" + case instanceId = "InstanceId" case limit = "Limit" case nextToken = "NextToken" case stackName = "StackName" @@ -7960,6 +8031,8 @@ extension DescribeSessionsInputBody: Swift.Decodable { limit = limitDecoded let authenticationTypeDecoded = try containerValues.decodeIfPresent(AppStreamClientTypes.AuthenticationType.self, forKey: .authenticationType) authenticationType = authenticationTypeDecoded + let instanceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceId) + instanceId = instanceIdDecoded } } @@ -9729,6 +9802,7 @@ extension AppStreamClientTypes.Fleet: Swift.Codable { case imageName = "ImageName" case instanceType = "InstanceType" case maxConcurrentSessions = "MaxConcurrentSessions" + case maxSessionsPerInstance = "MaxSessionsPerInstance" case maxUserDurationInSeconds = "MaxUserDurationInSeconds" case name = "Name" case platform = "Platform" @@ -9792,6 +9866,9 @@ extension AppStreamClientTypes.Fleet: Swift.Codable { if let maxConcurrentSessions = self.maxConcurrentSessions { try encodeContainer.encode(maxConcurrentSessions, forKey: .maxConcurrentSessions) } + if let maxSessionsPerInstance = self.maxSessionsPerInstance { + try encodeContainer.encode(maxSessionsPerInstance, forKey: .maxSessionsPerInstance) + } if let maxUserDurationInSeconds = self.maxUserDurationInSeconds { try encodeContainer.encode(maxUserDurationInSeconds, forKey: .maxUserDurationInSeconds) } @@ -9889,6 +9966,8 @@ extension AppStreamClientTypes.Fleet: Swift.Codable { usbDeviceFilterStrings = usbDeviceFilterStringsDecoded0 let sessionScriptS3LocationDecoded = try containerValues.decodeIfPresent(AppStreamClientTypes.S3Location.self, forKey: .sessionScriptS3Location) sessionScriptS3Location = sessionScriptS3LocationDecoded + let maxSessionsPerInstanceDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxSessionsPerInstance) + maxSessionsPerInstance = maxSessionsPerInstanceDecoded } } @@ -9996,6 +10075,8 @@ extension AppStreamClientTypes { public var instanceType: Swift.String? /// The maximum number of concurrent sessions for the fleet. public var maxConcurrentSessions: Swift.Int? + /// The maximum number of user sessions on an instance. This only applies to multi-session fleets. + public var maxSessionsPerInstance: Swift.Int? /// The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance. Specify a value between 600 and 360000. public var maxUserDurationInSeconds: Swift.Int? /// The name of the fleet. @@ -10032,6 +10113,7 @@ extension AppStreamClientTypes { imageName: Swift.String? = nil, instanceType: Swift.String? = nil, maxConcurrentSessions: Swift.Int? = nil, + maxSessionsPerInstance: Swift.Int? = nil, maxUserDurationInSeconds: Swift.Int? = nil, name: Swift.String? = nil, platform: AppStreamClientTypes.PlatformType? = nil, @@ -10058,6 +10140,7 @@ extension AppStreamClientTypes { self.imageName = imageName self.instanceType = instanceType self.maxConcurrentSessions = maxConcurrentSessions + self.maxSessionsPerInstance = maxSessionsPerInstance self.maxUserDurationInSeconds = maxUserDurationInSeconds self.name = name self.platform = platform @@ -10076,6 +10159,7 @@ extension AppStreamClientTypes { public enum FleetAttribute: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case domainJoinInfo case iamRoleArn + case maxSessionsPerInstance case sessionScriptS3Location case usbDeviceFilterStrings case vpcConfiguration @@ -10086,6 +10170,7 @@ extension AppStreamClientTypes { return [ .domainJoinInfo, .iamRoleArn, + .maxSessionsPerInstance, .sessionScriptS3Location, .usbDeviceFilterStrings, .vpcConfiguration, @@ -10101,6 +10186,7 @@ extension AppStreamClientTypes { switch self { case .domainJoinInfo: return "DOMAIN_JOIN_INFO" case .iamRoleArn: return "IAM_ROLE_ARN" + case .maxSessionsPerInstance: return "MAX_SESSIONS_PER_INSTANCE" case .sessionScriptS3Location: return "SESSION_SCRIPT_S3_LOCATION" case .usbDeviceFilterStrings: return "USB_DEVICE_FILTER_STRINGS" case .vpcConfiguration: return "VPC_CONFIGURATION" @@ -12806,6 +12892,7 @@ extension AppStreamClientTypes.Session: Swift.Codable { case connectionState = "ConnectionState" case fleetName = "FleetName" case id = "Id" + case instanceId = "InstanceId" case maxExpirationTime = "MaxExpirationTime" case networkAccessConfiguration = "NetworkAccessConfiguration" case stackName = "StackName" @@ -12828,6 +12915,9 @@ extension AppStreamClientTypes.Session: Swift.Codable { if let id = self.id { try encodeContainer.encode(id, forKey: .id) } + if let instanceId = self.instanceId { + try encodeContainer.encode(instanceId, forKey: .instanceId) + } if let maxExpirationTime = self.maxExpirationTime { try encodeContainer.encodeTimestamp(maxExpirationTime, format: .epochSeconds, forKey: .maxExpirationTime) } @@ -12870,6 +12960,8 @@ extension AppStreamClientTypes.Session: Swift.Codable { authenticationType = authenticationTypeDecoded let networkAccessConfigurationDecoded = try containerValues.decodeIfPresent(AppStreamClientTypes.NetworkAccessConfiguration.self, forKey: .networkAccessConfiguration) networkAccessConfiguration = networkAccessConfigurationDecoded + let instanceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceId) + instanceId = instanceIdDecoded } } @@ -12886,6 +12978,8 @@ extension AppStreamClientTypes { /// The identifier of the streaming session. /// This member is required. public var id: Swift.String? + /// The identifier for the instance hosting the session. + public var instanceId: Swift.String? /// The time when the streaming session is set to expire. This time is based on the MaxUserDurationinSeconds value, which determines the maximum length of time that a streaming session can run. A streaming session might end earlier than the time specified in SessionMaxExpirationTime, when the DisconnectTimeOutInSeconds elapses or the user chooses to end his or her session. If the DisconnectTimeOutInSeconds elapses, or the user chooses to end his or her session, the streaming instance is terminated and the streaming session ends. public var maxExpirationTime: ClientRuntime.Date? /// The network details for the streaming session. @@ -12907,6 +13001,7 @@ extension AppStreamClientTypes { connectionState: AppStreamClientTypes.SessionConnectionState? = nil, fleetName: Swift.String? = nil, id: Swift.String? = nil, + instanceId: Swift.String? = nil, maxExpirationTime: ClientRuntime.Date? = nil, networkAccessConfiguration: AppStreamClientTypes.NetworkAccessConfiguration? = nil, stackName: Swift.String? = nil, @@ -12919,6 +13014,7 @@ extension AppStreamClientTypes { self.connectionState = connectionState self.fleetName = fleetName self.id = id + self.instanceId = instanceId self.maxExpirationTime = maxExpirationTime self.networkAccessConfiguration = networkAccessConfiguration self.stackName = stackName @@ -15128,6 +15224,7 @@ extension UpdateFleetInput: Swift.Encodable { case imageName = "ImageName" case instanceType = "InstanceType" case maxConcurrentSessions = "MaxConcurrentSessions" + case maxSessionsPerInstance = "MaxSessionsPerInstance" case maxUserDurationInSeconds = "MaxUserDurationInSeconds" case name = "Name" case platform = "Platform" @@ -15184,6 +15281,9 @@ extension UpdateFleetInput: Swift.Encodable { if let maxConcurrentSessions = self.maxConcurrentSessions { try encodeContainer.encode(maxConcurrentSessions, forKey: .maxConcurrentSessions) } + if let maxSessionsPerInstance = self.maxSessionsPerInstance { + try encodeContainer.encode(maxSessionsPerInstance, forKey: .maxSessionsPerInstance) + } if let maxUserDurationInSeconds = self.maxUserDurationInSeconds { try encodeContainer.encode(maxUserDurationInSeconds, forKey: .maxUserDurationInSeconds) } @@ -15330,6 +15430,8 @@ public struct UpdateFleetInput: Swift.Equatable { public var instanceType: Swift.String? /// The maximum number of concurrent sessions for a fleet. public var maxConcurrentSessions: Swift.Int? + /// The maximum number of user sessions on an instance. This only applies to multi-session fleets. + public var maxSessionsPerInstance: Swift.Int? /// The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance. Specify a value between 600 and 432000. public var maxUserDurationInSeconds: Swift.Int? /// A unique name for the fleet. @@ -15360,6 +15462,7 @@ public struct UpdateFleetInput: Swift.Equatable { imageName: Swift.String? = nil, instanceType: Swift.String? = nil, maxConcurrentSessions: Swift.Int? = nil, + maxSessionsPerInstance: Swift.Int? = nil, maxUserDurationInSeconds: Swift.Int? = nil, name: Swift.String? = nil, platform: AppStreamClientTypes.PlatformType? = nil, @@ -15383,6 +15486,7 @@ public struct UpdateFleetInput: Swift.Equatable { self.imageName = imageName self.instanceType = instanceType self.maxConcurrentSessions = maxConcurrentSessions + self.maxSessionsPerInstance = maxSessionsPerInstance self.maxUserDurationInSeconds = maxUserDurationInSeconds self.name = name self.platform = platform @@ -15415,6 +15519,7 @@ struct UpdateFleetInputBody: Swift.Equatable { let maxConcurrentSessions: Swift.Int? let usbDeviceFilterStrings: [Swift.String]? let sessionScriptS3Location: AppStreamClientTypes.S3Location? + let maxSessionsPerInstance: Swift.Int? } extension UpdateFleetInputBody: Swift.Decodable { @@ -15433,6 +15538,7 @@ extension UpdateFleetInputBody: Swift.Decodable { case imageName = "ImageName" case instanceType = "InstanceType" case maxConcurrentSessions = "MaxConcurrentSessions" + case maxSessionsPerInstance = "MaxSessionsPerInstance" case maxUserDurationInSeconds = "MaxUserDurationInSeconds" case name = "Name" case platform = "Platform" @@ -15504,6 +15610,8 @@ extension UpdateFleetInputBody: Swift.Decodable { usbDeviceFilterStrings = usbDeviceFilterStringsDecoded0 let sessionScriptS3LocationDecoded = try containerValues.decodeIfPresent(AppStreamClientTypes.S3Location.self, forKey: .sessionScriptS3Location) sessionScriptS3Location = sessionScriptS3LocationDecoded + let maxSessionsPerInstanceDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxSessionsPerInstance) + maxSessionsPerInstance = maxSessionsPerInstanceDecoded } } diff --git a/Sources/Services/AWSApplicationInsights/ApplicationInsightsClient.swift b/Sources/Services/AWSApplicationInsights/ApplicationInsightsClient.swift index df8bf66aa64..502253968af 100644 --- a/Sources/Services/AWSApplicationInsights/ApplicationInsightsClient.swift +++ b/Sources/Services/AWSApplicationInsights/ApplicationInsightsClient.swift @@ -1452,6 +1452,7 @@ extension ApplicationInsightsClient: ApplicationInsightsClientProtocol { /// /// __Possible Exceptions:__ /// - `InternalServerException` : The server encountered an internal error and is unable to complete the request. + /// - `ResourceInUseException` : The resource is already created or in use. /// - `ResourceNotFoundException` : The resource does not exist in the customer account. /// - `ValidationException` : The parameter is not valid. public func updateComponentConfiguration(input: UpdateComponentConfigurationInput) async throws -> UpdateComponentConfigurationOutput diff --git a/Sources/Services/AWSApplicationInsights/ApplicationInsightsClientProtocol.swift b/Sources/Services/AWSApplicationInsights/ApplicationInsightsClientProtocol.swift index d9b0e079bf1..3b6587253c7 100644 --- a/Sources/Services/AWSApplicationInsights/ApplicationInsightsClientProtocol.swift +++ b/Sources/Services/AWSApplicationInsights/ApplicationInsightsClientProtocol.swift @@ -403,6 +403,7 @@ public protocol ApplicationInsightsClientProtocol { /// /// __Possible Exceptions:__ /// - `InternalServerException` : The server encountered an internal error and is unable to complete the request. + /// - `ResourceInUseException` : The resource is already created or in use. /// - `ResourceNotFoundException` : The resource does not exist in the customer account. /// - `ValidationException` : The parameter is not valid. func updateComponentConfiguration(input: UpdateComponentConfigurationInput) async throws -> UpdateComponentConfigurationOutput diff --git a/Sources/Services/AWSApplicationInsights/models/Models.swift b/Sources/Services/AWSApplicationInsights/models/Models.swift index 19062d59f53..212a5b88e37 100644 --- a/Sources/Services/AWSApplicationInsights/models/Models.swift +++ b/Sources/Services/AWSApplicationInsights/models/Models.swift @@ -315,6 +315,7 @@ extension ApplicationInsightsClientTypes { extension ApplicationInsightsClientTypes.ApplicationInfo: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case accountId = "AccountId" + case attachMissingPermission = "AttachMissingPermission" case autoConfigEnabled = "AutoConfigEnabled" case cweMonitorEnabled = "CWEMonitorEnabled" case discoveryType = "DiscoveryType" @@ -330,6 +331,9 @@ extension ApplicationInsightsClientTypes.ApplicationInfo: Swift.Codable { if let accountId = self.accountId { try encodeContainer.encode(accountId, forKey: .accountId) } + if let attachMissingPermission = self.attachMissingPermission { + try encodeContainer.encode(attachMissingPermission, forKey: .attachMissingPermission) + } if let autoConfigEnabled = self.autoConfigEnabled { try encodeContainer.encode(autoConfigEnabled, forKey: .autoConfigEnabled) } @@ -376,6 +380,8 @@ extension ApplicationInsightsClientTypes.ApplicationInfo: Swift.Codable { autoConfigEnabled = autoConfigEnabledDecoded let discoveryTypeDecoded = try containerValues.decodeIfPresent(ApplicationInsightsClientTypes.DiscoveryType.self, forKey: .discoveryType) discoveryType = discoveryTypeDecoded + let attachMissingPermissionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .attachMissingPermission) + attachMissingPermission = attachMissingPermissionDecoded } } @@ -384,6 +390,8 @@ extension ApplicationInsightsClientTypes { public struct ApplicationInfo: Swift.Equatable { /// The AWS account ID for the owner of the application. public var accountId: Swift.String? + /// If set to true, the managed policies for SSM and CW will be attached to the instance roles if they are missing. + public var attachMissingPermission: Swift.Bool? /// Indicates whether auto-configuration is turned on for this application. public var autoConfigEnabled: Swift.Bool? /// Indicates whether Application Insights can listen to CloudWatch events for the application resources, such as instance terminated, failed deployment, and others. @@ -407,6 +415,7 @@ extension ApplicationInsightsClientTypes { public init( accountId: Swift.String? = nil, + attachMissingPermission: Swift.Bool? = nil, autoConfigEnabled: Swift.Bool? = nil, cweMonitorEnabled: Swift.Bool? = nil, discoveryType: ApplicationInsightsClientTypes.DiscoveryType? = nil, @@ -418,6 +427,7 @@ extension ApplicationInsightsClientTypes { ) { self.accountId = accountId + self.attachMissingPermission = attachMissingPermission self.autoConfigEnabled = autoConfigEnabled self.cweMonitorEnabled = cweMonitorEnabled self.discoveryType = discoveryType @@ -704,6 +714,7 @@ extension ApplicationInsightsClientTypes { extension CreateApplicationInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case attachMissingPermission = "AttachMissingPermission" case autoConfigEnabled = "AutoConfigEnabled" case autoCreate = "AutoCreate" case cweMonitorEnabled = "CWEMonitorEnabled" @@ -716,6 +727,9 @@ extension CreateApplicationInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let attachMissingPermission = self.attachMissingPermission { + try encodeContainer.encode(attachMissingPermission, forKey: .attachMissingPermission) + } if let autoConfigEnabled = self.autoConfigEnabled { try encodeContainer.encode(autoConfigEnabled, forKey: .autoConfigEnabled) } @@ -753,6 +767,8 @@ extension CreateApplicationInput: ClientRuntime.URLPathProvider { } public struct CreateApplicationInput: Swift.Equatable { + /// If set to true, the managed policies for SSM and CW will be attached to the instance roles if they are missing. + public var attachMissingPermission: Swift.Bool? /// Indicates whether Application Insights automatically configures unmonitored resources in the resource group. public var autoConfigEnabled: Swift.Bool? /// Configures all of the resources in the resource group by applying the recommended configurations. @@ -771,6 +787,7 @@ public struct CreateApplicationInput: Swift.Equatable { public var tags: [ApplicationInsightsClientTypes.Tag]? public init( + attachMissingPermission: Swift.Bool? = nil, autoConfigEnabled: Swift.Bool? = nil, autoCreate: Swift.Bool? = nil, cweMonitorEnabled: Swift.Bool? = nil, @@ -781,6 +798,7 @@ public struct CreateApplicationInput: Swift.Equatable { tags: [ApplicationInsightsClientTypes.Tag]? = nil ) { + self.attachMissingPermission = attachMissingPermission self.autoConfigEnabled = autoConfigEnabled self.autoCreate = autoCreate self.cweMonitorEnabled = cweMonitorEnabled @@ -801,10 +819,12 @@ struct CreateApplicationInputBody: Swift.Equatable { let autoConfigEnabled: Swift.Bool? let autoCreate: Swift.Bool? let groupingType: ApplicationInsightsClientTypes.GroupingType? + let attachMissingPermission: Swift.Bool? } extension CreateApplicationInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case attachMissingPermission = "AttachMissingPermission" case autoConfigEnabled = "AutoConfigEnabled" case autoCreate = "AutoCreate" case cweMonitorEnabled = "CWEMonitorEnabled" @@ -842,6 +862,8 @@ extension CreateApplicationInputBody: Swift.Decodable { autoCreate = autoCreateDecoded let groupingTypeDecoded = try containerValues.decodeIfPresent(ApplicationInsightsClientTypes.GroupingType.self, forKey: .groupingType) groupingType = groupingTypeDecoded + let attachMissingPermissionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .attachMissingPermission) + attachMissingPermission = attachMissingPermissionDecoded } } @@ -1694,6 +1716,7 @@ extension DescribeComponentConfigurationRecommendationInput: Swift.Encodable { case recommendationType = "RecommendationType" case resourceGroupName = "ResourceGroupName" case tier = "Tier" + case workloadName = "WorkloadName" } public func encode(to encoder: Swift.Encoder) throws { @@ -1710,6 +1733,9 @@ extension DescribeComponentConfigurationRecommendationInput: Swift.Encodable { if let tier = self.tier { try encodeContainer.encode(tier.rawValue, forKey: .tier) } + if let workloadName = self.workloadName { + try encodeContainer.encode(workloadName, forKey: .workloadName) + } } } @@ -1731,18 +1757,22 @@ public struct DescribeComponentConfigurationRecommendationInput: Swift.Equatable /// The tier of the application component. /// This member is required. public var tier: ApplicationInsightsClientTypes.Tier? + /// The name of the workload. + public var workloadName: Swift.String? public init( componentName: Swift.String? = nil, recommendationType: ApplicationInsightsClientTypes.RecommendationType? = nil, resourceGroupName: Swift.String? = nil, - tier: ApplicationInsightsClientTypes.Tier? = nil + tier: ApplicationInsightsClientTypes.Tier? = nil, + workloadName: Swift.String? = nil ) { self.componentName = componentName self.recommendationType = recommendationType self.resourceGroupName = resourceGroupName self.tier = tier + self.workloadName = workloadName } } @@ -1750,6 +1780,7 @@ struct DescribeComponentConfigurationRecommendationInputBody: Swift.Equatable { let resourceGroupName: Swift.String? let componentName: Swift.String? let tier: ApplicationInsightsClientTypes.Tier? + let workloadName: Swift.String? let recommendationType: ApplicationInsightsClientTypes.RecommendationType? } @@ -1759,6 +1790,7 @@ extension DescribeComponentConfigurationRecommendationInputBody: Swift.Decodable case recommendationType = "RecommendationType" case resourceGroupName = "ResourceGroupName" case tier = "Tier" + case workloadName = "WorkloadName" } public init(from decoder: Swift.Decoder) throws { @@ -1769,6 +1801,8 @@ extension DescribeComponentConfigurationRecommendationInputBody: Swift.Decodable componentName = componentNameDecoded let tierDecoded = try containerValues.decodeIfPresent(ApplicationInsightsClientTypes.Tier.self, forKey: .tier) tier = tierDecoded + let workloadNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workloadName) + workloadName = workloadNameDecoded let recommendationTypeDecoded = try containerValues.decodeIfPresent(ApplicationInsightsClientTypes.RecommendationType.self, forKey: .recommendationType) recommendationType = recommendationTypeDecoded } @@ -5815,6 +5849,7 @@ enum UntagResourceOutputError: ClientRuntime.HttpResponseErrorBinding { extension UpdateApplicationInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case attachMissingPermission = "AttachMissingPermission" case autoConfigEnabled = "AutoConfigEnabled" case cweMonitorEnabled = "CWEMonitorEnabled" case opsCenterEnabled = "OpsCenterEnabled" @@ -5825,6 +5860,9 @@ extension UpdateApplicationInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let attachMissingPermission = self.attachMissingPermission { + try encodeContainer.encode(attachMissingPermission, forKey: .attachMissingPermission) + } if let autoConfigEnabled = self.autoConfigEnabled { try encodeContainer.encode(autoConfigEnabled, forKey: .autoConfigEnabled) } @@ -5853,6 +5891,8 @@ extension UpdateApplicationInput: ClientRuntime.URLPathProvider { } public struct UpdateApplicationInput: Swift.Equatable { + /// If set to true, the managed policies for SSM and CW will be attached to the instance roles if they are missing. + public var attachMissingPermission: Swift.Bool? /// Turns auto-configuration on or off. public var autoConfigEnabled: Swift.Bool? /// Indicates whether Application Insights can listen to CloudWatch events for the application resources, such as instance terminated, failed deployment, and others. @@ -5868,6 +5908,7 @@ public struct UpdateApplicationInput: Swift.Equatable { public var resourceGroupName: Swift.String? public init( + attachMissingPermission: Swift.Bool? = nil, autoConfigEnabled: Swift.Bool? = nil, cweMonitorEnabled: Swift.Bool? = nil, opsCenterEnabled: Swift.Bool? = nil, @@ -5876,6 +5917,7 @@ public struct UpdateApplicationInput: Swift.Equatable { resourceGroupName: Swift.String? = nil ) { + self.attachMissingPermission = attachMissingPermission self.autoConfigEnabled = autoConfigEnabled self.cweMonitorEnabled = cweMonitorEnabled self.opsCenterEnabled = opsCenterEnabled @@ -5892,10 +5934,12 @@ struct UpdateApplicationInputBody: Swift.Equatable { let opsItemSNSTopicArn: Swift.String? let removeSNSTopic: Swift.Bool? let autoConfigEnabled: Swift.Bool? + let attachMissingPermission: Swift.Bool? } extension UpdateApplicationInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case attachMissingPermission = "AttachMissingPermission" case autoConfigEnabled = "AutoConfigEnabled" case cweMonitorEnabled = "CWEMonitorEnabled" case opsCenterEnabled = "OpsCenterEnabled" @@ -5918,6 +5962,8 @@ extension UpdateApplicationInputBody: Swift.Decodable { removeSNSTopic = removeSNSTopicDecoded let autoConfigEnabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .autoConfigEnabled) autoConfigEnabled = autoConfigEnabledDecoded + let attachMissingPermissionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .attachMissingPermission) + attachMissingPermission = attachMissingPermissionDecoded } } @@ -6099,6 +6145,7 @@ enum UpdateComponentConfigurationOutputError: ClientRuntime.HttpResponseErrorBin let requestID = httpResponse.requestId switch restJSONError.errorType { case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceInUseException": return try await ResourceInUseException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) diff --git a/Sources/Services/AWSCodeBuild/CodeBuildClient.swift b/Sources/Services/AWSCodeBuild/CodeBuildClient.swift index 418d93763b3..5ca0ce561ad 100644 --- a/Sources/Services/AWSCodeBuild/CodeBuildClient.swift +++ b/Sources/Services/AWSCodeBuild/CodeBuildClient.swift @@ -1987,7 +1987,7 @@ extension CodeBuildClient: CodeBuildClientProtocol { /// /// * All build logs and artifacts are available to the public. Environment variables, source code, and other sensitive information may have been output to the build logs and artifacts. You must be careful about what information is output to the build logs. Some best practice are: /// - /// * Do not store sensitive values, especially Amazon Web Services access key IDs and secret access keys, in environment variables. We recommend that you use an Amazon EC2 Systems Manager Parameter Store or Secrets Manager to store sensitive values. + /// * Do not store sensitive values in environment variables. We recommend that you use an Amazon EC2 Systems Manager Parameter Store or Secrets Manager to store sensitive values. /// /// * Follow [Best practices for using webhooks](https://docs.aws.amazon.com/codebuild/latest/userguide/webhooks.html#webhook-best-practices) in the CodeBuild User Guide to limit which entities can trigger a build, and do not store the buildspec in the project itself, to ensure that your webhooks are as secure as possible. /// diff --git a/Sources/Services/AWSCodeBuild/CodeBuildClientProtocol.swift b/Sources/Services/AWSCodeBuild/CodeBuildClientProtocol.swift index 4b452017598..b252b1e54ec 100644 --- a/Sources/Services/AWSCodeBuild/CodeBuildClientProtocol.swift +++ b/Sources/Services/AWSCodeBuild/CodeBuildClientProtocol.swift @@ -496,7 +496,7 @@ public protocol CodeBuildClientProtocol { /// /// * All build logs and artifacts are available to the public. Environment variables, source code, and other sensitive information may have been output to the build logs and artifacts. You must be careful about what information is output to the build logs. Some best practice are: /// - /// * Do not store sensitive values, especially Amazon Web Services access key IDs and secret access keys, in environment variables. We recommend that you use an Amazon EC2 Systems Manager Parameter Store or Secrets Manager to store sensitive values. + /// * Do not store sensitive values in environment variables. We recommend that you use an Amazon EC2 Systems Manager Parameter Store or Secrets Manager to store sensitive values. /// /// * Follow [Best practices for using webhooks](https://docs.aws.amazon.com/codebuild/latest/userguide/webhooks.html#webhook-best-practices) in the CodeBuild User Guide to limit which entities can trigger a build, and do not store the buildspec in the project itself, to ensure that your webhooks are as secure as possible. /// diff --git a/Sources/Services/AWSCodeBuild/models/Models.swift b/Sources/Services/AWSCodeBuild/models/Models.swift index cda5634fd9d..1d5619036db 100644 --- a/Sources/Services/AWSCodeBuild/models/Models.swift +++ b/Sources/Services/AWSCodeBuild/models/Models.swift @@ -1495,7 +1495,7 @@ extension CodeBuildClientTypes { /// /// * If CodePipeline started the build, the pipeline's name (for example, codepipeline/my-demo-pipeline). /// - /// * If an IAM user started the build, the user's name (for example, MyUserName). + /// * If a user started the build, the user's name (for example, MyUserName). /// /// * If the Jenkins plugin for CodeBuild started the build, the string CodeBuild-Jenkins-Plugin. public var initiator: Swift.String? @@ -2024,7 +2024,7 @@ extension CodeBuildClientTypes { /// /// * If CodePipeline started the build, the pipeline's name (for example, codepipeline/my-demo-pipeline). /// - /// * If an IAM user started the build, the user's name. + /// * If a user started the build, the user's name. /// /// * If the Jenkins plugin for CodeBuild started the build, the string CodeBuild-Jenkins-Plugin. public var initiator: Swift.String? @@ -3094,6 +3094,11 @@ extension CodeBuildClientTypes { case buildGeneral1Large case buildGeneral1Medium case buildGeneral1Small + case buildLambda10gb + case buildLambda1gb + case buildLambda2gb + case buildLambda4gb + case buildLambda8gb case sdkUnknown(Swift.String) public static var allCases: [ComputeType] { @@ -3102,6 +3107,11 @@ extension CodeBuildClientTypes { .buildGeneral1Large, .buildGeneral1Medium, .buildGeneral1Small, + .buildLambda10gb, + .buildLambda1gb, + .buildLambda2gb, + .buildLambda4gb, + .buildLambda8gb, .sdkUnknown("") ] } @@ -3115,6 +3125,11 @@ extension CodeBuildClientTypes { case .buildGeneral1Large: return "BUILD_GENERAL1_LARGE" case .buildGeneral1Medium: return "BUILD_GENERAL1_MEDIUM" case .buildGeneral1Small: return "BUILD_GENERAL1_SMALL" + case .buildLambda10gb: return "BUILD_LAMBDA_10GB" + case .buildLambda1gb: return "BUILD_LAMBDA_1GB" + case .buildLambda2gb: return "BUILD_LAMBDA_2GB" + case .buildLambda4gb: return "BUILD_LAMBDA_4GB" + case .buildLambda8gb: return "BUILD_LAMBDA_8GB" case let .sdkUnknown(s): return s } } @@ -5054,8 +5069,10 @@ extension CodeBuildClientTypes { extension CodeBuildClientTypes { public enum EnvironmentType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case armContainer + case armLambdaContainer case linuxContainer case linuxGpuContainer + case linuxLambdaContainer case windowsContainer case windowsServer2019Container case sdkUnknown(Swift.String) @@ -5063,8 +5080,10 @@ extension CodeBuildClientTypes { public static var allCases: [EnvironmentType] { return [ .armContainer, + .armLambdaContainer, .linuxContainer, .linuxGpuContainer, + .linuxLambdaContainer, .windowsContainer, .windowsServer2019Container, .sdkUnknown("") @@ -5077,8 +5096,10 @@ extension CodeBuildClientTypes { public var rawValue: Swift.String { switch self { case .armContainer: return "ARM_CONTAINER" + case .armLambdaContainer: return "ARM_LAMBDA_CONTAINER" case .linuxContainer: return "LINUX_CONTAINER" case .linuxGpuContainer: return "LINUX_GPU_CONTAINER" + case .linuxLambdaContainer: return "LINUX_LAMBDA_CONTAINER" case .windowsContainer: return "WINDOWS_CONTAINER" case .windowsServer2019Container: return "WINDOWS_SERVER_2019_CONTAINER" case let .sdkUnknown(s): return s @@ -5131,13 +5152,13 @@ extension CodeBuildClientTypes { public var name: Swift.String? /// The type of environment variable. Valid values include: /// - /// * PARAMETER_STORE: An environment variable stored in Systems Manager Parameter Store. To learn how to specify a parameter store environment variable, see [env/parameter-store](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.env.parameter-store) in the CodeBuild User Guide. + /// * PARAMETER_STORE: An environment variable stored in Systems Manager Parameter Store. For environment variables of this type, specify the name of the parameter as the value of the EnvironmentVariable. The parameter value will be substituted for the name at runtime. You can also define Parameter Store environment variables in the buildspec. To learn how to do so, see [env/parameter-store](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.env.parameter-store) in the CodeBuild User Guide. /// /// * PLAINTEXT: An environment variable in plain text format. This is the default value. /// - /// * SECRETS_MANAGER: An environment variable stored in Secrets Manager. To learn how to specify a secrets manager environment variable, see [env/secrets-manager](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.env.secrets-manager) in the CodeBuild User Guide. + /// * SECRETS_MANAGER: An environment variable stored in Secrets Manager. For environment variables of this type, specify the name of the secret as the value of the EnvironmentVariable. The secret value will be substituted for the name at runtime. You can also define Secrets Manager environment variables in the buildspec. To learn how to do so, see [env/secrets-manager](https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.env.secrets-manager) in the CodeBuild User Guide. public var type: CodeBuildClientTypes.EnvironmentVariableType? - /// The value of the environment variable. We strongly discourage the use of PLAINTEXT environment variables to store sensitive values, especially Amazon Web Services secret key IDs and secret access keys. PLAINTEXT environment variables can be displayed in plain text using the CodeBuild console and the CLI. For sensitive values, we recommend you use an environment variable of type PARAMETER_STORE or SECRETS_MANAGER. + /// The value of the environment variable. We strongly discourage the use of PLAINTEXT environment variables to store sensitive values, especially Amazon Web Services secret key IDs. PLAINTEXT environment variables can be displayed in plain text using the CodeBuild console and the CLI. For sensitive values, we recommend you use an environment variable of type PARAMETER_STORE or SECRETS_MANAGER. /// This member is required. public var value: Swift.String? @@ -7803,9 +7824,9 @@ extension CodeBuildClientTypes { public struct LogsLocation: Swift.Equatable { /// Information about CloudWatch Logs for a build project. public var cloudWatchLogs: CodeBuildClientTypes.CloudWatchLogsConfig? - /// The ARN of CloudWatch Logs for a build project. Its format is arn:${Partition}:logs:${Region}:${Account}:log-group:${LogGroupName}:log-stream:${LogStreamName}. For more information, see [Resources Defined by CloudWatch Logs](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-resources-for-iam-policies). + /// The ARN of the CloudWatch Logs stream for a build execution. Its format is arn:${Partition}:logs:${Region}:${Account}:log-group:${LogGroupName}:log-stream:${LogStreamName}. The CloudWatch Logs stream is created during the PROVISIONING phase of a build and the ARN will not be valid until it is created. For more information, see [Resources Defined by CloudWatch Logs](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazoncloudwatchlogs.html#amazoncloudwatchlogs-resources-for-iam-policies). public var cloudWatchLogsArn: Swift.String? - /// The URL to an individual build log in CloudWatch Logs. + /// The URL to an individual build log in CloudWatch Logs. The log stream is created during the PROVISIONING phase of a build and the deeplink will not be valid until it is created. public var deepLink: Swift.String? /// The name of the CloudWatch Logs group for the build logs. public var groupName: Swift.String? @@ -8897,6 +8918,25 @@ extension CodeBuildClientTypes { /// /// * BUILD_GENERAL1_2XLARGE: Use up to 145 GB memory, 72 vCPUs, and 824 GB of SSD storage for builds. This compute type supports Docker images up to 100 GB uncompressed. /// + /// * BUILD_LAMBDA_1GB: Use up to 1 GB memory for builds. Only available for environment type LINUX_LAMBDA_CONTAINER and ARM_LAMBDA_CONTAINER. + /// + /// * BUILD_LAMBDA_2GB: Use up to 2 GB memory for builds. Only available for environment type LINUX_LAMBDA_CONTAINER and ARM_LAMBDA_CONTAINER. + /// + /// * BUILD_LAMBDA_4GB: Use up to 4 GB memory for builds. Only available for environment type LINUX_LAMBDA_CONTAINER and ARM_LAMBDA_CONTAINER. + /// + /// * BUILD_LAMBDA_8GB: Use up to 8 GB memory for builds. Only available for environment type LINUX_LAMBDA_CONTAINER and ARM_LAMBDA_CONTAINER. + /// + /// * BUILD_LAMBDA_10GB: Use up to 10 GB memory for builds. Only available for environment type LINUX_LAMBDA_CONTAINER and ARM_LAMBDA_CONTAINER. + /// + /// + /// If you use BUILD_GENERAL1_SMALL: + /// + /// * For environment type LINUX_CONTAINER, you can use up to 3 GB memory and 2 vCPUs for builds. + /// + /// * For environment type LINUX_GPU_CONTAINER, you can use up to 16 GB memory, 4 vCPUs, and 1 NVIDIA A10G Tensor Core GPU for builds. + /// + /// * For environment type ARM_CONTAINER, you can use up to 4 GB memory and 2 vCPUs on ARM-based processors for builds. + /// /// /// If you use BUILD_GENERAL1_LARGE: /// @@ -8947,6 +8987,11 @@ extension CodeBuildClientTypes { /// /// /// + /// * The environment types ARM_LAMBDA_CONTAINER and LINUX_LAMBDA_CONTAINER are available only in regions US East (N. Virginia), US East (Ohio), US West (Oregon), Asia Pacific (Mumbai), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), EU (Frankfurt), EU (Ireland), and South America (São Paulo). + /// + /// + /// + /// /// * The environment types WINDOWS_CONTAINER and WINDOWS_SERVER_2019_CONTAINER are available only in regions US East (N. Virginia), US East (Ohio), US West (Oregon), and EU (Ireland). /// /// diff --git a/Sources/Services/AWSCodePipeline/models/Models.swift b/Sources/Services/AWSCodePipeline/models/Models.swift index 380e1fb457e..ef266a99fe7 100644 --- a/Sources/Services/AWSCodePipeline/models/Models.swift +++ b/Sources/Services/AWSCodePipeline/models/Models.swift @@ -5259,6 +5259,168 @@ enum GetThirdPartyJobDetailsOutputError: ClientRuntime.HttpResponseErrorBinding } } +extension CodePipelineClientTypes.GitConfiguration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case push + case sourceActionName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let push = push { + var pushContainer = encodeContainer.nestedUnkeyedContainer(forKey: .push) + for gitpushfilter0 in push { + try pushContainer.encode(gitpushfilter0) + } + } + if let sourceActionName = self.sourceActionName { + try encodeContainer.encode(sourceActionName, forKey: .sourceActionName) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let sourceActionNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceActionName) + sourceActionName = sourceActionNameDecoded + let pushContainer = try containerValues.decodeIfPresent([CodePipelineClientTypes.GitPushFilter?].self, forKey: .push) + var pushDecoded0:[CodePipelineClientTypes.GitPushFilter]? = nil + if let pushContainer = pushContainer { + pushDecoded0 = [CodePipelineClientTypes.GitPushFilter]() + for structure0 in pushContainer { + if let structure0 = structure0 { + pushDecoded0?.append(structure0) + } + } + } + push = pushDecoded0 + } +} + +extension CodePipelineClientTypes { + /// A type of trigger configuration for Git-based source actions. You can specify the Git configuration trigger type for all third-party Git-based source actions that are supported by the CodeStarSourceConnection action type. + public struct GitConfiguration: Swift.Equatable { + /// The field where the repository event that will start the pipeline, such as pushing Git tags, is specified with details. Git tags is the only supported event type. + public var push: [CodePipelineClientTypes.GitPushFilter]? + /// The name of the pipeline source action where the trigger configuration, such as Git tags, is specified. The trigger configuration will start the pipeline upon the specified change only. You can only specify one trigger configuration per source action. + /// This member is required. + public var sourceActionName: Swift.String? + + public init( + push: [CodePipelineClientTypes.GitPushFilter]? = nil, + sourceActionName: Swift.String? = nil + ) + { + self.push = push + self.sourceActionName = sourceActionName + } + } + +} + +extension CodePipelineClientTypes.GitPushFilter: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case tags + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let tags = self.tags { + try encodeContainer.encode(tags, forKey: .tags) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let tagsDecoded = try containerValues.decodeIfPresent(CodePipelineClientTypes.GitTagFilterCriteria.self, forKey: .tags) + tags = tagsDecoded + } +} + +extension CodePipelineClientTypes { + /// The event criteria that specify when a specified repository event will start the pipeline for the specified trigger configuration, such as the lists of Git tags to include and exclude. + public struct GitPushFilter: Swift.Equatable { + /// The field that contains the details for the Git tags trigger configuration. + public var tags: CodePipelineClientTypes.GitTagFilterCriteria? + + public init( + tags: CodePipelineClientTypes.GitTagFilterCriteria? = nil + ) + { + self.tags = tags + } + } + +} + +extension CodePipelineClientTypes.GitTagFilterCriteria: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case excludes + case includes + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let excludes = excludes { + var excludesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .excludes) + for gittagnamepattern0 in excludes { + try excludesContainer.encode(gittagnamepattern0) + } + } + if let includes = includes { + var includesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .includes) + for gittagnamepattern0 in includes { + try includesContainer.encode(gittagnamepattern0) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let includesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .includes) + var includesDecoded0:[Swift.String]? = nil + if let includesContainer = includesContainer { + includesDecoded0 = [Swift.String]() + for string0 in includesContainer { + if let string0 = string0 { + includesDecoded0?.append(string0) + } + } + } + includes = includesDecoded0 + let excludesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .excludes) + var excludesDecoded0:[Swift.String]? = nil + if let excludesContainer = excludesContainer { + excludesDecoded0 = [Swift.String]() + for string0 in excludesContainer { + if let string0 = string0 { + excludesDecoded0?.append(string0) + } + } + } + excludes = excludesDecoded0 + } +} + +extension CodePipelineClientTypes { + /// The Git tags specified as filter criteria for whether a Git tag repository event will start the pipeline. + public struct GitTagFilterCriteria: Swift.Equatable { + /// The list of patterns of Git tags that, when pushed, are to be excluded from starting the pipeline. + public var excludes: [Swift.String]? + /// The list of patterns of Git tags that, when pushed, are to be included as criteria that starts the pipeline. + public var includes: [Swift.String]? + + public init( + excludes: [Swift.String]? = nil, + includes: [Swift.String]? = nil + ) + { + self.excludes = excludes + self.includes = includes + } + } + +} + extension CodePipelineClientTypes.InputArtifact: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case name @@ -7786,8 +7948,11 @@ extension CodePipelineClientTypes.PipelineDeclaration: Swift.Codable { case artifactStore case artifactStores case name + case pipelineType case roleArn case stages + case triggers + case variables case version } @@ -7805,6 +7970,9 @@ extension CodePipelineClientTypes.PipelineDeclaration: Swift.Codable { if let name = self.name { try encodeContainer.encode(name, forKey: .name) } + if let pipelineType = self.pipelineType { + try encodeContainer.encode(pipelineType.rawValue, forKey: .pipelineType) + } if let roleArn = self.roleArn { try encodeContainer.encode(roleArn, forKey: .roleArn) } @@ -7814,6 +7982,18 @@ extension CodePipelineClientTypes.PipelineDeclaration: Swift.Codable { try stagesContainer.encode(stagedeclaration0) } } + if let triggers = triggers { + var triggersContainer = encodeContainer.nestedUnkeyedContainer(forKey: .triggers) + for pipelinetriggerdeclaration0 in triggers { + try triggersContainer.encode(pipelinetriggerdeclaration0) + } + } + if let variables = variables { + var variablesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .variables) + for pipelinevariabledeclaration0 in variables { + try variablesContainer.encode(pipelinevariabledeclaration0) + } + } if let version = self.version { try encodeContainer.encode(version, forKey: .version) } @@ -7851,6 +8031,30 @@ extension CodePipelineClientTypes.PipelineDeclaration: Swift.Codable { stages = stagesDecoded0 let versionDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .version) version = versionDecoded + let pipelineTypeDecoded = try containerValues.decodeIfPresent(CodePipelineClientTypes.PipelineType.self, forKey: .pipelineType) + pipelineType = pipelineTypeDecoded + let triggersContainer = try containerValues.decodeIfPresent([CodePipelineClientTypes.PipelineTriggerDeclaration?].self, forKey: .triggers) + var triggersDecoded0:[CodePipelineClientTypes.PipelineTriggerDeclaration]? = nil + if let triggersContainer = triggersContainer { + triggersDecoded0 = [CodePipelineClientTypes.PipelineTriggerDeclaration]() + for structure0 in triggersContainer { + if let structure0 = structure0 { + triggersDecoded0?.append(structure0) + } + } + } + triggers = triggersDecoded0 + let variablesContainer = try containerValues.decodeIfPresent([CodePipelineClientTypes.PipelineVariableDeclaration?].self, forKey: .variables) + var variablesDecoded0:[CodePipelineClientTypes.PipelineVariableDeclaration]? = nil + if let variablesContainer = variablesContainer { + variablesDecoded0 = [CodePipelineClientTypes.PipelineVariableDeclaration]() + for structure0 in variablesContainer { + if let structure0 = structure0 { + variablesDecoded0?.append(structure0) + } + } + } + variables = variablesDecoded0 } } @@ -7864,12 +8068,25 @@ extension CodePipelineClientTypes { /// The name of the pipeline. /// This member is required. public var name: Swift.String? + /// CodePipeline provides the following pipeline types, which differ in characteristics and price, so that you can tailor your pipeline features and cost to the needs of your applications. + /// + /// * V1 type pipelines have a JSON structure that contains standard pipeline, stage, and action-level parameters. + /// + /// * V2 type pipelines have the same structure as a V1 type, along with additional parameters for release safety and trigger configuration. + /// + /// + /// Including V2 parameters, such as triggers on Git tags, in the pipeline JSON when creating or updating a pipeline will result in the pipeline having the V2 type of pipeline and the associated costs. For information about pricing for CodePipeline, see [Pricing](https://aws.amazon.com/codepipeline/pricing/). For information about which type of pipeline to choose, see [What type of pipeline is right for me?](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html). + public var pipelineType: CodePipelineClientTypes.PipelineType? /// The Amazon Resource Name (ARN) for CodePipeline to use to either perform actions with no actionRoleArn, or to use to assume roles for actions with an actionRoleArn. /// This member is required. public var roleArn: Swift.String? /// The stage in which to perform the action. /// This member is required. public var stages: [CodePipelineClientTypes.StageDeclaration]? + /// The trigger configuration specifying a type of event, such as Git tags, that starts the pipeline. When a trigger configuration is specified, default change detection for repository and branch commits is disabled. + public var triggers: [CodePipelineClientTypes.PipelineTriggerDeclaration]? + /// A list that defines the pipeline variables for a pipeline resource. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9@\-_]+. + public var variables: [CodePipelineClientTypes.PipelineVariableDeclaration]? /// The version number of the pipeline. A new pipeline always has a version number of 1. This number is incremented when a pipeline is updated. public var version: Swift.Int? @@ -7877,16 +8094,22 @@ extension CodePipelineClientTypes { artifactStore: CodePipelineClientTypes.ArtifactStore? = nil, artifactStores: [Swift.String:CodePipelineClientTypes.ArtifactStore]? = nil, name: Swift.String? = nil, + pipelineType: CodePipelineClientTypes.PipelineType? = nil, roleArn: Swift.String? = nil, stages: [CodePipelineClientTypes.StageDeclaration]? = nil, + triggers: [CodePipelineClientTypes.PipelineTriggerDeclaration]? = nil, + variables: [CodePipelineClientTypes.PipelineVariableDeclaration]? = nil, version: Swift.Int? = nil ) { self.artifactStore = artifactStore self.artifactStores = artifactStores self.name = name + self.pipelineType = pipelineType self.roleArn = roleArn self.stages = stages + self.triggers = triggers + self.variables = variables self.version = version } } @@ -7901,6 +8124,8 @@ extension CodePipelineClientTypes.PipelineExecution: Swift.Codable { case pipelineVersion case status case statusSummary + case trigger + case variables } public func encode(to encoder: Swift.Encoder) throws { @@ -7926,6 +8151,15 @@ extension CodePipelineClientTypes.PipelineExecution: Swift.Codable { if let statusSummary = self.statusSummary { try encodeContainer.encode(statusSummary, forKey: .statusSummary) } + if let trigger = self.trigger { + try encodeContainer.encode(trigger, forKey: .trigger) + } + if let variables = variables { + var variablesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .variables) + for resolvedpipelinevariable0 in variables { + try variablesContainer.encode(resolvedpipelinevariable0) + } + } } public init(from decoder: Swift.Decoder) throws { @@ -7951,6 +8185,19 @@ extension CodePipelineClientTypes.PipelineExecution: Swift.Codable { } } artifactRevisions = artifactRevisionsDecoded0 + let triggerDecoded = try containerValues.decodeIfPresent(CodePipelineClientTypes.ExecutionTrigger.self, forKey: .trigger) + trigger = triggerDecoded + let variablesContainer = try containerValues.decodeIfPresent([CodePipelineClientTypes.ResolvedPipelineVariable?].self, forKey: .variables) + var variablesDecoded0:[CodePipelineClientTypes.ResolvedPipelineVariable]? = nil + if let variablesContainer = variablesContainer { + variablesDecoded0 = [CodePipelineClientTypes.ResolvedPipelineVariable]() + for structure0 in variablesContainer { + if let structure0 = structure0 { + variablesDecoded0?.append(structure0) + } + } + } + variables = variablesDecoded0 } } @@ -7983,6 +8230,10 @@ extension CodePipelineClientTypes { public var status: CodePipelineClientTypes.PipelineExecutionStatus? /// A summary that contains a description of the pipeline execution status. public var statusSummary: Swift.String? + /// The interaction or event that started a pipeline execution. + public var trigger: CodePipelineClientTypes.ExecutionTrigger? + /// A list of pipeline variables used for the pipeline execution. + public var variables: [CodePipelineClientTypes.ResolvedPipelineVariable]? public init( artifactRevisions: [CodePipelineClientTypes.ArtifactRevision]? = nil, @@ -7990,7 +8241,9 @@ extension CodePipelineClientTypes { pipelineName: Swift.String? = nil, pipelineVersion: Swift.Int? = nil, status: CodePipelineClientTypes.PipelineExecutionStatus? = nil, - statusSummary: Swift.String? = nil + statusSummary: Swift.String? = nil, + trigger: CodePipelineClientTypes.ExecutionTrigger? = nil, + variables: [CodePipelineClientTypes.ResolvedPipelineVariable]? = nil ) { self.artifactRevisions = artifactRevisions @@ -7999,6 +8252,8 @@ extension CodePipelineClientTypes { self.pipelineVersion = pipelineVersion self.status = status self.statusSummary = statusSummary + self.trigger = trigger + self.variables = variables } } @@ -8462,6 +8717,7 @@ extension CodePipelineClientTypes.PipelineSummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case created case name + case pipelineType case updated case version } @@ -8474,6 +8730,9 @@ extension CodePipelineClientTypes.PipelineSummary: Swift.Codable { if let name = self.name { try encodeContainer.encode(name, forKey: .name) } + if let pipelineType = self.pipelineType { + try encodeContainer.encode(pipelineType.rawValue, forKey: .pipelineType) + } if let updated = self.updated { try encodeContainer.encodeTimestamp(updated, format: .epochSeconds, forKey: .updated) } @@ -8488,6 +8747,8 @@ extension CodePipelineClientTypes.PipelineSummary: Swift.Codable { name = nameDecoded let versionDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .version) version = versionDecoded + let pipelineTypeDecoded = try containerValues.decodeIfPresent(CodePipelineClientTypes.PipelineType.self, forKey: .pipelineType) + pipelineType = pipelineTypeDecoded let createdDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .created) created = createdDecoded let updatedDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .updated) @@ -8502,6 +8763,15 @@ extension CodePipelineClientTypes { public var created: ClientRuntime.Date? /// The name of the pipeline. public var name: Swift.String? + /// CodePipeline provides the following pipeline types, which differ in characteristics and price, so that you can tailor your pipeline features and cost to the needs of your applications. + /// + /// * V1 type pipelines have a JSON structure that contains standard pipeline, stage, and action-level parameters. + /// + /// * V2 type pipelines have the same structure as a V1 type, along with additional parameters for release safety and trigger configuration. + /// + /// + /// Including V2 parameters, such as triggers on Git tags, in the pipeline JSON when creating or updating a pipeline will result in the pipeline having the V2 type of pipeline and the associated costs. For information about pricing for CodePipeline, see [Pricing](https://aws.amazon.com/codepipeline/pricing/). For information about which type of pipeline to choose, see [What type of pipeline is right for me?](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html). + public var pipelineType: CodePipelineClientTypes.PipelineType? /// The date and time of the last update to the pipeline, in timestamp format. public var updated: ClientRuntime.Date? /// The version number of the pipeline. @@ -8510,12 +8780,14 @@ extension CodePipelineClientTypes { public init( created: ClientRuntime.Date? = nil, name: Swift.String? = nil, + pipelineType: CodePipelineClientTypes.PipelineType? = nil, updated: ClientRuntime.Date? = nil, version: Swift.Int? = nil ) { self.created = created self.name = name + self.pipelineType = pipelineType self.updated = updated self.version = version } @@ -8523,6 +8795,217 @@ extension CodePipelineClientTypes { } +extension CodePipelineClientTypes.PipelineTriggerDeclaration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case gitConfiguration + case providerType + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let gitConfiguration = self.gitConfiguration { + try encodeContainer.encode(gitConfiguration, forKey: .gitConfiguration) + } + if let providerType = self.providerType { + try encodeContainer.encode(providerType.rawValue, forKey: .providerType) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let providerTypeDecoded = try containerValues.decodeIfPresent(CodePipelineClientTypes.PipelineTriggerProviderType.self, forKey: .providerType) + providerType = providerTypeDecoded + let gitConfigurationDecoded = try containerValues.decodeIfPresent(CodePipelineClientTypes.GitConfiguration.self, forKey: .gitConfiguration) + gitConfiguration = gitConfigurationDecoded + } +} + +extension CodePipelineClientTypes { + /// Represents information about the specified trigger configuration, such as the filter criteria and the source stage for the action that contains the trigger. This is only supported for the CodeStarSourceConnection action type. When a trigger configuration is specified, default change detection for repository and branch commits is disabled. + public struct PipelineTriggerDeclaration: Swift.Equatable { + /// Provides the filter criteria and the source stage for the repository event that starts the pipeline, such as Git tags. + /// This member is required. + public var gitConfiguration: CodePipelineClientTypes.GitConfiguration? + /// The source provider for the event, such as connections configured for a repository with Git tags, for the specified trigger configuration. + /// This member is required. + public var providerType: CodePipelineClientTypes.PipelineTriggerProviderType? + + public init( + gitConfiguration: CodePipelineClientTypes.GitConfiguration? = nil, + providerType: CodePipelineClientTypes.PipelineTriggerProviderType? = nil + ) + { + self.gitConfiguration = gitConfiguration + self.providerType = providerType + } + } + +} + +extension CodePipelineClientTypes { + public enum PipelineTriggerProviderType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case codestarsourceconnection + case sdkUnknown(Swift.String) + + public static var allCases: [PipelineTriggerProviderType] { + return [ + .codestarsourceconnection, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .codestarsourceconnection: return "CodeStarSourceConnection" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = PipelineTriggerProviderType(rawValue: rawValue) ?? PipelineTriggerProviderType.sdkUnknown(rawValue) + } + } +} + +extension CodePipelineClientTypes { + public enum PipelineType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case v1 + case v2 + case sdkUnknown(Swift.String) + + public static var allCases: [PipelineType] { + return [ + .v1, + .v2, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .v1: return "V1" + case .v2: return "V2" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = PipelineType(rawValue: rawValue) ?? PipelineType.sdkUnknown(rawValue) + } + } +} + +extension CodePipelineClientTypes.PipelineVariable: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case name + case value + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let value = self.value { + try encodeContainer.encode(value, forKey: .value) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let valueDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .value) + value = valueDecoded + } +} + +extension CodePipelineClientTypes { + /// A pipeline-level variable used for a pipeline execution. + public struct PipelineVariable: Swift.Equatable { + /// The name of a pipeline-level variable. + /// This member is required. + public var name: Swift.String? + /// The value of a pipeline-level variable. + /// This member is required. + public var value: Swift.String? + + public init( + name: Swift.String? = nil, + value: Swift.String? = nil + ) + { + self.name = name + self.value = value + } + } + +} + +extension CodePipelineClientTypes.PipelineVariableDeclaration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case defaultValue + case description + case name + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let defaultValue = self.defaultValue { + try encodeContainer.encode(defaultValue, forKey: .defaultValue) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let defaultValueDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .defaultValue) + defaultValue = defaultValueDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + } +} + +extension CodePipelineClientTypes { + /// A variable declared at the pipeline level. + public struct PipelineVariableDeclaration: Swift.Equatable { + /// The value of a pipeline-level variable. + public var defaultValue: Swift.String? + /// The description of a pipeline-level variable. It's used to add additional context about the variable, and not being used at time when pipeline executes. + public var description: Swift.String? + /// The name of a pipeline-level variable. + /// This member is required. + public var name: Swift.String? + + public init( + defaultValue: Swift.String? = nil, + description: Swift.String? = nil, + name: Swift.String? = nil + ) + { + self.defaultValue = defaultValue + self.description = description + self.name = name + } + } + +} + extension PipelineVersionNotFoundException { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let data = try await httpResponse.body.readData(), @@ -9853,6 +10336,51 @@ extension RequestFailedExceptionBody: Swift.Decodable { } } +extension CodePipelineClientTypes.ResolvedPipelineVariable: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case name + case resolvedValue + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let resolvedValue = self.resolvedValue { + try encodeContainer.encode(resolvedValue, forKey: .resolvedValue) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let resolvedValueDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resolvedValue) + resolvedValue = resolvedValueDecoded + } +} + +extension CodePipelineClientTypes { + /// A pipeline-level variable used for a pipeline execution. + public struct ResolvedPipelineVariable: Swift.Equatable { + /// The name of a pipeline-level variable. + public var name: Swift.String? + /// The resolved value of a pipeline-level variable. + public var resolvedValue: Swift.String? + + public init( + name: Swift.String? = nil, + resolvedValue: Swift.String? = nil + ) + { + self.name = name + self.resolvedValue = resolvedValue + } + } + +} + extension ResourceNotFoundException { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let data = try await httpResponse.body.readData(), @@ -10686,6 +11214,7 @@ extension StartPipelineExecutionInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientRequestToken case name + case variables } public func encode(to encoder: Swift.Encoder) throws { @@ -10696,6 +11225,12 @@ extension StartPipelineExecutionInput: Swift.Encodable { if let name = self.name { try encodeContainer.encode(name, forKey: .name) } + if let variables = variables { + var variablesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .variables) + for pipelinevariable0 in variables { + try variablesContainer.encode(pipelinevariable0) + } + } } } @@ -10712,19 +11247,24 @@ public struct StartPipelineExecutionInput: Swift.Equatable { /// The name of the pipeline to start. /// This member is required. public var name: Swift.String? + /// A list that overrides pipeline variables for a pipeline execution that's being started. Variable names must match [A-Za-z0-9@\-_]+, and the values can be anything except an empty string. + public var variables: [CodePipelineClientTypes.PipelineVariable]? public init( clientRequestToken: Swift.String? = nil, - name: Swift.String? = nil + name: Swift.String? = nil, + variables: [CodePipelineClientTypes.PipelineVariable]? = nil ) { self.clientRequestToken = clientRequestToken self.name = name + self.variables = variables } } struct StartPipelineExecutionInputBody: Swift.Equatable { let name: Swift.String? + let variables: [CodePipelineClientTypes.PipelineVariable]? let clientRequestToken: Swift.String? } @@ -10732,12 +11272,24 @@ extension StartPipelineExecutionInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientRequestToken case name + case variables } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) name = nameDecoded + let variablesContainer = try containerValues.decodeIfPresent([CodePipelineClientTypes.PipelineVariable?].self, forKey: .variables) + var variablesDecoded0:[CodePipelineClientTypes.PipelineVariable]? = nil + if let variablesContainer = variablesContainer { + variablesDecoded0 = [CodePipelineClientTypes.PipelineVariable]() + for structure0 in variablesContainer { + if let structure0 = structure0 { + variablesDecoded0?.append(structure0) + } + } + } + variables = variablesDecoded0 let clientRequestTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientRequestToken) clientRequestToken = clientRequestTokenDecoded } @@ -11480,6 +12032,7 @@ extension CodePipelineClientTypes { case putactionrevision case startpipelineexecution case webhook + case webhookv2 case sdkUnknown(Swift.String) public static var allCases: [TriggerType] { @@ -11490,6 +12043,7 @@ extension CodePipelineClientTypes { .putactionrevision, .startpipelineexecution, .webhook, + .webhookv2, .sdkUnknown("") ] } @@ -11505,6 +12059,7 @@ extension CodePipelineClientTypes { case .putactionrevision: return "PutActionRevision" case .startpipelineexecution: return "StartPipelineExecution" case .webhook: return "Webhook" + case .webhookv2: return "WebhookV2" case let .sdkUnknown(s): return s } } diff --git a/Sources/Services/AWSConfigService/models/Models.swift b/Sources/Services/AWSConfigService/models/Models.swift index 23bb11acadd..28e68650dfb 100644 --- a/Sources/Services/AWSConfigService/models/Models.swift +++ b/Sources/Services/AWSConfigService/models/Models.swift @@ -22200,6 +22200,7 @@ extension ResourceNotFoundExceptionBody: Swift.Decodable { extension ConfigClientTypes { public enum ResourceType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case acmpcacertificateauthority + case acmpcacertificateauthorityactivation case apsrulegroupsnamespace case accessanalyzeranalyzer case accountpublicaccessblock @@ -22215,6 +22216,8 @@ extension ConfigClientTypes { case appconfighostedconfigurationversion case appflowflow case appintegrationseventintegration + case appmeshgatewayroute + case appmeshmesh case appmeshroute case appmeshvirtualgateway case appmeshvirtualnode @@ -22264,7 +22267,9 @@ extension ConfigClientTypes { case codeguruprofilerprofilinggroup case codegurureviewerrepositoryassociation case conformancepackcompliance + case connectinstance case connectphonenumber + case connectquickconnect case customergateway case customerprofilesdomain case customerprofilesobjecttype @@ -22294,10 +22299,12 @@ extension ConfigClientTypes { case distribution case domain case ec2capacityreservation + case ec2carriergateway case ec2clientvpnendpoint case ec2dhcpoptions case ec2ec2fleet case ec2ipam + case ec2ipampool case ec2ipamscope case ec2networkinsightspath case ec2prefixlist @@ -22306,10 +22313,13 @@ extension ConfigClientTypes { case ec2trafficmirrorfilter case ec2trafficmirrorsession case ec2trafficmirrortarget + case ec2transitgatewayconnect + case ec2transitgatewaymulticastdomain case ecrpublicrepository case ecrpullthroughcacherule case ecrregistrypolicy case ecrrepository + case ecscapacityprovider case ecscluster case ecsservice case ecstaskdefinition @@ -22364,6 +22374,7 @@ extension ConfigClientTypes { case guarddutythreatintelset case healthlakefhirdatastore case host + case iaminstanceprofile case iamsamlprovider case iamservercertificate case ipsetv2 @@ -22383,6 +22394,7 @@ extension ConfigClientTypes { case iotanalyticsdatastore case iotanalyticspipeline case iotauthorizer + case iotcacertificate case iotcustommetric case iotdimension case ioteventsalarmmodel @@ -22404,10 +22416,12 @@ extension ConfigClientTypes { case iottwinmakercomponenttype case iottwinmakerentity case iottwinmakerscene + case iottwinmakersyncjob case iottwinmakerworkspace case iotwirelessfuotatask case iotwirelessmulticastgroup case iotwirelessserviceprofile + case kafkaconnectconnector case kendraindex case key case kinesisanalyticsv2application @@ -22416,6 +22430,7 @@ extension ConfigClientTypes { case kinesisstreamconsumer case kinesisvideosignalingchannel case kinesisvideostream + case lambdacodesigningconfig case launchconfiguration case launchtemplate case lexbot @@ -22448,6 +22463,7 @@ extension ConfigClientTypes { case networkfirewallrulegroup case networkinsightsaccessscopeanalysis case networkinterface + case networkmanagerconnectpeer case networkmanagercustomergatewayassociation case networkmanagerdevice case networkmanagerglobalnetwork @@ -22492,6 +22508,7 @@ extension ConfigClientTypes { case resiliencehubapp case resiliencehubresiliencypolicy case resourcecompliance + case resourceexplorer2index case restapi case robomakerrobotapplication case robomakerrobotapplicationversion @@ -22576,6 +22593,7 @@ extension ConfigClientTypes { public static var allCases: [ResourceType] { return [ .acmpcacertificateauthority, + .acmpcacertificateauthorityactivation, .apsrulegroupsnamespace, .accessanalyzeranalyzer, .accountpublicaccessblock, @@ -22591,6 +22609,8 @@ extension ConfigClientTypes { .appconfighostedconfigurationversion, .appflowflow, .appintegrationseventintegration, + .appmeshgatewayroute, + .appmeshmesh, .appmeshroute, .appmeshvirtualgateway, .appmeshvirtualnode, @@ -22640,7 +22660,9 @@ extension ConfigClientTypes { .codeguruprofilerprofilinggroup, .codegurureviewerrepositoryassociation, .conformancepackcompliance, + .connectinstance, .connectphonenumber, + .connectquickconnect, .customergateway, .customerprofilesdomain, .customerprofilesobjecttype, @@ -22670,10 +22692,12 @@ extension ConfigClientTypes { .distribution, .domain, .ec2capacityreservation, + .ec2carriergateway, .ec2clientvpnendpoint, .ec2dhcpoptions, .ec2ec2fleet, .ec2ipam, + .ec2ipampool, .ec2ipamscope, .ec2networkinsightspath, .ec2prefixlist, @@ -22682,10 +22706,13 @@ extension ConfigClientTypes { .ec2trafficmirrorfilter, .ec2trafficmirrorsession, .ec2trafficmirrortarget, + .ec2transitgatewayconnect, + .ec2transitgatewaymulticastdomain, .ecrpublicrepository, .ecrpullthroughcacherule, .ecrregistrypolicy, .ecrrepository, + .ecscapacityprovider, .ecscluster, .ecsservice, .ecstaskdefinition, @@ -22740,6 +22767,7 @@ extension ConfigClientTypes { .guarddutythreatintelset, .healthlakefhirdatastore, .host, + .iaminstanceprofile, .iamsamlprovider, .iamservercertificate, .ipsetv2, @@ -22759,6 +22787,7 @@ extension ConfigClientTypes { .iotanalyticsdatastore, .iotanalyticspipeline, .iotauthorizer, + .iotcacertificate, .iotcustommetric, .iotdimension, .ioteventsalarmmodel, @@ -22780,10 +22809,12 @@ extension ConfigClientTypes { .iottwinmakercomponenttype, .iottwinmakerentity, .iottwinmakerscene, + .iottwinmakersyncjob, .iottwinmakerworkspace, .iotwirelessfuotatask, .iotwirelessmulticastgroup, .iotwirelessserviceprofile, + .kafkaconnectconnector, .kendraindex, .key, .kinesisanalyticsv2application, @@ -22792,6 +22823,7 @@ extension ConfigClientTypes { .kinesisstreamconsumer, .kinesisvideosignalingchannel, .kinesisvideostream, + .lambdacodesigningconfig, .launchconfiguration, .launchtemplate, .lexbot, @@ -22824,6 +22856,7 @@ extension ConfigClientTypes { .networkfirewallrulegroup, .networkinsightsaccessscopeanalysis, .networkinterface, + .networkmanagerconnectpeer, .networkmanagercustomergatewayassociation, .networkmanagerdevice, .networkmanagerglobalnetwork, @@ -22868,6 +22901,7 @@ extension ConfigClientTypes { .resiliencehubapp, .resiliencehubresiliencypolicy, .resourcecompliance, + .resourceexplorer2index, .restapi, .robomakerrobotapplication, .robomakerrobotapplicationversion, @@ -22957,6 +22991,7 @@ extension ConfigClientTypes { public var rawValue: Swift.String { switch self { case .acmpcacertificateauthority: return "AWS::ACMPCA::CertificateAuthority" + case .acmpcacertificateauthorityactivation: return "AWS::ACMPCA::CertificateAuthorityActivation" case .apsrulegroupsnamespace: return "AWS::APS::RuleGroupsNamespace" case .accessanalyzeranalyzer: return "AWS::AccessAnalyzer::Analyzer" case .accountpublicaccessblock: return "AWS::S3::AccountPublicAccessBlock" @@ -22972,6 +23007,8 @@ extension ConfigClientTypes { case .appconfighostedconfigurationversion: return "AWS::AppConfig::HostedConfigurationVersion" case .appflowflow: return "AWS::AppFlow::Flow" case .appintegrationseventintegration: return "AWS::AppIntegrations::EventIntegration" + case .appmeshgatewayroute: return "AWS::AppMesh::GatewayRoute" + case .appmeshmesh: return "AWS::AppMesh::Mesh" case .appmeshroute: return "AWS::AppMesh::Route" case .appmeshvirtualgateway: return "AWS::AppMesh::VirtualGateway" case .appmeshvirtualnode: return "AWS::AppMesh::VirtualNode" @@ -23021,7 +23058,9 @@ extension ConfigClientTypes { case .codeguruprofilerprofilinggroup: return "AWS::CodeGuruProfiler::ProfilingGroup" case .codegurureviewerrepositoryassociation: return "AWS::CodeGuruReviewer::RepositoryAssociation" case .conformancepackcompliance: return "AWS::Config::ConformancePackCompliance" + case .connectinstance: return "AWS::Connect::Instance" case .connectphonenumber: return "AWS::Connect::PhoneNumber" + case .connectquickconnect: return "AWS::Connect::QuickConnect" case .customergateway: return "AWS::EC2::CustomerGateway" case .customerprofilesdomain: return "AWS::CustomerProfiles::Domain" case .customerprofilesobjecttype: return "AWS::CustomerProfiles::ObjectType" @@ -23051,10 +23090,12 @@ extension ConfigClientTypes { case .distribution: return "AWS::CloudFront::Distribution" case .domain: return "AWS::Elasticsearch::Domain" case .ec2capacityreservation: return "AWS::EC2::CapacityReservation" + case .ec2carriergateway: return "AWS::EC2::CarrierGateway" case .ec2clientvpnendpoint: return "AWS::EC2::ClientVpnEndpoint" case .ec2dhcpoptions: return "AWS::EC2::DHCPOptions" case .ec2ec2fleet: return "AWS::EC2::EC2Fleet" case .ec2ipam: return "AWS::EC2::IPAM" + case .ec2ipampool: return "AWS::EC2::IPAMPool" case .ec2ipamscope: return "AWS::EC2::IPAMScope" case .ec2networkinsightspath: return "AWS::EC2::NetworkInsightsPath" case .ec2prefixlist: return "AWS::EC2::PrefixList" @@ -23063,10 +23104,13 @@ extension ConfigClientTypes { case .ec2trafficmirrorfilter: return "AWS::EC2::TrafficMirrorFilter" case .ec2trafficmirrorsession: return "AWS::EC2::TrafficMirrorSession" case .ec2trafficmirrortarget: return "AWS::EC2::TrafficMirrorTarget" + case .ec2transitgatewayconnect: return "AWS::EC2::TransitGatewayConnect" + case .ec2transitgatewaymulticastdomain: return "AWS::EC2::TransitGatewayMulticastDomain" case .ecrpublicrepository: return "AWS::ECR::PublicRepository" case .ecrpullthroughcacherule: return "AWS::ECR::PullThroughCacheRule" case .ecrregistrypolicy: return "AWS::ECR::RegistryPolicy" case .ecrrepository: return "AWS::ECR::Repository" + case .ecscapacityprovider: return "AWS::ECS::CapacityProvider" case .ecscluster: return "AWS::ECS::Cluster" case .ecsservice: return "AWS::ECS::Service" case .ecstaskdefinition: return "AWS::ECS::TaskDefinition" @@ -23121,6 +23165,7 @@ extension ConfigClientTypes { case .guarddutythreatintelset: return "AWS::GuardDuty::ThreatIntelSet" case .healthlakefhirdatastore: return "AWS::HealthLake::FHIRDatastore" case .host: return "AWS::EC2::Host" + case .iaminstanceprofile: return "AWS::IAM::InstanceProfile" case .iamsamlprovider: return "AWS::IAM::SAMLProvider" case .iamservercertificate: return "AWS::IAM::ServerCertificate" case .ipsetv2: return "AWS::WAFv2::IPSet" @@ -23140,6 +23185,7 @@ extension ConfigClientTypes { case .iotanalyticsdatastore: return "AWS::IoTAnalytics::Datastore" case .iotanalyticspipeline: return "AWS::IoTAnalytics::Pipeline" case .iotauthorizer: return "AWS::IoT::Authorizer" + case .iotcacertificate: return "AWS::IoT::CACertificate" case .iotcustommetric: return "AWS::IoT::CustomMetric" case .iotdimension: return "AWS::IoT::Dimension" case .ioteventsalarmmodel: return "AWS::IoTEvents::AlarmModel" @@ -23161,10 +23207,12 @@ extension ConfigClientTypes { case .iottwinmakercomponenttype: return "AWS::IoTTwinMaker::ComponentType" case .iottwinmakerentity: return "AWS::IoTTwinMaker::Entity" case .iottwinmakerscene: return "AWS::IoTTwinMaker::Scene" + case .iottwinmakersyncjob: return "AWS::IoTTwinMaker::SyncJob" case .iottwinmakerworkspace: return "AWS::IoTTwinMaker::Workspace" case .iotwirelessfuotatask: return "AWS::IoTWireless::FuotaTask" case .iotwirelessmulticastgroup: return "AWS::IoTWireless::MulticastGroup" case .iotwirelessserviceprofile: return "AWS::IoTWireless::ServiceProfile" + case .kafkaconnectconnector: return "AWS::KafkaConnect::Connector" case .kendraindex: return "AWS::Kendra::Index" case .key: return "AWS::KMS::Key" case .kinesisanalyticsv2application: return "AWS::KinesisAnalyticsV2::Application" @@ -23173,6 +23221,7 @@ extension ConfigClientTypes { case .kinesisstreamconsumer: return "AWS::Kinesis::StreamConsumer" case .kinesisvideosignalingchannel: return "AWS::KinesisVideo::SignalingChannel" case .kinesisvideostream: return "AWS::KinesisVideo::Stream" + case .lambdacodesigningconfig: return "AWS::Lambda::CodeSigningConfig" case .launchconfiguration: return "AWS::AutoScaling::LaunchConfiguration" case .launchtemplate: return "AWS::EC2::LaunchTemplate" case .lexbot: return "AWS::Lex::Bot" @@ -23205,6 +23254,7 @@ extension ConfigClientTypes { case .networkfirewallrulegroup: return "AWS::NetworkFirewall::RuleGroup" case .networkinsightsaccessscopeanalysis: return "AWS::EC2::NetworkInsightsAccessScopeAnalysis" case .networkinterface: return "AWS::EC2::NetworkInterface" + case .networkmanagerconnectpeer: return "AWS::NetworkManager::ConnectPeer" case .networkmanagercustomergatewayassociation: return "AWS::NetworkManager::CustomerGatewayAssociation" case .networkmanagerdevice: return "AWS::NetworkManager::Device" case .networkmanagerglobalnetwork: return "AWS::NetworkManager::GlobalNetwork" @@ -23249,6 +23299,7 @@ extension ConfigClientTypes { case .resiliencehubapp: return "AWS::ResilienceHub::App" case .resiliencehubresiliencypolicy: return "AWS::ResilienceHub::ResiliencyPolicy" case .resourcecompliance: return "AWS::Config::ResourceCompliance" + case .resourceexplorer2index: return "AWS::ResourceExplorer2::Index" case .restapi: return "AWS::ApiGateway::RestApi" case .robomakerrobotapplication: return "AWS::RoboMaker::RobotApplication" case .robomakerrobotapplicationversion: return "AWS::RoboMaker::RobotApplicationVersion" diff --git a/Sources/Services/AWSConnect/ConnectClient.swift b/Sources/Services/AWSConnect/ConnectClient.swift index 57d69fe8bce..acc06ef771e 100644 --- a/Sources/Services/AWSConnect/ConnectClient.swift +++ b/Sources/Services/AWSConnect/ConnectClient.swift @@ -656,6 +656,105 @@ extension ConnectClient: ConnectClientProtocol { return result } + /// Retrieve the flow associations for the given resources. + /// + /// - Parameter BatchGetFlowAssociationInput : [no documentation found] + /// + /// - Returns: `BatchGetFlowAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient permissions to perform this action. + /// - `InternalServiceException` : Request processing failed because of an error or failure with the service. + /// - `InvalidParameterException` : One or more of the specified parameters are not valid. + /// - `InvalidRequestException` : The request is not valid. + /// - `ResourceNotFoundException` : The specified resource was not found. + /// - `ThrottlingException` : The throttling limit has been exceeded. + public func batchGetFlowAssociation(input: BatchGetFlowAssociationInput) async throws -> BatchGetFlowAssociationOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "batchGetFlowAssociation") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "connect") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "batchGetFlowAssociation") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "BatchGetFlowAssociationRequest")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + + /// Only the Amazon Connect outbound campaigns service principal is allowed to assume a role in your account and call this API. Allows you to create a batch of contacts in Amazon Connect. The outbound campaigns capability ingests dial requests via the [PutDialRequestBatch](https://docs.aws.amazon.com/connect-outbound/latest/APIReference/API_PutDialRequestBatch.html) API. It then uses BatchPutContact to create contacts corresponding to those dial requests. If agents are available, the dial requests are dialed out, which results in a voice call. The resulting voice call uses the same contactId that was created by BatchPutContact. + /// + /// - Parameter BatchPutContactInput : [no documentation found] + /// + /// - Returns: `BatchPutContactOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient permissions to perform this action. + /// - `IdempotencyException` : An entity with the same name already exists. + /// - `InternalServiceException` : Request processing failed because of an error or failure with the service. + /// - `InvalidRequestException` : The request is not valid. + /// - `LimitExceededException` : The allowed limit for the resource has been exceeded. + /// - `ResourceNotFoundException` : The specified resource was not found. + public func batchPutContact(input: BatchPutContactInput) async throws -> BatchPutContactOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .put) + .withServiceName(value: serviceName) + .withOperation(value: "batchPutContact") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "connect") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "batchPutContact") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.IdempotencyTokenMiddleware(keyPath: \.clientToken)) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "BatchPutContactRequest")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Claims an available phone number to your Amazon Connect instance or traffic distribution group. You can call this API only in the same Amazon Web Services Region where the Amazon Connect instance or traffic distribution group was created. For more information about how to use this operation, see [Claim a phone number in your country](https://docs.aws.amazon.com/connect/latest/adminguide/claim-phone-number.html) and [Claim phone numbers to traffic distribution groups](https://docs.aws.amazon.com/connect/latest/adminguide/claim-phone-numbers-traffic-distribution-groups.html) in the Amazon Connect Administrator Guide. You can call the [SearchAvailablePhoneNumbers](https://docs.aws.amazon.com/connect/latest/APIReference/API_SearchAvailablePhoneNumbers.html) API for available phone numbers that you can claim. Call the [DescribePhoneNumber](https://docs.aws.amazon.com/connect/latest/APIReference/API_DescribePhoneNumber.html) API to verify the status of a previous [ClaimPhoneNumber](https://docs.aws.amazon.com/connect/latest/APIReference/API_ClaimPhoneNumber.html) operation. If you plan to claim and release numbers frequently during a 30 day period, contact us for a service quota exception. Otherwise, it is possible you will be blocked from claiming and releasing any more numbers until 30 days past the oldest number released has expired. By default you can claim and release up to 200% of your maximum number of active phone numbers during any 30 day period. If you claim and release phone numbers using the UI or API during a rolling 30 day cycle that exceeds 200% of your phone number service level quota, you will be blocked from claiming any more numbers until 30 days past the oldest number released has expired. For example, if you already have 99 claimed numbers and a service level quota of 99 phone numbers, and in any 30 day period you release 99, claim 99, and then release 99, you will have exceeded the 200% limit. At that point you are blocked from claiming any more numbers until you open an Amazon Web Services support ticket. /// /// - Parameter ClaimPhoneNumberInput : [no documentation found] @@ -1106,6 +1205,55 @@ extension ConnectClient: ConnectClientProtocol { return result } + /// Enables rehydration of chats for the lifespan of a contact. For more information about chat rehydration, see [Enable persistent chat](https://docs.aws.amazon.com/connect/latest/adminguide/chat-persistence.html) in the Amazon Connect Administrator Guide. + /// + /// - Parameter CreatePersistentContactAssociationInput : [no documentation found] + /// + /// - Returns: `CreatePersistentContactAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient permissions to perform this action. + /// - `InternalServiceException` : Request processing failed because of an error or failure with the service. + /// - `InvalidParameterException` : One or more of the specified parameters are not valid. + /// - `InvalidRequestException` : The request is not valid. + /// - `ResourceNotFoundException` : The specified resource was not found. + /// - `ThrottlingException` : The throttling limit has been exceeded. + public func createPersistentContactAssociation(input: CreatePersistentContactAssociationInput) async throws -> CreatePersistentContactAssociationOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createPersistentContactAssociation") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "connect") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "createPersistentContactAssociation") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "CreatePersistentContactAssociationRequest")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Creates a prompt. For more information about prompts, such as supported file types and maximum length, see [Create prompts](https://docs.aws.amazon.com/connect/latest/adminguide/prompts.html) in the Amazon Connect Administrator's Guide. /// /// - Parameter CreatePromptInput : [no documentation found] @@ -6035,7 +6183,7 @@ extension ConnectClient: ConnectClientProtocol { return result } - /// Returns a list of third party applications in a specific security profile. + /// Returns a list of third-party applications in a specific security profile. /// /// - Parameter ListSecurityProfileApplicationsInput : [no documentation found] /// @@ -6735,7 +6883,7 @@ extension ConnectClient: ConnectClientProtocol { return result } - /// Replicates an Amazon Connect instance in the specified Amazon Web Services Region. For more information about replicating an Amazon Connect instance, see [Create a replica of your existing Amazon Connect instance](https://docs.aws.amazon.com/connect/latest/adminguide/create-replica-connect-instance.html) in the Amazon Connect Administrator Guide. + /// Replicates an Amazon Connect instance in the specified Amazon Web Services Region and copies configuration information for Amazon Connect resources across Amazon Web Services Regions. For more information about replicating an Amazon Connect instance, see [Create a replica of your existing Amazon Connect instance](https://docs.aws.amazon.com/connect/latest/adminguide/create-replica-connect-instance.html) in the Amazon Connect Administrator Guide. /// /// - Parameter ReplicateInstanceInput : [no documentation found] /// @@ -6787,7 +6935,7 @@ extension ConnectClient: ConnectClientProtocol { return result } - /// When a contact is being recorded, and the recording has been suspended using SuspendContactRecording, this API resumes recording the call or screen. Voice and screen recordings are supported. + /// When a contact is being recorded, and the recording has been suspended using SuspendContactRecording, this API resumes recording whatever recording is selected in the flow configuration: call, screen, or both. If only call recording or only screen recording is enabled, then it would resume. Voice and screen recordings are supported. /// /// - Parameter ResumeContactRecordingInput : [no documentation found] /// @@ -7843,7 +7991,7 @@ extension ConnectClient: ConnectClientProtocol { return result } - /// When a contact is being recorded, this API suspends recording the call or screen. For example, you might suspend the call or screen recording while collecting sensitive information, such as a credit card number. Then use ResumeContactRecording to restart recording. The period of time that the recording is suspended is filled with silence in the final recording. Voice and screen recordings are supported. + /// When a contact is being recorded, this API suspends recording whatever is selected in the flow configuration: call, screen, or both. If only call recording or only screen recording is enabled, then it would be suspended. For example, you might suspend the screen recording while collecting sensitive information, such as a credit card number. Then use ResumeContactRecording to restart recording the screen. The period of time that the recording is suspended is filled with silence in the final recording. Voice and screen recordings are supported. /// /// - Parameter SuspendContactRecordingInput : [no documentation found] /// diff --git a/Sources/Services/AWSConnect/ConnectClientProtocol.swift b/Sources/Services/AWSConnect/ConnectClientProtocol.swift index cb7657ee251..e463ef731f9 100644 --- a/Sources/Services/AWSConnect/ConnectClientProtocol.swift +++ b/Sources/Services/AWSConnect/ConnectClientProtocol.swift @@ -2,7 +2,7 @@ import ClientRuntime -/// Amazon Connect is a cloud-based contact center solution that you use to set up and manage a customer contact center and provide reliable customer engagement at any scale. Amazon Connect provides metrics and real-time reporting that enable you to optimize contact routing. You can also resolve customer issues more efficiently by getting customers in touch with the appropriate agents. There are limits to the number of Amazon Connect resources that you can create. There are also limits to the number of requests that you can make per second. For more information, seeP98941055 [Amazon Connect Service Quotas](https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html) in the Amazon Connect Administrator Guide. You can connect programmatically to an Amazon Web Services service by using an endpoint. For a list of Amazon Connect endpoints, see [Amazon Connect Endpoints](https://docs.aws.amazon.com/general/latest/gr/connect_region.html). +/// Amazon Connect is a cloud-based contact center solution that you use to set up and manage a customer contact center and provide reliable customer engagement at any scale. Amazon Connect provides metrics and real-time reporting that enable you to optimize contact routing. You can also resolve customer issues more efficiently by getting customers in touch with the appropriate agents. There are limits to the number of Amazon Connect resources that you can create. There are also limits to the number of requests that you can make per second. For more information, see [Amazon Connect Service Quotas](https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html) in the Amazon Connect Administrator Guide. You can connect programmatically to an Amazon Web Services service by using an endpoint. For a list of Amazon Connect endpoints, see [Amazon Connect Endpoints](https://docs.aws.amazon.com/general/latest/gr/connect_region.html). public protocol ConnectClientProtocol { /// Activates an evaluation form in the specified Amazon Connect instance. After the evaluation form is activated, it is available to start new evaluations based on the form. /// @@ -197,6 +197,38 @@ public protocol ConnectClientProtocol { /// - `ResourceNotFoundException` : The specified resource was not found. /// - `ThrottlingException` : The throttling limit has been exceeded. func associateTrafficDistributionGroupUser(input: AssociateTrafficDistributionGroupUserInput) async throws -> AssociateTrafficDistributionGroupUserOutput + /// Retrieve the flow associations for the given resources. + /// + /// - Parameter BatchGetFlowAssociationInput : [no documentation found] + /// + /// - Returns: `BatchGetFlowAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient permissions to perform this action. + /// - `InternalServiceException` : Request processing failed because of an error or failure with the service. + /// - `InvalidParameterException` : One or more of the specified parameters are not valid. + /// - `InvalidRequestException` : The request is not valid. + /// - `ResourceNotFoundException` : The specified resource was not found. + /// - `ThrottlingException` : The throttling limit has been exceeded. + func batchGetFlowAssociation(input: BatchGetFlowAssociationInput) async throws -> BatchGetFlowAssociationOutput + /// Only the Amazon Connect outbound campaigns service principal is allowed to assume a role in your account and call this API. Allows you to create a batch of contacts in Amazon Connect. The outbound campaigns capability ingests dial requests via the [PutDialRequestBatch](https://docs.aws.amazon.com/connect-outbound/latest/APIReference/API_PutDialRequestBatch.html) API. It then uses BatchPutContact to create contacts corresponding to those dial requests. If agents are available, the dial requests are dialed out, which results in a voice call. The resulting voice call uses the same contactId that was created by BatchPutContact. + /// + /// - Parameter BatchPutContactInput : [no documentation found] + /// + /// - Returns: `BatchPutContactOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient permissions to perform this action. + /// - `IdempotencyException` : An entity with the same name already exists. + /// - `InternalServiceException` : Request processing failed because of an error or failure with the service. + /// - `InvalidRequestException` : The request is not valid. + /// - `LimitExceededException` : The allowed limit for the resource has been exceeded. + /// - `ResourceNotFoundException` : The specified resource was not found. + func batchPutContact(input: BatchPutContactInput) async throws -> BatchPutContactOutput /// Claims an available phone number to your Amazon Connect instance or traffic distribution group. You can call this API only in the same Amazon Web Services Region where the Amazon Connect instance or traffic distribution group was created. For more information about how to use this operation, see [Claim a phone number in your country](https://docs.aws.amazon.com/connect/latest/adminguide/claim-phone-number.html) and [Claim phone numbers to traffic distribution groups](https://docs.aws.amazon.com/connect/latest/adminguide/claim-phone-numbers-traffic-distribution-groups.html) in the Amazon Connect Administrator Guide. You can call the [SearchAvailablePhoneNumbers](https://docs.aws.amazon.com/connect/latest/APIReference/API_SearchAvailablePhoneNumbers.html) API for available phone numbers that you can claim. Call the [DescribePhoneNumber](https://docs.aws.amazon.com/connect/latest/APIReference/API_DescribePhoneNumber.html) API to verify the status of a previous [ClaimPhoneNumber](https://docs.aws.amazon.com/connect/latest/APIReference/API_ClaimPhoneNumber.html) operation. If you plan to claim and release numbers frequently during a 30 day period, contact us for a service quota exception. Otherwise, it is possible you will be blocked from claiming and releasing any more numbers until 30 days past the oldest number released has expired. By default you can claim and release up to 200% of your maximum number of active phone numbers during any 30 day period. If you claim and release phone numbers using the UI or API during a rolling 30 day cycle that exceeds 200% of your phone number service level quota, you will be blocked from claiming any more numbers until 30 days past the oldest number released has expired. For example, if you already have 99 claimed numbers and a service level quota of 99 phone numbers, and in any 30 day period you release 99, claim 99, and then release 99, you will have exceeded the 200% limit. At that point you are blocked from claiming any more numbers until you open an Amazon Web Services support ticket. /// /// - Parameter ClaimPhoneNumberInput : [no documentation found] @@ -346,6 +378,22 @@ public protocol ConnectClientProtocol { /// - `ServiceQuotaExceededException` : The service quota has been exceeded. /// - `ThrottlingException` : The throttling limit has been exceeded. func createParticipant(input: CreateParticipantInput) async throws -> CreateParticipantOutput + /// Enables rehydration of chats for the lifespan of a contact. For more information about chat rehydration, see [Enable persistent chat](https://docs.aws.amazon.com/connect/latest/adminguide/chat-persistence.html) in the Amazon Connect Administrator Guide. + /// + /// - Parameter CreatePersistentContactAssociationInput : [no documentation found] + /// + /// - Returns: `CreatePersistentContactAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient permissions to perform this action. + /// - `InternalServiceException` : Request processing failed because of an error or failure with the service. + /// - `InvalidParameterException` : One or more of the specified parameters are not valid. + /// - `InvalidRequestException` : The request is not valid. + /// - `ResourceNotFoundException` : The specified resource was not found. + /// - `ThrottlingException` : The throttling limit has been exceeded. + func createPersistentContactAssociation(input: CreatePersistentContactAssociationInput) async throws -> CreatePersistentContactAssociationOutput /// Creates a prompt. For more information about prompts, such as supported file types and maximum length, see [Create prompts](https://docs.aws.amazon.com/connect/latest/adminguide/prompts.html) in the Amazon Connect Administrator's Guide. /// /// - Parameter CreatePromptInput : [no documentation found] @@ -1981,7 +2029,7 @@ public protocol ConnectClientProtocol { /// - `ResourceNotFoundException` : The specified resource was not found. /// - `ThrottlingException` : The throttling limit has been exceeded. func listSecurityKeys(input: ListSecurityKeysInput) async throws -> ListSecurityKeysOutput - /// Returns a list of third party applications in a specific security profile. + /// Returns a list of third-party applications in a specific security profile. /// /// - Parameter ListSecurityProfileApplicationsInput : [no documentation found] /// @@ -2211,7 +2259,7 @@ public protocol ConnectClientProtocol { /// - `ResourceNotFoundException` : The specified resource was not found. /// - `ThrottlingException` : The throttling limit has been exceeded. func releasePhoneNumber(input: ReleasePhoneNumberInput) async throws -> ReleasePhoneNumberOutput - /// Replicates an Amazon Connect instance in the specified Amazon Web Services Region. For more information about replicating an Amazon Connect instance, see [Create a replica of your existing Amazon Connect instance](https://docs.aws.amazon.com/connect/latest/adminguide/create-replica-connect-instance.html) in the Amazon Connect Administrator Guide. + /// Replicates an Amazon Connect instance in the specified Amazon Web Services Region and copies configuration information for Amazon Connect resources across Amazon Web Services Regions. For more information about replicating an Amazon Connect instance, see [Create a replica of your existing Amazon Connect instance](https://docs.aws.amazon.com/connect/latest/adminguide/create-replica-connect-instance.html) in the Amazon Connect Administrator Guide. /// /// - Parameter ReplicateInstanceInput : [no documentation found] /// @@ -2229,7 +2277,7 @@ public protocol ConnectClientProtocol { /// - `ServiceQuotaExceededException` : The service quota has been exceeded. /// - `ThrottlingException` : The throttling limit has been exceeded. func replicateInstance(input: ReplicateInstanceInput) async throws -> ReplicateInstanceOutput - /// When a contact is being recorded, and the recording has been suspended using SuspendContactRecording, this API resumes recording the call or screen. Voice and screen recordings are supported. + /// When a contact is being recorded, and the recording has been suspended using SuspendContactRecording, this API resumes recording whatever recording is selected in the flow configuration: call, screen, or both. If only call recording or only screen recording is enabled, then it would resume. Voice and screen recordings are supported. /// /// - Parameter ResumeContactRecordingInput : [no documentation found] /// @@ -2587,7 +2635,7 @@ public protocol ConnectClientProtocol { /// - `ResourceNotFoundException` : The specified resource was not found. /// - `ThrottlingException` : The throttling limit has been exceeded. func submitContactEvaluation(input: SubmitContactEvaluationInput) async throws -> SubmitContactEvaluationOutput - /// When a contact is being recorded, this API suspends recording the call or screen. For example, you might suspend the call or screen recording while collecting sensitive information, such as a credit card number. Then use ResumeContactRecording to restart recording. The period of time that the recording is suspended is filled with silence in the final recording. Voice and screen recordings are supported. + /// When a contact is being recorded, this API suspends recording whatever is selected in the flow configuration: call, screen, or both. If only call recording or only screen recording is enabled, then it would be suspended. For example, you might suspend the screen recording while collecting sensitive information, such as a credit card number. Then use ResumeContactRecording to restart recording the screen. The period of time that the recording is suspended is filled with silence in the final recording. Voice and screen recordings are supported. /// /// - Parameter SuspendContactRecordingInput : [no documentation found] /// diff --git a/Sources/Services/AWSConnect/Paginators.swift b/Sources/Services/AWSConnect/Paginators.swift index 6dee5465bab..0b61bc7bf06 100644 --- a/Sources/Services/AWSConnect/Paginators.swift +++ b/Sources/Services/AWSConnect/Paginators.swift @@ -691,6 +691,7 @@ extension ConnectClient { extension ListPhoneNumbersV2Input: ClientRuntime.PaginateToken { public func usingPaginationToken(_ token: Swift.String) -> ListPhoneNumbersV2Input { return ListPhoneNumbersV2Input( + instanceId: self.instanceId, maxResults: self.maxResults, nextToken: token, phoneNumberCountryCodes: self.phoneNumberCountryCodes, @@ -1327,6 +1328,7 @@ extension ConnectClient { extension SearchAvailablePhoneNumbersInput: ClientRuntime.PaginateToken { public func usingPaginationToken(_ token: Swift.String) -> SearchAvailablePhoneNumbersInput { return SearchAvailablePhoneNumbersInput( + instanceId: self.instanceId, maxResults: self.maxResults, nextToken: token, phoneNumberCountryCode: self.phoneNumberCountryCode, diff --git a/Sources/Services/AWSConnect/models/Models.swift b/Sources/Services/AWSConnect/models/Models.swift index a56f42e56de..6942b988a57 100644 --- a/Sources/Services/AWSConnect/models/Models.swift +++ b/Sources/Services/AWSConnect/models/Models.swift @@ -499,6 +499,8 @@ extension ConnectClientTypes.AgentStatus: Swift.Codable { case agentStatusId = "AgentStatusId" case description = "Description" case displayOrder = "DisplayOrder" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case name = "Name" case state = "State" case tags = "Tags" @@ -519,6 +521,12 @@ extension ConnectClientTypes.AgentStatus: Swift.Codable { if let displayOrder = self.displayOrder { try encodeContainer.encode(displayOrder, forKey: .displayOrder) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -563,6 +571,10 @@ extension ConnectClientTypes.AgentStatus: Swift.Codable { } } tags = tagsDecoded0 + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -577,6 +589,10 @@ extension ConnectClientTypes { public var description: Swift.String? /// The display order of the agent status. public var displayOrder: Swift.Int? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The name of the agent status. public var name: Swift.String? /// The state of the agent status. @@ -591,6 +607,8 @@ extension ConnectClientTypes { agentStatusId: Swift.String? = nil, description: Swift.String? = nil, displayOrder: Swift.Int? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil, state: ConnectClientTypes.AgentStatusState? = nil, tags: [Swift.String:Swift.String]? = nil, @@ -601,6 +619,8 @@ extension ConnectClientTypes { self.agentStatusId = agentStatusId self.description = description self.displayOrder = displayOrder + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.name = name self.state = state self.tags = tags @@ -701,6 +721,8 @@ extension ConnectClientTypes.AgentStatusSummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case arn = "Arn" case id = "Id" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case name = "Name" case type = "Type" } @@ -713,6 +735,12 @@ extension ConnectClientTypes.AgentStatusSummary: Swift.Codable { if let id = self.id { try encodeContainer.encode(id, forKey: .id) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -731,6 +759,10 @@ extension ConnectClientTypes.AgentStatusSummary: Swift.Codable { name = nameDecoded let typeDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.AgentStatusType.self, forKey: .type) type = typeDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -741,6 +773,10 @@ extension ConnectClientTypes { public var arn: Swift.String? /// The identifier for an agent status. public var id: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The name of the agent status. public var name: Swift.String? /// The type of the agent status. @@ -749,12 +785,16 @@ extension ConnectClientTypes { public init( arn: Swift.String? = nil, id: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil, type: ConnectClientTypes.AgentStatusType? = nil ) { self.arn = arn self.id = id + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.name = name self.type = type } @@ -880,7 +920,7 @@ extension ConnectClientTypes.Application: Swift.Codable { } extension ConnectClientTypes { - /// This API is in preview release for Amazon Connect and is subject to change. A third party application's metadata. + /// This API is in preview release for Amazon Connect and is subject to change. A third-party application's metadata. public struct Application: Swift.Equatable { /// The permissions that the agent is granted on the application. Only the ACCESS permission is supported. public var applicationPermissions: [Swift.String]? @@ -2135,6 +2175,315 @@ extension ConnectClientTypes { } +extension BatchGetFlowAssociationInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case resourceIds = "ResourceIds" + case resourceType = "ResourceType" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let resourceIds = resourceIds { + var resourceIdsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .resourceIds) + for arn0 in resourceIds { + try resourceIdsContainer.encode(arn0) + } + } + if let resourceType = self.resourceType { + try encodeContainer.encode(resourceType.rawValue, forKey: .resourceType) + } + } +} + +extension BatchGetFlowAssociationInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let instanceId = instanceId else { + return nil + } + return "/flow-associations-batch/\(instanceId.urlPercentEncoding())" + } +} + +public struct BatchGetFlowAssociationInput: Swift.Equatable { + /// The identifier of the Amazon Connect instance. You can [find the instance ID](https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html) in the Amazon Resource Name (ARN) of the instance. + /// This member is required. + public var instanceId: Swift.String? + /// A list of resource identifiers to retrieve flow associations. + /// This member is required. + public var resourceIds: [Swift.String]? + /// The type of resource association. + public var resourceType: ConnectClientTypes.ListFlowAssociationResourceType? + + public init( + instanceId: Swift.String? = nil, + resourceIds: [Swift.String]? = nil, + resourceType: ConnectClientTypes.ListFlowAssociationResourceType? = nil + ) + { + self.instanceId = instanceId + self.resourceIds = resourceIds + self.resourceType = resourceType + } +} + +struct BatchGetFlowAssociationInputBody: Swift.Equatable { + let resourceIds: [Swift.String]? + let resourceType: ConnectClientTypes.ListFlowAssociationResourceType? +} + +extension BatchGetFlowAssociationInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case resourceIds = "ResourceIds" + case resourceType = "ResourceType" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let resourceIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .resourceIds) + var resourceIdsDecoded0:[Swift.String]? = nil + if let resourceIdsContainer = resourceIdsContainer { + resourceIdsDecoded0 = [Swift.String]() + for string0 in resourceIdsContainer { + if let string0 = string0 { + resourceIdsDecoded0?.append(string0) + } + } + } + resourceIds = resourceIdsDecoded0 + let resourceTypeDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.ListFlowAssociationResourceType.self, forKey: .resourceType) + resourceType = resourceTypeDecoded + } +} + +extension BatchGetFlowAssociationOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: BatchGetFlowAssociationOutputBody = try responseDecoder.decode(responseBody: data) + self.flowAssociationSummaryList = output.flowAssociationSummaryList + } else { + self.flowAssociationSummaryList = nil + } + } +} + +public struct BatchGetFlowAssociationOutput: Swift.Equatable { + /// Information about flow associations. + public var flowAssociationSummaryList: [ConnectClientTypes.FlowAssociationSummary]? + + public init( + flowAssociationSummaryList: [ConnectClientTypes.FlowAssociationSummary]? = nil + ) + { + self.flowAssociationSummaryList = flowAssociationSummaryList + } +} + +struct BatchGetFlowAssociationOutputBody: Swift.Equatable { + let flowAssociationSummaryList: [ConnectClientTypes.FlowAssociationSummary]? +} + +extension BatchGetFlowAssociationOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case flowAssociationSummaryList = "FlowAssociationSummaryList" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let flowAssociationSummaryListContainer = try containerValues.decodeIfPresent([ConnectClientTypes.FlowAssociationSummary?].self, forKey: .flowAssociationSummaryList) + var flowAssociationSummaryListDecoded0:[ConnectClientTypes.FlowAssociationSummary]? = nil + if let flowAssociationSummaryListContainer = flowAssociationSummaryListContainer { + flowAssociationSummaryListDecoded0 = [ConnectClientTypes.FlowAssociationSummary]() + for structure0 in flowAssociationSummaryListContainer { + if let structure0 = structure0 { + flowAssociationSummaryListDecoded0?.append(structure0) + } + } + } + flowAssociationSummaryList = flowAssociationSummaryListDecoded0 + } +} + +enum BatchGetFlowAssociationOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServiceException": return try await InternalServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidParameterException": return try await InvalidParameterException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidRequestException": return try await InvalidRequestException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension BatchPutContactInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken = "ClientToken" + case contactDataRequestList = "ContactDataRequestList" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) + } + if let contactDataRequestList = contactDataRequestList { + var contactDataRequestListContainer = encodeContainer.nestedUnkeyedContainer(forKey: .contactDataRequestList) + for contactdatarequest0 in contactDataRequestList { + try contactDataRequestListContainer.encode(contactdatarequest0) + } + } + } +} + +extension BatchPutContactInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let instanceId = instanceId else { + return nil + } + return "/contact/batch/\(instanceId.urlPercentEncoding())" + } +} + +public struct BatchPutContactInput: Swift.Equatable { + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If not provided, the Amazon Web Services SDK populates this field. For more information about idempotency, see [Making retries safe with idempotent APIs](https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/). + public var clientToken: Swift.String? + /// List of individual contact requests. + /// This member is required. + public var contactDataRequestList: [ConnectClientTypes.ContactDataRequest]? + /// The identifier of the Amazon Connect instance. You can [find the instance ID](https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html) in the Amazon Resource Name (ARN) of the instance. + /// This member is required. + public var instanceId: Swift.String? + + public init( + clientToken: Swift.String? = nil, + contactDataRequestList: [ConnectClientTypes.ContactDataRequest]? = nil, + instanceId: Swift.String? = nil + ) + { + self.clientToken = clientToken + self.contactDataRequestList = contactDataRequestList + self.instanceId = instanceId + } +} + +struct BatchPutContactInputBody: Swift.Equatable { + let clientToken: Swift.String? + let contactDataRequestList: [ConnectClientTypes.ContactDataRequest]? +} + +extension BatchPutContactInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken = "ClientToken" + case contactDataRequestList = "ContactDataRequestList" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + let contactDataRequestListContainer = try containerValues.decodeIfPresent([ConnectClientTypes.ContactDataRequest?].self, forKey: .contactDataRequestList) + var contactDataRequestListDecoded0:[ConnectClientTypes.ContactDataRequest]? = nil + if let contactDataRequestListContainer = contactDataRequestListContainer { + contactDataRequestListDecoded0 = [ConnectClientTypes.ContactDataRequest]() + for structure0 in contactDataRequestListContainer { + if let structure0 = structure0 { + contactDataRequestListDecoded0?.append(structure0) + } + } + } + contactDataRequestList = contactDataRequestListDecoded0 + } +} + +extension BatchPutContactOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: BatchPutContactOutputBody = try responseDecoder.decode(responseBody: data) + self.failedRequestList = output.failedRequestList + self.successfulRequestList = output.successfulRequestList + } else { + self.failedRequestList = nil + self.successfulRequestList = nil + } + } +} + +public struct BatchPutContactOutput: Swift.Equatable { + /// List of requests for which contact creation failed. + public var failedRequestList: [ConnectClientTypes.FailedRequest]? + /// List of requests for which contact was successfully created. + public var successfulRequestList: [ConnectClientTypes.SuccessfulRequest]? + + public init( + failedRequestList: [ConnectClientTypes.FailedRequest]? = nil, + successfulRequestList: [ConnectClientTypes.SuccessfulRequest]? = nil + ) + { + self.failedRequestList = failedRequestList + self.successfulRequestList = successfulRequestList + } +} + +struct BatchPutContactOutputBody: Swift.Equatable { + let successfulRequestList: [ConnectClientTypes.SuccessfulRequest]? + let failedRequestList: [ConnectClientTypes.FailedRequest]? +} + +extension BatchPutContactOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case failedRequestList = "FailedRequestList" + case successfulRequestList = "SuccessfulRequestList" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let successfulRequestListContainer = try containerValues.decodeIfPresent([ConnectClientTypes.SuccessfulRequest?].self, forKey: .successfulRequestList) + var successfulRequestListDecoded0:[ConnectClientTypes.SuccessfulRequest]? = nil + if let successfulRequestListContainer = successfulRequestListContainer { + successfulRequestListDecoded0 = [ConnectClientTypes.SuccessfulRequest]() + for structure0 in successfulRequestListContainer { + if let structure0 = structure0 { + successfulRequestListDecoded0?.append(structure0) + } + } + } + successfulRequestList = successfulRequestListDecoded0 + let failedRequestListContainer = try containerValues.decodeIfPresent([ConnectClientTypes.FailedRequest?].self, forKey: .failedRequestList) + var failedRequestListDecoded0:[ConnectClientTypes.FailedRequest]? = nil + if let failedRequestListContainer = failedRequestListContainer { + failedRequestListDecoded0 = [ConnectClientTypes.FailedRequest]() + for structure0 in failedRequestListContainer { + if let structure0 = structure0 { + failedRequestListDecoded0?.append(structure0) + } + } + } + failedRequestList = failedRequestListDecoded0 + } +} + +enum BatchPutContactOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "IdempotencyException": return try await IdempotencyException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServiceException": return try await InternalServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidRequestException": return try await InvalidRequestException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "LimitExceededException": return try await LimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension ConnectClientTypes { public enum BehaviorType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case routeAnyChannel @@ -2167,6 +2516,41 @@ extension ConnectClientTypes { } } +extension ConnectClientTypes.Campaign: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case campaignId = "CampaignId" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let campaignId = self.campaignId { + try encodeContainer.encode(campaignId, forKey: .campaignId) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let campaignIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .campaignId) + campaignId = campaignIdDecoded + } +} + +extension ConnectClientTypes { + /// Information associated with a campaign. + public struct Campaign: Swift.Equatable { + /// A unique identifier for a campaign. + public var campaignId: Swift.String? + + public init( + campaignId: Swift.String? = nil + ) + { + self.campaignId = campaignId + } + } + +} + extension ConnectClientTypes { public enum Channel: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case chat @@ -2342,6 +2726,7 @@ extension ConnectClientTypes { extension ClaimPhoneNumberInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken = "ClientToken" + case instanceId = "InstanceId" case phoneNumber = "PhoneNumber" case phoneNumberDescription = "PhoneNumberDescription" case tags = "Tags" @@ -2353,6 +2738,9 @@ extension ClaimPhoneNumberInput: Swift.Encodable { if let clientToken = self.clientToken { try encodeContainer.encode(clientToken, forKey: .clientToken) } + if let instanceId = self.instanceId { + try encodeContainer.encode(instanceId, forKey: .instanceId) + } if let phoneNumber = self.phoneNumber { try encodeContainer.encode(phoneNumber, forKey: .phoneNumber) } @@ -2380,6 +2768,8 @@ extension ClaimPhoneNumberInput: ClientRuntime.URLPathProvider { public struct ClaimPhoneNumberInput: Swift.Equatable { /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If not provided, the Amazon Web Services SDK populates this field. For more information about idempotency, see [Making retries safe with idempotent APIs](https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/). Pattern: ^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$ public var clientToken: Swift.String? + /// The identifier of the Amazon Connect instance that phone numbers are claimed to. You can [find the instance ID](https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html) in the Amazon Resource Name (ARN) of the instance. You must enter InstanceId or TargetArn. + public var instanceId: Swift.String? /// The phone number you want to claim. Phone numbers are formatted [+] [country code] [subscriber number including area code]. /// This member is required. public var phoneNumber: Swift.String? @@ -2387,12 +2777,12 @@ public struct ClaimPhoneNumberInput: Swift.Equatable { public var phoneNumberDescription: Swift.String? /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. public var tags: [Swift.String:Swift.String]? - /// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to. - /// This member is required. + /// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone number inbound traffic is routed through. You must enter InstanceId or TargetArn. public var targetArn: Swift.String? public init( clientToken: Swift.String? = nil, + instanceId: Swift.String? = nil, phoneNumber: Swift.String? = nil, phoneNumberDescription: Swift.String? = nil, tags: [Swift.String:Swift.String]? = nil, @@ -2400,6 +2790,7 @@ public struct ClaimPhoneNumberInput: Swift.Equatable { ) { self.clientToken = clientToken + self.instanceId = instanceId self.phoneNumber = phoneNumber self.phoneNumberDescription = phoneNumberDescription self.tags = tags @@ -2409,6 +2800,7 @@ public struct ClaimPhoneNumberInput: Swift.Equatable { struct ClaimPhoneNumberInputBody: Swift.Equatable { let targetArn: Swift.String? + let instanceId: Swift.String? let phoneNumber: Swift.String? let phoneNumberDescription: Swift.String? let tags: [Swift.String:Swift.String]? @@ -2418,6 +2810,7 @@ struct ClaimPhoneNumberInputBody: Swift.Equatable { extension ClaimPhoneNumberInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken = "ClientToken" + case instanceId = "InstanceId" case phoneNumber = "PhoneNumber" case phoneNumberDescription = "PhoneNumberDescription" case tags = "Tags" @@ -2428,6 +2821,8 @@ extension ClaimPhoneNumberInputBody: Swift.Decodable { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let targetArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .targetArn) targetArn = targetArnDecoded + let instanceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceId) + instanceId = instanceIdDecoded let phoneNumberDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .phoneNumber) phoneNumber = phoneNumberDecoded let phoneNumberDescriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .phoneNumberDescription) @@ -2516,6 +2911,7 @@ enum ClaimPhoneNumberOutputError: ClientRuntime.HttpResponseErrorBinding { extension ConnectClientTypes.ClaimedPhoneNumberSummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case instanceId = "InstanceId" case phoneNumber = "PhoneNumber" case phoneNumberArn = "PhoneNumberArn" case phoneNumberCountryCode = "PhoneNumberCountryCode" @@ -2529,6 +2925,9 @@ extension ConnectClientTypes.ClaimedPhoneNumberSummary: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let instanceId = self.instanceId { + try encodeContainer.encode(instanceId, forKey: .instanceId) + } if let phoneNumber = self.phoneNumber { try encodeContainer.encode(phoneNumber, forKey: .phoneNumber) } @@ -2577,6 +2976,8 @@ extension ConnectClientTypes.ClaimedPhoneNumberSummary: Swift.Codable { phoneNumberDescription = phoneNumberDescriptionDecoded let targetArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .targetArn) targetArn = targetArnDecoded + let instanceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceId) + instanceId = instanceIdDecoded let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) var tagsDecoded0: [Swift.String:Swift.String]? = nil if let tagsContainer = tagsContainer { @@ -2596,6 +2997,8 @@ extension ConnectClientTypes.ClaimedPhoneNumberSummary: Swift.Codable { extension ConnectClientTypes { /// Information about a phone number that has been claimed to your Amazon Connect instance or traffic distribution group. public struct ClaimedPhoneNumberSummary: Swift.Equatable { + /// The identifier of the Amazon Connect instance that phone numbers are claimed to. You can [find the instance ID](https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html) in the Amazon Resource Name (ARN) of the instance. + public var instanceId: Swift.String? /// The phone number. Phone numbers are formatted [+] [country code] [subscriber number including area code]. public var phoneNumber: Swift.String? /// The Amazon Resource Name (ARN) of the phone number. @@ -2621,10 +3024,11 @@ extension ConnectClientTypes { public var phoneNumberType: ConnectClientTypes.PhoneNumberType? /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. public var tags: [Swift.String:Swift.String]? - /// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to. + /// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone number inbound traffic is routed through. public var targetArn: Swift.String? public init( + instanceId: Swift.String? = nil, phoneNumber: Swift.String? = nil, phoneNumberArn: Swift.String? = nil, phoneNumberCountryCode: ConnectClientTypes.PhoneNumberCountryCode? = nil, @@ -2636,6 +3040,7 @@ extension ConnectClientTypes { targetArn: Swift.String? = nil ) { + self.instanceId = instanceId self.phoneNumber = phoneNumber self.phoneNumberArn = phoneNumberArn self.phoneNumberCountryCode = phoneNumberCountryCode @@ -2864,6 +3269,103 @@ extension ConnectClientTypes { } +extension ConnectClientTypes.ContactDataRequest: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case attributes = "Attributes" + case campaign = "Campaign" + case customerEndpoint = "CustomerEndpoint" + case queueId = "QueueId" + case requestIdentifier = "RequestIdentifier" + case systemEndpoint = "SystemEndpoint" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let attributes = attributes { + var attributesContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .attributes) + for (dictKey0, attributes0) in attributes { + try attributesContainer.encode(attributes0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let campaign = self.campaign { + try encodeContainer.encode(campaign, forKey: .campaign) + } + if let customerEndpoint = self.customerEndpoint { + try encodeContainer.encode(customerEndpoint, forKey: .customerEndpoint) + } + if let queueId = self.queueId { + try encodeContainer.encode(queueId, forKey: .queueId) + } + if let requestIdentifier = self.requestIdentifier { + try encodeContainer.encode(requestIdentifier, forKey: .requestIdentifier) + } + if let systemEndpoint = self.systemEndpoint { + try encodeContainer.encode(systemEndpoint, forKey: .systemEndpoint) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let systemEndpointDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.Endpoint.self, forKey: .systemEndpoint) + systemEndpoint = systemEndpointDecoded + let customerEndpointDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.Endpoint.self, forKey: .customerEndpoint) + customerEndpoint = customerEndpointDecoded + let requestIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestIdentifier) + requestIdentifier = requestIdentifierDecoded + let queueIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .queueId) + queueId = queueIdDecoded + let attributesContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .attributes) + var attributesDecoded0: [Swift.String:Swift.String]? = nil + if let attributesContainer = attributesContainer { + attributesDecoded0 = [Swift.String:Swift.String]() + for (key0, attributevalue0) in attributesContainer { + if let attributevalue0 = attributevalue0 { + attributesDecoded0?[key0] = attributevalue0 + } + } + } + attributes = attributesDecoded0 + let campaignDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.Campaign.self, forKey: .campaign) + campaign = campaignDecoded + } +} + +extension ConnectClientTypes { + /// Request object with information to create a contact. + public struct ContactDataRequest: Swift.Equatable { + /// List of attributes to be stored in a contact. + public var attributes: [Swift.String:Swift.String]? + /// Structure to store information associated with a campaign. + public var campaign: ConnectClientTypes.Campaign? + /// Endpoint of the customer for which contact will be initiated. + public var customerEndpoint: ConnectClientTypes.Endpoint? + /// The identifier of the queue associated with the Amazon Connect instance in which contacts that are created will be queued. + public var queueId: Swift.String? + /// Identifier to uniquely identify individual requests in the batch. + public var requestIdentifier: Swift.String? + /// Endpoint associated with the Amazon Connect instance from which outbound contact will be initiated for the campaign. + public var systemEndpoint: ConnectClientTypes.Endpoint? + + public init( + attributes: [Swift.String:Swift.String]? = nil, + campaign: ConnectClientTypes.Campaign? = nil, + customerEndpoint: ConnectClientTypes.Endpoint? = nil, + queueId: Swift.String? = nil, + requestIdentifier: Swift.String? = nil, + systemEndpoint: ConnectClientTypes.Endpoint? = nil + ) + { + self.attributes = attributes + self.campaign = campaign + self.customerEndpoint = customerEndpoint + self.queueId = queueId + self.requestIdentifier = requestIdentifier + self.systemEndpoint = systemEndpoint + } + } + +} + extension ConnectClientTypes.ContactFilter: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case contactStates = "ContactStates" @@ -5210,6 +5712,194 @@ enum CreateParticipantOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension CreatePersistentContactAssociationInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken = "ClientToken" + case rehydrationType = "RehydrationType" + case sourceContactId = "SourceContactId" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) + } + if let rehydrationType = self.rehydrationType { + try encodeContainer.encode(rehydrationType.rawValue, forKey: .rehydrationType) + } + if let sourceContactId = self.sourceContactId { + try encodeContainer.encode(sourceContactId, forKey: .sourceContactId) + } + } +} + +extension CreatePersistentContactAssociationInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let instanceId = instanceId else { + return nil + } + guard let initialContactId = initialContactId else { + return nil + } + return "/contact/persistent-contact-association/\(instanceId.urlPercentEncoding())/\(initialContactId.urlPercentEncoding())" + } +} + +public struct CreatePersistentContactAssociationInput: Swift.Equatable { + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If not provided, the Amazon Web Services SDK populates this field. For more information about idempotency, see [Making retries safe with idempotent APIs](https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/). + public var clientToken: Swift.String? + /// This is the contactId of the current contact that the CreatePersistentContactAssociation API is being called from. + /// This member is required. + public var initialContactId: Swift.String? + /// The identifier of the Amazon Connect instance. You can [find the instance ID](https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html) in the Amazon Resource Name (ARN) of the instance. + /// This member is required. + public var instanceId: Swift.String? + /// The contactId chosen for rehydration depends on the type chosen. + /// + /// * ENTIRE_PAST_SESSION: Rehydrates a chat from the most recently terminated past chat contact of the specified past ended chat session. To use this type, provide the initialContactId of the past ended chat session in the sourceContactId field. In this type, Amazon Connect determines what the most recent chat contact on the past ended chat session and uses it to start a persistent chat. + /// + /// * FROM_SEGMENT: Rehydrates a chat from the specified past chat contact provided in the sourceContactId field. + /// + /// + /// The actual contactId used for rehydration is provided in the response of this API. To illustrate how to use rehydration type, consider the following example: A customer starts a chat session. Agent a1 accepts the chat and a conversation starts between the customer and Agent a1. This first contact creates a contact ID C1. Agent a1 then transfers the chat to Agent a2. This creates another contact ID C2. At this point Agent a2 ends the chat. The customer is forwarded to the disconnect flow for a post chat survey that creates another contact ID C3. After the chat survey, the chat session ends. Later, the customer returns and wants to resume their past chat session. At this point, the customer can have following use cases: + /// + /// * Use Case 1: The customer wants to continue the past chat session but they want to hide the post chat survey. For this they will use the following configuration: + /// + /// * Configuration + /// + /// * SourceContactId = "C2" + /// + /// * RehydrationType = "FROM_SEGMENT" + /// + /// + /// + /// + /// * Expected behavior + /// + /// * This starts a persistent chat session from the specified past ended contact (C2). Transcripts of past chat sessions C2 and C1 are accessible in the current persistent chat session. Note that chat segment C3 is dropped from the persistent chat session. + /// + /// + /// + /// + /// + /// + /// + /// * Use Case 2: The customer wants to continue the past chat session and see the transcript of the entire past engagement, including the post chat survey. For this they will use the following configuration: + /// + /// * Configuration + /// + /// * SourceContactId = "C1" + /// + /// * RehydrationType = "ENTIRE_PAST_SESSION" + /// + /// + /// + /// + /// * Expected behavior + /// + /// * This starts a persistent chat session from the most recently ended chat contact (C3). Transcripts of past chat sessions C3, C2 and C1 are accessible in the current persistent chat session. + /// This member is required. + public var rehydrationType: ConnectClientTypes.RehydrationType? + /// The contactId from which a persistent chat session must be started. + /// This member is required. + public var sourceContactId: Swift.String? + + public init( + clientToken: Swift.String? = nil, + initialContactId: Swift.String? = nil, + instanceId: Swift.String? = nil, + rehydrationType: ConnectClientTypes.RehydrationType? = nil, + sourceContactId: Swift.String? = nil + ) + { + self.clientToken = clientToken + self.initialContactId = initialContactId + self.instanceId = instanceId + self.rehydrationType = rehydrationType + self.sourceContactId = sourceContactId + } +} + +struct CreatePersistentContactAssociationInputBody: Swift.Equatable { + let rehydrationType: ConnectClientTypes.RehydrationType? + let sourceContactId: Swift.String? + let clientToken: Swift.String? +} + +extension CreatePersistentContactAssociationInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken = "ClientToken" + case rehydrationType = "RehydrationType" + case sourceContactId = "SourceContactId" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let rehydrationTypeDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.RehydrationType.self, forKey: .rehydrationType) + rehydrationType = rehydrationTypeDecoded + let sourceContactIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceContactId) + sourceContactId = sourceContactIdDecoded + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + } +} + +extension CreatePersistentContactAssociationOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: CreatePersistentContactAssociationOutputBody = try responseDecoder.decode(responseBody: data) + self.continuedFromContactId = output.continuedFromContactId + } else { + self.continuedFromContactId = nil + } + } +} + +public struct CreatePersistentContactAssociationOutput: Swift.Equatable { + /// The contactId from which a persistent chat session is started. This field is populated only for persistent chat. + public var continuedFromContactId: Swift.String? + + public init( + continuedFromContactId: Swift.String? = nil + ) + { + self.continuedFromContactId = continuedFromContactId + } +} + +struct CreatePersistentContactAssociationOutputBody: Swift.Equatable { + let continuedFromContactId: Swift.String? +} + +extension CreatePersistentContactAssociationOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case continuedFromContactId = "ContinuedFromContactId" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let continuedFromContactIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .continuedFromContactId) + continuedFromContactId = continuedFromContactIdDecoded + } +} + +enum CreatePersistentContactAssociationOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServiceException": return try await InternalServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidParameterException": return try await InvalidParameterException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidRequestException": return try await InvalidRequestException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension CreatePromptInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case description = "Description" @@ -5256,7 +5946,7 @@ public struct CreatePromptInput: Swift.Equatable { /// The name of the prompt. /// This member is required. public var name: Swift.String? - /// The URI for the S3 bucket where the prompt is stored. + /// The URI for the S3 bucket where the prompt is stored. You can provide S3 pre-signed URLs returned by the [GetPromptFile](https://docs.aws.amazon.com/connect/latest/APIReference/API_GetPromptFile.html) API instead of providing S3 URIs. /// This member is required. public var s3Uri: Swift.String? /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. @@ -6272,7 +6962,7 @@ extension CreateSecurityProfileInput: ClientRuntime.URLPathProvider { public struct CreateSecurityProfileInput: Swift.Equatable { /// The list of tags that a security profile uses to restrict access to resources in Amazon Connect. public var allowedAccessControlTags: [Swift.String:Swift.String]? - /// This API is in preview release for Amazon Connect and is subject to change. A list of third party applications that the security profile will give access to. + /// This API is in preview release for Amazon Connect and is subject to change. A list of third-party applications that the security profile will give access to. public var applications: [ConnectClientTypes.Application]? /// The description of the security profile. public var description: Swift.String? @@ -13157,6 +13847,41 @@ enum DisassociateTrafficDistributionGroupUserOutputError: ClientRuntime.HttpResp } } +extension ConnectClientTypes.DisconnectReason: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case code = "Code" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let code = self.code { + try encodeContainer.encode(code, forKey: .code) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let codeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .code) + code = codeDecoded + } +} + +extension ConnectClientTypes { + /// Contains details about why a contact was disconnected. Only Amazon Connect outbound campaigns can provide this field. + public struct DisconnectReason: Swift.Equatable { + /// A code that indicates how the contact was terminated. + public var code: Swift.String? + + public init( + code: Swift.String? = nil + ) + { + self.code = code + } + } + +} + extension DismissUserContactInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case contactId = "ContactId" @@ -13470,6 +14195,86 @@ extension ConnectClientTypes { } } +extension ConnectClientTypes.Endpoint: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case address = "Address" + case type = "Type" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let address = self.address { + try encodeContainer.encode(address, forKey: .address) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.EndpointType.self, forKey: .type) + type = typeDecoded + let addressDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .address) + address = addressDecoded + } +} + +extension ConnectClientTypes { + /// Information about the endpoint. + public struct Endpoint: Swift.Equatable { + /// Address of the endpoint. + public var address: Swift.String? + /// Type of the endpoint. + public var type: ConnectClientTypes.EndpointType? + + public init( + address: Swift.String? = nil, + type: ConnectClientTypes.EndpointType? = nil + ) + { + self.address = address + self.type = type + } + } + +} + +extension ConnectClientTypes { + public enum EndpointType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case contactFlow + case telephoneNumber + case voip + case sdkUnknown(Swift.String) + + public static var allCases: [EndpointType] { + return [ + .contactFlow, + .telephoneNumber, + .voip, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .contactFlow: return "CONTACT_FLOW" + case .telephoneNumber: return "TELEPHONE_NUMBER" + case .voip: return "VOIP" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = EndpointType(rawValue: rawValue) ?? EndpointType.sdkUnknown(rawValue) + } + } +} + extension ConnectClientTypes.Evaluation: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case answers = "Answers" @@ -15670,6 +16475,117 @@ extension ConnectClientTypes { } } +extension ConnectClientTypes.FailedRequest: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case failureReasonCode = "FailureReasonCode" + case failureReasonMessage = "FailureReasonMessage" + case requestIdentifier = "RequestIdentifier" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let failureReasonCode = self.failureReasonCode { + try encodeContainer.encode(failureReasonCode.rawValue, forKey: .failureReasonCode) + } + if let failureReasonMessage = self.failureReasonMessage { + try encodeContainer.encode(failureReasonMessage, forKey: .failureReasonMessage) + } + if let requestIdentifier = self.requestIdentifier { + try encodeContainer.encode(requestIdentifier, forKey: .requestIdentifier) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let requestIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestIdentifier) + requestIdentifier = requestIdentifierDecoded + let failureReasonCodeDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.FailureReasonCode.self, forKey: .failureReasonCode) + failureReasonCode = failureReasonCodeDecoded + let failureReasonMessageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .failureReasonMessage) + failureReasonMessage = failureReasonMessageDecoded + } +} + +extension ConnectClientTypes { + /// Request for which contact failed to be generated. + public struct FailedRequest: Swift.Equatable { + /// Reason code for the failure. + public var failureReasonCode: ConnectClientTypes.FailureReasonCode? + /// Why the request to create a contact failed. + public var failureReasonMessage: Swift.String? + /// Request identifier provided in the API call in the ContactDataRequest to create a contact. + public var requestIdentifier: Swift.String? + + public init( + failureReasonCode: ConnectClientTypes.FailureReasonCode? = nil, + failureReasonMessage: Swift.String? = nil, + requestIdentifier: Swift.String? = nil + ) + { + self.failureReasonCode = failureReasonCode + self.failureReasonMessage = failureReasonMessage + self.requestIdentifier = requestIdentifier + } + } + +} + +extension ConnectClientTypes { + public enum FailureReasonCode: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case idempotencyException + case internalError + case invalidAttributeKey + case invalidCustomerEndpoint + case invalidQueue + case invalidSystemEndpoint + case missingCampaign + case missingCustomerEndpoint + case missingQueueIdAndSystemEndpoint + case requestThrottled + case sdkUnknown(Swift.String) + + public static var allCases: [FailureReasonCode] { + return [ + .idempotencyException, + .internalError, + .invalidAttributeKey, + .invalidCustomerEndpoint, + .invalidQueue, + .invalidSystemEndpoint, + .missingCampaign, + .missingCustomerEndpoint, + .missingQueueIdAndSystemEndpoint, + .requestThrottled, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .idempotencyException: return "IDEMPOTENCY_EXCEPTION" + case .internalError: return "INTERNAL_ERROR" + case .invalidAttributeKey: return "INVALID_ATTRIBUTE_KEY" + case .invalidCustomerEndpoint: return "INVALID_CUSTOMER_ENDPOINT" + case .invalidQueue: return "INVALID_QUEUE" + case .invalidSystemEndpoint: return "INVALID_SYSTEM_ENDPOINT" + case .missingCampaign: return "MISSING_CAMPAIGN" + case .missingCustomerEndpoint: return "MISSING_CUSTOMER_ENDPOINT" + case .missingQueueIdAndSystemEndpoint: return "MISSING_QUEUE_ID_AND_SYSTEM_ENDPOINT" + case .requestThrottled: return "REQUEST_THROTTLED" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = FailureReasonCode(rawValue: rawValue) ?? FailureReasonCode.sdkUnknown(rawValue) + } + } +} + extension ConnectClientTypes.FilterV2: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case filterKey = "FilterKey" @@ -15818,6 +16734,61 @@ extension ConnectClientTypes { } +extension ConnectClientTypes.FlowAssociationSummary: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case flowId = "FlowId" + case resourceId = "ResourceId" + case resourceType = "ResourceType" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let flowId = self.flowId { + try encodeContainer.encode(flowId, forKey: .flowId) + } + if let resourceId = self.resourceId { + try encodeContainer.encode(resourceId, forKey: .resourceId) + } + if let resourceType = self.resourceType { + try encodeContainer.encode(resourceType.rawValue, forKey: .resourceType) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let resourceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceId) + resourceId = resourceIdDecoded + let flowIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .flowId) + flowId = flowIdDecoded + let resourceTypeDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.ListFlowAssociationResourceType.self, forKey: .resourceType) + resourceType = resourceTypeDecoded + } +} + +extension ConnectClientTypes { + /// Information about flow associations. + public struct FlowAssociationSummary: Swift.Equatable { + /// The identifier of the flow. + public var flowId: Swift.String? + /// The identifier of the resource. + public var resourceId: Swift.String? + /// The type of resource association. + public var resourceType: ConnectClientTypes.ListFlowAssociationResourceType? + + public init( + flowId: Swift.String? = nil, + resourceId: Swift.String? = nil, + resourceType: ConnectClientTypes.ListFlowAssociationResourceType? = nil + ) + { + self.flowId = flowId + self.resourceId = resourceId + self.resourceType = resourceType + } + } + +} + extension GetContactAttributesInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { guard let instanceId = instanceId else { @@ -16817,7 +17788,7 @@ public struct GetMetricDataV2Input: Swift.Equatable { public var interval: ConnectClientTypes.IntervalDetails? /// The maximum number of results to return per page. public var maxResults: Swift.Int? - /// The metrics to retrieve. Specify the name, groupings, and filters for each metric. The following historical metrics are available. For a description of each metric, see [Historical metrics definitions](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html) in the Amazon Connect Administrator's Guide. ABANDONMENT_RATE Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AGENT_ADHERENT_TIME This metric is available only in Amazon Web Services Regions where [Forecasting, capacity planning, and scheduling](https://docs.aws.amazon.com/connect/latest/adminguide/regions.html#optimization_region) is available. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AGENT_NON_RESPONSE Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AGENT_NON_RESPONSE_WITHOUT_CUSTOMER_ABANDONS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy Data for this metric is available starting from October 1, 2023 0:00:00 GMT. AGENT_OCCUPANCY Unit: Percentage Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy AGENT_SCHEDULE_ADHERENCE This metric is available only in Amazon Web Services Regions where [Forecasting, capacity planning, and scheduling](https://docs.aws.amazon.com/connect/latest/adminguide/regions.html#optimization_region) is available. Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AGENT_SCHEDULED_TIME This metric is available only in Amazon Web Services Regions where [Forecasting, capacity planning, and scheduling](https://docs.aws.amazon.com/connect/latest/adminguide/regions.html#optimization_region) is available. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_ABANDON_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_AFTER_CONTACT_WORK_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. AVG_AGENT_CONNECTING_TIME Unit: Seconds Valid metric filter key: INITIATION_METHOD. For now, this metric only supports the following as INITIATION_METHOD: INBOUND | OUTBOUND | CALLBACK | API Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy The Negate key in Metric Level Filters is not applicable for this metric. AVG_CONTACT_DURATION Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. AVG_CONVERSATION_DURATION Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_GREETING_TIME_AGENT This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_HANDLE_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. AVG_HOLD_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. AVG_HOLD_TIME_ALL_CONTACTS Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_HOLDS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. AVG_INTERACTION_AND_HOLD_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_INTERACTION_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Feature Feature is a valid filter but not a valid grouping. AVG_INTERRUPTIONS_AGENT This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_INTERRUPTION_TIME_AGENT This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_NON_TALK_TIME This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_QUEUE_ANSWER_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Feature Feature is a valid filter but not a valid grouping. AVG_RESOLUTION_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile AVG_TALK_TIME This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_TALK_TIME_AGENT This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_TALK_TIME_CUSTOMER This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_ABANDONED Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_CREATED Unit: Count Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Routing Profile, Feature Feature is a valid filter but not a valid grouping. CONTACTS_HANDLED Unit: Count Valid metric filter key: INITIATION_METHOD, DISCONNECT_REASON Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. CONTACTS_HOLD_ABANDONS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_QUEUED Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_RESOLVED_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile Threshold: For ThresholdValue enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). CONTACTS_TRANSFERRED_OUT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. CONTACTS_TRANSFERRED_OUT_BY_AGENT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_TRANSFERRED_OUT_FROM_QUEUE Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy MAX_QUEUED_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SERVICE_LEVEL You can include up to 20 SERVICE_LEVEL metrics in a request. Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). SUM_CONTACTS_ANSWERED_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). SUM_CONTACTS_ABANDONED_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). SUM_CONTACTS_DISCONNECTED Valid metric filter key: DISCONNECT_REASON Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile SUM_RETRY_CALLBACK_ATTEMPTS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile + /// The metrics to retrieve. Specify the name, groupings, and filters for each metric. The following historical metrics are available. For a description of each metric, see [Historical metrics definitions](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html) in the Amazon Connect Administrator's Guide. ABANDONMENT_RATE Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AGENT_ADHERENT_TIME This metric is available only in Amazon Web Services Regions where [Forecasting, capacity planning, and scheduling](https://docs.aws.amazon.com/connect/latest/adminguide/regions.html#optimization_region) is available. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AGENT_NON_RESPONSE Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AGENT_NON_RESPONSE_WITHOUT_CUSTOMER_ABANDONS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy Data for this metric is available starting from October 1, 2023 0:00:00 GMT. AGENT_OCCUPANCY Unit: Percentage Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy AGENT_SCHEDULE_ADHERENCE This metric is available only in Amazon Web Services Regions where [Forecasting, capacity planning, and scheduling](https://docs.aws.amazon.com/connect/latest/adminguide/regions.html#optimization_region) is available. Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AGENT_SCHEDULED_TIME This metric is available only in Amazon Web Services Regions where [Forecasting, capacity planning, and scheduling](https://docs.aws.amazon.com/connect/latest/adminguide/regions.html#optimization_region) is available. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_ABANDON_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_AFTER_CONTACT_WORK_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. AVG_AGENT_CONNECTING_TIME Unit: Seconds Valid metric filter key: INITIATION_METHOD. For now, this metric only supports the following as INITIATION_METHOD: INBOUND | OUTBOUND | CALLBACK | API Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy The Negate key in Metric Level Filters is not applicable for this metric. AVG_CONTACT_DURATION Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. AVG_CONVERSATION_DURATION Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_GREETING_TIME_AGENT This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_HANDLE_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. AVG_HOLD_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. AVG_HOLD_TIME_ALL_CONTACTS Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_HOLDS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. AVG_INTERACTION_AND_HOLD_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_INTERACTION_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Feature Feature is a valid filter but not a valid grouping. AVG_INTERRUPTIONS_AGENT This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_INTERRUPTION_TIME_AGENT This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_NON_TALK_TIME This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_QUEUE_ANSWER_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Feature Feature is a valid filter but not a valid grouping. AVG_RESOLUTION_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile AVG_TALK_TIME This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_TALK_TIME_AGENT This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_TALK_TIME_CUSTOMER This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_ABANDONED Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_CREATED Unit: Count Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Routing Profile, Feature Feature is a valid filter but not a valid grouping. CONTACTS_HANDLED Unit: Count Valid metric filter key: INITIATION_METHOD, DISCONNECT_REASON Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. CONTACTS_HOLD_ABANDONS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_QUEUED Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_RESOLVED_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile Threshold: For ThresholdValue enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). CONTACTS_TRANSFERRED_OUT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature Feature is a valid filter but not a valid grouping. CONTACTS_TRANSFERRED_OUT_BY_AGENT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_TRANSFERRED_OUT_FROM_QUEUE Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy MAX_QUEUED_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy PERCENT_NON_TALK_TIME This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Percentage Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy PERCENT_TALK_TIME This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Percentage Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy PERCENT_TALK_TIME_AGENT This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Percentage Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy PERCENT_TALK_TIME_CUSTOMER This metric is available only for contacts analyzed by Contact Lens conversational analytics. Unit: Percentage Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SERVICE_LEVEL You can include up to 20 SERVICE_LEVEL metrics in a request. Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). SUM_CONTACTS_ANSWERED_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). SUM_CONTACTS_ABANDONED_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). SUM_CONTACTS_DISCONNECTED Valid metric filter key: DISCONNECT_REASON Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile SUM_RETRY_CALLBACK_ATTEMPTS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile /// This member is required. public var metrics: [ConnectClientTypes.MetricV2]? /// The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. @@ -17046,31 +18017,47 @@ extension GetPromptFileOutput: ClientRuntime.HttpResponseBinding { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { let output: GetPromptFileOutputBody = try responseDecoder.decode(responseBody: data) + self.lastModifiedRegion = output.lastModifiedRegion + self.lastModifiedTime = output.lastModifiedTime self.promptPresignedUrl = output.promptPresignedUrl } else { + self.lastModifiedRegion = nil + self.lastModifiedTime = nil self.promptPresignedUrl = nil } } } public struct GetPromptFileOutput: Swift.Equatable { + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// A generated URL to the prompt that can be given to an unauthorized user so they can access the prompt in S3. public var promptPresignedUrl: Swift.String? public init( + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, promptPresignedUrl: Swift.String? = nil ) { + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.promptPresignedUrl = promptPresignedUrl } } struct GetPromptFileOutputBody: Swift.Equatable { let promptPresignedUrl: Swift.String? + let lastModifiedTime: ClientRuntime.Date? + let lastModifiedRegion: Swift.String? } extension GetPromptFileOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case promptPresignedUrl = "PromptPresignedUrl" } @@ -17078,6 +18065,10 @@ extension GetPromptFileOutputBody: Swift.Decodable { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let promptPresignedUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .promptPresignedUrl) promptPresignedUrl = promptPresignedUrlDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -17514,6 +18505,8 @@ extension ConnectClientTypes.HierarchyGroup: Swift.Codable { case arn = "Arn" case hierarchyPath = "HierarchyPath" case id = "Id" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case levelId = "LevelId" case name = "Name" case tags = "Tags" @@ -17530,6 +18523,12 @@ extension ConnectClientTypes.HierarchyGroup: Swift.Codable { if let id = self.id { try encodeContainer.encode(id, forKey: .id) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let levelId = self.levelId { try encodeContainer.encode(levelId, forKey: .levelId) } @@ -17567,6 +18566,10 @@ extension ConnectClientTypes.HierarchyGroup: Swift.Codable { } } tags = tagsDecoded0 + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -17579,6 +18582,10 @@ extension ConnectClientTypes { public var hierarchyPath: ConnectClientTypes.HierarchyPath? /// The identifier of the hierarchy group. public var id: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The identifier of the level in the hierarchy group. public var levelId: Swift.String? /// The name of the hierarchy group. @@ -17590,6 +18597,8 @@ extension ConnectClientTypes { arn: Swift.String? = nil, hierarchyPath: ConnectClientTypes.HierarchyPath? = nil, id: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, levelId: Swift.String? = nil, name: Swift.String? = nil, tags: [Swift.String:Swift.String]? = nil @@ -17598,6 +18607,8 @@ extension ConnectClientTypes { self.arn = arn self.hierarchyPath = hierarchyPath self.id = id + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.levelId = levelId self.name = name self.tags = tags @@ -17687,6 +18698,8 @@ extension ConnectClientTypes.HierarchyGroupSummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case arn = "Arn" case id = "Id" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case name = "Name" } @@ -17698,6 +18711,12 @@ extension ConnectClientTypes.HierarchyGroupSummary: Swift.Codable { if let id = self.id { try encodeContainer.encode(id, forKey: .id) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -17711,6 +18730,10 @@ extension ConnectClientTypes.HierarchyGroupSummary: Swift.Codable { arn = arnDecoded let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) name = nameDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -17721,17 +18744,25 @@ extension ConnectClientTypes { public var arn: Swift.String? /// The identifier of the hierarchy group. public var id: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The name of the hierarchy group. public var name: Swift.String? public init( arn: Swift.String? = nil, id: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil ) { self.arn = arn self.id = id + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.name = name } } @@ -17787,6 +18818,8 @@ extension ConnectClientTypes.HierarchyLevel: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case arn = "Arn" case id = "Id" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case name = "Name" } @@ -17798,6 +18831,12 @@ extension ConnectClientTypes.HierarchyLevel: Swift.Codable { if let id = self.id { try encodeContainer.encode(id, forKey: .id) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -17811,6 +18850,10 @@ extension ConnectClientTypes.HierarchyLevel: Swift.Codable { arn = arnDecoded let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) name = nameDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -17821,17 +18864,25 @@ extension ConnectClientTypes { public var arn: Swift.String? /// The identifier of the hierarchy level. public var id: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The name of the hierarchy level. public var name: Swift.String? public init( arn: Swift.String? = nil, id: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil ) { self.arn = arn self.id = id + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.name = name } } @@ -18449,6 +19500,8 @@ extension ConnectClientTypes.HoursOfOperation: Swift.Codable { case description = "Description" case hoursOfOperationArn = "HoursOfOperationArn" case hoursOfOperationId = "HoursOfOperationId" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case name = "Name" case tags = "Tags" case timeZone = "TimeZone" @@ -18471,6 +19524,12 @@ extension ConnectClientTypes.HoursOfOperation: Swift.Codable { if let hoursOfOperationId = self.hoursOfOperationId { try encodeContainer.encode(hoursOfOperationId, forKey: .hoursOfOperationId) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -18519,6 +19578,10 @@ extension ConnectClientTypes.HoursOfOperation: Swift.Codable { } } tags = tagsDecoded0 + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -18533,6 +19596,10 @@ extension ConnectClientTypes { public var hoursOfOperationArn: Swift.String? /// The identifier for the hours of operation. public var hoursOfOperationId: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The name for the hours of operation. public var name: Swift.String? /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. @@ -18545,6 +19612,8 @@ extension ConnectClientTypes { description: Swift.String? = nil, hoursOfOperationArn: Swift.String? = nil, hoursOfOperationId: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil, tags: [Swift.String:Swift.String]? = nil, timeZone: Swift.String? = nil @@ -18554,6 +19623,8 @@ extension ConnectClientTypes { self.description = description self.hoursOfOperationArn = hoursOfOperationArn self.hoursOfOperationId = hoursOfOperationId + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.name = name self.tags = tags self.timeZone = timeZone @@ -18789,6 +19860,8 @@ extension ConnectClientTypes.HoursOfOperationSummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case arn = "Arn" case id = "Id" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case name = "Name" } @@ -18800,6 +19873,12 @@ extension ConnectClientTypes.HoursOfOperationSummary: Swift.Codable { if let id = self.id { try encodeContainer.encode(id, forKey: .id) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -18813,6 +19892,10 @@ extension ConnectClientTypes.HoursOfOperationSummary: Swift.Codable { arn = arnDecoded let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) name = nameDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -18823,17 +19906,25 @@ extension ConnectClientTypes { public var arn: Swift.String? /// The identifier of the hours of operation. public var id: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The name of the hours of operation. public var name: Swift.String? public init( arn: Swift.String? = nil, id: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil ) { self.arn = arn self.id = id + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.name = name } } @@ -21796,6 +22887,38 @@ enum ListEvaluationFormsOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension ConnectClientTypes { + public enum ListFlowAssociationResourceType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case smsPhoneNumber + case voicePhoneNumber + case sdkUnknown(Swift.String) + + public static var allCases: [ListFlowAssociationResourceType] { + return [ + .smsPhoneNumber, + .voicePhoneNumber, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .smsPhoneNumber: return "SMS_PHONE_NUMBER" + case .voicePhoneNumber: return "VOICE_PHONE_NUMBER" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = ListFlowAssociationResourceType(rawValue: rawValue) ?? ListFlowAssociationResourceType.sdkUnknown(rawValue) + } + } +} + extension ListHoursOfOperationsInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { @@ -22865,6 +23988,7 @@ enum ListPhoneNumbersOutputError: ClientRuntime.HttpResponseErrorBinding { extension ConnectClientTypes.ListPhoneNumbersSummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case instanceId = "InstanceId" case phoneNumber = "PhoneNumber" case phoneNumberArn = "PhoneNumberArn" case phoneNumberCountryCode = "PhoneNumberCountryCode" @@ -22875,6 +23999,9 @@ extension ConnectClientTypes.ListPhoneNumbersSummary: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let instanceId = self.instanceId { + try encodeContainer.encode(instanceId, forKey: .instanceId) + } if let phoneNumber = self.phoneNumber { try encodeContainer.encode(phoneNumber, forKey: .phoneNumber) } @@ -22909,12 +24036,16 @@ extension ConnectClientTypes.ListPhoneNumbersSummary: Swift.Codable { phoneNumberType = phoneNumberTypeDecoded let targetArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .targetArn) targetArn = targetArnDecoded + let instanceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceId) + instanceId = instanceIdDecoded } } extension ConnectClientTypes { /// Information about phone numbers that have been claimed to your Amazon Connect instance or traffic distribution group. public struct ListPhoneNumbersSummary: Swift.Equatable { + /// The identifier of the Amazon Connect instance that phone numbers are claimed to. You can [find the instance ID](https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html) in the Amazon Resource Name (ARN) of the instance. + public var instanceId: Swift.String? /// The phone number. Phone numbers are formatted [+] [country code] [subscriber number including area code]. public var phoneNumber: Swift.String? /// The Amazon Resource Name (ARN) of the phone number. @@ -22925,10 +24056,11 @@ extension ConnectClientTypes { public var phoneNumberId: Swift.String? /// The type of phone number. public var phoneNumberType: ConnectClientTypes.PhoneNumberType? - /// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to. + /// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone number inbound traffic is routed through. public var targetArn: Swift.String? public init( + instanceId: Swift.String? = nil, phoneNumber: Swift.String? = nil, phoneNumberArn: Swift.String? = nil, phoneNumberCountryCode: ConnectClientTypes.PhoneNumberCountryCode? = nil, @@ -22937,6 +24069,7 @@ extension ConnectClientTypes { targetArn: Swift.String? = nil ) { + self.instanceId = instanceId self.phoneNumber = phoneNumber self.phoneNumberArn = phoneNumberArn self.phoneNumberCountryCode = phoneNumberCountryCode @@ -22950,6 +24083,7 @@ extension ConnectClientTypes { extension ListPhoneNumbersV2Input: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case instanceId = "InstanceId" case maxResults = "MaxResults" case nextToken = "NextToken" case phoneNumberCountryCodes = "PhoneNumberCountryCodes" @@ -22960,6 +24094,9 @@ extension ListPhoneNumbersV2Input: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let instanceId = self.instanceId { + try encodeContainer.encode(instanceId, forKey: .instanceId) + } if let maxResults = self.maxResults { try encodeContainer.encode(maxResults, forKey: .maxResults) } @@ -22994,6 +24131,8 @@ extension ListPhoneNumbersV2Input: ClientRuntime.URLPathProvider { } public struct ListPhoneNumbersV2Input: Swift.Equatable { + /// The identifier of the Amazon Connect instance that phone numbers are claimed to. You can [find the instance ID](https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html) in the Amazon Resource Name (ARN) of the instance. If both TargetArn and InstanceId are not provided, this API lists numbers claimed to all the Amazon Connect instances belonging to your account in the same AWS Region as the request. + public var instanceId: Swift.String? /// The maximum number of results to return per page. public var maxResults: Swift.Int? /// The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. @@ -23004,10 +24143,11 @@ public struct ListPhoneNumbersV2Input: Swift.Equatable { public var phoneNumberPrefix: Swift.String? /// The type of phone number. public var phoneNumberTypes: [ConnectClientTypes.PhoneNumberType]? - /// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to. If TargetArn input is not provided, this API lists numbers claimed to all the Amazon Connect instances belonging to your account in the same Amazon Web Services Region as the request. + /// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone number inbound traffic is routed through. If both TargetArn and InstanceId input are not provided, this API lists numbers claimed to all the Amazon Connect instances belonging to your account in the same Amazon Web Services Region as the request. public var targetArn: Swift.String? public init( + instanceId: Swift.String? = nil, maxResults: Swift.Int? = nil, nextToken: Swift.String? = nil, phoneNumberCountryCodes: [ConnectClientTypes.PhoneNumberCountryCode]? = nil, @@ -23016,6 +24156,7 @@ public struct ListPhoneNumbersV2Input: Swift.Equatable { targetArn: Swift.String? = nil ) { + self.instanceId = instanceId self.maxResults = maxResults self.nextToken = nextToken self.phoneNumberCountryCodes = phoneNumberCountryCodes @@ -23027,6 +24168,7 @@ public struct ListPhoneNumbersV2Input: Swift.Equatable { struct ListPhoneNumbersV2InputBody: Swift.Equatable { let targetArn: Swift.String? + let instanceId: Swift.String? let maxResults: Swift.Int? let nextToken: Swift.String? let phoneNumberCountryCodes: [ConnectClientTypes.PhoneNumberCountryCode]? @@ -23036,6 +24178,7 @@ struct ListPhoneNumbersV2InputBody: Swift.Equatable { extension ListPhoneNumbersV2InputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case instanceId = "InstanceId" case maxResults = "MaxResults" case nextToken = "NextToken" case phoneNumberCountryCodes = "PhoneNumberCountryCodes" @@ -23048,6 +24191,8 @@ extension ListPhoneNumbersV2InputBody: Swift.Decodable { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let targetArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .targetArn) targetArn = targetArnDecoded + let instanceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceId) + instanceId = instanceIdDecoded let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) maxResults = maxResultsDecoded let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) @@ -23352,9 +24497,13 @@ extension ListQueueQuickConnectsOutput: ClientRuntime.HttpResponseBinding { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { let output: ListQueueQuickConnectsOutputBody = try responseDecoder.decode(responseBody: data) + self.lastModifiedRegion = output.lastModifiedRegion + self.lastModifiedTime = output.lastModifiedTime self.nextToken = output.nextToken self.quickConnectSummaryList = output.quickConnectSummaryList } else { + self.lastModifiedRegion = nil + self.lastModifiedTime = nil self.nextToken = nil self.quickConnectSummaryList = nil } @@ -23362,16 +24511,24 @@ extension ListQueueQuickConnectsOutput: ClientRuntime.HttpResponseBinding { } public struct ListQueueQuickConnectsOutput: Swift.Equatable { + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// If there are additional results, this is the token for the next set of results. public var nextToken: Swift.String? /// Information about the quick connects. public var quickConnectSummaryList: [ConnectClientTypes.QuickConnectSummary]? public init( + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, nextToken: Swift.String? = nil, quickConnectSummaryList: [ConnectClientTypes.QuickConnectSummary]? = nil ) { + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.nextToken = nextToken self.quickConnectSummaryList = quickConnectSummaryList } @@ -23380,10 +24537,14 @@ public struct ListQueueQuickConnectsOutput: Swift.Equatable { struct ListQueueQuickConnectsOutputBody: Swift.Equatable { let nextToken: Swift.String? let quickConnectSummaryList: [ConnectClientTypes.QuickConnectSummary]? + let lastModifiedTime: ClientRuntime.Date? + let lastModifiedRegion: Swift.String? } extension ListQueueQuickConnectsOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case nextToken = "NextToken" case quickConnectSummaryList = "QuickConnectSummaryList" } @@ -23403,6 +24564,10 @@ extension ListQueueQuickConnectsOutputBody: Swift.Decodable { } } quickConnectSummaryList = quickConnectSummaryListDecoded0 + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -23770,9 +24935,13 @@ extension ListRoutingProfileQueuesOutput: ClientRuntime.HttpResponseBinding { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { let output: ListRoutingProfileQueuesOutputBody = try responseDecoder.decode(responseBody: data) + self.lastModifiedRegion = output.lastModifiedRegion + self.lastModifiedTime = output.lastModifiedTime self.nextToken = output.nextToken self.routingProfileQueueConfigSummaryList = output.routingProfileQueueConfigSummaryList } else { + self.lastModifiedRegion = nil + self.lastModifiedTime = nil self.nextToken = nil self.routingProfileQueueConfigSummaryList = nil } @@ -23780,16 +24949,24 @@ extension ListRoutingProfileQueuesOutput: ClientRuntime.HttpResponseBinding { } public struct ListRoutingProfileQueuesOutput: Swift.Equatable { + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// If there are additional results, this is the token for the next set of results. public var nextToken: Swift.String? /// Information about the routing profiles. public var routingProfileQueueConfigSummaryList: [ConnectClientTypes.RoutingProfileQueueConfigSummary]? public init( + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, nextToken: Swift.String? = nil, routingProfileQueueConfigSummaryList: [ConnectClientTypes.RoutingProfileQueueConfigSummary]? = nil ) { + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.nextToken = nextToken self.routingProfileQueueConfigSummaryList = routingProfileQueueConfigSummaryList } @@ -23798,10 +24975,14 @@ public struct ListRoutingProfileQueuesOutput: Swift.Equatable { struct ListRoutingProfileQueuesOutputBody: Swift.Equatable { let nextToken: Swift.String? let routingProfileQueueConfigSummaryList: [ConnectClientTypes.RoutingProfileQueueConfigSummary]? + let lastModifiedTime: ClientRuntime.Date? + let lastModifiedRegion: Swift.String? } extension ListRoutingProfileQueuesOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case nextToken = "NextToken" case routingProfileQueueConfigSummaryList = "RoutingProfileQueueConfigSummaryList" } @@ -23821,6 +25002,10 @@ extension ListRoutingProfileQueuesOutputBody: Swift.Decodable { } } routingProfileQueueConfigSummaryList = routingProfileQueueConfigSummaryListDecoded0 + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -24276,14 +25461,14 @@ extension ListSecurityProfileApplicationsInput: ClientRuntime.URLPathProvider { } public struct ListSecurityProfileApplicationsInput: Swift.Equatable { - /// The instance identifier. + /// The identifier of the Amazon Connect instance. You can [find the instance ID](https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html) in the Amazon Resource Name (ARN) of the instance. /// This member is required. public var instanceId: Swift.String? /// The maximum number of results to return per page. public var maxResults: Swift.Int? - /// The token for the next set of results. The next set of results can be retrieved by using the token value returned in the previous response when making the next request. + /// The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. public var nextToken: Swift.String? - /// The security profile identifier. + /// The identifier for the security profle. /// This member is required. public var securityProfileId: Swift.String? @@ -24316,26 +25501,38 @@ extension ListSecurityProfileApplicationsOutput: ClientRuntime.HttpResponseBindi let responseDecoder = decoder { let output: ListSecurityProfileApplicationsOutputBody = try responseDecoder.decode(responseBody: data) self.applications = output.applications + self.lastModifiedRegion = output.lastModifiedRegion + self.lastModifiedTime = output.lastModifiedTime self.nextToken = output.nextToken } else { self.applications = nil + self.lastModifiedRegion = nil + self.lastModifiedTime = nil self.nextToken = nil } } } public struct ListSecurityProfileApplicationsOutput: Swift.Equatable { - /// This API is in preview release for Amazon Connect and is subject to change. A list of the third party application's metadata. + /// This API is in preview release for Amazon Connect and is subject to change. A list of the third-party application's metadata. public var applications: [ConnectClientTypes.Application]? - /// The token for the next set of results. The next set of results can be retrieved by using the token value returned in the previous response when making the next request. + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? + /// If there are additional results, this is the token for the next set of results. public var nextToken: Swift.String? public init( applications: [ConnectClientTypes.Application]? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, nextToken: Swift.String? = nil ) { self.applications = applications + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.nextToken = nextToken } } @@ -24343,11 +25540,15 @@ public struct ListSecurityProfileApplicationsOutput: Swift.Equatable { struct ListSecurityProfileApplicationsOutputBody: Swift.Equatable { let applications: [ConnectClientTypes.Application]? let nextToken: Swift.String? + let lastModifiedTime: ClientRuntime.Date? + let lastModifiedRegion: Swift.String? } extension ListSecurityProfileApplicationsOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case applications = "Applications" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case nextToken = "NextToken" } @@ -24366,6 +25567,10 @@ extension ListSecurityProfileApplicationsOutputBody: Swift.Decodable { applications = applicationsDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -24453,9 +25658,13 @@ extension ListSecurityProfilePermissionsOutput: ClientRuntime.HttpResponseBindin if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { let output: ListSecurityProfilePermissionsOutputBody = try responseDecoder.decode(responseBody: data) + self.lastModifiedRegion = output.lastModifiedRegion + self.lastModifiedTime = output.lastModifiedTime self.nextToken = output.nextToken self.permissions = output.permissions } else { + self.lastModifiedRegion = nil + self.lastModifiedTime = nil self.nextToken = nil self.permissions = nil } @@ -24463,16 +25672,24 @@ extension ListSecurityProfilePermissionsOutput: ClientRuntime.HttpResponseBindin } public struct ListSecurityProfilePermissionsOutput: Swift.Equatable { + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// If there are additional results, this is the token for the next set of results. public var nextToken: Swift.String? /// The permissions granted to the security profile. For a complete list of valid permissions, see [List of security profile permissions](https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-list.html). public var permissions: [Swift.String]? public init( + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, nextToken: Swift.String? = nil, permissions: [Swift.String]? = nil ) { + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.nextToken = nextToken self.permissions = permissions } @@ -24481,10 +25698,14 @@ public struct ListSecurityProfilePermissionsOutput: Swift.Equatable { struct ListSecurityProfilePermissionsOutputBody: Swift.Equatable { let permissions: [Swift.String]? let nextToken: Swift.String? + let lastModifiedTime: ClientRuntime.Date? + let lastModifiedRegion: Swift.String? } extension ListSecurityProfilePermissionsOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case nextToken = "NextToken" case permissions = "Permissions" } @@ -24504,6 +25725,10 @@ extension ListSecurityProfilePermissionsOutputBody: Swift.Decodable { permissions = permissionsDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -28281,6 +29506,8 @@ extension ConnectClientTypes { extension ConnectClientTypes.Prompt: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case description = "Description" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case name = "Name" case promptARN = "PromptARN" case promptId = "PromptId" @@ -28292,6 +29519,12 @@ extension ConnectClientTypes.Prompt: Swift.Codable { if let description = self.description { try encodeContainer.encode(description, forKey: .description) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -28330,6 +29563,10 @@ extension ConnectClientTypes.Prompt: Swift.Codable { } } tags = tagsDecoded0 + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -28338,6 +29575,10 @@ extension ConnectClientTypes { public struct Prompt: Swift.Equatable { /// The description of the prompt. public var description: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The name of the prompt. public var name: Swift.String? /// The Amazon Resource Name (ARN) of the prompt. @@ -28349,6 +29590,8 @@ extension ConnectClientTypes { public init( description: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil, promptARN: Swift.String? = nil, promptId: Swift.String? = nil, @@ -28356,6 +29599,8 @@ extension ConnectClientTypes { ) { self.description = description + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.name = name self.promptARN = promptARN self.promptId = promptId @@ -28487,6 +29732,8 @@ extension ConnectClientTypes.PromptSummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case arn = "Arn" case id = "Id" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case name = "Name" } @@ -28498,6 +29745,12 @@ extension ConnectClientTypes.PromptSummary: Swift.Codable { if let id = self.id { try encodeContainer.encode(id, forKey: .id) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -28511,6 +29764,10 @@ extension ConnectClientTypes.PromptSummary: Swift.Codable { arn = arnDecoded let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) name = nameDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -28521,17 +29778,25 @@ extension ConnectClientTypes { public var arn: Swift.String? /// The identifier of the prompt. public var id: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The name of the prompt. public var name: Swift.String? public init( arn: Swift.String? = nil, id: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil ) { self.arn = arn self.id = id + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.name = name } } @@ -28808,6 +30073,8 @@ extension ConnectClientTypes.Queue: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case description = "Description" case hoursOfOperationId = "HoursOfOperationId" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case maxContacts = "MaxContacts" case name = "Name" case outboundCallerConfig = "OutboundCallerConfig" @@ -28825,6 +30092,12 @@ extension ConnectClientTypes.Queue: Swift.Codable { if let hoursOfOperationId = self.hoursOfOperationId { try encodeContainer.encode(hoursOfOperationId, forKey: .hoursOfOperationId) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let maxContacts = self.maxContacts { try encodeContainer.encode(maxContacts, forKey: .maxContacts) } @@ -28880,6 +30153,10 @@ extension ConnectClientTypes.Queue: Swift.Codable { } } tags = tagsDecoded0 + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -28890,6 +30167,10 @@ extension ConnectClientTypes { public var description: Swift.String? /// The identifier for the hours of operation. public var hoursOfOperationId: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The maximum number of contacts that can be in the queue before it is considered full. public var maxContacts: Swift.Int? /// The name of the queue. @@ -28908,6 +30189,8 @@ extension ConnectClientTypes { public init( description: Swift.String? = nil, hoursOfOperationId: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, maxContacts: Swift.Int? = nil, name: Swift.String? = nil, outboundCallerConfig: ConnectClientTypes.OutboundCallerConfig? = nil, @@ -28919,6 +30202,8 @@ extension ConnectClientTypes { { self.description = description self.hoursOfOperationId = hoursOfOperationId + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.maxContacts = maxContacts self.name = name self.outboundCallerConfig = outboundCallerConfig @@ -29232,6 +30517,8 @@ extension ConnectClientTypes.QueueSummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case arn = "Arn" case id = "Id" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case name = "Name" case queueType = "QueueType" } @@ -29244,6 +30531,12 @@ extension ConnectClientTypes.QueueSummary: Swift.Codable { if let id = self.id { try encodeContainer.encode(id, forKey: .id) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -29262,6 +30555,10 @@ extension ConnectClientTypes.QueueSummary: Swift.Codable { name = nameDecoded let queueTypeDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.QueueType.self, forKey: .queueType) queueType = queueTypeDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -29272,6 +30569,10 @@ extension ConnectClientTypes { public var arn: Swift.String? /// The identifier of the queue. public var id: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The name of the queue. public var name: Swift.String? /// The type of queue. @@ -29280,12 +30581,16 @@ extension ConnectClientTypes { public init( arn: Swift.String? = nil, id: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil, queueType: ConnectClientTypes.QueueType? = nil ) { self.arn = arn self.id = id + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.name = name self.queueType = queueType } @@ -29328,6 +30633,8 @@ extension ConnectClientTypes { extension ConnectClientTypes.QuickConnect: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case description = "Description" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case name = "Name" case quickConnectARN = "QuickConnectARN" case quickConnectConfig = "QuickConnectConfig" @@ -29340,6 +30647,12 @@ extension ConnectClientTypes.QuickConnect: Swift.Codable { if let description = self.description { try encodeContainer.encode(description, forKey: .description) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -29383,6 +30696,10 @@ extension ConnectClientTypes.QuickConnect: Swift.Codable { } } tags = tagsDecoded0 + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -29391,6 +30708,10 @@ extension ConnectClientTypes { public struct QuickConnect: Swift.Equatable { /// The description. public var description: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The name of the quick connect. public var name: Swift.String? /// The Amazon Resource Name (ARN) of the quick connect. @@ -29404,6 +30725,8 @@ extension ConnectClientTypes { public init( description: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil, quickConnectARN: Swift.String? = nil, quickConnectConfig: ConnectClientTypes.QuickConnectConfig? = nil, @@ -29412,6 +30735,8 @@ extension ConnectClientTypes { ) { self.description = description + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.name = name self.quickConnectARN = quickConnectARN self.quickConnectConfig = quickConnectConfig @@ -29610,6 +30935,8 @@ extension ConnectClientTypes.QuickConnectSummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case arn = "Arn" case id = "Id" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case name = "Name" case quickConnectType = "QuickConnectType" } @@ -29622,6 +30949,12 @@ extension ConnectClientTypes.QuickConnectSummary: Swift.Codable { if let id = self.id { try encodeContainer.encode(id, forKey: .id) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -29640,6 +30973,10 @@ extension ConnectClientTypes.QuickConnectSummary: Swift.Codable { name = nameDecoded let quickConnectTypeDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.QuickConnectType.self, forKey: .quickConnectType) quickConnectType = quickConnectTypeDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -29650,6 +30987,10 @@ extension ConnectClientTypes { public var arn: Swift.String? /// The identifier for the quick connect. public var id: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The name of the quick connect. public var name: Swift.String? /// The type of quick connect. In the Amazon Connect console, when you create a quick connect, you are prompted to assign one of the following types: Agent (USER), External (PHONE_NUMBER), or Queue (QUEUE). @@ -29658,12 +30999,16 @@ extension ConnectClientTypes { public init( arn: Swift.String? = nil, id: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil, quickConnectType: ConnectClientTypes.QuickConnectType? = nil ) { self.arn = arn self.id = id + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.name = name self.quickConnectType = quickConnectType } @@ -30673,6 +32018,9 @@ extension ConnectClientTypes.RoutingProfile: Swift.Codable { case defaultOutboundQueueId = "DefaultOutboundQueueId" case description = "Description" case instanceId = "InstanceId" + case isDefault = "IsDefault" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case mediaConcurrencies = "MediaConcurrencies" case name = "Name" case numberOfAssociatedQueues = "NumberOfAssociatedQueues" @@ -30696,6 +32044,15 @@ extension ConnectClientTypes.RoutingProfile: Swift.Codable { if let instanceId = self.instanceId { try encodeContainer.encode(instanceId, forKey: .instanceId) } + if isDefault != false { + try encodeContainer.encode(isDefault, forKey: .isDefault) + } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let mediaConcurrencies = mediaConcurrencies { var mediaConcurrenciesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .mediaConcurrencies) for mediaconcurrency0 in mediaConcurrencies { @@ -30767,6 +32124,12 @@ extension ConnectClientTypes.RoutingProfile: Swift.Codable { numberOfAssociatedUsers = numberOfAssociatedUsersDecoded let agentAvailabilityTimerDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.AgentAvailabilityTimer.self, forKey: .agentAvailabilityTimer) agentAvailabilityTimer = agentAvailabilityTimerDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded + let isDefaultDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .isDefault) ?? false + isDefault = isDefaultDecoded } } @@ -30781,6 +32144,12 @@ extension ConnectClientTypes { public var description: Swift.String? /// The identifier of the Amazon Connect instance. You can [find the instance ID](https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html) in the Amazon Resource Name (ARN) of the instance. public var instanceId: Swift.String? + /// Whether this a default routing profile. + public var isDefault: Swift.Bool + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The channels agents can handle in the Contact Control Panel (CCP) for this routing profile. public var mediaConcurrencies: [ConnectClientTypes.MediaConcurrency]? /// The name of the routing profile. @@ -30801,6 +32170,9 @@ extension ConnectClientTypes { defaultOutboundQueueId: Swift.String? = nil, description: Swift.String? = nil, instanceId: Swift.String? = nil, + isDefault: Swift.Bool = false, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, mediaConcurrencies: [ConnectClientTypes.MediaConcurrency]? = nil, name: Swift.String? = nil, numberOfAssociatedQueues: Swift.Int? = nil, @@ -30814,6 +32186,9 @@ extension ConnectClientTypes { self.defaultOutboundQueueId = defaultOutboundQueueId self.description = description self.instanceId = instanceId + self.isDefault = isDefault + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.mediaConcurrencies = mediaConcurrencies self.name = name self.numberOfAssociatedQueues = numberOfAssociatedQueues @@ -31189,6 +32564,8 @@ extension ConnectClientTypes.RoutingProfileSummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case arn = "Arn" case id = "Id" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case name = "Name" } @@ -31200,6 +32577,12 @@ extension ConnectClientTypes.RoutingProfileSummary: Swift.Codable { if let id = self.id { try encodeContainer.encode(id, forKey: .id) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -31213,6 +32596,10 @@ extension ConnectClientTypes.RoutingProfileSummary: Swift.Codable { arn = arnDecoded let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) name = nameDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -31223,17 +32610,25 @@ extension ConnectClientTypes { public var arn: Swift.String? /// The identifier of the routing profile. public var id: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The name of the routing profile. public var name: Swift.String? public init( arn: Swift.String? = nil, id: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil ) { self.arn = arn self.id = id + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.name = name } } @@ -31747,6 +33142,7 @@ extension ConnectClientTypes { extension SearchAvailablePhoneNumbersInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case instanceId = "InstanceId" case maxResults = "MaxResults" case nextToken = "NextToken" case phoneNumberCountryCode = "PhoneNumberCountryCode" @@ -31757,6 +33153,9 @@ extension SearchAvailablePhoneNumbersInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let instanceId = self.instanceId { + try encodeContainer.encode(instanceId, forKey: .instanceId) + } if let maxResults = self.maxResults { try encodeContainer.encode(maxResults, forKey: .maxResults) } @@ -31785,6 +33184,8 @@ extension SearchAvailablePhoneNumbersInput: ClientRuntime.URLPathProvider { } public struct SearchAvailablePhoneNumbersInput: Swift.Equatable { + /// The identifier of the Amazon Connect instance that phone numbers are claimed to. You can [find the instance ID](https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html) in the Amazon Resource Name (ARN) of the instance. You must enter InstanceId or TargetArn. + public var instanceId: Swift.String? /// The maximum number of results to return per page. public var maxResults: Swift.Int? /// The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. @@ -31797,11 +33198,11 @@ public struct SearchAvailablePhoneNumbersInput: Swift.Equatable { /// The type of phone number. /// This member is required. public var phoneNumberType: ConnectClientTypes.PhoneNumberType? - /// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to. - /// This member is required. + /// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone number inbound traffic is routed through. You must enter InstanceId or TargetArn. public var targetArn: Swift.String? public init( + instanceId: Swift.String? = nil, maxResults: Swift.Int? = nil, nextToken: Swift.String? = nil, phoneNumberCountryCode: ConnectClientTypes.PhoneNumberCountryCode? = nil, @@ -31810,6 +33211,7 @@ public struct SearchAvailablePhoneNumbersInput: Swift.Equatable { targetArn: Swift.String? = nil ) { + self.instanceId = instanceId self.maxResults = maxResults self.nextToken = nextToken self.phoneNumberCountryCode = phoneNumberCountryCode @@ -31821,6 +33223,7 @@ public struct SearchAvailablePhoneNumbersInput: Swift.Equatable { struct SearchAvailablePhoneNumbersInputBody: Swift.Equatable { let targetArn: Swift.String? + let instanceId: Swift.String? let phoneNumberCountryCode: ConnectClientTypes.PhoneNumberCountryCode? let phoneNumberType: ConnectClientTypes.PhoneNumberType? let phoneNumberPrefix: Swift.String? @@ -31830,6 +33233,7 @@ struct SearchAvailablePhoneNumbersInputBody: Swift.Equatable { extension SearchAvailablePhoneNumbersInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case instanceId = "InstanceId" case maxResults = "MaxResults" case nextToken = "NextToken" case phoneNumberCountryCode = "PhoneNumberCountryCode" @@ -31842,6 +33246,8 @@ extension SearchAvailablePhoneNumbersInputBody: Swift.Decodable { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let targetArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .targetArn) targetArn = targetArnDecoded + let instanceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceId) + instanceId = instanceIdDecoded let phoneNumberCountryCodeDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.PhoneNumberCountryCode.self, forKey: .phoneNumberCountryCode) phoneNumberCountryCode = phoneNumberCountryCodeDecoded let phoneNumberTypeDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.PhoneNumberType.self, forKey: .phoneNumberType) @@ -33636,6 +35042,8 @@ extension ConnectClientTypes.SecurityProfile: Swift.Codable { case arn = "Arn" case description = "Description" case id = "Id" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case organizationResourceId = "OrganizationResourceId" case securityProfileName = "SecurityProfileName" case tagRestrictedResources = "TagRestrictedResources" @@ -33659,6 +35067,12 @@ extension ConnectClientTypes.SecurityProfile: Swift.Codable { if let id = self.id { try encodeContainer.encode(id, forKey: .id) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let organizationResourceId = self.organizationResourceId { try encodeContainer.encode(organizationResourceId, forKey: .organizationResourceId) } @@ -33724,6 +35138,10 @@ extension ConnectClientTypes.SecurityProfile: Swift.Codable { } } tagRestrictedResources = tagRestrictedResourcesDecoded0 + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -33738,6 +35156,10 @@ extension ConnectClientTypes { public var description: Swift.String? /// The identifier for the security profile. public var id: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The organization resource identifier for the security profile. public var organizationResourceId: Swift.String? /// The name for the security profile. @@ -33752,6 +35174,8 @@ extension ConnectClientTypes { arn: Swift.String? = nil, description: Swift.String? = nil, id: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, organizationResourceId: Swift.String? = nil, securityProfileName: Swift.String? = nil, tagRestrictedResources: [Swift.String]? = nil, @@ -33762,6 +35186,8 @@ extension ConnectClientTypes { self.arn = arn self.description = description self.id = id + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.organizationResourceId = organizationResourceId self.securityProfileName = securityProfileName self.tagRestrictedResources = tagRestrictedResources @@ -33951,6 +35377,8 @@ extension ConnectClientTypes.SecurityProfileSummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case arn = "Arn" case id = "Id" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case name = "Name" } @@ -33962,6 +35390,12 @@ extension ConnectClientTypes.SecurityProfileSummary: Swift.Codable { if let id = self.id { try encodeContainer.encode(id, forKey: .id) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -33975,6 +35409,10 @@ extension ConnectClientTypes.SecurityProfileSummary: Swift.Codable { arn = arnDecoded let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) name = nameDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -33985,17 +35423,25 @@ extension ConnectClientTypes { public var arn: Swift.String? /// The identifier of the security profile. public var id: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The name of the security profile. public var name: Swift.String? public init( arn: Swift.String? = nil, id: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil ) { self.arn = arn self.id = id + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.name = name } } @@ -35620,6 +37066,7 @@ extension ConnectClientTypes { extension StopContactInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case contactId = "ContactId" + case disconnectReason = "DisconnectReason" case instanceId = "InstanceId" } @@ -35628,6 +37075,9 @@ extension StopContactInput: Swift.Encodable { if let contactId = self.contactId { try encodeContainer.encode(contactId, forKey: .contactId) } + if let disconnectReason = self.disconnectReason { + try encodeContainer.encode(disconnectReason, forKey: .disconnectReason) + } if let instanceId = self.instanceId { try encodeContainer.encode(instanceId, forKey: .instanceId) } @@ -35644,16 +37094,20 @@ public struct StopContactInput: Swift.Equatable { /// The ID of the contact. /// This member is required. public var contactId: Swift.String? + /// The reason a contact can be disconnected. Only Amazon Connect outbound campaigns can provide this field. + public var disconnectReason: ConnectClientTypes.DisconnectReason? /// The identifier of the Amazon Connect instance. You can [find the instance ID](https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html) in the Amazon Resource Name (ARN) of the instance. /// This member is required. public var instanceId: Swift.String? public init( contactId: Swift.String? = nil, + disconnectReason: ConnectClientTypes.DisconnectReason? = nil, instanceId: Swift.String? = nil ) { self.contactId = contactId + self.disconnectReason = disconnectReason self.instanceId = instanceId } } @@ -35661,11 +37115,13 @@ public struct StopContactInput: Swift.Equatable { struct StopContactInputBody: Swift.Equatable { let contactId: Swift.String? let instanceId: Swift.String? + let disconnectReason: ConnectClientTypes.DisconnectReason? } extension StopContactInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case contactId = "ContactId" + case disconnectReason = "DisconnectReason" case instanceId = "InstanceId" } @@ -35675,6 +37131,8 @@ extension StopContactInputBody: Swift.Decodable { contactId = contactIdDecoded let instanceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceId) instanceId = instanceIdDecoded + let disconnectReasonDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.DisconnectReason.self, forKey: .disconnectReason) + disconnectReason = disconnectReasonDecoded } } @@ -36237,6 +37695,51 @@ enum SubmitContactEvaluationOutputError: ClientRuntime.HttpResponseErrorBinding } } +extension ConnectClientTypes.SuccessfulRequest: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case contactId = "ContactId" + case requestIdentifier = "RequestIdentifier" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let contactId = self.contactId { + try encodeContainer.encode(contactId, forKey: .contactId) + } + if let requestIdentifier = self.requestIdentifier { + try encodeContainer.encode(requestIdentifier, forKey: .requestIdentifier) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let requestIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestIdentifier) + requestIdentifier = requestIdentifierDecoded + let contactIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .contactId) + contactId = contactIdDecoded + } +} + +extension ConnectClientTypes { + /// Request for which contact was successfully created. + public struct SuccessfulRequest: Swift.Equatable { + /// The contactId of the contact that was created successfully. + public var contactId: Swift.String? + /// Request identifier provided in the API call in the ContactDataRequest to create a contact. + public var requestIdentifier: Swift.String? + + public init( + contactId: Swift.String? = nil, + requestIdentifier: Swift.String? = nil + ) + { + self.contactId = contactId + self.requestIdentifier = requestIdentifier + } + } + +} + extension SuspendContactRecordingInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case contactId = "ContactId" @@ -37510,7 +39013,7 @@ extension ConnectClientTypes { public var id: Swift.String? /// The Amazon Resource Name (ARN). public var instanceArn: Swift.String? - /// Whether this is the default traffic distribution group created during instance replication. The default traffic distribution group cannot be deleted by the DeleteTrafficDistributionGroup API. The default traffic distribution group is deleted as part of the process for deleting a replica. The SignInConfig distribution is available only on the default TrafficDistributionGroup. If you call UpdateTrafficDistribution with a modified SignInConfig and a non-default TrafficDistributionGroup, an InvalidRequestException is returned. + /// Whether this is the default traffic distribution group created during instance replication. The default traffic distribution group cannot be deleted by the DeleteTrafficDistributionGroup API. The default traffic distribution group is deleted as part of the process for deleting a replica. The SignInConfig distribution is available only on a default TrafficDistributionGroup (see the IsDefault parameter in the [TrafficDistributionGroup](https://docs.aws.amazon.com/connect/latest/APIReference/API_TrafficDistributionGroup.html) data type). If you call UpdateTrafficDistribution with a modified SignInConfig and a non-default TrafficDistributionGroup, an InvalidRequestException is returned. public var isDefault: Swift.Bool /// The name of the traffic distribution group. public var name: Swift.String? @@ -39893,6 +41396,7 @@ enum UpdateParticipantRoleConfigOutputError: ClientRuntime.HttpResponseErrorBind extension UpdatePhoneNumberInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken = "ClientToken" + case instanceId = "InstanceId" case targetArn = "TargetArn" } @@ -39901,6 +41405,9 @@ extension UpdatePhoneNumberInput: Swift.Encodable { if let clientToken = self.clientToken { try encodeContainer.encode(clientToken, forKey: .clientToken) } + if let instanceId = self.instanceId { + try encodeContainer.encode(instanceId, forKey: .instanceId) + } if let targetArn = self.targetArn { try encodeContainer.encode(targetArn, forKey: .targetArn) } @@ -39919,20 +41426,23 @@ extension UpdatePhoneNumberInput: ClientRuntime.URLPathProvider { public struct UpdatePhoneNumberInput: Swift.Equatable { /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If not provided, the Amazon Web Services SDK populates this field. For more information about idempotency, see [Making retries safe with idempotent APIs](https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/). public var clientToken: Swift.String? + /// The identifier of the Amazon Connect instance that phone numbers are claimed to. You can [find the instance ID](https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html) in the Amazon Resource Name (ARN) of the instance. You must enter InstanceId or TargetArn. + public var instanceId: Swift.String? /// A unique identifier for the phone number. /// This member is required. public var phoneNumberId: Swift.String? - /// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone numbers are claimed to. - /// This member is required. + /// The Amazon Resource Name (ARN) for Amazon Connect instances or traffic distribution groups that phone number inbound traffic is routed through. You must enter InstanceId or TargetArn. public var targetArn: Swift.String? public init( clientToken: Swift.String? = nil, + instanceId: Swift.String? = nil, phoneNumberId: Swift.String? = nil, targetArn: Swift.String? = nil ) { self.clientToken = clientToken + self.instanceId = instanceId self.phoneNumberId = phoneNumberId self.targetArn = targetArn } @@ -39940,12 +41450,14 @@ public struct UpdatePhoneNumberInput: Swift.Equatable { struct UpdatePhoneNumberInputBody: Swift.Equatable { let targetArn: Swift.String? + let instanceId: Swift.String? let clientToken: Swift.String? } extension UpdatePhoneNumberInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken = "ClientToken" + case instanceId = "InstanceId" case targetArn = "TargetArn" } @@ -39953,6 +41465,8 @@ extension UpdatePhoneNumberInputBody: Swift.Decodable { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let targetArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .targetArn) targetArn = targetArnDecoded + let instanceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceId) + instanceId = instanceIdDecoded let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) clientToken = clientTokenDecoded } @@ -40164,7 +41678,7 @@ public struct UpdatePromptInput: Swift.Equatable { /// A unique identifier for the prompt. /// This member is required. public var promptId: Swift.String? - /// The URI for the S3 bucket where the prompt is stored. + /// The URI for the S3 bucket where the prompt is stored. You can provide S3 pre-signed URLs returned by the [GetPromptFile](https://docs.aws.amazon.com/connect/latest/APIReference/API_GetPromptFile.html) API instead of providing S3 URIs. public var s3Uri: Swift.String? public init( @@ -41595,7 +43109,7 @@ extension UpdateSecurityProfileInput: ClientRuntime.URLPathProvider { public struct UpdateSecurityProfileInput: Swift.Equatable { /// The list of tags that a security profile uses to restrict access to resources in Amazon Connect. public var allowedAccessControlTags: [Swift.String:Swift.String]? - /// This API is in preview release for Amazon Connect and is subject to change. A list of the third party application's metadata. + /// This API is in preview release for Amazon Connect and is subject to change. A list of the third-party application's metadata. public var applications: [ConnectClientTypes.Application]? /// The description of the security profile. public var description: Swift.String? @@ -43159,6 +44673,8 @@ extension ConnectClientTypes.User: Swift.Codable { case hierarchyGroupId = "HierarchyGroupId" case id = "Id" case identityInfo = "IdentityInfo" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case phoneConfig = "PhoneConfig" case routingProfileId = "RoutingProfileId" case securityProfileIds = "SecurityProfileIds" @@ -43183,6 +44699,12 @@ extension ConnectClientTypes.User: Swift.Codable { if let identityInfo = self.identityInfo { try encodeContainer.encode(identityInfo, forKey: .identityInfo) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let phoneConfig = self.phoneConfig { try encodeContainer.encode(phoneConfig, forKey: .phoneConfig) } @@ -43246,6 +44768,10 @@ extension ConnectClientTypes.User: Swift.Codable { } } tags = tagsDecoded0 + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -43262,6 +44788,10 @@ extension ConnectClientTypes { public var id: Swift.String? /// Information about the user identity. public var identityInfo: ConnectClientTypes.UserIdentityInfo? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// Information about the phone configuration for the user. public var phoneConfig: ConnectClientTypes.UserPhoneConfig? /// The identifier of the routing profile for the user. @@ -43279,6 +44809,8 @@ extension ConnectClientTypes { hierarchyGroupId: Swift.String? = nil, id: Swift.String? = nil, identityInfo: ConnectClientTypes.UserIdentityInfo? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, phoneConfig: ConnectClientTypes.UserPhoneConfig? = nil, routingProfileId: Swift.String? = nil, securityProfileIds: [Swift.String]? = nil, @@ -43291,6 +44823,8 @@ extension ConnectClientTypes { self.hierarchyGroupId = hierarchyGroupId self.id = id self.identityInfo = identityInfo + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.phoneConfig = phoneConfig self.routingProfileId = routingProfileId self.securityProfileIds = securityProfileIds @@ -44201,6 +45735,8 @@ extension ConnectClientTypes.UserSummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case arn = "Arn" case id = "Id" + case lastModifiedRegion = "LastModifiedRegion" + case lastModifiedTime = "LastModifiedTime" case username = "Username" } @@ -44212,6 +45748,12 @@ extension ConnectClientTypes.UserSummary: Swift.Codable { if let id = self.id { try encodeContainer.encode(id, forKey: .id) } + if let lastModifiedRegion = self.lastModifiedRegion { + try encodeContainer.encode(lastModifiedRegion, forKey: .lastModifiedRegion) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } if let username = self.username { try encodeContainer.encode(username, forKey: .username) } @@ -44225,6 +45767,10 @@ extension ConnectClientTypes.UserSummary: Swift.Codable { arn = arnDecoded let usernameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .username) username = usernameDecoded + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let lastModifiedRegionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedRegion) + lastModifiedRegion = lastModifiedRegionDecoded } } @@ -44235,17 +45781,25 @@ extension ConnectClientTypes { public var arn: Swift.String? /// The identifier of the user account. public var id: Swift.String? + /// The Amazon Web Services Region where this resource was last modified. + public var lastModifiedRegion: Swift.String? + /// The timestamp when this resource was last modified. + public var lastModifiedTime: ClientRuntime.Date? /// The Amazon Connect user name of the user account. public var username: Swift.String? public init( arn: Swift.String? = nil, id: Swift.String? = nil, + lastModifiedRegion: Swift.String? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, username: Swift.String? = nil ) { self.arn = arn self.id = id + self.lastModifiedRegion = lastModifiedRegion + self.lastModifiedTime = lastModifiedTime self.username = username } } diff --git a/Sources/Services/AWSConnectCases/ConnectCasesClient.swift b/Sources/Services/AWSConnectCases/ConnectCasesClient.swift index 46db818b51b..4b897c4e289 100644 --- a/Sources/Services/AWSConnectCases/ConnectCasesClient.swift +++ b/Sources/Services/AWSConnectCases/ConnectCasesClient.swift @@ -166,7 +166,7 @@ extension ConnectCasesClient: ConnectCasesClientProtocol { /// Creates a case in the specified Cases domain. Case system and custom fields are taken as an array id/value pairs with a declared data types. The following fields are required when creating a case: /// - /// * customer_id - You must provide the full customer profile ARN in this format: arn:aws:profile:your AWS Region:your AWS account ID:domains/profiles domain name/profiles/profile ID + /// * customer_id - You must provide the full customer profile ARN in this format: arn:aws:profile:your_AWS_Region:your_AWS_account ID:domains/your_profiles_domain_name/profiles/profile_ID /// /// * title /// @@ -1069,7 +1069,7 @@ extension ConnectCasesClient: ConnectCasesClientProtocol { return result } - /// API for adding case event publishing configuration + /// Adds case event publishing configuration. For a complete list of fields you can add to the event message, see [Create case fields](https://docs.aws.amazon.com/connect/latest/adminguide/case-fields.html) in the Amazon Connect Administrator Guide /// /// - Parameter PutCaseEventConfigurationInput : [no documentation found] /// diff --git a/Sources/Services/AWSConnectCases/ConnectCasesClientProtocol.swift b/Sources/Services/AWSConnectCases/ConnectCasesClientProtocol.swift index 878a30c43f0..25c7ce78cd8 100644 --- a/Sources/Services/AWSConnectCases/ConnectCasesClientProtocol.swift +++ b/Sources/Services/AWSConnectCases/ConnectCasesClientProtocol.swift @@ -37,7 +37,7 @@ public protocol ConnectCasesClientProtocol { func batchPutFieldOptions(input: BatchPutFieldOptionsInput) async throws -> BatchPutFieldOptionsOutput /// Creates a case in the specified Cases domain. Case system and custom fields are taken as an array id/value pairs with a declared data types. The following fields are required when creating a case: /// - /// * customer_id - You must provide the full customer profile ARN in this format: arn:aws:profile:your AWS Region:your AWS account ID:domains/profiles domain name/profiles/profile ID + /// * customer_id - You must provide the full customer profile ARN in this format: arn:aws:profile:your_AWS_Region:your_AWS_account ID:domains/your_profiles_domain_name/profiles/profile_ID /// /// * title /// @@ -340,7 +340,7 @@ public protocol ConnectCasesClientProtocol { /// - `ThrottlingException` : The rate has been exceeded for this API. Please try again after a few minutes. /// - `ValidationException` : The request isn't valid. Check the syntax and try again. func listTemplates(input: ListTemplatesInput) async throws -> ListTemplatesOutput - /// API for adding case event publishing configuration + /// Adds case event publishing configuration. For a complete list of fields you can add to the event message, see [Create case fields](https://docs.aws.amazon.com/connect/latest/adminguide/case-fields.html) in the Amazon Connect Administrator Guide /// /// - Parameter PutCaseEventConfigurationInput : [no documentation found] /// diff --git a/Sources/Services/AWSConnectCases/models/Models.swift b/Sources/Services/AWSConnectCases/models/Models.swift index 6d926238a0b..353242da62b 100644 --- a/Sources/Services/AWSConnectCases/models/Models.swift +++ b/Sources/Services/AWSConnectCases/models/Models.swift @@ -6455,7 +6455,7 @@ extension UpdateLayoutInput: ClientRuntime.URLPathProvider { } public struct UpdateLayoutInput: Swift.Equatable { - /// Information about which fields will be present in the layout, the order of the fields, and a read-only attribute of the field. + /// Information about which fields will be present in the layout, the order of the fields. public var content: ConnectCasesClientTypes.LayoutContent? /// The unique identifier of the Cases domain. /// This member is required. diff --git a/Sources/Services/AWSCostExplorer/models/Models.swift b/Sources/Services/AWSCostExplorer/models/Models.swift index b27e54e638e..d5a92a3e384 100644 --- a/Sources/Services/AWSCostExplorer/models/Models.swift +++ b/Sources/Services/AWSCostExplorer/models/Models.swift @@ -3670,7 +3670,7 @@ extension CostExplorerClientTypes.EC2InstanceDetails: Swift.Codable { } extension CostExplorerClientTypes { - /// Details about the Amazon EC2 instances that Amazon Web Services recommends that you purchase. + /// Details about the Amazon EC2 reservations that Amazon Web Services recommends that you purchase. public struct EC2InstanceDetails: Swift.Equatable { /// The Availability Zone of the recommended reservation. public var availabilityZone: Swift.String? @@ -3992,7 +3992,7 @@ extension CostExplorerClientTypes.ESInstanceDetails: Swift.Codable { } extension CostExplorerClientTypes { - /// Details about the Amazon OpenSearch Service instances that Amazon Web Services recommends that you purchase. + /// Details about the Amazon OpenSearch Service reservations that Amazon Web Services recommends that you purchase. public struct ESInstanceDetails: Swift.Equatable { /// Determines whether the recommendation is for a current-generation instance. public var currentGeneration: Swift.Bool @@ -4073,7 +4073,7 @@ extension CostExplorerClientTypes.ElastiCacheInstanceDetails: Swift.Codable { } extension CostExplorerClientTypes { - /// Details about the Amazon ElastiCache instances that Amazon Web Services recommends that you purchase. + /// Details about the Amazon ElastiCache reservations that Amazon Web Services recommends that you purchase. public struct ElastiCacheInstanceDetails: Swift.Equatable { /// Determines whether the recommendation is for a current generation instance. public var currentGeneration: Swift.Bool @@ -9474,6 +9474,7 @@ extension CostExplorerClientTypes.InstanceDetails: Swift.Codable { case ec2InstanceDetails = "EC2InstanceDetails" case esInstanceDetails = "ESInstanceDetails" case elastiCacheInstanceDetails = "ElastiCacheInstanceDetails" + case memoryDBInstanceDetails = "MemoryDBInstanceDetails" case rdsInstanceDetails = "RDSInstanceDetails" case redshiftInstanceDetails = "RedshiftInstanceDetails" } @@ -9489,6 +9490,9 @@ extension CostExplorerClientTypes.InstanceDetails: Swift.Codable { if let elastiCacheInstanceDetails = self.elastiCacheInstanceDetails { try encodeContainer.encode(elastiCacheInstanceDetails, forKey: .elastiCacheInstanceDetails) } + if let memoryDBInstanceDetails = self.memoryDBInstanceDetails { + try encodeContainer.encode(memoryDBInstanceDetails, forKey: .memoryDBInstanceDetails) + } if let rdsInstanceDetails = self.rdsInstanceDetails { try encodeContainer.encode(rdsInstanceDetails, forKey: .rdsInstanceDetails) } @@ -9509,27 +9513,32 @@ extension CostExplorerClientTypes.InstanceDetails: Swift.Codable { elastiCacheInstanceDetails = elastiCacheInstanceDetailsDecoded let esInstanceDetailsDecoded = try containerValues.decodeIfPresent(CostExplorerClientTypes.ESInstanceDetails.self, forKey: .esInstanceDetails) esInstanceDetails = esInstanceDetailsDecoded + let memoryDBInstanceDetailsDecoded = try containerValues.decodeIfPresent(CostExplorerClientTypes.MemoryDBInstanceDetails.self, forKey: .memoryDBInstanceDetails) + memoryDBInstanceDetails = memoryDBInstanceDetailsDecoded } } extension CostExplorerClientTypes { - /// Details about the instances that Amazon Web Services recommends that you purchase. + /// Details about the reservations that Amazon Web Services recommends that you purchase. public struct InstanceDetails: Swift.Equatable { - /// The Amazon EC2 instances that Amazon Web Services recommends that you purchase. + /// The Amazon EC2 reservations that Amazon Web Services recommends that you purchase. public var ec2InstanceDetails: CostExplorerClientTypes.EC2InstanceDetails? - /// The ElastiCache instances that Amazon Web Services recommends that you purchase. + /// The ElastiCache reservations that Amazon Web Services recommends that you purchase. public var elastiCacheInstanceDetails: CostExplorerClientTypes.ElastiCacheInstanceDetails? - /// The Amazon OpenSearch Service instances that Amazon Web Services recommends that you purchase. + /// The Amazon OpenSearch Service reservations that Amazon Web Services recommends that you purchase. public var esInstanceDetails: CostExplorerClientTypes.ESInstanceDetails? - /// The Amazon RDS instances that Amazon Web Services recommends that you purchase. + /// The MemoryDB reservations that Amazon Web Services recommends that you purchase. + public var memoryDBInstanceDetails: CostExplorerClientTypes.MemoryDBInstanceDetails? + /// The Amazon RDS reservations that Amazon Web Services recommends that you purchase. public var rdsInstanceDetails: CostExplorerClientTypes.RDSInstanceDetails? - /// The Amazon Redshift instances that Amazon Web Services recommends that you purchase. + /// The Amazon Redshift reservations that Amazon Web Services recommends that you purchase. public var redshiftInstanceDetails: CostExplorerClientTypes.RedshiftInstanceDetails? public init( ec2InstanceDetails: CostExplorerClientTypes.EC2InstanceDetails? = nil, elastiCacheInstanceDetails: CostExplorerClientTypes.ElastiCacheInstanceDetails? = nil, esInstanceDetails: CostExplorerClientTypes.ESInstanceDetails? = nil, + memoryDBInstanceDetails: CostExplorerClientTypes.MemoryDBInstanceDetails? = nil, rdsInstanceDetails: CostExplorerClientTypes.RDSInstanceDetails? = nil, redshiftInstanceDetails: CostExplorerClientTypes.RedshiftInstanceDetails? = nil ) @@ -9537,6 +9546,7 @@ extension CostExplorerClientTypes { self.ec2InstanceDetails = ec2InstanceDetails self.elastiCacheInstanceDetails = elastiCacheInstanceDetails self.esInstanceDetails = esInstanceDetails + self.memoryDBInstanceDetails = memoryDBInstanceDetails self.rdsInstanceDetails = rdsInstanceDetails self.redshiftInstanceDetails = redshiftInstanceDetails } @@ -10334,6 +10344,81 @@ extension CostExplorerClientTypes { } } +extension CostExplorerClientTypes.MemoryDBInstanceDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case currentGeneration = "CurrentGeneration" + case family = "Family" + case nodeType = "NodeType" + case region = "Region" + case sizeFlexEligible = "SizeFlexEligible" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if currentGeneration != false { + try encodeContainer.encode(currentGeneration, forKey: .currentGeneration) + } + if let family = self.family { + try encodeContainer.encode(family, forKey: .family) + } + if let nodeType = self.nodeType { + try encodeContainer.encode(nodeType, forKey: .nodeType) + } + if let region = self.region { + try encodeContainer.encode(region, forKey: .region) + } + if sizeFlexEligible != false { + try encodeContainer.encode(sizeFlexEligible, forKey: .sizeFlexEligible) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let familyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .family) + family = familyDecoded + let nodeTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nodeType) + nodeType = nodeTypeDecoded + let regionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .region) + region = regionDecoded + let currentGenerationDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .currentGeneration) ?? false + currentGeneration = currentGenerationDecoded + let sizeFlexEligibleDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .sizeFlexEligible) ?? false + sizeFlexEligible = sizeFlexEligibleDecoded + } +} + +extension CostExplorerClientTypes { + /// Details about the MemoryDB reservations that Amazon Web Services recommends that you purchase. + public struct MemoryDBInstanceDetails: Swift.Equatable { + /// Determines whether the recommendation is for a current generation instance. + public var currentGeneration: Swift.Bool + /// The instance family of the recommended reservation. + public var family: Swift.String? + /// The node type of the recommended reservation. + public var nodeType: Swift.String? + /// The Amazon Web Services Region of the recommended reservation. + public var region: Swift.String? + /// Determines whether the recommended reservation is size flexible. + public var sizeFlexEligible: Swift.Bool + + public init( + currentGeneration: Swift.Bool = false, + family: Swift.String? = nil, + nodeType: Swift.String? = nil, + region: Swift.String? = nil, + sizeFlexEligible: Swift.Bool = false + ) + { + self.currentGeneration = currentGeneration + self.family = family + self.nodeType = nodeType + self.region = region + self.sizeFlexEligible = sizeFlexEligible + } + } + +} + extension CostExplorerClientTypes { public enum Metric: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case amortizedCost @@ -10941,7 +11026,7 @@ extension CostExplorerClientTypes.RDSInstanceDetails: Swift.Codable { } extension CostExplorerClientTypes { - /// Details about the Amazon RDS instances that Amazon Web Services recommends that you purchase. + /// Details about the Amazon RDS reservations that Amazon Web Services recommends that you purchase. public struct RDSInstanceDetails: Swift.Equatable { /// Determines whether the recommendation is for a current-generation instance. public var currentGeneration: Swift.Bool @@ -11466,7 +11551,7 @@ extension CostExplorerClientTypes.RedshiftInstanceDetails: Swift.Codable { } extension CostExplorerClientTypes { - /// Details about the Amazon Redshift instances that Amazon Web Services recommends that you purchase. + /// Details about the Amazon Redshift reservations that Amazon Web Services recommends that you purchase. public struct RedshiftInstanceDetails: Swift.Equatable { /// Determines whether the recommendation is for a current-generation instance. public var currentGeneration: Swift.Bool @@ -12061,7 +12146,7 @@ extension CostExplorerClientTypes { public var estimatedMonthlySavingsPercentage: Swift.String? /// How much Amazon Web Services estimates that you might spend for all usage during the specified historical period if you had a reservation. public var estimatedReservationCostForLookbackPeriod: Swift.String? - /// Details about the instances that Amazon Web Services recommends that you purchase. + /// Details about the reservations that Amazon Web Services recommends that you purchase. public var instanceDetails: CostExplorerClientTypes.InstanceDetails? /// The maximum number of normalized units that you used in an hour during the historical period. Amazon Web Services uses this to calculate your recommended reservation purchases. public var maximumNormalizedUnitsUsedPerHour: Swift.String? diff --git a/Sources/Services/AWSDataExchange/DataExchangeClient.swift b/Sources/Services/AWSDataExchange/DataExchangeClient.swift index 3eb460cd1fe..b8788fb7636 100644 --- a/Sources/Services/AWSDataExchange/DataExchangeClient.swift +++ b/Sources/Services/AWSDataExchange/DataExchangeClient.swift @@ -1067,6 +1067,56 @@ extension DataExchangeClient: DataExchangeClientProtocol { return result } + /// The type of event associated with the data set. + /// + /// - Parameter SendDataSetNotificationInput : [no documentation found] + /// + /// - Returns: `SendDataSetNotificationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : Access to the resource is denied. + /// - `ConflictException` : The request couldn't be completed because it conflicted with the current state of the resource. + /// - `InternalServerException` : An exception occurred with the service. + /// - `ResourceNotFoundException` : The resource couldn't be found. + /// - `ThrottlingException` : The limit on the number of requests per second was exceeded. + /// - `ValidationException` : The request was invalid. + public func sendDataSetNotification(input: SendDataSetNotificationInput) async throws -> SendDataSetNotificationOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "sendDataSetNotification") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "dataexchange") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "sendDataSetNotification") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.IdempotencyTokenMiddleware(keyPath: \.clientToken)) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "SendDataSetNotificationRequest")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// This operation starts a job. /// /// - Parameter StartJobInput : [no documentation found] diff --git a/Sources/Services/AWSDataExchange/DataExchangeClientProtocol.swift b/Sources/Services/AWSDataExchange/DataExchangeClientProtocol.swift index 0dca9221105..d029702383f 100644 --- a/Sources/Services/AWSDataExchange/DataExchangeClientProtocol.swift +++ b/Sources/Services/AWSDataExchange/DataExchangeClientProtocol.swift @@ -319,6 +319,22 @@ public protocol DataExchangeClientProtocol { /// - `ThrottlingException` : The limit on the number of requests per second was exceeded. /// - `ValidationException` : The request was invalid. func sendApiAsset(input: SendApiAssetInput) async throws -> SendApiAssetOutput + /// The type of event associated with the data set. + /// + /// - Parameter SendDataSetNotificationInput : [no documentation found] + /// + /// - Returns: `SendDataSetNotificationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : Access to the resource is denied. + /// - `ConflictException` : The request couldn't be completed because it conflicted with the current state of the resource. + /// - `InternalServerException` : An exception occurred with the service. + /// - `ResourceNotFoundException` : The resource couldn't be found. + /// - `ThrottlingException` : The limit on the number of requests per second was exceeded. + /// - `ValidationException` : The request was invalid. + func sendDataSetNotification(input: SendDataSetNotificationInput) async throws -> SendDataSetNotificationOutput /// This operation starts a job. /// /// - Parameter StartJobInput : [no documentation found] diff --git a/Sources/Services/AWSDataExchange/models/Models.swift b/Sources/Services/AWSDataExchange/models/Models.swift index 89a9c957134..b13f2072e7b 100644 --- a/Sources/Services/AWSDataExchange/models/Models.swift +++ b/Sources/Services/AWSDataExchange/models/Models.swift @@ -1961,6 +1961,41 @@ extension DataExchangeClientTypes { } +extension DataExchangeClientTypes.DataUpdateRequestDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case dataUpdatedAt = "DataUpdatedAt" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let dataUpdatedAt = self.dataUpdatedAt { + try encodeContainer.encodeTimestamp(dataUpdatedAt, format: .dateTime, forKey: .dataUpdatedAt) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let dataUpdatedAtDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .dataUpdatedAt) + dataUpdatedAt = dataUpdatedAtDecoded + } +} + +extension DataExchangeClientTypes { + /// Extra details specific to a data update type notification. + public struct DataUpdateRequestDetails: Swift.Equatable { + /// A datetime in the past when the data was updated. This typically means that the underlying resource supporting the data set was updated. + public var dataUpdatedAt: ClientRuntime.Date? + + public init( + dataUpdatedAt: ClientRuntime.Date? = nil + ) + { + self.dataUpdatedAt = dataUpdatedAt + } + } + +} + extension DataExchangeClientTypes.DatabaseLFTagPolicy: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case expression = "Expression" @@ -2359,6 +2394,42 @@ enum DeleteRevisionOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DataExchangeClientTypes.DeprecationRequestDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deprecationAt = "DeprecationAt" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let deprecationAt = self.deprecationAt { + try encodeContainer.encodeTimestamp(deprecationAt, format: .dateTime, forKey: .deprecationAt) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let deprecationAtDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .deprecationAt) + deprecationAt = deprecationAtDecoded + } +} + +extension DataExchangeClientTypes { + /// Extra details specific to a deprecation type notification. + public struct DeprecationRequestDetails: Swift.Equatable { + /// A datetime in the future when the data set will be deprecated. + /// This member is required. + public var deprecationAt: ClientRuntime.Date? + + public init( + deprecationAt: ClientRuntime.Date? = nil + ) + { + self.deprecationAt = deprecationAt + } + } + +} + extension DataExchangeClientTypes.Details: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case importAssetFromSignedUrlJobErrorDetails = "ImportAssetFromSignedUrlJobErrorDetails" @@ -5637,6 +5708,51 @@ extension DataExchangeClientTypes { } } +extension DataExchangeClientTypes.LakeFormationTagPolicyDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case database = "Database" + case table = "Table" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let database = self.database { + try encodeContainer.encode(database, forKey: .database) + } + if let table = self.table { + try encodeContainer.encode(table, forKey: .table) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let databaseDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .database) + database = databaseDecoded + let tableDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .table) + table = tableDecoded + } +} + +extension DataExchangeClientTypes { + /// Extra details specific to the affected scope in this LF data set. + public struct LakeFormationTagPolicyDetails: Swift.Equatable { + /// The underlying Glue database that the notification is referring to. + public var database: Swift.String? + /// The underlying Glue table that the notification is referring to. + public var table: Swift.String? + + public init( + database: Swift.String? = nil, + table: Swift.String? = nil + ) + { + self.database = database + self.table = table + } + } + +} + extension DataExchangeClientTypes { public enum LimitName: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case awsLakeFormationDataPermissionAssetsPerRevision @@ -6498,6 +6614,99 @@ enum ListTagsForResourceOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DataExchangeClientTypes.NotificationDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case dataUpdate = "DataUpdate" + case deprecation = "Deprecation" + case schemaChange = "SchemaChange" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let dataUpdate = self.dataUpdate { + try encodeContainer.encode(dataUpdate, forKey: .dataUpdate) + } + if let deprecation = self.deprecation { + try encodeContainer.encode(deprecation, forKey: .deprecation) + } + if let schemaChange = self.schemaChange { + try encodeContainer.encode(schemaChange, forKey: .schemaChange) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let dataUpdateDecoded = try containerValues.decodeIfPresent(DataExchangeClientTypes.DataUpdateRequestDetails.self, forKey: .dataUpdate) + dataUpdate = dataUpdateDecoded + let deprecationDecoded = try containerValues.decodeIfPresent(DataExchangeClientTypes.DeprecationRequestDetails.self, forKey: .deprecation) + deprecation = deprecationDecoded + let schemaChangeDecoded = try containerValues.decodeIfPresent(DataExchangeClientTypes.SchemaChangeRequestDetails.self, forKey: .schemaChange) + schemaChange = schemaChangeDecoded + } +} + +extension DataExchangeClientTypes { + /// Extra details specific to this notification. + public struct NotificationDetails: Swift.Equatable { + /// Extra details specific to a data update type notification. + public var dataUpdate: DataExchangeClientTypes.DataUpdateRequestDetails? + /// Extra details specific to a deprecation type notification. + public var deprecation: DataExchangeClientTypes.DeprecationRequestDetails? + /// Extra details specific to a schema change type notification. + public var schemaChange: DataExchangeClientTypes.SchemaChangeRequestDetails? + + public init( + dataUpdate: DataExchangeClientTypes.DataUpdateRequestDetails? = nil, + deprecation: DataExchangeClientTypes.DeprecationRequestDetails? = nil, + schemaChange: DataExchangeClientTypes.SchemaChangeRequestDetails? = nil + ) + { + self.dataUpdate = dataUpdate + self.deprecation = deprecation + self.schemaChange = schemaChange + } + } + +} + +extension DataExchangeClientTypes { + public enum NotificationType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case dataDelay + case dataUpdate + case deprecation + case schemaChange + case sdkUnknown(Swift.String) + + public static var allCases: [NotificationType] { + return [ + .dataDelay, + .dataUpdate, + .deprecation, + .schemaChange, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .dataDelay: return "DATA_DELAY" + case .dataUpdate: return "DATA_UPDATE" + case .deprecation: return "DEPRECATION" + case .schemaChange: return "SCHEMA_CHANGE" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = NotificationType(rawValue: rawValue) ?? NotificationType.sdkUnknown(rawValue) + } + } +} + extension DataExchangeClientTypes { public enum Origin: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case entitled @@ -6667,6 +6876,93 @@ extension DataExchangeClientTypes { } +extension DataExchangeClientTypes.RedshiftDataShareDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn = "Arn" + case database = "Database" + case function = "Function" + case schema = "Schema" + case table = "Table" + case view = "View" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let arn = self.arn { + try encodeContainer.encode(arn, forKey: .arn) + } + if let database = self.database { + try encodeContainer.encode(database, forKey: .database) + } + if let function = self.function { + try encodeContainer.encode(function, forKey: .function) + } + if let schema = self.schema { + try encodeContainer.encode(schema, forKey: .schema) + } + if let table = self.table { + try encodeContainer.encode(table, forKey: .table) + } + if let view = self.view { + try encodeContainer.encode(view, forKey: .view) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let databaseDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .database) + database = databaseDecoded + let functionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .function) + function = functionDecoded + let tableDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .table) + table = tableDecoded + let schemaDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .schema) + schema = schemaDecoded + let viewDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .view) + view = viewDecoded + } +} + +extension DataExchangeClientTypes { + /// Extra details specific to the affected scope in this Redshift data set. + public struct RedshiftDataShareDetails: Swift.Equatable { + /// The ARN of the underlying Redshift data share that is being affected by this notification. + /// This member is required. + public var arn: Swift.String? + /// The database name in the Redshift data share that is being affected by this notification. + /// This member is required. + public var database: Swift.String? + /// A function name in the Redshift database that is being affected by this notification. + public var function: Swift.String? + /// A schema name in the Redshift database that is being affected by this notification. + public var schema: Swift.String? + /// A table name in the Redshift database that is being affected by this notification. + public var table: Swift.String? + /// A view name in the Redshift database that is being affected by this notification. + public var view: Swift.String? + + public init( + arn: Swift.String? = nil, + database: Swift.String? = nil, + function: Swift.String? = nil, + schema: Swift.String? = nil, + table: Swift.String? = nil, + view: Swift.String? = nil + ) + { + self.arn = arn + self.database = database + self.function = function + self.schema = schema + self.table = table + self.view = view + } + } + +} + extension DataExchangeClientTypes.RequestDetails: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case createS3DataAccessFromS3Bucket = "CreateS3DataAccessFromS3Bucket" @@ -7692,6 +7988,75 @@ extension DataExchangeClientTypes { } +extension DataExchangeClientTypes.S3DataAccessDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case keyPrefixes = "KeyPrefixes" + case keys = "Keys" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let keyPrefixes = keyPrefixes { + var keyPrefixesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .keyPrefixes) + for __string0 in keyPrefixes { + try keyPrefixesContainer.encode(__string0) + } + } + if let keys = keys { + var keysContainer = encodeContainer.nestedUnkeyedContainer(forKey: .keys) + for __string0 in keys { + try keysContainer.encode(__string0) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let keyPrefixesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .keyPrefixes) + var keyPrefixesDecoded0:[Swift.String]? = nil + if let keyPrefixesContainer = keyPrefixesContainer { + keyPrefixesDecoded0 = [Swift.String]() + for string0 in keyPrefixesContainer { + if let string0 = string0 { + keyPrefixesDecoded0?.append(string0) + } + } + } + keyPrefixes = keyPrefixesDecoded0 + let keysContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .keys) + var keysDecoded0:[Swift.String]? = nil + if let keysContainer = keysContainer { + keysDecoded0 = [Swift.String]() + for string0 in keysContainer { + if let string0 = string0 { + keysDecoded0?.append(string0) + } + } + } + keys = keysDecoded0 + } +} + +extension DataExchangeClientTypes { + /// Extra details specific to the affected scope in this S3 Data Access data set. + public struct S3DataAccessDetails: Swift.Equatable { + /// A list of the key prefixes affected by this notification. This can have up to 50 entries. + public var keyPrefixes: [Swift.String]? + /// A list of the keys affected by this notification. This can have up to 50 entries. + public var keys: [Swift.String]? + + public init( + keyPrefixes: [Swift.String]? = nil, + keys: [Swift.String]? = nil + ) + { + self.keyPrefixes = keyPrefixes + self.keys = keys + } + } + +} + extension DataExchangeClientTypes.S3SnapshotAsset: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case size = "Size" @@ -7728,6 +8093,247 @@ extension DataExchangeClientTypes { } +extension DataExchangeClientTypes.SchemaChangeDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case description = "Description" + case name = "Name" + case type = "Type" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let typeDecoded = try containerValues.decodeIfPresent(DataExchangeClientTypes.SchemaChangeType.self, forKey: .type) + type = typeDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + } +} + +extension DataExchangeClientTypes { + /// Object encompassing information about a schema change to a single, particular field, a notification can have up to 100 of these. + public struct SchemaChangeDetails: Swift.Equatable { + /// Description of what's changing about this field. This value can be up to 512 characters long. + public var description: Swift.String? + /// Name of the changing field. This value can be up to 255 characters long. + /// This member is required. + public var name: Swift.String? + /// Is the field being added, removed, or modified? + /// This member is required. + public var type: DataExchangeClientTypes.SchemaChangeType? + + public init( + description: Swift.String? = nil, + name: Swift.String? = nil, + type: DataExchangeClientTypes.SchemaChangeType? = nil + ) + { + self.description = description + self.name = name + self.type = type + } + } + +} + +extension DataExchangeClientTypes.SchemaChangeRequestDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case changes = "Changes" + case schemaChangeAt = "SchemaChangeAt" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let changes = changes { + var changesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .changes) + for schemachangedetails0 in changes { + try changesContainer.encode(schemachangedetails0) + } + } + if let schemaChangeAt = self.schemaChangeAt { + try encodeContainer.encodeTimestamp(schemaChangeAt, format: .dateTime, forKey: .schemaChangeAt) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let changesContainer = try containerValues.decodeIfPresent([DataExchangeClientTypes.SchemaChangeDetails?].self, forKey: .changes) + var changesDecoded0:[DataExchangeClientTypes.SchemaChangeDetails]? = nil + if let changesContainer = changesContainer { + changesDecoded0 = [DataExchangeClientTypes.SchemaChangeDetails]() + for structure0 in changesContainer { + if let structure0 = structure0 { + changesDecoded0?.append(structure0) + } + } + } + changes = changesDecoded0 + let schemaChangeAtDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .schemaChangeAt) + schemaChangeAt = schemaChangeAtDecoded + } +} + +extension DataExchangeClientTypes { + /// Extra details specific to this schema change type notification. + public struct SchemaChangeRequestDetails: Swift.Equatable { + /// List of schema changes happening in the scope of this notification. This can have up to 100 entries. + public var changes: [DataExchangeClientTypes.SchemaChangeDetails]? + /// A date in the future when the schema change is taking effect. + /// This member is required. + public var schemaChangeAt: ClientRuntime.Date? + + public init( + changes: [DataExchangeClientTypes.SchemaChangeDetails]? = nil, + schemaChangeAt: ClientRuntime.Date? = nil + ) + { + self.changes = changes + self.schemaChangeAt = schemaChangeAt + } + } + +} + +extension DataExchangeClientTypes { + public enum SchemaChangeType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case add + case modify + case remove + case sdkUnknown(Swift.String) + + public static var allCases: [SchemaChangeType] { + return [ + .add, + .modify, + .remove, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .add: return "ADD" + case .modify: return "MODIFY" + case .remove: return "REMOVE" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = SchemaChangeType(rawValue: rawValue) ?? SchemaChangeType.sdkUnknown(rawValue) + } + } +} + +extension DataExchangeClientTypes.ScopeDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case lakeFormationTagPolicies = "LakeFormationTagPolicies" + case redshiftDataShares = "RedshiftDataShares" + case s3DataAccesses = "S3DataAccesses" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let lakeFormationTagPolicies = lakeFormationTagPolicies { + var lakeFormationTagPoliciesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .lakeFormationTagPolicies) + for lakeformationtagpolicydetails0 in lakeFormationTagPolicies { + try lakeFormationTagPoliciesContainer.encode(lakeformationtagpolicydetails0) + } + } + if let redshiftDataShares = redshiftDataShares { + var redshiftDataSharesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .redshiftDataShares) + for redshiftdatasharedetails0 in redshiftDataShares { + try redshiftDataSharesContainer.encode(redshiftdatasharedetails0) + } + } + if let s3DataAccesses = s3DataAccesses { + var s3DataAccessesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .s3DataAccesses) + for s3dataaccessdetails0 in s3DataAccesses { + try s3DataAccessesContainer.encode(s3dataaccessdetails0) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let lakeFormationTagPoliciesContainer = try containerValues.decodeIfPresent([DataExchangeClientTypes.LakeFormationTagPolicyDetails?].self, forKey: .lakeFormationTagPolicies) + var lakeFormationTagPoliciesDecoded0:[DataExchangeClientTypes.LakeFormationTagPolicyDetails]? = nil + if let lakeFormationTagPoliciesContainer = lakeFormationTagPoliciesContainer { + lakeFormationTagPoliciesDecoded0 = [DataExchangeClientTypes.LakeFormationTagPolicyDetails]() + for structure0 in lakeFormationTagPoliciesContainer { + if let structure0 = structure0 { + lakeFormationTagPoliciesDecoded0?.append(structure0) + } + } + } + lakeFormationTagPolicies = lakeFormationTagPoliciesDecoded0 + let redshiftDataSharesContainer = try containerValues.decodeIfPresent([DataExchangeClientTypes.RedshiftDataShareDetails?].self, forKey: .redshiftDataShares) + var redshiftDataSharesDecoded0:[DataExchangeClientTypes.RedshiftDataShareDetails]? = nil + if let redshiftDataSharesContainer = redshiftDataSharesContainer { + redshiftDataSharesDecoded0 = [DataExchangeClientTypes.RedshiftDataShareDetails]() + for structure0 in redshiftDataSharesContainer { + if let structure0 = structure0 { + redshiftDataSharesDecoded0?.append(structure0) + } + } + } + redshiftDataShares = redshiftDataSharesDecoded0 + let s3DataAccessesContainer = try containerValues.decodeIfPresent([DataExchangeClientTypes.S3DataAccessDetails?].self, forKey: .s3DataAccesses) + var s3DataAccessesDecoded0:[DataExchangeClientTypes.S3DataAccessDetails]? = nil + if let s3DataAccessesContainer = s3DataAccessesContainer { + s3DataAccessesDecoded0 = [DataExchangeClientTypes.S3DataAccessDetails]() + for structure0 in s3DataAccessesContainer { + if let structure0 = structure0 { + s3DataAccessesDecoded0?.append(structure0) + } + } + } + s3DataAccesses = s3DataAccessesDecoded0 + } +} + +extension DataExchangeClientTypes { + /// Details about the scope of the notifications such as the affected resources. + public struct ScopeDetails: Swift.Equatable { + /// Underlying LF resources that will be affected by this notification. + public var lakeFormationTagPolicies: [DataExchangeClientTypes.LakeFormationTagPolicyDetails]? + /// Underlying Redshift resources that will be affected by this notification. + public var redshiftDataShares: [DataExchangeClientTypes.RedshiftDataShareDetails]? + /// Underlying S3 resources that will be affected by this notification. + public var s3DataAccesses: [DataExchangeClientTypes.S3DataAccessDetails]? + + public init( + lakeFormationTagPolicies: [DataExchangeClientTypes.LakeFormationTagPolicyDetails]? = nil, + redshiftDataShares: [DataExchangeClientTypes.RedshiftDataShareDetails]? = nil, + s3DataAccesses: [DataExchangeClientTypes.S3DataAccessDetails]? = nil + ) + { + self.lakeFormationTagPolicies = lakeFormationTagPolicies + self.redshiftDataShares = redshiftDataShares + self.s3DataAccesses = s3DataAccesses + } + } + +} + public struct SendApiAssetInputBodyMiddleware: ClientRuntime.Middleware { public let id: Swift.String = "SendApiAssetInputBodyMiddleware" @@ -7945,6 +8551,136 @@ enum SendApiAssetOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension SendDataSetNotificationInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken = "ClientToken" + case comment = "Comment" + case details = "Details" + case scope = "Scope" + case type = "Type" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) + } + if let comment = self.comment { + try encodeContainer.encode(comment, forKey: .comment) + } + if let details = self.details { + try encodeContainer.encode(details, forKey: .details) + } + if let scope = self.scope { + try encodeContainer.encode(scope, forKey: .scope) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + } +} + +extension SendDataSetNotificationInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let dataSetId = dataSetId else { + return nil + } + return "/v1/data-sets/\(dataSetId.urlPercentEncoding())/notification" + } +} + +public struct SendDataSetNotificationInput: Swift.Equatable { + /// Idempotency key for the notification, this key allows us to deduplicate notifications that are sent in quick succession erroneously. + public var clientToken: Swift.String? + /// Free-form text field for providers to add information about their notifications. + public var comment: Swift.String? + /// Affected data set of the notification. + /// This member is required. + public var dataSetId: Swift.String? + /// Extra details specific to this notification type. + public var details: DataExchangeClientTypes.NotificationDetails? + /// Affected scope of this notification such as the underlying resources affected by the notification event. + public var scope: DataExchangeClientTypes.ScopeDetails? + /// The type of the notification. Describing the kind of event the notification is alerting you to. + /// This member is required. + public var type: DataExchangeClientTypes.NotificationType? + + public init( + clientToken: Swift.String? = nil, + comment: Swift.String? = nil, + dataSetId: Swift.String? = nil, + details: DataExchangeClientTypes.NotificationDetails? = nil, + scope: DataExchangeClientTypes.ScopeDetails? = nil, + type: DataExchangeClientTypes.NotificationType? = nil + ) + { + self.clientToken = clientToken + self.comment = comment + self.dataSetId = dataSetId + self.details = details + self.scope = scope + self.type = type + } +} + +struct SendDataSetNotificationInputBody: Swift.Equatable { + let scope: DataExchangeClientTypes.ScopeDetails? + let clientToken: Swift.String? + let comment: Swift.String? + let details: DataExchangeClientTypes.NotificationDetails? + let type: DataExchangeClientTypes.NotificationType? +} + +extension SendDataSetNotificationInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken = "ClientToken" + case comment = "Comment" + case details = "Details" + case scope = "Scope" + case type = "Type" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let scopeDecoded = try containerValues.decodeIfPresent(DataExchangeClientTypes.ScopeDetails.self, forKey: .scope) + scope = scopeDecoded + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + let commentDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .comment) + comment = commentDecoded + let detailsDecoded = try containerValues.decodeIfPresent(DataExchangeClientTypes.NotificationDetails.self, forKey: .details) + details = detailsDecoded + let typeDecoded = try containerValues.decodeIfPresent(DataExchangeClientTypes.NotificationType.self, forKey: .type) + type = typeDecoded + } +} + +extension SendDataSetNotificationOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct SendDataSetNotificationOutput: Swift.Equatable { + + public init() { } +} + +enum SendDataSetNotificationOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension DataExchangeClientTypes { public enum ServerSideEncryptionTypes: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case aes256 diff --git a/Sources/Services/AWSDataSync/DataSyncClient.swift b/Sources/Services/AWSDataSync/DataSyncClient.swift index 0fba863fdf1..754c73a3ad7 100644 --- a/Sources/Services/AWSDataSync/DataSyncClient.swift +++ b/Sources/Services/AWSDataSync/DataSyncClient.swift @@ -351,7 +351,7 @@ extension DataSyncClient: DataSyncClientProtocol { return result } - /// Creates an endpoint for an Amazon FSx for NetApp ONTAP file system that DataSync can access for a transfer. For more information, see [Creating a location for FSx for ONTAP](https://docs.aws.amazon.com/datasync/latest/userguide/create-ontap-location.html). + /// Creates an endpoint for an Amazon FSx for NetApp ONTAP file system that DataSync can use for a data transfer. Before you begin, make sure that you understand how DataSync [accesses an FSx for ONTAP file system](https://docs.aws.amazon.com/datasync/latest/userguide/create-ontap-location.html#create-ontap-location-access). /// /// - Parameter CreateLocationFsxOntapInput : [no documentation found] /// @@ -443,7 +443,7 @@ extension DataSyncClient: DataSyncClientProtocol { return result } - /// Creates an endpoint for an Amazon FSx for Windows File Server file system. + /// Creates an endpoint for an Amazon FSx for Windows File Server file system that DataSync can use for a data transfer. Before you begin, make sure that you understand how DataSync [accesses an FSx for Windows File Server](https://docs.aws.amazon.com/datasync/latest/userguide/create-fsx-location.html#create-fsx-location-access). /// /// - Parameter CreateLocationFsxWindowsInput : [no documentation found] /// @@ -772,7 +772,7 @@ extension DataSyncClient: DataSyncClientProtocol { return result } - /// Deletes an agent. To specify which agent to delete, use the Amazon Resource Name (ARN) of the agent in your request. The operation disassociates the agent from your Amazon Web Services account. However, it doesn't delete the agent virtual machine (VM) from your on-premises environment. + /// Removes an DataSync agent resource from your Amazon Web Services account. Keep in mind that this operation (which can't be undone) doesn't remove the agent's virtual machine (VM) or Amazon EC2 instance from your storage environment. For next steps, you can delete the VM or instance from your storage environment or reuse it to [activate a new agent](https://docs.aws.amazon.com/datasync/latest/userguide/activate-agent.html). /// /// - Parameter DeleteAgentInput : DeleteAgentRequest /// @@ -910,7 +910,7 @@ extension DataSyncClient: DataSyncClientProtocol { return result } - /// Returns metadata about an DataSync agent, such as its name, endpoint type, and status. + /// Returns information about an DataSync agent, such as its name, service endpoint type, and status. /// /// - Parameter DescribeAgentInput : DescribeAgent /// @@ -2383,7 +2383,7 @@ extension DataSyncClient: DataSyncClientProtocol { return result } - /// Updates the name of an agent. + /// Updates the name of an DataSync agent. /// /// - Parameter UpdateAgentInput : UpdateAgentRequest /// @@ -2659,7 +2659,7 @@ extension DataSyncClient: DataSyncClientProtocol { return result } - /// Updates some of the parameters of a previously created location for Server Message Block (SMB) file system access. For information about creating an SMB location, see [Creating a location for SMB](https://docs.aws.amazon.com/datasync/latest/userguide/create-smb-location.html). + /// Updates some of the parameters of a Server Message Block (SMB) file server location that you can use for DataSync transfers. /// /// - Parameter UpdateLocationSmbInput : [no documentation found] /// diff --git a/Sources/Services/AWSDataSync/DataSyncClientProtocol.swift b/Sources/Services/AWSDataSync/DataSyncClientProtocol.swift index 0e0076c0a60..ef3e9b9412f 100644 --- a/Sources/Services/AWSDataSync/DataSyncClientProtocol.swift +++ b/Sources/Services/AWSDataSync/DataSyncClientProtocol.swift @@ -83,7 +83,7 @@ public protocol DataSyncClientProtocol { /// - `InternalException` : This exception is thrown when an error occurs in the DataSync service. /// - `InvalidRequestException` : This exception is thrown when the client submits a malformed request. func createLocationFsxLustre(input: CreateLocationFsxLustreInput) async throws -> CreateLocationFsxLustreOutput - /// Creates an endpoint for an Amazon FSx for NetApp ONTAP file system that DataSync can access for a transfer. For more information, see [Creating a location for FSx for ONTAP](https://docs.aws.amazon.com/datasync/latest/userguide/create-ontap-location.html). + /// Creates an endpoint for an Amazon FSx for NetApp ONTAP file system that DataSync can use for a data transfer. Before you begin, make sure that you understand how DataSync [accesses an FSx for ONTAP file system](https://docs.aws.amazon.com/datasync/latest/userguide/create-ontap-location.html#create-ontap-location-access). /// /// - Parameter CreateLocationFsxOntapInput : [no documentation found] /// @@ -107,7 +107,7 @@ public protocol DataSyncClientProtocol { /// - `InternalException` : This exception is thrown when an error occurs in the DataSync service. /// - `InvalidRequestException` : This exception is thrown when the client submits a malformed request. func createLocationFsxOpenZfs(input: CreateLocationFsxOpenZfsInput) async throws -> CreateLocationFsxOpenZfsOutput - /// Creates an endpoint for an Amazon FSx for Windows File Server file system. + /// Creates an endpoint for an Amazon FSx for Windows File Server file system that DataSync can use for a data transfer. Before you begin, make sure that you understand how DataSync [accesses an FSx for Windows File Server](https://docs.aws.amazon.com/datasync/latest/userguide/create-fsx-location.html#create-fsx-location-access). /// /// - Parameter CreateLocationFsxWindowsInput : [no documentation found] /// @@ -198,7 +198,7 @@ public protocol DataSyncClientProtocol { /// - `InternalException` : This exception is thrown when an error occurs in the DataSync service. /// - `InvalidRequestException` : This exception is thrown when the client submits a malformed request. func createTask(input: CreateTaskInput) async throws -> CreateTaskOutput - /// Deletes an agent. To specify which agent to delete, use the Amazon Resource Name (ARN) of the agent in your request. The operation disassociates the agent from your Amazon Web Services account. However, it doesn't delete the agent virtual machine (VM) from your on-premises environment. + /// Removes an DataSync agent resource from your Amazon Web Services account. Keep in mind that this operation (which can't be undone) doesn't remove the agent's virtual machine (VM) or Amazon EC2 instance from your storage environment. For next steps, you can delete the VM or instance from your storage environment or reuse it to [activate a new agent](https://docs.aws.amazon.com/datasync/latest/userguide/activate-agent.html). /// /// - Parameter DeleteAgentInput : DeleteAgentRequest /// @@ -234,7 +234,7 @@ public protocol DataSyncClientProtocol { /// - `InternalException` : This exception is thrown when an error occurs in the DataSync service. /// - `InvalidRequestException` : This exception is thrown when the client submits a malformed request. func deleteTask(input: DeleteTaskInput) async throws -> DeleteTaskOutput - /// Returns metadata about an DataSync agent, such as its name, endpoint type, and status. + /// Returns information about an DataSync agent, such as its name, service endpoint type, and status. /// /// - Parameter DescribeAgentInput : DescribeAgent /// @@ -618,7 +618,7 @@ public protocol DataSyncClientProtocol { /// - `InternalException` : This exception is thrown when an error occurs in the DataSync service. /// - `InvalidRequestException` : This exception is thrown when the client submits a malformed request. func untagResource(input: UntagResourceInput) async throws -> UntagResourceOutput - /// Updates the name of an agent. + /// Updates the name of an DataSync agent. /// /// - Parameter UpdateAgentInput : UpdateAgentRequest /// @@ -690,7 +690,7 @@ public protocol DataSyncClientProtocol { /// - `InternalException` : This exception is thrown when an error occurs in the DataSync service. /// - `InvalidRequestException` : This exception is thrown when the client submits a malformed request. func updateLocationObjectStorage(input: UpdateLocationObjectStorageInput) async throws -> UpdateLocationObjectStorageOutput - /// Updates some of the parameters of a previously created location for Server Message Block (SMB) file system access. For information about creating an SMB location, see [Creating a location for SMB](https://docs.aws.amazon.com/datasync/latest/userguide/create-smb-location.html). + /// Updates some of the parameters of a Server Message Block (SMB) file server location that you can use for DataSync transfers. /// /// - Parameter UpdateLocationSmbInput : [no documentation found] /// diff --git a/Sources/Services/AWSDataSync/models/Models.swift b/Sources/Services/AWSDataSync/models/Models.swift index cfd8a096bf3..a3f744f4ae4 100644 --- a/Sources/Services/AWSDataSync/models/Models.swift +++ b/Sources/Services/AWSDataSync/models/Models.swift @@ -219,6 +219,7 @@ extension DataSyncClientTypes.AgentListEntry: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case agentArn = "AgentArn" case name = "Name" + case platform = "Platform" case status = "Status" } @@ -230,6 +231,9 @@ extension DataSyncClientTypes.AgentListEntry: Swift.Codable { if let name = self.name { try encodeContainer.encode(name, forKey: .name) } + if let platform = self.platform { + try encodeContainer.encode(platform, forKey: .platform) + } if let status = self.status { try encodeContainer.encode(status.rawValue, forKey: .status) } @@ -243,6 +247,8 @@ extension DataSyncClientTypes.AgentListEntry: Swift.Codable { name = nameDecoded let statusDecoded = try containerValues.decodeIfPresent(DataSyncClientTypes.AgentStatus.self, forKey: .status) status = statusDecoded + let platformDecoded = try containerValues.decodeIfPresent(DataSyncClientTypes.Platform.self, forKey: .platform) + platform = platformDecoded } } @@ -253,17 +259,25 @@ extension DataSyncClientTypes { public var agentArn: Swift.String? /// The name of an agent. public var name: Swift.String? - /// The status of an agent. For more information, see [DataSync agent statuses](https://docs.aws.amazon.com/datasync/latest/userguide/understand-agent-statuses.html). + /// The platform-related details about the agent, such as the version number. + public var platform: DataSyncClientTypes.Platform? + /// The status of an agent. + /// + /// * If the status is ONLINE, the agent is configured properly and ready to use. + /// + /// * If the status is OFFLINE, the agent has been out of contact with DataSync for five minutes or longer. This can happen for a few reasons. For more information, see [What do I do if my agent is offline?](https://docs.aws.amazon.com/datasync/latest/userguide/troubleshooting-datasync-agents.html#troubleshoot-agent-offline) public var status: DataSyncClientTypes.AgentStatus? public init( agentArn: Swift.String? = nil, name: Swift.String? = nil, + platform: DataSyncClientTypes.Platform? = nil, status: DataSyncClientTypes.AgentStatus? = nil ) { self.agentArn = agentArn self.name = name + self.platform = platform self.status = status } } @@ -1770,12 +1784,12 @@ extension CreateLocationFsxWindowsInput: ClientRuntime.URLPathProvider { } public struct CreateLocationFsxWindowsInput: Swift.Equatable { - /// Specifies the name of the Windows domain that the FSx for Windows File Server belongs to. + /// Specifies the name of the Windows domain that the FSx for Windows File Server belongs to. If you have multiple domains in your environment, configuring this parameter makes sure that DataSync connects to the right file server. For more information, see [required permissions](https://docs.aws.amazon.com/datasync/latest/userguide/create-fsx-location.html#create-fsx-windows-location-permissions) for FSx for Windows File Server locations. public var domain: Swift.String? /// Specifies the Amazon Resource Name (ARN) for the FSx for Windows File Server file system. /// This member is required. public var fsxFilesystemArn: Swift.String? - /// Specifies the password of the user who has the permissions to access files and folders in the file system. + /// Specifies the password of the user who has the permissions to access files and folders in the file system. For more information, see [required permissions](https://docs.aws.amazon.com/datasync/latest/userguide/create-fsx-location.html#create-fsx-windows-location-permissions) for FSx for Windows File Server locations. /// This member is required. public var password: Swift.String? /// Specifies the ARNs of the security groups that provide access to your file system's preferred subnet. If you choose a security group that doesn't allow connections from within itself, do one of the following: @@ -1789,7 +1803,7 @@ public struct CreateLocationFsxWindowsInput: Swift.Equatable { public var subdirectory: Swift.String? /// Specifies labels that help you categorize, filter, and search for your Amazon Web Services resources. We recommend creating at least a name tag for your location. public var tags: [DataSyncClientTypes.TagListEntry]? - /// Specifies the user who has the permissions to access files, folders, and metadata in your file system. For information about choosing a user with sufficient permissions, see [Required permissions](https://docs.aws.amazon.com/datasync/latest/userguide/create-fsx-location.html#create-fsx-windows-location-permissions). + /// Specifies the user who has the permissions to access files, folders, and metadata in your file system. For information about choosing a user with the right level of access for your transfer, see [required permissions](https://docs.aws.amazon.com/datasync/latest/userguide/create-fsx-location.html#create-fsx-windows-location-permissions) for FSx for Windows File Server locations. /// This member is required. public var user: Swift.String? @@ -2871,7 +2885,7 @@ public struct CreateLocationSmbInput: Swift.Equatable { /// Specifies the DataSync agent (or agents) which you want to connect to your SMB file server. You specify an agent by using its Amazon Resource Name (ARN). /// This member is required. public var agentArns: [Swift.String]? - /// Specifies the Windows domain name that your SMB file server belongs to. For more information, see [required permissions](https://docs.aws.amazon.com/datasync/latest/userguide/create-smb-location.html#configuring-smb-permissions) for SMB locations. + /// Specifies the Windows domain name that your SMB file server belongs to. If you have multiple domains in your environment, configuring this parameter makes sure that DataSync connects to the right file server. For more information, see [required permissions](https://docs.aws.amazon.com/datasync/latest/userguide/create-smb-location.html#configuring-smb-permissions) for SMB locations. public var domain: Swift.String? /// Specifies the version of the SMB protocol that DataSync uses to access your SMB file server. public var mountOptions: DataSyncClientTypes.SmbMountOptions? @@ -3560,7 +3574,7 @@ extension DescribeAgentInput: ClientRuntime.URLPathProvider { /// DescribeAgent public struct DescribeAgentInput: Swift.Equatable { - /// Specifies the Amazon Resource Name (ARN) of the DataSync agent to describe. + /// Specifies the Amazon Resource Name (ARN) of the DataSync agent that you want information about. /// This member is required. public var agentArn: Swift.String? @@ -3598,6 +3612,7 @@ extension DescribeAgentOutput: ClientRuntime.HttpResponseBinding { self.endpointType = output.endpointType self.lastConnectionTime = output.lastConnectionTime self.name = output.name + self.platform = output.platform self.privateLinkConfig = output.privateLinkConfig self.status = output.status } else { @@ -3606,6 +3621,7 @@ extension DescribeAgentOutput: ClientRuntime.HttpResponseBinding { self.endpointType = nil self.lastConnectionTime = nil self.name = nil + self.platform = nil self.privateLinkConfig = nil self.status = nil } @@ -3616,17 +3632,23 @@ extension DescribeAgentOutput: ClientRuntime.HttpResponseBinding { public struct DescribeAgentOutput: Swift.Equatable { /// The ARN of the agent. public var agentArn: Swift.String? - /// The time that the agent was activated (that is, created in your account). + /// The time that the agent was [activated](https://docs.aws.amazon.com/datasync/latest/userguide/activate-agent.html). public var creationTime: ClientRuntime.Date? - /// The type of endpoint that your agent is connected to. If the endpoint is a VPC endpoint, the agent is not accessible over the public internet. + /// The type of [service endpoint](https://docs.aws.amazon.com/datasync/latest/userguide/choose-service-endpoint.html) that your agent is connected to. public var endpointType: DataSyncClientTypes.EndpointType? - /// The time that the agent last connected to DataSync. + /// The last time that the agent was communicating with the DataSync service. public var lastConnectionTime: ClientRuntime.Date? /// The name of the agent. public var name: Swift.String? - /// The subnet and the security group that DataSync used to access a VPC endpoint. + /// The platform-related details about the agent, such as the version number. + public var platform: DataSyncClientTypes.Platform? + /// The network configuration that the agent uses when connecting to a [VPC service endpoint](https://docs.aws.amazon.com/datasync/latest/userguide/choose-service-endpoint.html#choose-service-endpoint-vpc). public var privateLinkConfig: DataSyncClientTypes.PrivateLinkConfig? - /// The status of the agent. If the status is ONLINE, then the agent is configured properly and is available to use. The Running status is the normal running status for an agent. If the status is OFFLINE, the agent's VM is turned off or the agent is in an unhealthy state. When the issue that caused the unhealthy state is resolved, the agent returns to ONLINE status. + /// The status of the agent. + /// + /// * If the status is ONLINE, the agent is configured properly and ready to use. + /// + /// * If the status is OFFLINE, the agent has been out of contact with DataSync for five minutes or longer. This can happen for a few reasons. For more information, see [What do I do if my agent is offline?](https://docs.aws.amazon.com/datasync/latest/userguide/troubleshooting-datasync-agents.html#troubleshoot-agent-offline) public var status: DataSyncClientTypes.AgentStatus? public init( @@ -3635,6 +3657,7 @@ public struct DescribeAgentOutput: Swift.Equatable { endpointType: DataSyncClientTypes.EndpointType? = nil, lastConnectionTime: ClientRuntime.Date? = nil, name: Swift.String? = nil, + platform: DataSyncClientTypes.Platform? = nil, privateLinkConfig: DataSyncClientTypes.PrivateLinkConfig? = nil, status: DataSyncClientTypes.AgentStatus? = nil ) @@ -3644,6 +3667,7 @@ public struct DescribeAgentOutput: Swift.Equatable { self.endpointType = endpointType self.lastConnectionTime = lastConnectionTime self.name = name + self.platform = platform self.privateLinkConfig = privateLinkConfig self.status = status } @@ -3657,6 +3681,7 @@ struct DescribeAgentOutputBody: Swift.Equatable { let creationTime: ClientRuntime.Date? let endpointType: DataSyncClientTypes.EndpointType? let privateLinkConfig: DataSyncClientTypes.PrivateLinkConfig? + let platform: DataSyncClientTypes.Platform? } extension DescribeAgentOutputBody: Swift.Decodable { @@ -3666,6 +3691,7 @@ extension DescribeAgentOutputBody: Swift.Decodable { case endpointType = "EndpointType" case lastConnectionTime = "LastConnectionTime" case name = "Name" + case platform = "Platform" case privateLinkConfig = "PrivateLinkConfig" case status = "Status" } @@ -3686,6 +3712,8 @@ extension DescribeAgentOutputBody: Swift.Decodable { endpointType = endpointTypeDecoded let privateLinkConfigDecoded = try containerValues.decodeIfPresent(DataSyncClientTypes.PrivateLinkConfig.self, forKey: .privateLinkConfig) privateLinkConfig = privateLinkConfigDecoded + let platformDecoded = try containerValues.decodeIfPresent(DataSyncClientTypes.Platform.self, forKey: .platform) + platform = platformDecoded } } @@ -6397,13 +6425,13 @@ public struct DescribeTaskExecutionOutput: Swift.Equatable { public var filesSkipped: Swift.Int /// The actual number of files, objects, and directories that DataSync transferred over the network. This value is updated periodically during the task execution's TRANSFERRING phase when something is read from the source and sent over the network. If DataSync fails to transfer something, this value can be less than EstimatedFilesToTransfer. In some cases, this value can also be greater than EstimatedFilesToTransfer. This element is implementation-specific for some location types, so don't use it as an exact indication of what transferred or to monitor your task execution. public var filesTransferred: Swift.Int - /// The number of files, objects, and directories that DataSync verified during your transfer. + /// The number of files, objects, and directories that DataSync verified during your transfer. When you configure your task to [verify only the data that's transferred](https://docs.aws.amazon.com/datasync/latest/userguide/configure-data-verification-options.html), DataSync doesn't verify directories in some situations or files that fail to transfer. public var filesVerified: Swift.Int /// A list of filter rules that include specific data during your transfer. For more information and examples, see [Filtering data transferred by DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/filtering.html). public var includes: [DataSyncClientTypes.FilterRule]? /// Indicates how your transfer task is configured. These options include how DataSync handles files, objects, and their associated metadata during your transfer. You also can specify how to verify data integrity, set bandwidth limits for your task, among other options. Each option has a default value. Unless you need to, you don't have to configure any of these options before starting your task. public var options: DataSyncClientTypes.Options? - /// Indicates whether DataSync generated a complete [task report](https://docs.aws.amazon.com/datasync/latest/userguide/creating-task-reports.html) for your transfer. + /// Indicates whether DataSync generated a complete [task report](https://docs.aws.amazon.com/datasync/latest/userguide/task-reports.html) for your transfer. public var reportResult: DataSyncClientTypes.ReportResult? /// The result of the task execution. public var result: DataSyncClientTypes.TaskExecutionResultDetail? @@ -6705,7 +6733,7 @@ public struct DescribeTaskOutput: Swift.Equatable { public var status: DataSyncClientTypes.TaskStatus? /// The Amazon Resource Name (ARN) of the task that was described. public var taskArn: Swift.String? - /// The configuration of your task report. For more information, see [Creating a task report](https://docs.aws.amazon.com/https:/docs.aws.amazon.com/datasync/latest/userguide/creating-task-reports.html). + /// The configuration of your task report. For more information, see [Creating a task report](https://docs.aws.amazon.com/datasync/latest/userguide/task-reports.html). public var taskReportConfig: DataSyncClientTypes.TaskReportConfig? public init( @@ -10522,6 +10550,41 @@ extension DataSyncClientTypes { } } +extension DataSyncClientTypes.Platform: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case version = "Version" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let version = self.version { + try encodeContainer.encode(version, forKey: .version) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let versionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .version) + version = versionDecoded + } +} + +extension DataSyncClientTypes { + /// The platform-related details about the DataSync agent, such as the version number. + public struct Platform: Swift.Equatable { + /// The version of the DataSync agent. Beginning December 7, 2023, we will discontinue version 1 DataSync agents. Check the DataSync console to see if you have affected agents. If you do, [replace](https://docs.aws.amazon.com/datasync/latest/userguide/replacing-agent.html) those agents before then to avoid data transfer or storage discovery disruptions. If you need more help, contact [Amazon Web Services Support](https://aws.amazon.com/contact-us/). + public var version: Swift.String? + + public init( + version: Swift.String? = nil + ) + { + self.version = version + } + } + +} + extension DataSyncClientTypes { public enum PosixPermissions: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case `none` @@ -10680,7 +10743,7 @@ extension DataSyncClientTypes.PrivateLinkConfig: Swift.Codable { } extension DataSyncClientTypes { - /// Specifies how your DataSync agent connects to Amazon Web Services using a virtual private cloud (VPC) service endpoint. An agent that uses a VPC endpoint isn't accessible over the public internet. + /// Specifies how your DataSync agent connects to Amazon Web Services using a [virtual private cloud (VPC) service endpoint](https://docs.aws.amazon.com/datasync/latest/userguide/choose-service-endpoint.html#choose-service-endpoint-vpc). An agent that uses a VPC endpoint isn't accessible over the public internet. public struct PrivateLinkConfig: Swift.Equatable { /// Specifies the VPC endpoint provided by [Amazon Web Services PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html) that your agent connects to. public var privateLinkEndpoint: Swift.String? @@ -10947,7 +11010,7 @@ extension DataSyncClientTypes.ReportDestination: Swift.Codable { } extension DataSyncClientTypes { - /// Specifies where DataSync uploads your [task report](https://docs.aws.amazon.com/datasync/latest/userguide/creating-task-reports.html). + /// Specifies where DataSync uploads your [task report](https://docs.aws.amazon.com/datasync/latest/userguide/task-reports.html). public struct ReportDestination: Swift.Equatable { /// Specifies the Amazon S3 bucket where DataSync uploads your task report. public var s3: DataSyncClientTypes.ReportDestinationS3? @@ -10994,9 +11057,9 @@ extension DataSyncClientTypes.ReportDestinationS3: Swift.Codable { } extension DataSyncClientTypes { - /// Specifies the Amazon S3 bucket where DataSync uploads your [task report](https://docs.aws.amazon.com/datasync/latest/userguide/creating-task-reports.html). + /// Specifies the Amazon S3 bucket where DataSync uploads your [task report](https://docs.aws.amazon.com/datasync/latest/userguide/task-reports.html). public struct ReportDestinationS3: Swift.Equatable { - /// Specifies the Amazon Resource Name (ARN) of the IAM policy that allows DataSync to upload a task report to your S3 bucket. For more information, see [Allowing DataSync to upload a task report to an Amazon S3 bucket](https://docs.aws.amazon.com/https:/docs.aws.amazon.com/datasync/latest/userguide/creating-task-reports.html). + /// Specifies the Amazon Resource Name (ARN) of the IAM policy that allows DataSync to upload a task report to your S3 bucket. For more information, see [Allowing DataSync to upload a task report to an Amazon S3 bucket](https://docs.aws.amazon.com/https:/docs.aws.amazon.com/datasync/latest/userguide/task-reports.html). /// This member is required. public var bucketAccessRoleArn: Swift.String? /// Specifies the ARN of the S3 bucket where DataSync uploads your report. @@ -11103,7 +11166,7 @@ extension DataSyncClientTypes.ReportOverride: Swift.Codable { } extension DataSyncClientTypes { - /// Specifies the level of detail for a particular aspect of your DataSync [task report](https://docs.aws.amazon.com/datasync/latest/userguide/creating-task-reports.html). + /// Specifies the level of detail for a particular aspect of your DataSync [task report](https://docs.aws.amazon.com/datasync/latest/userguide/task-reports.html). public struct ReportOverride: Swift.Equatable { /// Specifies whether your task report includes errors only or successes and errors. For example, your report might mostly include only what didn't go well in your transfer (ERRORS_ONLY). At the same time, you want to verify that your [task filter](https://docs.aws.amazon.com/datasync/latest/userguide/filtering.html) is working correctly. In this situation, you can get a list of what files DataSync successfully skipped and if something transferred that you didn't to transfer (SUCCESSES_AND_ERRORS). public var reportLevel: DataSyncClientTypes.ReportLevel? @@ -11156,7 +11219,7 @@ extension DataSyncClientTypes.ReportOverrides: Swift.Codable { } extension DataSyncClientTypes { - /// The level of detail included in each aspect of your DataSync [task report](https://docs.aws.amazon.com/datasync/latest/userguide/creating-task-reports.html). + /// The level of detail included in each aspect of your DataSync [task report](https://docs.aws.amazon.com/datasync/latest/userguide/task-reports.html). public struct ReportOverrides: Swift.Equatable { /// Specifies the level of reporting for the files, objects, and directories that DataSync attempted to delete in your destination location. This only applies if you [configure your task](https://docs.aws.amazon.com/datasync/latest/userguide/configure-metadata.html) to delete data in the destination that isn't in the source. public var deleted: DataSyncClientTypes.ReportOverride? @@ -11215,7 +11278,7 @@ extension DataSyncClientTypes.ReportResult: Swift.Codable { } extension DataSyncClientTypes { - /// Indicates whether DataSync created a complete [task report](https://docs.aws.amazon.com/datasync/latest/userguide/creating-task-reports.html) for your transfer. + /// Indicates whether DataSync created a complete [task report](https://docs.aws.amazon.com/datasync/latest/userguide/task-reports.html) for your transfer. public struct ReportResult: Swift.Equatable { /// Indicates the code associated with the error if DataSync can't create a complete report. public var errorCode: Swift.String? @@ -12691,9 +12754,9 @@ extension DataSyncClientTypes.TaskReportConfig: Swift.Codable { } extension DataSyncClientTypes { - /// Specifies how you want to configure a task report, which provides detailed information about for your DataSync transfer. For more information, see [Task reports](https://docs.aws.amazon.com/datasync/latest/userguide/creating-task-reports.html). + /// Specifies how you want to configure a task report, which provides detailed information about for your DataSync transfer. For more information, see [Task reports](https://docs.aws.amazon.com/datasync/latest/userguide/task-reports.html). public struct TaskReportConfig: Swift.Equatable { - /// Specifies the Amazon S3 bucket where DataSync uploads your task report. For more information, see [Task reports](https://docs.aws.amazon.com/datasync/latest/userguide/creating-task-reports.html#task-report-access). + /// Specifies the Amazon S3 bucket where DataSync uploads your task report. For more information, see [Task reports](https://docs.aws.amazon.com/datasync/latest/userguide/task-reports.html#task-report-access). public var destination: DataSyncClientTypes.ReportDestination? /// Specifies whether your task report includes the new version of each object transferred into an S3 bucket. This only applies if you [enable versioning on your bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html). Keep in mind that setting this to INCLUDE can increase the duration of your task execution. public var objectVersionIds: DataSyncClientTypes.ObjectVersionIds? @@ -13925,27 +13988,20 @@ extension UpdateLocationSmbInput: ClientRuntime.URLPathProvider { } public struct UpdateLocationSmbInput: Swift.Equatable { - /// The Amazon Resource Names (ARNs) of agents to use for a Simple Message Block (SMB) location. + /// Specifies the DataSync agent (or agents) which you want to connect to your SMB file server. You specify an agent by using its Amazon Resource Name (ARN). public var agentArns: [Swift.String]? - /// The name of the Windows domain that the SMB server belongs to. + /// Specifies the Windows domain name that your SMB file server belongs to. If you have multiple domains in your environment, configuring this parameter makes sure that DataSync connects to the right file server. For more information, see [required permissions](https://docs.aws.amazon.com/datasync/latest/userguide/create-smb-location.html#configuring-smb-permissions) for SMB locations. public var domain: Swift.String? - /// The Amazon Resource Name (ARN) of the SMB location to update. + /// Specifies the ARN of the SMB location that you want to update. /// This member is required. public var locationArn: Swift.String? /// Specifies the version of the Server Message Block (SMB) protocol that DataSync uses to access an SMB file server. public var mountOptions: DataSyncClientTypes.SmbMountOptions? - /// The password of the user who can mount the share has the permissions to access files and folders in the SMB share. + /// Specifies the password of the user who can mount your SMB file server and has permission to access the files and folders involved in your transfer. For more information, see [required permissions](https://docs.aws.amazon.com/datasync/latest/userguide/create-smb-location.html#configuring-smb-permissions) for SMB locations. public var password: Swift.String? - /// The subdirectory in the SMB file system that is used to read data from the SMB source location or write data to the SMB destination. The SMB path should be a path that's exported by the SMB server, or a subdirectory of that path. The path should be such that it can be mounted by other SMB clients in your network. Subdirectory must be specified with forward slashes. For example, /path/to/folder. To transfer all the data in the folder that you specified, DataSync must have permissions to mount the SMB share and to access all the data in that share. To ensure this, do either of the following: - /// - /// * Ensure that the user/password specified belongs to the user who can mount the share and who has the appropriate permissions for all of the files and directories that you want DataSync to access. - /// - /// * Use credentials of a member of the Backup Operators group to mount the share. - /// - /// - /// Doing either of these options enables the agent to access the data. For the agent to access directories, you must also enable all execute access. + /// Specifies the name of the share exported by your SMB file server where DataSync will read or write data. You can include a subdirectory in the share path (for example, /path/to/subdirectory). Make sure that other SMB clients in your network can also mount this path. To copy all data in the specified subdirectory, DataSync must be able to mount the SMB share and access all of its data. For more information, see [required permissions](https://docs.aws.amazon.com/datasync/latest/userguide/create-smb-location.html#configuring-smb-permissions) for SMB locations. public var subdirectory: Swift.String? - /// The user who can mount the share has the permissions to access files and folders in the SMB share. + /// Specifies the user name that can mount your SMB file server and has permission to access the files and folders involved in your transfer. For information about choosing a user with the right level of access for your transfer, see [required permissions](https://docs.aws.amazon.com/datasync/latest/userguide/create-smb-location.html#configuring-smb-permissions) for SMB locations. public var user: Swift.String? public init( diff --git a/Sources/Services/AWSDocDB/models/Models.swift b/Sources/Services/AWSDocDB/models/Models.swift index 1f8e23eda64..a4819795cd6 100644 --- a/Sources/Services/AWSDocDB/models/Models.swift +++ b/Sources/Services/AWSDocDB/models/Models.swift @@ -564,6 +564,51 @@ extension DocDBClientTypes { } +extension DocDBClientTypes.CertificateDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case caIdentifier = "CAIdentifier" + case validTill = "ValidTill" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let caIdentifier = caIdentifier { + try container.encode(caIdentifier, forKey: ClientRuntime.Key("CAIdentifier")) + } + if let validTill = validTill { + try container.encodeTimestamp(validTill, format: .dateTime, forKey: ClientRuntime.Key("ValidTill")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let caIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .caIdentifier) + caIdentifier = caIdentifierDecoded + let validTillDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .validTill) + validTill = validTillDecoded + } +} + +extension DocDBClientTypes { + /// Returns the details of the DB instance’s server certificate. For more information, see [Updating Your Amazon DocumentDB TLS Certificates](https://docs.aws.amazon.com/documentdb/latest/developerguide/ca_cert_rotation.html) and [ Encrypting Data in Transit](https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.html) in the Amazon DocumentDB Developer Guide. + public struct CertificateDetails: Swift.Equatable { + /// The CA identifier of the CA certificate used for the DB instance's server certificate. + public var caIdentifier: Swift.String? + /// The expiration date of the DB instance’s server certificate. + public var validTill: ClientRuntime.Date? + + public init( + caIdentifier: Swift.String? = nil, + validTill: ClientRuntime.Date? = nil + ) + { + self.caIdentifier = caIdentifier + self.validTill = validTill + } + } + +} + extension CertificateNotFoundFault { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { @@ -1899,6 +1944,9 @@ extension CreateDBInstanceInput: Swift.Encodable { if let availabilityZone = availabilityZone { try container.encode(availabilityZone, forKey: ClientRuntime.Key("AvailabilityZone")) } + if let caCertificateIdentifier = caCertificateIdentifier { + try container.encode(caCertificateIdentifier, forKey: ClientRuntime.Key("CACertificateIdentifier")) + } if let copyTagsToSnapshot = copyTagsToSnapshot { try container.encode(copyTagsToSnapshot, forKey: ClientRuntime.Key("CopyTagsToSnapshot")) } @@ -1955,6 +2003,8 @@ public struct CreateDBInstanceInput: Swift.Equatable { public var autoMinorVersionUpgrade: Swift.Bool? /// The Amazon EC2 Availability Zone that the instance is created in. Default: A random, system-chosen Availability Zone in the endpoint's Amazon Web Services Region. Example: us-east-1d public var availabilityZone: Swift.String? + /// The CA certificate identifier to use for the DB instance's server certificate. For more information, see [Updating Your Amazon DocumentDB TLS Certificates](https://docs.aws.amazon.com/documentdb/latest/developerguide/ca_cert_rotation.html) and [ Encrypting Data in Transit](https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.html) in the Amazon DocumentDB Developer Guide. + public var caCertificateIdentifier: Swift.String? /// A value that indicates whether to copy tags from the DB instance to snapshots of the DB instance. By default, tags are not copied. public var copyTagsToSnapshot: Swift.Bool? /// The identifier of the cluster that the instance will belong to. @@ -1992,6 +2042,7 @@ public struct CreateDBInstanceInput: Swift.Equatable { public init( autoMinorVersionUpgrade: Swift.Bool? = nil, availabilityZone: Swift.String? = nil, + caCertificateIdentifier: Swift.String? = nil, copyTagsToSnapshot: Swift.Bool? = nil, dbClusterIdentifier: Swift.String? = nil, dbInstanceClass: Swift.String? = nil, @@ -2006,6 +2057,7 @@ public struct CreateDBInstanceInput: Swift.Equatable { { self.autoMinorVersionUpgrade = autoMinorVersionUpgrade self.availabilityZone = availabilityZone + self.caCertificateIdentifier = caCertificateIdentifier self.copyTagsToSnapshot = copyTagsToSnapshot self.dbClusterIdentifier = dbClusterIdentifier self.dbInstanceClass = dbInstanceClass @@ -2032,12 +2084,14 @@ struct CreateDBInstanceInputBody: Swift.Equatable { let promotionTier: Swift.Int? let enablePerformanceInsights: Swift.Bool? let performanceInsightsKMSKeyId: Swift.String? + let caCertificateIdentifier: Swift.String? } extension CreateDBInstanceInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case autoMinorVersionUpgrade = "AutoMinorVersionUpgrade" case availabilityZone = "AvailabilityZone" + case caCertificateIdentifier = "CACertificateIdentifier" case copyTagsToSnapshot = "CopyTagsToSnapshot" case dbClusterIdentifier = "DBClusterIdentifier" case dbInstanceClass = "DBInstanceClass" @@ -2093,6 +2147,8 @@ extension CreateDBInstanceInputBody: Swift.Decodable { enablePerformanceInsights = enablePerformanceInsightsDecoded let performanceInsightsKMSKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .performanceInsightsKMSKeyId) performanceInsightsKMSKeyId = performanceInsightsKMSKeyIdDecoded + let caCertificateIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .caCertificateIdentifier) + caCertificateIdentifier = caCertificateIdentifierDecoded } } @@ -4153,6 +4209,8 @@ extension DocDBClientTypes.DBEngineVersion: Swift.Codable { case engine = "Engine" case engineVersion = "EngineVersion" case exportableLogTypes = "ExportableLogTypes" + case supportedCACertificateIdentifiers = "SupportedCACertificateIdentifiers" + case supportsCertificateRotationWithoutRestart = "SupportsCertificateRotationWithoutRestart" case supportsLogExportsToCloudwatchLogs = "SupportsLogExportsToCloudwatchLogs" case validUpgradeTarget = "ValidUpgradeTarget" } @@ -4186,6 +4244,21 @@ extension DocDBClientTypes.DBEngineVersion: Swift.Codable { try exportableLogTypesContainer.encode("", forKey: ClientRuntime.Key("")) } } + if let supportedCACertificateIdentifiers = supportedCACertificateIdentifiers { + if !supportedCACertificateIdentifiers.isEmpty { + var supportedCACertificateIdentifiersContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("SupportedCACertificateIdentifiers")) + for (index0, string0) in supportedCACertificateIdentifiers.enumerated() { + try supportedCACertificateIdentifiersContainer.encode(string0, forKey: ClientRuntime.Key("member.\(index0.advanced(by: 1))")) + } + } + else { + var supportedCACertificateIdentifiersContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("SupportedCACertificateIdentifiers")) + try supportedCACertificateIdentifiersContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let supportsCertificateRotationWithoutRestart = supportsCertificateRotationWithoutRestart { + try container.encode(supportsCertificateRotationWithoutRestart, forKey: ClientRuntime.Key("SupportsCertificateRotationWithoutRestart")) + } if let supportsLogExportsToCloudwatchLogs = supportsLogExportsToCloudwatchLogs { try container.encode(supportsLogExportsToCloudwatchLogs, forKey: ClientRuntime.Key("SupportsLogExportsToCloudwatchLogs")) } @@ -4255,6 +4328,27 @@ extension DocDBClientTypes.DBEngineVersion: Swift.Codable { } let supportsLogExportsToCloudwatchLogsDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .supportsLogExportsToCloudwatchLogs) supportsLogExportsToCloudwatchLogs = supportsLogExportsToCloudwatchLogsDecoded + if containerValues.contains(.supportedCACertificateIdentifiers) { + struct KeyVal0{struct member{}} + let supportedCACertificateIdentifiersWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .supportedCACertificateIdentifiers) + if let supportedCACertificateIdentifiersWrappedContainer = supportedCACertificateIdentifiersWrappedContainer { + let supportedCACertificateIdentifiersContainer = try supportedCACertificateIdentifiersWrappedContainer.decodeIfPresent([Swift.String].self, forKey: .member) + var supportedCACertificateIdentifiersBuffer:[Swift.String]? = nil + if let supportedCACertificateIdentifiersContainer = supportedCACertificateIdentifiersContainer { + supportedCACertificateIdentifiersBuffer = [Swift.String]() + for stringContainer0 in supportedCACertificateIdentifiersContainer { + supportedCACertificateIdentifiersBuffer?.append(stringContainer0) + } + } + supportedCACertificateIdentifiers = supportedCACertificateIdentifiersBuffer + } else { + supportedCACertificateIdentifiers = [] + } + } else { + supportedCACertificateIdentifiers = nil + } + let supportsCertificateRotationWithoutRestartDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .supportsCertificateRotationWithoutRestart) + supportsCertificateRotationWithoutRestart = supportsCertificateRotationWithoutRestartDecoded } } @@ -4273,6 +4367,10 @@ extension DocDBClientTypes { public var engineVersion: Swift.String? /// The types of logs that the database engine has available for export to Amazon CloudWatch Logs. public var exportableLogTypes: [Swift.String]? + /// A list of the supported CA certificate identifiers. For more information, see [Updating Your Amazon DocumentDB TLS Certificates](https://docs.aws.amazon.com/documentdb/latest/developerguide/ca_cert_rotation.html) and [ Encrypting Data in Transit](https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.html) in the Amazon DocumentDB Developer Guide. + public var supportedCACertificateIdentifiers: [Swift.String]? + /// Indicates whether the engine version supports rotating the server certificate without rebooting the DB instance. + public var supportsCertificateRotationWithoutRestart: Swift.Bool? /// A value that indicates whether the engine version supports exporting the log types specified by ExportableLogTypes to CloudWatch Logs. public var supportsLogExportsToCloudwatchLogs: Swift.Bool? /// A list of engine versions that this database engine version can be upgraded to. @@ -4285,6 +4383,8 @@ extension DocDBClientTypes { engine: Swift.String? = nil, engineVersion: Swift.String? = nil, exportableLogTypes: [Swift.String]? = nil, + supportedCACertificateIdentifiers: [Swift.String]? = nil, + supportsCertificateRotationWithoutRestart: Swift.Bool? = nil, supportsLogExportsToCloudwatchLogs: Swift.Bool? = nil, validUpgradeTarget: [DocDBClientTypes.UpgradeTarget]? = nil ) @@ -4295,6 +4395,8 @@ extension DocDBClientTypes { self.engine = engine self.engineVersion = engineVersion self.exportableLogTypes = exportableLogTypes + self.supportedCACertificateIdentifiers = supportedCACertificateIdentifiers + self.supportsCertificateRotationWithoutRestart = supportsCertificateRotationWithoutRestart self.supportsLogExportsToCloudwatchLogs = supportsLogExportsToCloudwatchLogs self.validUpgradeTarget = validUpgradeTarget } @@ -4308,6 +4410,7 @@ extension DocDBClientTypes.DBInstance: Swift.Codable { case availabilityZone = "AvailabilityZone" case backupRetentionPeriod = "BackupRetentionPeriod" case caCertificateIdentifier = "CACertificateIdentifier" + case certificateDetails = "CertificateDetails" case copyTagsToSnapshot = "CopyTagsToSnapshot" case dbClusterIdentifier = "DBClusterIdentifier" case dbInstanceArn = "DBInstanceArn" @@ -4347,6 +4450,9 @@ extension DocDBClientTypes.DBInstance: Swift.Codable { if let caCertificateIdentifier = caCertificateIdentifier { try container.encode(caCertificateIdentifier, forKey: ClientRuntime.Key("CACertificateIdentifier")) } + if let certificateDetails = certificateDetails { + try container.encode(certificateDetails, forKey: ClientRuntime.Key("CertificateDetails")) + } if let copyTagsToSnapshot = copyTagsToSnapshot { try container.encode(copyTagsToSnapshot, forKey: ClientRuntime.Key("CopyTagsToSnapshot")) } @@ -4552,6 +4658,8 @@ extension DocDBClientTypes.DBInstance: Swift.Codable { } else { enabledCloudwatchLogsExports = nil } + let certificateDetailsDecoded = try containerValues.decodeIfPresent(DocDBClientTypes.CertificateDetails.self, forKey: .certificateDetails) + certificateDetails = certificateDetailsDecoded } } @@ -4566,6 +4674,8 @@ extension DocDBClientTypes { public var backupRetentionPeriod: Swift.Int? /// The identifier of the CA certificate for this DB instance. public var caCertificateIdentifier: Swift.String? + /// The details of the DB instance's server certificate. + public var certificateDetails: DocDBClientTypes.CertificateDetails? /// A value that indicates whether to copy tags from the DB instance to snapshots of the DB instance. By default, tags are not copied. public var copyTagsToSnapshot: Swift.Bool? /// Contains the name of the cluster that the instance is a member of if the instance is a member of a cluster. @@ -4618,6 +4728,7 @@ extension DocDBClientTypes { availabilityZone: Swift.String? = nil, backupRetentionPeriod: Swift.Int? = nil, caCertificateIdentifier: Swift.String? = nil, + certificateDetails: DocDBClientTypes.CertificateDetails? = nil, copyTagsToSnapshot: Swift.Bool? = nil, dbClusterIdentifier: Swift.String? = nil, dbInstanceArn: Swift.String? = nil, @@ -4647,6 +4758,7 @@ extension DocDBClientTypes { self.availabilityZone = availabilityZone self.backupRetentionPeriod = backupRetentionPeriod self.caCertificateIdentifier = caCertificateIdentifier + self.certificateDetails = certificateDetails self.copyTagsToSnapshot = copyTagsToSnapshot self.dbClusterIdentifier = dbClusterIdentifier self.dbInstanceArn = dbInstanceArn @@ -12263,6 +12375,9 @@ extension ModifyDBInstanceInput: Swift.Encodable { if let caCertificateIdentifier = caCertificateIdentifier { try container.encode(caCertificateIdentifier, forKey: ClientRuntime.Key("CACertificateIdentifier")) } + if let certificateRotationRestart = certificateRotationRestart { + try container.encode(certificateRotationRestart, forKey: ClientRuntime.Key("CertificateRotationRestart")) + } if let copyTagsToSnapshot = copyTagsToSnapshot { try container.encode(copyTagsToSnapshot, forKey: ClientRuntime.Key("CopyTagsToSnapshot")) } @@ -12306,6 +12421,8 @@ public struct ModifyDBInstanceInput: Swift.Equatable { public var autoMinorVersionUpgrade: Swift.Bool? /// Indicates the certificate that needs to be associated with the instance. public var caCertificateIdentifier: Swift.String? + /// Specifies whether the DB instance is restarted when you rotate your SSL/TLS certificate. By default, the DB instance is restarted when you rotate your SSL/TLS certificate. The certificate is not updated until the DB instance is restarted. Set this parameter only if you are not using SSL/TLS to connect to the DB instance. If you are using SSL/TLS to connect to the DB instance, see [Updating Your Amazon DocumentDB TLS Certificates](https://docs.aws.amazon.com/documentdb/latest/developerguide/ca_cert_rotation.html) and [ Encrypting Data in Transit](https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.html) in the Amazon DocumentDB Developer Guide. + public var certificateRotationRestart: Swift.Bool? /// A value that indicates whether to copy all tags from the DB instance to snapshots of the DB instance. By default, tags are not copied. public var copyTagsToSnapshot: Swift.Bool? /// The new compute and memory capacity of the instance; for example, db.r5.large. Not all instance classes are available in all Amazon Web Services Regions. If you modify the instance class, an outage occurs during the change. The change is applied during the next maintenance window, unless ApplyImmediately is specified as true for this request. Default: Uses existing setting. @@ -12339,6 +12456,7 @@ public struct ModifyDBInstanceInput: Swift.Equatable { applyImmediately: Swift.Bool? = nil, autoMinorVersionUpgrade: Swift.Bool? = nil, caCertificateIdentifier: Swift.String? = nil, + certificateRotationRestart: Swift.Bool? = nil, copyTagsToSnapshot: Swift.Bool? = nil, dbInstanceClass: Swift.String? = nil, dbInstanceIdentifier: Swift.String? = nil, @@ -12352,6 +12470,7 @@ public struct ModifyDBInstanceInput: Swift.Equatable { self.applyImmediately = applyImmediately self.autoMinorVersionUpgrade = autoMinorVersionUpgrade self.caCertificateIdentifier = caCertificateIdentifier + self.certificateRotationRestart = certificateRotationRestart self.copyTagsToSnapshot = copyTagsToSnapshot self.dbInstanceClass = dbInstanceClass self.dbInstanceIdentifier = dbInstanceIdentifier @@ -12375,6 +12494,7 @@ struct ModifyDBInstanceInputBody: Swift.Equatable { let promotionTier: Swift.Int? let enablePerformanceInsights: Swift.Bool? let performanceInsightsKMSKeyId: Swift.String? + let certificateRotationRestart: Swift.Bool? } extension ModifyDBInstanceInputBody: Swift.Decodable { @@ -12382,6 +12502,7 @@ extension ModifyDBInstanceInputBody: Swift.Decodable { case applyImmediately = "ApplyImmediately" case autoMinorVersionUpgrade = "AutoMinorVersionUpgrade" case caCertificateIdentifier = "CACertificateIdentifier" + case certificateRotationRestart = "CertificateRotationRestart" case copyTagsToSnapshot = "CopyTagsToSnapshot" case dbInstanceClass = "DBInstanceClass" case dbInstanceIdentifier = "DBInstanceIdentifier" @@ -12416,6 +12537,8 @@ extension ModifyDBInstanceInputBody: Swift.Decodable { enablePerformanceInsights = enablePerformanceInsightsDecoded let performanceInsightsKMSKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .performanceInsightsKMSKeyId) performanceInsightsKMSKeyId = performanceInsightsKMSKeyIdDecoded + let certificateRotationRestartDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .certificateRotationRestart) + certificateRotationRestart = certificateRotationRestartDecoded } } diff --git a/Sources/Services/AWSEC2/EC2Client.swift b/Sources/Services/AWSEC2/EC2Client.swift index 56203f31544..d19d4410b23 100644 --- a/Sources/Services/AWSEC2/EC2Client.swift +++ b/Sources/Services/AWSEC2/EC2Client.swift @@ -8985,6 +8985,45 @@ extension EC2Client: EC2ClientProtocol { return result } + /// Describes Capacity Block offerings available for purchase. With Capacity Blocks, you purchase a specific instance type for a period of time. + /// + /// - Parameter DescribeCapacityBlockOfferingsInput : [no documentation found] + /// + /// - Returns: `DescribeCapacityBlockOfferingsOutput` : [no documentation found] + public func describeCapacityBlockOfferings(input: DescribeCapacityBlockOfferingsInput) async throws -> DescribeCapacityBlockOfferingsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "describeCapacityBlockOfferings") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "ec2") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "describeCapacityBlockOfferings") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "DescribeCapacityBlockOfferingsRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Describes one or more Capacity Reservation Fleets. /// /// - Parameter DescribeCapacityReservationFleetsInput : [no documentation found] @@ -17563,6 +17602,45 @@ extension EC2Client: EC2ClientProtocol { return result } + /// Gets security groups that can be associated by the Amazon Web Services account making the request with network interfaces in the specified VPC. + /// + /// - Parameter GetSecurityGroupsForVpcInput : [no documentation found] + /// + /// - Returns: `GetSecurityGroupsForVpcOutput` : [no documentation found] + public func getSecurityGroupsForVpc(input: GetSecurityGroupsForVpcInput) async throws -> GetSecurityGroupsForVpcOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "getSecurityGroupsForVpc") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "ec2") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "getSecurityGroupsForVpc") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "GetSecurityGroupsForVpcRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Retrieves the access status of your account to the EC2 serial console of all instances. By default, access to the EC2 serial console is disabled for your account. For more information, see [Manage account access to the EC2 serial console](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configure-access-to-serial-console.html#serial-console-account-access) in the Amazon EC2 User Guide. /// /// - Parameter GetSerialConsoleAccessStatusInput : [no documentation found] @@ -21231,6 +21309,45 @@ extension EC2Client: EC2ClientProtocol { return result } + /// Purchase the Capacity Block for use with your account. With Capacity Blocks you ensure GPU capacity is available for machine learning (ML) workloads. You must specify the ID of the Capacity Block offering you are purchasing. + /// + /// - Parameter PurchaseCapacityBlockInput : [no documentation found] + /// + /// - Returns: `PurchaseCapacityBlockOutput` : [no documentation found] + public func purchaseCapacityBlock(input: PurchaseCapacityBlockInput) async throws -> PurchaseCapacityBlockOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "purchaseCapacityBlock") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "ec2") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "purchaseCapacityBlock") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "PurchaseCapacityBlockRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Purchase a reservation with configurations that match those of your Dedicated Host. You must have active Dedicated Hosts in your account before you purchase a reservation. This action results in the specified reservation being purchased and charged to your account. /// /// - Parameter PurchaseHostReservationInput : [no documentation found] diff --git a/Sources/Services/AWSEC2/EC2ClientProtocol.swift b/Sources/Services/AWSEC2/EC2ClientProtocol.swift index dac759435e1..c9318f1b842 100644 --- a/Sources/Services/AWSEC2/EC2ClientProtocol.swift +++ b/Sources/Services/AWSEC2/EC2ClientProtocol.swift @@ -1445,6 +1445,12 @@ public protocol EC2ClientProtocol { /// /// - Returns: `DescribeByoipCidrsOutput` : [no documentation found] func describeByoipCidrs(input: DescribeByoipCidrsInput) async throws -> DescribeByoipCidrsOutput + /// Describes Capacity Block offerings available for purchase. With Capacity Blocks, you purchase a specific instance type for a period of time. + /// + /// - Parameter DescribeCapacityBlockOfferingsInput : [no documentation found] + /// + /// - Returns: `DescribeCapacityBlockOfferingsOutput` : [no documentation found] + func describeCapacityBlockOfferings(input: DescribeCapacityBlockOfferingsInput) async throws -> DescribeCapacityBlockOfferingsOutput /// Describes one or more Capacity Reservation Fleets. /// /// - Parameter DescribeCapacityReservationFleetsInput : [no documentation found] @@ -2793,6 +2799,12 @@ public protocol EC2ClientProtocol { /// /// - Returns: `GetReservedInstancesExchangeQuoteOutput` : Contains the output of GetReservedInstancesExchangeQuote. func getReservedInstancesExchangeQuote(input: GetReservedInstancesExchangeQuoteInput) async throws -> GetReservedInstancesExchangeQuoteOutput + /// Gets security groups that can be associated by the Amazon Web Services account making the request with network interfaces in the specified VPC. + /// + /// - Parameter GetSecurityGroupsForVpcInput : [no documentation found] + /// + /// - Returns: `GetSecurityGroupsForVpcOutput` : [no documentation found] + func getSecurityGroupsForVpc(input: GetSecurityGroupsForVpcInput) async throws -> GetSecurityGroupsForVpcOutput /// Retrieves the access status of your account to the EC2 serial console of all instances. By default, access to the EC2 serial console is disabled for your account. For more information, see [Manage account access to the EC2 serial console](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configure-access-to-serial-console.html#serial-console-account-access) in the Amazon EC2 User Guide. /// /// - Parameter GetSerialConsoleAccessStatusInput : [no documentation found] @@ -3384,6 +3396,12 @@ public protocol EC2ClientProtocol { /// /// - Returns: `ProvisionPublicIpv4PoolCidrOutput` : [no documentation found] func provisionPublicIpv4PoolCidr(input: ProvisionPublicIpv4PoolCidrInput) async throws -> ProvisionPublicIpv4PoolCidrOutput + /// Purchase the Capacity Block for use with your account. With Capacity Blocks you ensure GPU capacity is available for machine learning (ML) workloads. You must specify the ID of the Capacity Block offering you are purchasing. + /// + /// - Parameter PurchaseCapacityBlockInput : [no documentation found] + /// + /// - Returns: `PurchaseCapacityBlockOutput` : [no documentation found] + func purchaseCapacityBlock(input: PurchaseCapacityBlockInput) async throws -> PurchaseCapacityBlockOutput /// Purchase a reservation with configurations that match those of your Dedicated Host. You must have active Dedicated Hosts in your account before you purchase a reservation. This action results in the specified reservation being purchased and charged to your account. /// /// - Parameter PurchaseHostReservationInput : [no documentation found] diff --git a/Sources/Services/AWSEC2/Paginators.swift b/Sources/Services/AWSEC2/Paginators.swift index e98d0fc5a0a..175ef9df2ca 100644 --- a/Sources/Services/AWSEC2/Paginators.swift +++ b/Sources/Services/AWSEC2/Paginators.swift @@ -130,6 +130,42 @@ extension PaginatorSequence where Input == DescribeByoipCidrsInput, Output == De return try await self.asyncCompactMap { item in item.byoipCidrs } } } +extension EC2Client { + /// Paginate over `[DescribeCapacityBlockOfferingsOutput]` results. + /// + /// When this operation is called, an `AsyncSequence` is created. AsyncSequences are lazy so no service + /// calls are made until the sequence is iterated over. This also means there is no guarantee that the request is valid + /// until then. If there are errors in your request, you will see the failures only after you start iterating. + /// - Parameters: + /// - input: A `[DescribeCapacityBlockOfferingsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `DescribeCapacityBlockOfferingsOutput` + public func describeCapacityBlockOfferingsPaginated(input: DescribeCapacityBlockOfferingsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \DescribeCapacityBlockOfferingsInput.nextToken, outputKey: \DescribeCapacityBlockOfferingsOutput.nextToken, paginationFunction: self.describeCapacityBlockOfferings(input:)) + } +} + +extension DescribeCapacityBlockOfferingsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> DescribeCapacityBlockOfferingsInput { + return DescribeCapacityBlockOfferingsInput( + capacityDurationHours: self.capacityDurationHours, + dryRun: self.dryRun, + endDateRange: self.endDateRange, + instanceCount: self.instanceCount, + instanceType: self.instanceType, + maxResults: self.maxResults, + nextToken: token, + startDateRange: self.startDateRange + )} +} + +extension PaginatorSequence where Input == DescribeCapacityBlockOfferingsInput, Output == DescribeCapacityBlockOfferingsOutput { + /// This paginator transforms the `AsyncSequence` returned by `describeCapacityBlockOfferingsPaginated` + /// to access the nested member `[EC2ClientTypes.CapacityBlockOffering]` + /// - Returns: `[EC2ClientTypes.CapacityBlockOffering]` + public func capacityBlockOfferings() async throws -> [EC2ClientTypes.CapacityBlockOffering] { + return try await self.asyncCompactMap { item in item.capacityBlockOfferings } + } +} extension EC2Client { /// Paginate over `[DescribeCapacityReservationFleetsOutput]` results. /// @@ -4127,6 +4163,39 @@ extension PaginatorSequence where Input == GetNetworkInsightsAccessScopeAnalysis return try await self.asyncCompactMap { item in item.analysisFindings } } } +extension EC2Client { + /// Paginate over `[GetSecurityGroupsForVpcOutput]` results. + /// + /// When this operation is called, an `AsyncSequence` is created. AsyncSequences are lazy so no service + /// calls are made until the sequence is iterated over. This also means there is no guarantee that the request is valid + /// until then. If there are errors in your request, you will see the failures only after you start iterating. + /// - Parameters: + /// - input: A `[GetSecurityGroupsForVpcInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `GetSecurityGroupsForVpcOutput` + public func getSecurityGroupsForVpcPaginated(input: GetSecurityGroupsForVpcInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \GetSecurityGroupsForVpcInput.nextToken, outputKey: \GetSecurityGroupsForVpcOutput.nextToken, paginationFunction: self.getSecurityGroupsForVpc(input:)) + } +} + +extension GetSecurityGroupsForVpcInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> GetSecurityGroupsForVpcInput { + return GetSecurityGroupsForVpcInput( + dryRun: self.dryRun, + filters: self.filters, + maxResults: self.maxResults, + nextToken: token, + vpcId: self.vpcId + )} +} + +extension PaginatorSequence where Input == GetSecurityGroupsForVpcInput, Output == GetSecurityGroupsForVpcOutput { + /// This paginator transforms the `AsyncSequence` returned by `getSecurityGroupsForVpcPaginated` + /// to access the nested member `[EC2ClientTypes.SecurityGroupForVpc]` + /// - Returns: `[EC2ClientTypes.SecurityGroupForVpc]` + public func securityGroupForVpcs() async throws -> [EC2ClientTypes.SecurityGroupForVpc] { + return try await self.asyncCompactMap { item in item.securityGroupForVpcs } + } +} extension EC2Client { /// Paginate over `[GetSpotPlacementScoresOutput]` results. /// diff --git a/Sources/Services/AWSEC2/models/Models.swift b/Sources/Services/AWSEC2/models/Models.swift index 5b1568c8fda..e41f6792b27 100644 --- a/Sources/Services/AWSEC2/models/Models.swift +++ b/Sources/Services/AWSEC2/models/Models.swift @@ -12637,6 +12637,131 @@ extension EC2ClientTypes { } +extension EC2ClientTypes.CapacityBlockOffering: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case availabilityZone = "availabilityZone" + case capacityBlockDurationHours = "capacityBlockDurationHours" + case capacityBlockOfferingId = "capacityBlockOfferingId" + case currencyCode = "currencyCode" + case endDate = "endDate" + case instanceCount = "instanceCount" + case instanceType = "instanceType" + case startDate = "startDate" + case tenancy = "tenancy" + case upfrontFee = "upfrontFee" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let availabilityZone = availabilityZone { + try container.encode(availabilityZone, forKey: ClientRuntime.Key("AvailabilityZone")) + } + if let capacityBlockDurationHours = capacityBlockDurationHours { + try container.encode(capacityBlockDurationHours, forKey: ClientRuntime.Key("CapacityBlockDurationHours")) + } + if let capacityBlockOfferingId = capacityBlockOfferingId { + try container.encode(capacityBlockOfferingId, forKey: ClientRuntime.Key("CapacityBlockOfferingId")) + } + if let currencyCode = currencyCode { + try container.encode(currencyCode, forKey: ClientRuntime.Key("CurrencyCode")) + } + if let endDate = endDate { + try container.encodeTimestamp(endDate, format: .dateTime, forKey: ClientRuntime.Key("EndDate")) + } + if let instanceCount = instanceCount { + try container.encode(instanceCount, forKey: ClientRuntime.Key("InstanceCount")) + } + if let instanceType = instanceType { + try container.encode(instanceType, forKey: ClientRuntime.Key("InstanceType")) + } + if let startDate = startDate { + try container.encodeTimestamp(startDate, format: .dateTime, forKey: ClientRuntime.Key("StartDate")) + } + if let tenancy = tenancy { + try container.encode(tenancy, forKey: ClientRuntime.Key("Tenancy")) + } + if let upfrontFee = upfrontFee { + try container.encode(upfrontFee, forKey: ClientRuntime.Key("UpfrontFee")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let capacityBlockOfferingIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .capacityBlockOfferingId) + capacityBlockOfferingId = capacityBlockOfferingIdDecoded + let instanceTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceType) + instanceType = instanceTypeDecoded + let availabilityZoneDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZone) + availabilityZone = availabilityZoneDecoded + let instanceCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .instanceCount) + instanceCount = instanceCountDecoded + let startDateDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .startDate) + startDate = startDateDecoded + let endDateDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .endDate) + endDate = endDateDecoded + let capacityBlockDurationHoursDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .capacityBlockDurationHours) + capacityBlockDurationHours = capacityBlockDurationHoursDecoded + let upfrontFeeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .upfrontFee) + upfrontFee = upfrontFeeDecoded + let currencyCodeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .currencyCode) + currencyCode = currencyCodeDecoded + let tenancyDecoded = try containerValues.decodeIfPresent(EC2ClientTypes.CapacityReservationTenancy.self, forKey: .tenancy) + tenancy = tenancyDecoded + } +} + +extension EC2ClientTypes { + /// The recommended Capacity Block that fits your search requirements. + public struct CapacityBlockOffering: Swift.Equatable { + /// The Availability Zone of the Capacity Block offering. + public var availabilityZone: Swift.String? + /// The amount of time of the Capacity Block reservation in hours. + public var capacityBlockDurationHours: Swift.Int? + /// The ID of the Capacity Block offering. + public var capacityBlockOfferingId: Swift.String? + /// The currency of the payment for the Capacity Block. + public var currencyCode: Swift.String? + /// The end date of the Capacity Block offering. + public var endDate: ClientRuntime.Date? + /// The number of instances in the Capacity Block offering. + public var instanceCount: Swift.Int? + /// The instance type of the Capacity Block offering. + public var instanceType: Swift.String? + /// The start date of the Capacity Block offering. + public var startDate: ClientRuntime.Date? + /// The tenancy of the Capacity Block. + public var tenancy: EC2ClientTypes.CapacityReservationTenancy? + /// The total price to be paid up front. + public var upfrontFee: Swift.String? + + public init( + availabilityZone: Swift.String? = nil, + capacityBlockDurationHours: Swift.Int? = nil, + capacityBlockOfferingId: Swift.String? = nil, + currencyCode: Swift.String? = nil, + endDate: ClientRuntime.Date? = nil, + instanceCount: Swift.Int? = nil, + instanceType: Swift.String? = nil, + startDate: ClientRuntime.Date? = nil, + tenancy: EC2ClientTypes.CapacityReservationTenancy? = nil, + upfrontFee: Swift.String? = nil + ) + { + self.availabilityZone = availabilityZone + self.capacityBlockDurationHours = capacityBlockDurationHours + self.capacityBlockOfferingId = capacityBlockOfferingId + self.currencyCode = currencyCode + self.endDate = endDate + self.instanceCount = instanceCount + self.instanceType = instanceType + self.startDate = startDate + self.tenancy = tenancy + self.upfrontFee = upfrontFee + } + } + +} + extension EC2ClientTypes.CapacityReservation: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case availabilityZone = "availabilityZone" @@ -12657,6 +12782,7 @@ extension EC2ClientTypes.CapacityReservation: Swift.Codable { case outpostArn = "outpostArn" case ownerId = "ownerId" case placementGroupArn = "placementGroupArn" + case reservationType = "reservationType" case startDate = "startDate" case state = "state" case tags = "tagSet" @@ -12729,6 +12855,9 @@ extension EC2ClientTypes.CapacityReservation: Swift.Codable { if let placementGroupArn = placementGroupArn { try container.encode(placementGroupArn, forKey: ClientRuntime.Key("PlacementGroupArn")) } + if let reservationType = reservationType { + try container.encode(reservationType, forKey: ClientRuntime.Key("ReservationType")) + } if let startDate = startDate { try container.encodeTimestamp(startDate, format: .dateTime, forKey: ClientRuntime.Key("StartDate")) } @@ -12837,6 +12966,8 @@ extension EC2ClientTypes.CapacityReservation: Swift.Codable { } else { capacityAllocations = nil } + let reservationTypeDecoded = try containerValues.decodeIfPresent(EC2ClientTypes.CapacityReservationType.self, forKey: .reservationType) + reservationType = reservationTypeDecoded } } @@ -12887,6 +13018,8 @@ extension EC2ClientTypes { public var ownerId: Swift.String? /// The Amazon Resource Name (ARN) of the cluster placement group in which the Capacity Reservation was created. For more information, see [ Capacity Reservations for cluster placement groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cr-cpg.html) in the Amazon EC2 User Guide. public var placementGroupArn: Swift.String? + /// The type of Capacity Reservation. + public var reservationType: EC2ClientTypes.CapacityReservationType? /// The date and time at which the Capacity Reservation was started. public var startDate: ClientRuntime.Date? /// The current state of the Capacity Reservation. A Capacity Reservation can be in one of the following states: @@ -12931,6 +13064,7 @@ extension EC2ClientTypes { outpostArn: Swift.String? = nil, ownerId: Swift.String? = nil, placementGroupArn: Swift.String? = nil, + reservationType: EC2ClientTypes.CapacityReservationType? = nil, startDate: ClientRuntime.Date? = nil, state: EC2ClientTypes.CapacityReservationState? = nil, tags: [EC2ClientTypes.Tag]? = nil, @@ -12956,6 +13090,7 @@ extension EC2ClientTypes { self.outpostArn = outpostArn self.ownerId = ownerId self.placementGroupArn = placementGroupArn + self.reservationType = reservationType self.startDate = startDate self.state = state self.tags = tags @@ -13624,7 +13759,10 @@ extension EC2ClientTypes { case cancelled case expired case failed + case paymentFailed + case paymentPending case pending + case scheduled case sdkUnknown(Swift.String) public static var allCases: [CapacityReservationState] { @@ -13633,7 +13771,10 @@ extension EC2ClientTypes { .cancelled, .expired, .failed, + .paymentFailed, + .paymentPending, .pending, + .scheduled, .sdkUnknown("") ] } @@ -13647,7 +13788,10 @@ extension EC2ClientTypes { case .cancelled: return "cancelled" case .expired: return "expired" case .failed: return "failed" + case .paymentFailed: return "payment-failed" + case .paymentPending: return "payment-pending" case .pending: return "pending" + case .scheduled: return "scheduled" case let .sdkUnknown(s): return s } } @@ -13781,6 +13925,38 @@ extension EC2ClientTypes { } } +extension EC2ClientTypes { + public enum CapacityReservationType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case capacityBlock + case `default` + case sdkUnknown(Swift.String) + + public static var allCases: [CapacityReservationType] { + return [ + .capacityBlock, + .default, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .capacityBlock: return "capacity-block" + case .default: return "default" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = CapacityReservationType(rawValue: rawValue) ?? CapacityReservationType.sdkUnknown(rawValue) + } + } +} + extension EC2ClientTypes.CarrierGateway: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case carrierGatewayId = "carrierGatewayId" @@ -35710,12 +35886,14 @@ extension EC2ClientTypes { extension EC2ClientTypes { public enum DefaultTargetCapacityType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case capacityBlock case onDemand case spot case sdkUnknown(Swift.String) public static var allCases: [DefaultTargetCapacityType] { return [ + .capacityBlock, .onDemand, .spot, .sdkUnknown("") @@ -35727,6 +35905,7 @@ extension EC2ClientTypes { } public var rawValue: Swift.String { switch self { + case .capacityBlock: return "capacity-block" case .onDemand: return "on-demand" case .spot: return "spot" case let .sdkUnknown(s): return s @@ -46730,6 +46909,207 @@ enum DescribeByoipCidrsOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DescribeCapacityBlockOfferingsInput: Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let capacityDurationHours = capacityDurationHours { + try container.encode(capacityDurationHours, forKey: ClientRuntime.Key("CapacityDurationHours")) + } + if let dryRun = dryRun { + try container.encode(dryRun, forKey: ClientRuntime.Key("DryRun")) + } + if let endDateRange = endDateRange { + try container.encodeTimestamp(endDateRange, format: .dateTime, forKey: ClientRuntime.Key("EndDateRange")) + } + if let instanceCount = instanceCount { + try container.encode(instanceCount, forKey: ClientRuntime.Key("InstanceCount")) + } + if let instanceType = instanceType { + try container.encode(instanceType, forKey: ClientRuntime.Key("InstanceType")) + } + if let maxResults = maxResults { + try container.encode(maxResults, forKey: ClientRuntime.Key("MaxResults")) + } + if let nextToken = nextToken { + try container.encode(nextToken, forKey: ClientRuntime.Key("NextToken")) + } + if let startDateRange = startDateRange { + try container.encodeTimestamp(startDateRange, format: .dateTime, forKey: ClientRuntime.Key("StartDateRange")) + } + try container.encode("DescribeCapacityBlockOfferings", forKey:ClientRuntime.Key("Action")) + try container.encode("2016-11-15", forKey:ClientRuntime.Key("Version")) + } +} + +extension DescribeCapacityBlockOfferingsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct DescribeCapacityBlockOfferingsInput: Swift.Equatable { + /// The number of hours for which to reserve Capacity Block. + /// This member is required. + public var capacityDurationHours: Swift.Int? + /// Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. + public var dryRun: Swift.Bool? + /// The latest end date for the Capacity Block offering. + public var endDateRange: ClientRuntime.Date? + /// The number of instances for which to reserve capacity. + /// This member is required. + public var instanceCount: Swift.Int? + /// The type of instance for which the Capacity Block offering reserves capacity. + /// This member is required. + public var instanceType: Swift.String? + /// The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500. If maxResults is given a larger value than 500, you receive an error. + public var maxResults: Swift.Int? + /// The token to use to retrieve the next page of results. + public var nextToken: Swift.String? + /// The earliest start date for the Capacity Block offering. + public var startDateRange: ClientRuntime.Date? + + public init( + capacityDurationHours: Swift.Int? = nil, + dryRun: Swift.Bool? = nil, + endDateRange: ClientRuntime.Date? = nil, + instanceCount: Swift.Int? = nil, + instanceType: Swift.String? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil, + startDateRange: ClientRuntime.Date? = nil + ) + { + self.capacityDurationHours = capacityDurationHours + self.dryRun = dryRun + self.endDateRange = endDateRange + self.instanceCount = instanceCount + self.instanceType = instanceType + self.maxResults = maxResults + self.nextToken = nextToken + self.startDateRange = startDateRange + } +} + +struct DescribeCapacityBlockOfferingsInputBody: Swift.Equatable { + let dryRun: Swift.Bool? + let instanceType: Swift.String? + let instanceCount: Swift.Int? + let startDateRange: ClientRuntime.Date? + let endDateRange: ClientRuntime.Date? + let capacityDurationHours: Swift.Int? + let nextToken: Swift.String? + let maxResults: Swift.Int? +} + +extension DescribeCapacityBlockOfferingsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case capacityDurationHours = "CapacityDurationHours" + case dryRun = "DryRun" + case endDateRange = "EndDateRange" + case instanceCount = "InstanceCount" + case instanceType = "InstanceType" + case maxResults = "MaxResults" + case nextToken = "NextToken" + case startDateRange = "StartDateRange" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let dryRunDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .dryRun) + dryRun = dryRunDecoded + let instanceTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceType) + instanceType = instanceTypeDecoded + let instanceCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .instanceCount) + instanceCount = instanceCountDecoded + let startDateRangeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .startDateRange) + startDateRange = startDateRangeDecoded + let endDateRangeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .endDateRange) + endDateRange = endDateRangeDecoded + let capacityDurationHoursDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .capacityDurationHours) + capacityDurationHours = capacityDurationHoursDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) + maxResults = maxResultsDecoded + } +} + +extension DescribeCapacityBlockOfferingsOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: DescribeCapacityBlockOfferingsOutputBody = try responseDecoder.decode(responseBody: data) + self.capacityBlockOfferings = output.capacityBlockOfferings + self.nextToken = output.nextToken + } else { + self.capacityBlockOfferings = nil + self.nextToken = nil + } + } +} + +public struct DescribeCapacityBlockOfferingsOutput: Swift.Equatable { + /// The recommended Capacity Block offering for the dates specified. + public var capacityBlockOfferings: [EC2ClientTypes.CapacityBlockOffering]? + /// The token to use to retrieve the next page of results. This value is null when there are no more results to return. + public var nextToken: Swift.String? + + public init( + capacityBlockOfferings: [EC2ClientTypes.CapacityBlockOffering]? = nil, + nextToken: Swift.String? = nil + ) + { + self.capacityBlockOfferings = capacityBlockOfferings + self.nextToken = nextToken + } +} + +struct DescribeCapacityBlockOfferingsOutputBody: Swift.Equatable { + let capacityBlockOfferings: [EC2ClientTypes.CapacityBlockOffering]? + let nextToken: Swift.String? +} + +extension DescribeCapacityBlockOfferingsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case capacityBlockOfferings = "capacityBlockOfferingSet" + case nextToken = "nextToken" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + if containerValues.contains(.capacityBlockOfferings) { + struct KeyVal0{struct item{}} + let capacityBlockOfferingsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .capacityBlockOfferings) + if let capacityBlockOfferingsWrappedContainer = capacityBlockOfferingsWrappedContainer { + let capacityBlockOfferingsContainer = try capacityBlockOfferingsWrappedContainer.decodeIfPresent([EC2ClientTypes.CapacityBlockOffering].self, forKey: .member) + var capacityBlockOfferingsBuffer:[EC2ClientTypes.CapacityBlockOffering]? = nil + if let capacityBlockOfferingsContainer = capacityBlockOfferingsContainer { + capacityBlockOfferingsBuffer = [EC2ClientTypes.CapacityBlockOffering]() + for structureContainer0 in capacityBlockOfferingsContainer { + capacityBlockOfferingsBuffer?.append(structureContainer0) + } + } + capacityBlockOfferings = capacityBlockOfferingsBuffer + } else { + capacityBlockOfferings = [] + } + } else { + capacityBlockOfferings = nil + } + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum DescribeCapacityBlockOfferingsOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let ec2QueryError = try await Ec2QueryError(httpResponse: httpResponse) + switch ec2QueryError.errorCode { + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: ec2QueryError.message, requestID: ec2QueryError.requestId, typeName: ec2QueryError.errorCode) + } + } +} + extension DescribeCapacityReservationFleetsInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -68669,7 +69049,7 @@ public struct DescribeSpotPriceHistoryInput: Swift.Equatable { /// /// * spot-price - The Spot price. The value must match exactly (or use wildcards; greater than or less than comparison is not supported). /// - /// * timestamp - The time stamp of the Spot price history, in UTC format (for example, YYYY-MM-DDTHH:MM:SSZ). You can use wildcards (* and ?). Greater than or less than comparison is not supported. + /// * timestamp - The time stamp of the Spot price history, in UTC format (for example, ddd MMM dd HH:mm:ss UTC YYYY). You can use wildcards (* and ?). Greater than or less than comparison is not supported. public var filters: [EC2ClientTypes.Filter]? /// Filters the results by the specified instance types. public var instanceTypes: [EC2ClientTypes.InstanceType]? @@ -97545,6 +97925,208 @@ enum GetReservedInstancesExchangeQuoteOutputError: ClientRuntime.HttpResponseErr } } +extension GetSecurityGroupsForVpcInput: Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let dryRun = dryRun { + try container.encode(dryRun, forKey: ClientRuntime.Key("DryRun")) + } + if let filters = filters { + if !filters.isEmpty { + for (index0, filter0) in filters.enumerated() { + var filtersContainer0 = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Filter.\(index0.advanced(by: 1))")) + try filtersContainer0.encode(filter0, forKey: ClientRuntime.Key("")) + } + } + else { + var filtersContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Filter")) + try filtersContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let maxResults = maxResults { + try container.encode(maxResults, forKey: ClientRuntime.Key("MaxResults")) + } + if let nextToken = nextToken { + try container.encode(nextToken, forKey: ClientRuntime.Key("NextToken")) + } + if let vpcId = vpcId { + try container.encode(vpcId, forKey: ClientRuntime.Key("VpcId")) + } + try container.encode("GetSecurityGroupsForVpc", forKey:ClientRuntime.Key("Action")) + try container.encode("2016-11-15", forKey:ClientRuntime.Key("Version")) + } +} + +extension GetSecurityGroupsForVpcInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct GetSecurityGroupsForVpcInput: Swift.Equatable { + /// Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. + public var dryRun: Swift.Bool? + /// The filters. If using multiple filters, the results include security groups which match all filters. + /// + /// * group-id: The security group ID. + /// + /// * description: The security group's description. + /// + /// * group-name: The security group name. + /// + /// * owner-id: The security group owner ID. + /// + /// * primary-vpc-id: The VPC ID in which the security group was created. + public var filters: [EC2ClientTypes.Filter]? + /// The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. For more information, see [Pagination](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Query-Requests.html#api-pagination). + public var maxResults: Swift.Int? + /// The token returned from a previous paginated request. Pagination continues from the end of the items returned by the previous request. + public var nextToken: Swift.String? + /// The VPC ID where the security group can be used. + /// This member is required. + public var vpcId: Swift.String? + + public init( + dryRun: Swift.Bool? = nil, + filters: [EC2ClientTypes.Filter]? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil, + vpcId: Swift.String? = nil + ) + { + self.dryRun = dryRun + self.filters = filters + self.maxResults = maxResults + self.nextToken = nextToken + self.vpcId = vpcId + } +} + +struct GetSecurityGroupsForVpcInputBody: Swift.Equatable { + let vpcId: Swift.String? + let nextToken: Swift.String? + let maxResults: Swift.Int? + let filters: [EC2ClientTypes.Filter]? + let dryRun: Swift.Bool? +} + +extension GetSecurityGroupsForVpcInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case dryRun = "DryRun" + case filters = "Filter" + case maxResults = "MaxResults" + case nextToken = "NextToken" + case vpcId = "VpcId" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let vpcIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .vpcId) + vpcId = vpcIdDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) + maxResults = maxResultsDecoded + if containerValues.contains(.filters) { + struct KeyVal0{struct Filter{}} + let filtersWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .filters) + if let filtersWrappedContainer = filtersWrappedContainer { + let filtersContainer = try filtersWrappedContainer.decodeIfPresent([EC2ClientTypes.Filter].self, forKey: .member) + var filtersBuffer:[EC2ClientTypes.Filter]? = nil + if let filtersContainer = filtersContainer { + filtersBuffer = [EC2ClientTypes.Filter]() + for structureContainer0 in filtersContainer { + filtersBuffer?.append(structureContainer0) + } + } + filters = filtersBuffer + } else { + filters = [] + } + } else { + filters = nil + } + let dryRunDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .dryRun) + dryRun = dryRunDecoded + } +} + +extension GetSecurityGroupsForVpcOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: GetSecurityGroupsForVpcOutputBody = try responseDecoder.decode(responseBody: data) + self.nextToken = output.nextToken + self.securityGroupForVpcs = output.securityGroupForVpcs + } else { + self.nextToken = nil + self.securityGroupForVpcs = nil + } + } +} + +public struct GetSecurityGroupsForVpcOutput: Swift.Equatable { + /// The token to include in another request to get the next page of items. This value is null when there are no more items to return. + public var nextToken: Swift.String? + /// The security group that can be used by interfaces in the VPC. + public var securityGroupForVpcs: [EC2ClientTypes.SecurityGroupForVpc]? + + public init( + nextToken: Swift.String? = nil, + securityGroupForVpcs: [EC2ClientTypes.SecurityGroupForVpc]? = nil + ) + { + self.nextToken = nextToken + self.securityGroupForVpcs = securityGroupForVpcs + } +} + +struct GetSecurityGroupsForVpcOutputBody: Swift.Equatable { + let nextToken: Swift.String? + let securityGroupForVpcs: [EC2ClientTypes.SecurityGroupForVpc]? +} + +extension GetSecurityGroupsForVpcOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case nextToken = "nextToken" + case securityGroupForVpcs = "securityGroupForVpcSet" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + if containerValues.contains(.securityGroupForVpcs) { + struct KeyVal0{struct item{}} + let securityGroupForVpcsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .securityGroupForVpcs) + if let securityGroupForVpcsWrappedContainer = securityGroupForVpcsWrappedContainer { + let securityGroupForVpcsContainer = try securityGroupForVpcsWrappedContainer.decodeIfPresent([EC2ClientTypes.SecurityGroupForVpc].self, forKey: .member) + var securityGroupForVpcsBuffer:[EC2ClientTypes.SecurityGroupForVpc]? = nil + if let securityGroupForVpcsContainer = securityGroupForVpcsContainer { + securityGroupForVpcsBuffer = [EC2ClientTypes.SecurityGroupForVpc]() + for structureContainer0 in securityGroupForVpcsContainer { + securityGroupForVpcsBuffer?.append(structureContainer0) + } + } + securityGroupForVpcs = securityGroupForVpcsBuffer + } else { + securityGroupForVpcs = [] + } + } else { + securityGroupForVpcs = nil + } + } +} + +enum GetSecurityGroupsForVpcOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let ec2QueryError = try await Ec2QueryError(httpResponse: httpResponse) + switch ec2QueryError.errorCode { + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: ec2QueryError.message, requestID: ec2QueryError.requestId, typeName: ec2QueryError.errorCode) + } + } +} + extension GetSerialConsoleAccessStatusInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -100450,7 +101032,14 @@ extension EC2ClientTypes.HibernationOptionsRequest: Swift.Codable { extension EC2ClientTypes { /// Indicates whether your instance is configured for hibernation. This parameter is valid only if the instance meets the [hibernation prerequisites](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html). For more information, see [Hibernate your instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html) in the Amazon EC2 User Guide. public struct HibernationOptionsRequest: Swift.Equatable { - /// Set to true to enable your instance for hibernation. Default: false + /// Set to true to enable your instance for hibernation. For Spot Instances, if you set Configured to true, either omit the InstanceInterruptionBehavior parameter (for [SpotMarketOptions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_SpotMarketOptions.html)), or set it to hibernate. When Configured is true: + /// + /// * If you omit InstanceInterruptionBehavior, it defaults to hibernate. + /// + /// * If you set InstanceInterruptionBehavior to a value other than hibernate, you'll get an error. + /// + /// + /// Default: false public var configured: Swift.Bool? public init( @@ -107592,12 +108181,14 @@ extension EC2ClientTypes { extension EC2ClientTypes { public enum InstanceLifecycleType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case capacityBlock case scheduled case spot case sdkUnknown(Swift.String) public static var allCases: [InstanceLifecycleType] { return [ + .capacityBlock, .scheduled, .spot, .sdkUnknown("") @@ -107609,6 +108200,7 @@ extension EC2ClientTypes { } public var rawValue: Swift.String { switch self { + case .capacityBlock: return "capacity-block" case .scheduled: return "scheduled" case .spot: return "spot" case let .sdkUnknown(s): return s @@ -109398,7 +109990,7 @@ extension EC2ClientTypes { /// * ExcludedInstanceTypes - The instance types to exclude from the list, even if they match your specified attributes. /// /// - /// If you specify InstanceRequirements, you can't specify InstanceType. Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) or with the [RunInstances API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html), you can't specify InstanceRequirements. For more information, see [Attribute-based instance type selection for EC2 Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html), [Attribute-based instance type selection for Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-attribute-based-instance-type-selection.html), and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the Amazon EC2 User Guide. + /// If you specify InstanceRequirements, you can't specify InstanceType. Attribute-based instance type selection is only supported when using Auto Scaling groups, EC2 Fleet, and Spot Fleet to launch instances. If you plan to use the launch template in the [launch instance wizard](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html) or with the [RunInstances API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html), you can't specify InstanceRequirements. For more information, see [Create a mixed instances group using attribute-based instance type selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html) in the Amazon EC2 Auto Scaling User Guide, and also [Attribute-based instance type selection for EC2 Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html), [Attribute-based instance type selection for Spot Fleet](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet-attribute-based-instance-type-selection.html), and [Spot placement score](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-placement-score.html) in the Amazon EC2 User Guide. public struct InstanceRequirements: Swift.Equatable { /// The minimum and maximum number of accelerators (GPUs, FPGAs, or Amazon Web Services Inferentia chips) on an instance. To exclude accelerator-enabled instance types, set Max to 0. Default: No minimum or maximum limits public var acceleratorCount: EC2ClientTypes.AcceleratorCount? @@ -123963,11 +124555,13 @@ extension EC2ClientTypes { extension EC2ClientTypes { public enum MarketType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case capacityBlock case spot case sdkUnknown(Swift.String) public static var allCases: [MarketType] { return [ + .capacityBlock, .spot, .sdkUnknown("") ] @@ -123978,6 +124572,7 @@ extension EC2ClientTypes { } public var rawValue: Swift.String { switch self { + case .capacityBlock: return "capacity-block" case .spot: return "spot" case let .sdkUnknown(s): return s } @@ -145178,6 +145773,161 @@ extension EC2ClientTypes { } +extension PurchaseCapacityBlockInput: Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let capacityBlockOfferingId = capacityBlockOfferingId { + try container.encode(capacityBlockOfferingId, forKey: ClientRuntime.Key("CapacityBlockOfferingId")) + } + if let dryRun = dryRun { + try container.encode(dryRun, forKey: ClientRuntime.Key("DryRun")) + } + if let instancePlatform = instancePlatform { + try container.encode(instancePlatform, forKey: ClientRuntime.Key("InstancePlatform")) + } + if let tagSpecifications = tagSpecifications { + if !tagSpecifications.isEmpty { + for (index0, tagspecification0) in tagSpecifications.enumerated() { + var tagSpecificationsContainer0 = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("TagSpecification.\(index0.advanced(by: 1))")) + try tagSpecificationsContainer0.encode(tagspecification0, forKey: ClientRuntime.Key("")) + } + } + else { + var tagSpecificationsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("TagSpecification")) + try tagSpecificationsContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + try container.encode("PurchaseCapacityBlock", forKey:ClientRuntime.Key("Action")) + try container.encode("2016-11-15", forKey:ClientRuntime.Key("Version")) + } +} + +extension PurchaseCapacityBlockInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct PurchaseCapacityBlockInput: Swift.Equatable { + /// The ID of the Capacity Block offering. + /// This member is required. + public var capacityBlockOfferingId: Swift.String? + /// Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. + public var dryRun: Swift.Bool? + /// The type of operating system for which to reserve capacity. + /// This member is required. + public var instancePlatform: EC2ClientTypes.CapacityReservationInstancePlatform? + /// The tags to apply to the Capacity Block during launch. + public var tagSpecifications: [EC2ClientTypes.TagSpecification]? + + public init( + capacityBlockOfferingId: Swift.String? = nil, + dryRun: Swift.Bool? = nil, + instancePlatform: EC2ClientTypes.CapacityReservationInstancePlatform? = nil, + tagSpecifications: [EC2ClientTypes.TagSpecification]? = nil + ) + { + self.capacityBlockOfferingId = capacityBlockOfferingId + self.dryRun = dryRun + self.instancePlatform = instancePlatform + self.tagSpecifications = tagSpecifications + } +} + +struct PurchaseCapacityBlockInputBody: Swift.Equatable { + let dryRun: Swift.Bool? + let tagSpecifications: [EC2ClientTypes.TagSpecification]? + let capacityBlockOfferingId: Swift.String? + let instancePlatform: EC2ClientTypes.CapacityReservationInstancePlatform? +} + +extension PurchaseCapacityBlockInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case capacityBlockOfferingId = "CapacityBlockOfferingId" + case dryRun = "DryRun" + case instancePlatform = "InstancePlatform" + case tagSpecifications = "TagSpecification" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let dryRunDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .dryRun) + dryRun = dryRunDecoded + if containerValues.contains(.tagSpecifications) { + struct KeyVal0{struct item{}} + let tagSpecificationsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .tagSpecifications) + if let tagSpecificationsWrappedContainer = tagSpecificationsWrappedContainer { + let tagSpecificationsContainer = try tagSpecificationsWrappedContainer.decodeIfPresent([EC2ClientTypes.TagSpecification].self, forKey: .member) + var tagSpecificationsBuffer:[EC2ClientTypes.TagSpecification]? = nil + if let tagSpecificationsContainer = tagSpecificationsContainer { + tagSpecificationsBuffer = [EC2ClientTypes.TagSpecification]() + for structureContainer0 in tagSpecificationsContainer { + tagSpecificationsBuffer?.append(structureContainer0) + } + } + tagSpecifications = tagSpecificationsBuffer + } else { + tagSpecifications = [] + } + } else { + tagSpecifications = nil + } + let capacityBlockOfferingIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .capacityBlockOfferingId) + capacityBlockOfferingId = capacityBlockOfferingIdDecoded + let instancePlatformDecoded = try containerValues.decodeIfPresent(EC2ClientTypes.CapacityReservationInstancePlatform.self, forKey: .instancePlatform) + instancePlatform = instancePlatformDecoded + } +} + +extension PurchaseCapacityBlockOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: PurchaseCapacityBlockOutputBody = try responseDecoder.decode(responseBody: data) + self.capacityReservation = output.capacityReservation + } else { + self.capacityReservation = nil + } + } +} + +public struct PurchaseCapacityBlockOutput: Swift.Equatable { + /// The Capacity Reservation. + public var capacityReservation: EC2ClientTypes.CapacityReservation? + + public init( + capacityReservation: EC2ClientTypes.CapacityReservation? = nil + ) + { + self.capacityReservation = capacityReservation + } +} + +struct PurchaseCapacityBlockOutputBody: Swift.Equatable { + let capacityReservation: EC2ClientTypes.CapacityReservation? +} + +extension PurchaseCapacityBlockOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case capacityReservation = "capacityReservation" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let capacityReservationDecoded = try containerValues.decodeIfPresent(EC2ClientTypes.CapacityReservation.self, forKey: .capacityReservation) + capacityReservation = capacityReservationDecoded + } +} + +enum PurchaseCapacityBlockOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let ec2QueryError = try await Ec2QueryError(httpResponse: httpResponse) + switch ec2QueryError.errorCode { + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: ec2QueryError.message, requestID: ec2QueryError.requestId, typeName: ec2QueryError.errorCode) + } + } +} + extension PurchaseHostReservationInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -159931,6 +160681,117 @@ extension EC2ClientTypes { } +extension EC2ClientTypes.SecurityGroupForVpc: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case description = "description" + case groupId = "groupId" + case groupName = "groupName" + case ownerId = "ownerId" + case primaryVpcId = "primaryVpcId" + case tags = "tagSet" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let description = description { + try container.encode(description, forKey: ClientRuntime.Key("Description")) + } + if let groupId = groupId { + try container.encode(groupId, forKey: ClientRuntime.Key("GroupId")) + } + if let groupName = groupName { + try container.encode(groupName, forKey: ClientRuntime.Key("GroupName")) + } + if let ownerId = ownerId { + try container.encode(ownerId, forKey: ClientRuntime.Key("OwnerId")) + } + if let primaryVpcId = primaryVpcId { + try container.encode(primaryVpcId, forKey: ClientRuntime.Key("PrimaryVpcId")) + } + if let tags = tags { + if !tags.isEmpty { + for (index0, tag0) in tags.enumerated() { + var tagsContainer0 = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("TagSet.\(index0.advanced(by: 1))")) + try tagsContainer0.encode(tag0, forKey: ClientRuntime.Key("")) + } + } + else { + var tagsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("TagSet")) + try tagsContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let groupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .groupName) + groupName = groupNameDecoded + let ownerIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ownerId) + ownerId = ownerIdDecoded + let groupIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .groupId) + groupId = groupIdDecoded + if containerValues.contains(.tags) { + struct KeyVal0{struct item{}} + let tagsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .tags) + if let tagsWrappedContainer = tagsWrappedContainer { + let tagsContainer = try tagsWrappedContainer.decodeIfPresent([EC2ClientTypes.Tag].self, forKey: .member) + var tagsBuffer:[EC2ClientTypes.Tag]? = nil + if let tagsContainer = tagsContainer { + tagsBuffer = [EC2ClientTypes.Tag]() + for structureContainer0 in tagsContainer { + tagsBuffer?.append(structureContainer0) + } + } + tags = tagsBuffer + } else { + tags = [] + } + } else { + tags = nil + } + let primaryVpcIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .primaryVpcId) + primaryVpcId = primaryVpcIdDecoded + } +} + +extension EC2ClientTypes { + /// A security group that can be used by interfaces in the VPC. + public struct SecurityGroupForVpc: Swift.Equatable { + /// The security group's description. + public var description: Swift.String? + /// The security group ID. + public var groupId: Swift.String? + /// The security group name. + public var groupName: Swift.String? + /// The security group owner ID. + public var ownerId: Swift.String? + /// The VPC ID in which the security group was created. + public var primaryVpcId: Swift.String? + /// The security group tags. + public var tags: [EC2ClientTypes.Tag]? + + public init( + description: Swift.String? = nil, + groupId: Swift.String? = nil, + groupName: Swift.String? = nil, + ownerId: Swift.String? = nil, + primaryVpcId: Swift.String? = nil, + tags: [EC2ClientTypes.Tag]? = nil + ) + { + self.description = description + self.groupId = groupId + self.groupName = groupName + self.ownerId = ownerId + self.primaryVpcId = primaryVpcId + self.tags = tags + } + } + +} + extension EC2ClientTypes.SecurityGroupIdentifier: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case groupId = "groupId" @@ -164149,7 +165010,7 @@ extension EC2ClientTypes { public struct SpotMarketOptions: Swift.Equatable { /// Deprecated. public var blockDurationMinutes: Swift.Int? - /// The behavior when a Spot Instance is interrupted. The default is terminate. + /// The behavior when a Spot Instance is interrupted. If Configured (for [HibernationOptions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_HibernationOptionsRequest.html)) is set to true, the InstanceInterruptionBehavior parameter is automatically set to hibernate. If you set it to stop or terminate, you'll get an error. If Configured (for [HibernationOptions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_HibernationOptionsRequest.html)) is set to false or null, the InstanceInterruptionBehavior parameter is automatically set to terminate. You can also set it to stop or hibernate. For more information, see [Interruption behavior](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/interruption-behavior.html) in the Amazon EC2 User Guide. public var instanceInterruptionBehavior: EC2ClientTypes.InstanceInterruptionBehavior? /// The maximum hourly price that you're willing to pay for a Spot Instance. We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price. If you specify a maximum price, your Spot Instances will be interrupted more frequently than if you do not specify this parameter. public var maxPrice: Swift.String? @@ -175815,12 +176676,14 @@ enum UpdateSecurityGroupRuleDescriptionsIngressOutputError: ClientRuntime.HttpRe extension EC2ClientTypes { public enum UsageClassType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case capacityBlock case onDemand case spot case sdkUnknown(Swift.String) public static var allCases: [UsageClassType] { return [ + .capacityBlock, .onDemand, .spot, .sdkUnknown("") @@ -175832,6 +176695,7 @@ extension EC2ClientTypes { } public var rawValue: Swift.String { switch self { + case .capacityBlock: return "capacity-block" case .onDemand: return "on-demand" case .spot: return "spot" case let .sdkUnknown(s): return s diff --git a/Sources/Services/AWSEKS/models/Models.swift b/Sources/Services/AWSEKS/models/Models.swift index a663814dee9..4ea0b4df22a 100644 --- a/Sources/Services/AWSEKS/models/Models.swift +++ b/Sources/Services/AWSEKS/models/Models.swift @@ -1608,9 +1608,22 @@ extension EKSClientTypes { case accessDenied case clusterUnreachable case configurationConflict + case ec2SecurityGroupNotFound + case ec2ServiceNotSubscribed + case ec2SubnetNotFound + case iamRoleNotFound + case insufficientFreeAddresses case internalFailure + case kmsGrantRevoked + case kmsKeyDisabled + case kmsKeyMarkedForDeletion + case kmsKeyNotFound + case other case resourceLimitExceeded case resourceNotFound + case stsRegionalEndpointDisabled + case unsupportedVersion + case vpcNotFound case sdkUnknown(Swift.String) public static var allCases: [ClusterIssueCode] { @@ -1618,9 +1631,22 @@ extension EKSClientTypes { .accessDenied, .clusterUnreachable, .configurationConflict, + .ec2SecurityGroupNotFound, + .ec2ServiceNotSubscribed, + .ec2SubnetNotFound, + .iamRoleNotFound, + .insufficientFreeAddresses, .internalFailure, + .kmsGrantRevoked, + .kmsKeyDisabled, + .kmsKeyMarkedForDeletion, + .kmsKeyNotFound, + .other, .resourceLimitExceeded, .resourceNotFound, + .stsRegionalEndpointDisabled, + .unsupportedVersion, + .vpcNotFound, .sdkUnknown("") ] } @@ -1633,9 +1659,22 @@ extension EKSClientTypes { case .accessDenied: return "AccessDenied" case .clusterUnreachable: return "ClusterUnreachable" case .configurationConflict: return "ConfigurationConflict" + case .ec2SecurityGroupNotFound: return "Ec2SecurityGroupNotFound" + case .ec2ServiceNotSubscribed: return "Ec2ServiceNotSubscribed" + case .ec2SubnetNotFound: return "Ec2SubnetNotFound" + case .iamRoleNotFound: return "IamRoleNotFound" + case .insufficientFreeAddresses: return "InsufficientFreeAddresses" case .internalFailure: return "InternalFailure" + case .kmsGrantRevoked: return "KmsGrantRevoked" + case .kmsKeyDisabled: return "KmsKeyDisabled" + case .kmsKeyMarkedForDeletion: return "KmsKeyMarkedForDeletion" + case .kmsKeyNotFound: return "KmsKeyNotFound" + case .other: return "Other" case .resourceLimitExceeded: return "ResourceLimitExceeded" case .resourceNotFound: return "ResourceNotFound" + case .stsRegionalEndpointDisabled: return "StsRegionalEndpointDisabled" + case .unsupportedVersion: return "UnsupportedVersion" + case .vpcNotFound: return "VpcNotFound" case let .sdkUnknown(s): return s } } @@ -9950,6 +9989,7 @@ extension EKSClientTypes { public enum UpdateParamType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case addonVersion case clusterLogging + case configurationValues case desiredSize case encryptionConfig case endpointPrivateAccess @@ -9967,7 +10007,9 @@ extension EKSClientTypes { case publicAccessCidrs case releaseVersion case resolveConflicts + case securityGroups case serviceAccountRoleArn + case subnets case taintsToAdd case taintsToRemove case version @@ -9977,6 +10019,7 @@ extension EKSClientTypes { return [ .addonVersion, .clusterLogging, + .configurationValues, .desiredSize, .encryptionConfig, .endpointPrivateAccess, @@ -9994,7 +10037,9 @@ extension EKSClientTypes { .publicAccessCidrs, .releaseVersion, .resolveConflicts, + .securityGroups, .serviceAccountRoleArn, + .subnets, .taintsToAdd, .taintsToRemove, .version, @@ -10009,6 +10054,7 @@ extension EKSClientTypes { switch self { case .addonVersion: return "AddonVersion" case .clusterLogging: return "ClusterLogging" + case .configurationValues: return "ConfigurationValues" case .desiredSize: return "DesiredSize" case .encryptionConfig: return "EncryptionConfig" case .endpointPrivateAccess: return "EndpointPrivateAccess" @@ -10026,7 +10072,9 @@ extension EKSClientTypes { case .publicAccessCidrs: return "PublicAccessCidrs" case .releaseVersion: return "ReleaseVersion" case .resolveConflicts: return "ResolveConflicts" + case .securityGroups: return "SecurityGroups" case .serviceAccountRoleArn: return "ServiceAccountRoleArn" + case .subnets: return "Subnets" case .taintsToAdd: return "TaintsToAdd" case .taintsToRemove: return "TaintsToRemove" case .version: return "Version" @@ -10158,6 +10206,7 @@ extension EKSClientTypes { case endpointAccessUpdate case loggingUpdate case versionUpdate + case vpcConfigUpdate case sdkUnknown(Swift.String) public static var allCases: [UpdateType] { @@ -10170,6 +10219,7 @@ extension EKSClientTypes { .endpointAccessUpdate, .loggingUpdate, .versionUpdate, + .vpcConfigUpdate, .sdkUnknown("") ] } @@ -10187,6 +10237,7 @@ extension EKSClientTypes { case .endpointAccessUpdate: return "EndpointAccessUpdate" case .loggingUpdate: return "LoggingUpdate" case .versionUpdate: return "VersionUpdate" + case .vpcConfigUpdate: return "VpcConfigUpdate" case let .sdkUnknown(s): return s } } diff --git a/Sources/Services/AWSEMR/EMRClient.swift b/Sources/Services/AWSEMR/EMRClient.swift index 21fd59092e2..6440c80e2de 100644 --- a/Sources/Services/AWSEMR/EMRClient.swift +++ b/Sources/Services/AWSEMR/EMRClient.swift @@ -67,7 +67,7 @@ public struct EMRClientLogHandlerFactory: ClientRuntime.SDKLogHandlerFactory { } extension EMRClient: EMRClientProtocol { - /// Adds an instance fleet to a running cluster. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x. + /// Adds an instance fleet to a running cluster. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x. /// /// - Parameter AddInstanceFleetInput : [no documentation found] /// @@ -249,7 +249,7 @@ extension EMRClient: EMRClientProtocol { return result } - /// Cancels a pending step or steps in a running cluster. Available only in Amazon EMR versions 4.8.0 and later, excluding version 5.0.0. A maximum of 256 steps are allowed in each CancelSteps request. CancelSteps is idempotent but asynchronous; it does not guarantee that a step will be canceled, even if the request is successfully submitted. When you use Amazon EMR releases 5.28.0 and later, you can cancel steps that are in a PENDING or RUNNING state. In earlier versions of Amazon EMR, you can only cancel steps that are in a PENDING state. + /// Cancels a pending step or steps in a running cluster. Available only in Amazon EMR versions 4.8.0 and higher, excluding version 5.0.0. A maximum of 256 steps are allowed in each CancelSteps request. CancelSteps is idempotent but asynchronous; it does not guarantee that a step will be canceled, even if the request is successfully submitted. When you use Amazon EMR releases 5.28.0 and higher, you can cancel steps that are in a PENDING or RUNNING state. In earlier versions of Amazon EMR, you can only cancel steps that are in a PENDING state. /// /// - Parameter CancelStepsInput : The input argument to the [CancelSteps] operation. /// @@ -1210,7 +1210,7 @@ extension EMRClient: EMRClientProtocol { return result } - /// Lists all available details about the instance fleets in a cluster. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// Lists all available details about the instance fleets in a cluster. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. /// /// - Parameter ListInstanceFleetsInput : [no documentation found] /// @@ -1716,7 +1716,7 @@ extension EMRClient: EMRClientProtocol { return result } - /// Modifies the target On-Demand and target Spot capacities for the instance fleet with the specified InstanceFleetID within the cluster specified using ClusterID. The call either succeeds or fails atomically. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// Modifies the target On-Demand and target Spot capacities for the instance fleet with the specified InstanceFleetID within the cluster specified using ClusterID. The call either succeeds or fails atomically. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. /// /// - Parameter ModifyInstanceFleetInput : [no documentation found] /// @@ -1847,7 +1847,7 @@ extension EMRClient: EMRClientProtocol { return result } - /// Auto-termination is supported in Amazon EMR releases 5.30.0 and 6.1.0 and later. For more information, see [Using an auto-termination policy](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-auto-termination-policy.html). Creates or updates an auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. For alternative cluster termination options, see [Control cluster termination](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html). + /// Auto-termination is supported in Amazon EMR releases 5.30.0 and 6.1.0 and higher. For more information, see [Using an auto-termination policy](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-auto-termination-policy.html). Creates or updates an auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. For alternative cluster termination options, see [Control cluster termination](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html). /// /// - Parameter PutAutoTerminationPolicyInput : [no documentation found] /// @@ -2139,7 +2139,7 @@ extension EMRClient: EMRClientProtocol { return result } - /// RunJobFlow creates and starts running a new cluster (job flow). The cluster runs the steps specified. After the steps complete, the cluster stops and the HDFS partition is lost. To prevent loss of data, configure the last step of the job flow to store results in Amazon S3. If the [JobFlowInstancesConfig]KeepJobFlowAliveWhenNoSteps parameter is set to TRUE, the cluster transitions to the WAITING state rather than shutting down after the steps have completed. For additional protection, you can set the [JobFlowInstancesConfig]TerminationProtected parameter to TRUE to lock the cluster and prevent it from being terminated by API call, user intervention, or in the event of a job flow error. A maximum of 256 steps are allowed in each job flow. If your cluster is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using the SSH shell to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For long-running clusters, we recommend that you periodically store your results. The instance fleets configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. The RunJobFlow request can contain InstanceFleets parameters or InstanceGroups parameters, but not both. + /// RunJobFlow creates and starts running a new cluster (job flow). The cluster runs the steps specified. After the steps complete, the cluster stops and the HDFS partition is lost. To prevent loss of data, configure the last step of the job flow to store results in Amazon S3. If the [JobFlowInstancesConfig]KeepJobFlowAliveWhenNoSteps parameter is set to TRUE, the cluster transitions to the WAITING state rather than shutting down after the steps have completed. For additional protection, you can set the [JobFlowInstancesConfig]TerminationProtected parameter to TRUE to lock the cluster and prevent it from being terminated by API call, user intervention, or in the event of a job flow error. A maximum of 256 steps are allowed in each job flow. If your cluster is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using the SSH shell to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For long-running clusters, we recommend that you periodically store your results. The instance fleets configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. The RunJobFlow request can contain InstanceFleets parameters or InstanceGroups parameters, but not both. /// /// - Parameter RunJobFlowInput : Input to the [RunJobFlow] operation. /// diff --git a/Sources/Services/AWSEMR/EMRClientProtocol.swift b/Sources/Services/AWSEMR/EMRClientProtocol.swift index 829ce93e42d..ea7ee8fca8f 100644 --- a/Sources/Services/AWSEMR/EMRClientProtocol.swift +++ b/Sources/Services/AWSEMR/EMRClientProtocol.swift @@ -4,7 +4,7 @@ import ClientRuntime /// Amazon EMR is a web service that makes it easier to process large amounts of data efficiently. Amazon EMR uses Hadoop processing combined with several Amazon Web Services services to do tasks such as web indexing, data mining, log file analysis, machine learning, scientific simulation, and data warehouse management. public protocol EMRClientProtocol { - /// Adds an instance fleet to a running cluster. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x. + /// Adds an instance fleet to a running cluster. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x. /// /// - Parameter AddInstanceFleetInput : [no documentation found] /// @@ -50,7 +50,7 @@ public protocol EMRClientProtocol { /// - `InternalServerException` : This exception occurs when there is an internal failure in the Amazon EMR service. /// - `InvalidRequestException` : This exception occurs when there is something wrong with user input. func addTags(input: AddTagsInput) async throws -> AddTagsOutput - /// Cancels a pending step or steps in a running cluster. Available only in Amazon EMR versions 4.8.0 and later, excluding version 5.0.0. A maximum of 256 steps are allowed in each CancelSteps request. CancelSteps is idempotent but asynchronous; it does not guarantee that a step will be canceled, even if the request is successfully submitted. When you use Amazon EMR releases 5.28.0 and later, you can cancel steps that are in a PENDING or RUNNING state. In earlier versions of Amazon EMR, you can only cancel steps that are in a PENDING state. + /// Cancels a pending step or steps in a running cluster. Available only in Amazon EMR versions 4.8.0 and higher, excluding version 5.0.0. A maximum of 256 steps are allowed in each CancelSteps request. CancelSteps is idempotent but asynchronous; it does not guarantee that a step will be canceled, even if the request is successfully submitted. When you use Amazon EMR releases 5.28.0 and higher, you can cancel steps that are in a PENDING or RUNNING state. In earlier versions of Amazon EMR, you can only cancel steps that are in a PENDING state. /// /// - Parameter CancelStepsInput : The input argument to the [CancelSteps] operation. /// @@ -297,7 +297,7 @@ public protocol EMRClientProtocol { /// - `InternalServerException` : This exception occurs when there is an internal failure in the Amazon EMR service. /// - `InvalidRequestException` : This exception occurs when there is something wrong with user input. func listClusters(input: ListClustersInput) async throws -> ListClustersOutput - /// Lists all available details about the instance fleets in a cluster. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// Lists all available details about the instance fleets in a cluster. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. /// /// - Parameter ListInstanceFleetsInput : [no documentation found] /// @@ -429,7 +429,7 @@ public protocol EMRClientProtocol { /// - `InternalServerError` : Indicates that an error occurred while processing the request and that the request was not completed. /// - `InvalidRequestException` : This exception occurs when there is something wrong with user input. func modifyCluster(input: ModifyClusterInput) async throws -> ModifyClusterOutput - /// Modifies the target On-Demand and target Spot capacities for the instance fleet with the specified InstanceFleetID within the cluster specified using ClusterID. The call either succeeds or fails atomically. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// Modifies the target On-Demand and target Spot capacities for the instance fleet with the specified InstanceFleetID within the cluster specified using ClusterID. The call either succeeds or fails atomically. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. /// /// - Parameter ModifyInstanceFleetInput : [no documentation found] /// @@ -458,7 +458,7 @@ public protocol EMRClientProtocol { /// /// - Returns: `PutAutoScalingPolicyOutput` : [no documentation found] func putAutoScalingPolicy(input: PutAutoScalingPolicyInput) async throws -> PutAutoScalingPolicyOutput - /// Auto-termination is supported in Amazon EMR releases 5.30.0 and 6.1.0 and later. For more information, see [Using an auto-termination policy](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-auto-termination-policy.html). Creates or updates an auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. For alternative cluster termination options, see [Control cluster termination](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html). + /// Auto-termination is supported in Amazon EMR releases 5.30.0 and 6.1.0 and higher. For more information, see [Using an auto-termination policy](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-auto-termination-policy.html). Creates or updates an auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. For alternative cluster termination options, see [Control cluster termination](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html). /// /// - Parameter PutAutoTerminationPolicyInput : [no documentation found] /// @@ -512,7 +512,7 @@ public protocol EMRClientProtocol { /// - `InternalServerException` : This exception occurs when there is an internal failure in the Amazon EMR service. /// - `InvalidRequestException` : This exception occurs when there is something wrong with user input. func removeTags(input: RemoveTagsInput) async throws -> RemoveTagsOutput - /// RunJobFlow creates and starts running a new cluster (job flow). The cluster runs the steps specified. After the steps complete, the cluster stops and the HDFS partition is lost. To prevent loss of data, configure the last step of the job flow to store results in Amazon S3. If the [JobFlowInstancesConfig]KeepJobFlowAliveWhenNoSteps parameter is set to TRUE, the cluster transitions to the WAITING state rather than shutting down after the steps have completed. For additional protection, you can set the [JobFlowInstancesConfig]TerminationProtected parameter to TRUE to lock the cluster and prevent it from being terminated by API call, user intervention, or in the event of a job flow error. A maximum of 256 steps are allowed in each job flow. If your cluster is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using the SSH shell to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For long-running clusters, we recommend that you periodically store your results. The instance fleets configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. The RunJobFlow request can contain InstanceFleets parameters or InstanceGroups parameters, but not both. + /// RunJobFlow creates and starts running a new cluster (job flow). The cluster runs the steps specified. After the steps complete, the cluster stops and the HDFS partition is lost. To prevent loss of data, configure the last step of the job flow to store results in Amazon S3. If the [JobFlowInstancesConfig]KeepJobFlowAliveWhenNoSteps parameter is set to TRUE, the cluster transitions to the WAITING state rather than shutting down after the steps have completed. For additional protection, you can set the [JobFlowInstancesConfig]TerminationProtected parameter to TRUE to lock the cluster and prevent it from being terminated by API call, user intervention, or in the event of a job flow error. A maximum of 256 steps are allowed in each job flow. If your cluster is long-running (such as a Hive data warehouse) or complex, you may require more than 256 steps to process your data. You can bypass the 256-step limitation in various ways, including using the SSH shell to connect to the master node and submitting queries directly to the software running on the master node, such as Hive and Hadoop. For long-running clusters, we recommend that you periodically store your results. The instance fleets configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. The RunJobFlow request can contain InstanceFleets parameters or InstanceGroups parameters, but not both. /// /// - Parameter RunJobFlowInput : Input to the [RunJobFlow] operation. /// diff --git a/Sources/Services/AWSEMR/models/Models.swift b/Sources/Services/AWSEMR/models/Models.swift index cf013af17ce..e20128fc492 100644 --- a/Sources/Services/AWSEMR/models/Models.swift +++ b/Sources/Services/AWSEMR/models/Models.swift @@ -669,7 +669,7 @@ extension EMRClientTypes.Application: Swift.Codable { } extension EMRClientTypes { - /// With Amazon EMR release version 4.0 and later, the only accepted parameter is the application name. To pass arguments to applications, you use configuration classifications specified using configuration JSON objects. For more information, see [Configuring Applications](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html). With earlier Amazon EMR releases, the application is any Amazon or third-party software that you can add to the cluster. This structure contains a list of strings that indicates the software to use with the cluster and accepts a user argument list. Amazon EMR accepts and forwards the argument list to the corresponding installation script as bootstrap action argument. + /// With Amazon EMR release version 4.0 and higher, the only accepted parameter is the application name. To pass arguments to applications, you use configuration classifications specified using configuration JSON objects. For more information, see [Configuring Applications](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html). With earlier Amazon EMR releases, the application is any Amazon or third-party software that you can add to the cluster. This structure contains a list of strings that indicates the software to use with the cluster and accepts a user argument list. Amazon EMR accepts and forwards the argument list to the corresponding installation script as bootstrap action argument. public struct Application: Swift.Equatable { /// This option is for advanced users only. This is meta information about third-party applications that third-party vendors use for testing purposes. public var additionalInfo: [Swift.String:Swift.String]? @@ -1331,7 +1331,7 @@ extension EMRClientTypes.CancelStepsInfo: Swift.Codable { } extension EMRClientTypes { - /// Specification of the status of a CancelSteps request. Available only in Amazon EMR version 4.8.0 and later, excluding version 5.0.0. + /// Specification of the status of a CancelSteps request. Available only in Amazon EMR version 4.8.0 and higher, excluding version 5.0.0. public struct CancelStepsInfo: Swift.Equatable { /// The reason for the failure if the CancelSteps request fails. public var reason: Swift.String? @@ -1673,7 +1673,9 @@ extension EMRClientTypes.Cluster: Swift.Codable { case clusterArn = "ClusterArn" case configurations = "Configurations" case customAmiId = "CustomAmiId" + case ebsRootVolumeIops = "EbsRootVolumeIops" case ebsRootVolumeSize = "EbsRootVolumeSize" + case ebsRootVolumeThroughput = "EbsRootVolumeThroughput" case ec2InstanceAttributes = "Ec2InstanceAttributes" case id = "Id" case instanceCollectionType = "InstanceCollectionType" @@ -1726,9 +1728,15 @@ extension EMRClientTypes.Cluster: Swift.Codable { if let customAmiId = self.customAmiId { try encodeContainer.encode(customAmiId, forKey: .customAmiId) } + if let ebsRootVolumeIops = self.ebsRootVolumeIops { + try encodeContainer.encode(ebsRootVolumeIops, forKey: .ebsRootVolumeIops) + } if let ebsRootVolumeSize = self.ebsRootVolumeSize { try encodeContainer.encode(ebsRootVolumeSize, forKey: .ebsRootVolumeSize) } + if let ebsRootVolumeThroughput = self.ebsRootVolumeThroughput { + try encodeContainer.encode(ebsRootVolumeThroughput, forKey: .ebsRootVolumeThroughput) + } if let ec2InstanceAttributes = self.ec2InstanceAttributes { try encodeContainer.encode(ec2InstanceAttributes, forKey: .ec2InstanceAttributes) } @@ -1909,6 +1917,10 @@ extension EMRClientTypes.Cluster: Swift.Codable { placementGroups = placementGroupsDecoded0 let osReleaseLabelDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .osReleaseLabel) osReleaseLabel = osReleaseLabelDecoded + let ebsRootVolumeIopsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .ebsRootVolumeIops) + ebsRootVolumeIops = ebsRootVolumeIopsDecoded + let ebsRootVolumeThroughputDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .ebsRootVolumeThroughput) + ebsRootVolumeThroughput = ebsRootVolumeThroughputDecoded } } @@ -1923,21 +1935,25 @@ extension EMRClientTypes { public var autoTerminate: Swift.Bool? /// The Amazon Resource Name of the cluster. public var clusterArn: Swift.String? - /// Applies only to Amazon EMR releases 4.x and later. The list of configurations that are supplied to the Amazon EMR cluster. + /// Applies only to Amazon EMR releases 4.x and higher. The list of configurations that are supplied to the Amazon EMR cluster. public var configurations: [EMRClientTypes.Configuration]? - /// Available only in Amazon EMR releases 5.7.0 and later. The ID of a custom Amazon EBS-backed Linux AMI if the cluster uses a custom AMI. + /// Available only in Amazon EMR releases 5.7.0 and higher. The ID of a custom Amazon EBS-backed Linux AMI if the cluster uses a custom AMI. public var customAmiId: Swift.String? - /// The size, in GiB, of the Amazon EBS root device volume of the Linux AMI that is used for each Amazon EC2 instance. Available in Amazon EMR releases 4.x and later. + /// The IOPS, of the Amazon EBS root device volume for the Linux AMI that each Amazon EC2 instance uses. Available in Amazon EMR releases 6.15.0 and higher. + public var ebsRootVolumeIops: Swift.Int? + /// The size, in GiB, of the Amazon EBS root device volume for the Linux AMI that each Amazon EC2 instance uses. Available in Amazon EMR releases 4.x and higher. public var ebsRootVolumeSize: Swift.Int? + /// The throughput, in MiB/s, of the Amazon EBS root device volume for the Linux AMI that each Amazon EC2 instance uses. Available in Amazon EMR releases 6.15.0 and higher. + public var ebsRootVolumeThroughput: Swift.Int? /// Provides information about the Amazon EC2 instances in a cluster grouped by category. For example, key name, subnet ID, IAM instance profile, and so on. public var ec2InstanceAttributes: EMRClientTypes.Ec2InstanceAttributes? /// The unique identifier for the cluster. public var id: Swift.String? - /// The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. The instance group configuration of the cluster. A value of INSTANCE_GROUP indicates a uniform instance group configuration. A value of INSTANCE_FLEET indicates an instance fleets configuration. + /// The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. The instance group configuration of the cluster. A value of INSTANCE_GROUP indicates a uniform instance group configuration. A value of INSTANCE_FLEET indicates an instance fleets configuration. public var instanceCollectionType: EMRClientTypes.InstanceCollectionType? /// Attributes for Kerberos configuration when Kerberos authentication is enabled using a security configuration. For more information see [Use Kerberos Authentication](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html) in the Amazon EMR Management Guide. public var kerberosAttributes: EMRClientTypes.KerberosAttributes? - /// The KMS key used for encrypting log files. This attribute is only available with Amazon EMR 5.30.0 and later, excluding Amazon EMR 6.0.0. + /// The KMS key used for encrypting log files. This attribute is only available with Amazon EMR 5.30.0 and higher, excluding Amazon EMR 6.0.0. public var logEncryptionKmsKeyId: Swift.String? /// The path to the Amazon S3 location where logs for this cluster are stored. public var logUri: Swift.String? @@ -1953,7 +1969,7 @@ extension EMRClientTypes { public var outpostArn: Swift.String? /// Placement group configured for an Amazon EMR cluster. public var placementGroups: [EMRClientTypes.PlacementGroupConfig]? - /// The Amazon EMR release label, which determines the version of open-source application packages installed on the cluster. Release labels are in the form emr-x.x.x, where x.x.x is an Amazon EMR release version such as emr-5.14.0. For more information about Amazon EMR release versions and included application versions and features, see [https://docs.aws.amazon.com/emr/latest/ReleaseGuide/](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/). The release label applies only to Amazon EMR releases version 4.0 and later. Earlier versions use AmiVersion. + /// The Amazon EMR release label, which determines the version of open-source application packages installed on the cluster. Release labels are in the form emr-x.x.x, where x.x.x is an Amazon EMR release version such as emr-5.14.0. For more information about Amazon EMR release versions and included application versions and features, see [https://docs.aws.amazon.com/emr/latest/ReleaseGuide/](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/). The release label applies only to Amazon EMR releases version 4.0 and higher. Earlier versions use AmiVersion. public var releaseLabel: Swift.String? /// Applies only when CustomAmiID is used. Specifies the type of updates that the Amazon Linux AMI package repositories apply when an instance boots using the AMI. public var repoUpgradeOnBoot: EMRClientTypes.RepoUpgradeOnBoot? @@ -1961,7 +1977,7 @@ extension EMRClientTypes { public var requestedAmiVersion: Swift.String? /// The AMI version running on this cluster. public var runningAmiVersion: Swift.String? - /// The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and later and is the default for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR adds nodes to a deny list and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION is available only in Amazon EMR releases 4.1.0 and later, and is the default for versions of Amazon EMR earlier than 5.1.0. + /// The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and higher and is the default for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR adds nodes to a deny list and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION is available only in Amazon EMR releases 4.1.0 and higher, and is the default for versions of Amazon EMR earlier than 5.1.0. public var scaleDownBehavior: EMRClientTypes.ScaleDownBehavior? /// The name of the security configuration applied to the cluster. public var securityConfiguration: Swift.String? @@ -1985,7 +2001,9 @@ extension EMRClientTypes { clusterArn: Swift.String? = nil, configurations: [EMRClientTypes.Configuration]? = nil, customAmiId: Swift.String? = nil, + ebsRootVolumeIops: Swift.Int? = nil, ebsRootVolumeSize: Swift.Int? = nil, + ebsRootVolumeThroughput: Swift.Int? = nil, ec2InstanceAttributes: EMRClientTypes.Ec2InstanceAttributes? = nil, id: Swift.String? = nil, instanceCollectionType: EMRClientTypes.InstanceCollectionType? = nil, @@ -2018,7 +2036,9 @@ extension EMRClientTypes { self.clusterArn = clusterArn self.configurations = configurations self.customAmiId = customAmiId + self.ebsRootVolumeIops = ebsRootVolumeIops self.ebsRootVolumeSize = ebsRootVolumeSize + self.ebsRootVolumeThroughput = ebsRootVolumeThroughput self.ec2InstanceAttributes = ec2InstanceAttributes self.id = id self.instanceCollectionType = instanceCollectionType @@ -2681,7 +2701,7 @@ extension EMRClientTypes.Configuration: Swift.Codable { } extension EMRClientTypes { - /// Amazon EMR releases 4.x or later. An optional configuration specification to be used when provisioning cluster instances, which can include configurations for applications and software bundled with Amazon EMR. A configuration consists of a classification, properties, and optional nested configurations. A classification refers to an application-specific configuration file. Properties are the settings you want to change in that file. For more information, see [Configuring Applications](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html). + /// Amazon EMR releases 4.x or higher. An optional configuration specification to be used when provisioning cluster instances, which can include configurations for applications and software bundled with Amazon EMR. A configuration consists of a classification, properties, and optional nested configurations. A classification refers to an application-specific configuration file. Properties are the settings you want to change in that file. For more information, see [Configuring Applications](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html). public struct Configuration: Swift.Equatable { /// The classification within a configuration. public var classification: Swift.String? @@ -5141,7 +5161,7 @@ extension GetBlockPublicAccessConfigurationOutput: ClientRuntime.HttpResponseBin } public struct GetBlockPublicAccessConfigurationOutput: Swift.Equatable { - /// A configuration for Amazon EMR block public access. The configuration applies to all clusters created in your account for the current Region. The configuration specifies whether block public access is enabled. If block public access is enabled, security groups associated with the cluster cannot have rules that allow inbound traffic from 0.0.0.0/0 or ::/0 on a port, unless the port is specified as an exception using PermittedPublicSecurityGroupRuleRanges in the BlockPublicAccessConfiguration. By default, Port 22 (SSH) is an exception, and public access is allowed on this port. You can change this by updating the block public access configuration to remove the exception. For accounts that created clusters in a Region before November 25, 2019, block public access is disabled by default in that Region. To use this feature, you must manually enable and configure it. For accounts that did not create an Amazon EMR cluster in a Region before this date, block public access is enabled by default in that Region. + /// A configuration for Amazon EMR block public access. The configuration applies to all clusters created in your account for the current Region. The configuration specifies whether block public access is enabled. If block public access is enabled, security groups associated with the cluster cannot have rules that allow inbound traffic from 0.0.0.0/0 or ::/0 on a port, unless the port is specified as an exception using PermittedPublicSecurityGroupRuleRanges in the BlockPublicAccessConfiguration. By default, Port 22 (SSH) is an exception, and public access is allowed on this port. To change this, update the block public access configuration to remove the exception. For accounts that created clusters in a Region before November 25, 2019, block public access is disabled by default in that Region. To use this feature, you must manually enable and configure it. For accounts that did not create an Amazon EMR cluster in a Region before this date, block public access is enabled by default in that Region. /// This member is required. public var blockPublicAccessConfiguration: EMRClientTypes.BlockPublicAccessConfiguration? /// Properties that describe the Amazon Web Services principal that created the BlockPublicAccessConfiguration using the PutBlockPublicAccessConfiguration action as well as the date and time that the configuration was created. Each time a configuration for block public access is updated, Amazon EMR updates this metadata. @@ -6040,7 +6060,7 @@ extension EMRClientTypes.InstanceFleet: Swift.Codable { } extension EMRClientTypes { - /// Describes an instance fleet, which is a group of Amazon EC2 instances that host a particular node type (master, core, or task) in an Amazon EMR cluster. Instance fleets can consist of a mix of instance types and On-Demand and Spot Instances, which are provisioned to meet a defined target capacity. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// Describes an instance fleet, which is a group of Amazon EC2 instances that host a particular node type (master, core, or task) in an Amazon EMR cluster. Instance fleets can consist of a mix of instance types and On-Demand and Spot Instances, which are provisioned to meet a defined target capacity. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. public struct InstanceFleet: Swift.Equatable { /// The unique identifier of the instance fleet. public var id: Swift.String? @@ -6163,7 +6183,7 @@ extension EMRClientTypes.InstanceFleetConfig: Swift.Codable { } extension EMRClientTypes { - /// The configuration that defines an instance fleet. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// The configuration that defines an instance fleet. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. public struct InstanceFleetConfig: Swift.Equatable { /// The node type that the instance fleet hosts. Valid values are MASTER, CORE, and TASK. /// This member is required. @@ -6241,7 +6261,7 @@ extension EMRClientTypes.InstanceFleetModifyConfig: Swift.Codable { } extension EMRClientTypes { - /// Configuration parameters for an instance fleet modification request. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// Configuration parameters for an instance fleet modification request. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. public struct InstanceFleetModifyConfig: Swift.Equatable { /// A unique identifier for the instance fleet. /// This member is required. @@ -6295,9 +6315,9 @@ extension EMRClientTypes.InstanceFleetProvisioningSpecifications: Swift.Codable } extension EMRClientTypes { - /// The launch specification for Spot Instances in the fleet, which determines the defined duration, provisioning timeout behavior, and allocation strategy. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. On-Demand and Spot instance allocation strategies are available in Amazon EMR releases 5.12.1 and later. + /// The launch specification for Spot Instances in the fleet, which determines the defined duration, provisioning timeout behavior, and allocation strategy. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. On-Demand and Spot instance allocation strategies are available in Amazon EMR releases 5.12.1 and higher. public struct InstanceFleetProvisioningSpecifications: Swift.Equatable { - /// The launch specification for On-Demand Instances in the instance fleet, which determines the allocation strategy. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. On-Demand Instances allocation strategy is available in Amazon EMR releases 5.12.1 and later. + /// The launch specification for On-Demand Instances in the instance fleet, which determines the allocation strategy. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. On-Demand Instances allocation strategy is available in Amazon EMR releases 5.12.1 and higher. public var onDemandSpecification: EMRClientTypes.OnDemandProvisioningSpecification? /// The launch specification for Spot instances in the fleet, which determines the defined duration, provisioning timeout behavior, and allocation strategy. public var spotSpecification: EMRClientTypes.SpotProvisioningSpecification? @@ -6432,7 +6452,7 @@ extension EMRClientTypes.InstanceFleetStateChangeReason: Swift.Codable { } extension EMRClientTypes { - /// Provides status change reason details for the instance fleet. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// Provides status change reason details for the instance fleet. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. public struct InstanceFleetStateChangeReason: Swift.Equatable { /// A code corresponding to the reason the state change occurred. public var code: EMRClientTypes.InstanceFleetStateChangeReasonCode? @@ -6521,7 +6541,7 @@ extension EMRClientTypes.InstanceFleetStatus: Swift.Codable { } extension EMRClientTypes { - /// The status of the instance fleet. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// The status of the instance fleet. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. public struct InstanceFleetStatus: Swift.Equatable { /// A code representing the instance fleet status. /// @@ -6590,7 +6610,7 @@ extension EMRClientTypes.InstanceFleetTimeline: Swift.Codable { } extension EMRClientTypes { - /// Provides historical timestamps for the instance fleet, including the time of creation, the time it became ready to run jobs, and the time of termination. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// Provides historical timestamps for the instance fleet, including the time of creation, the time it became ready to run jobs, and the time of termination. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. public struct InstanceFleetTimeline: Swift.Equatable { /// The time and date the instance fleet was created. public var creationDateTime: ClientRuntime.Date? @@ -6812,7 +6832,7 @@ extension EMRClientTypes { public var autoScalingPolicy: EMRClientTypes.AutoScalingPolicyDescription? /// If specified, indicates that the instance group uses Spot Instances. This is the maximum price you are willing to pay for Spot Instances. Specify OnDemandPrice to set the amount equal to the On-Demand price, or specify an amount in USD. public var bidPrice: Swift.String? - /// Amazon EMR releases 4.x or later. The list of configurations supplied for an Amazon EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task). + /// Amazon EMR releases 4.x or higher. The list of configurations supplied for an Amazon EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task). public var configurations: [EMRClientTypes.Configuration]? /// The version number of the requested configuration specification for this instance group. public var configurationsVersion: Swift.Int? @@ -6981,7 +7001,7 @@ extension EMRClientTypes { public var autoScalingPolicy: EMRClientTypes.AutoScalingPolicy? /// If specified, indicates that the instance group uses Spot Instances. This is the maximum price you are willing to pay for Spot Instances. Specify OnDemandPrice to set the amount equal to the On-Demand price, or specify an amount in USD. public var bidPrice: Swift.String? - /// Amazon EMR releases 4.x or later. The list of configurations supplied for an Amazon EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task). + /// Amazon EMR releases 4.x or higher. The list of configurations supplied for an Amazon EMR cluster instance group. You can specify a separate configuration for each instance group (master, core, and task). public var configurations: [EMRClientTypes.Configuration]? /// The custom AMI ID to use for the provisioned instance group. public var customAmiId: Swift.String? @@ -8027,7 +8047,7 @@ extension EMRClientTypes.InstanceTypeConfig: Swift.Codable { } extension EMRClientTypes { - /// An instance type configuration for each instance type in an instance fleet, which determines the Amazon EC2 instances Amazon EMR attempts to provision to fulfill On-Demand and Spot target capacities. When you use an allocation strategy, you can include a maximum of 30 instance type configurations for a fleet. For more information about how to use an allocation strategy, see [Configure Instance Fleets](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-instance-fleet.html). Without an allocation strategy, you may specify a maximum of five instance type configurations for a fleet. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// An instance type configuration for each instance type in an instance fleet, which determines the Amazon EC2 instances Amazon EMR attempts to provision to fulfill On-Demand and Spot target capacities. When you use an allocation strategy, you can include a maximum of 30 instance type configurations for a fleet. For more information about how to use an allocation strategy, see [Configure Instance Fleets](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-instance-fleet.html). Without an allocation strategy, you may specify a maximum of five instance type configurations for a fleet. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. public struct InstanceTypeConfig: Swift.Equatable { /// The bid price for each Amazon EC2 Spot Instance type as defined by InstanceType. Expressed in USD. If neither BidPrice nor BidPriceAsPercentageOfOnDemandPrice is provided, BidPriceAsPercentageOfOnDemandPrice defaults to 100%. public var bidPrice: Swift.String? @@ -8153,7 +8173,7 @@ extension EMRClientTypes.InstanceTypeSpecification: Swift.Codable { } extension EMRClientTypes { - /// The configuration specification for each instance type in an instance fleet. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// The configuration specification for each instance type in an instance fleet. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. public struct InstanceTypeSpecification: Swift.Equatable { /// The bid price for each Amazon EC2 Spot Instance type as defined by InstanceType. Expressed in USD. public var bidPrice: Swift.String? @@ -8481,7 +8501,7 @@ extension EMRClientTypes.JobFlowDetail: Swift.Codable { extension EMRClientTypes { /// A description of a cluster (job flow). public struct JobFlowDetail: Swift.Equatable { - /// Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use CustomAmiID. + /// Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases 4.0 and higher, ReleaseLabel is used. To specify a custom AMI, use CustomAmiID. public var amiVersion: Swift.String? /// An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole. The IAM role provides a way for the automatic scaling feature to get the required permissions it needs to launch and terminate Amazon EC2 instances in an instance group. public var autoScalingRole: Swift.String? @@ -8498,14 +8518,14 @@ extension EMRClientTypes { public var jobFlowId: Swift.String? /// The IAM role that was specified when the job flow was launched. The Amazon EC2 instances of the job flow assume this role. public var jobFlowRole: Swift.String? - /// The KMS key used for encrypting log files. This attribute is only available with Amazon EMR 5.30.0 and later, excluding 6.0.0. + /// The KMS key used for encrypting log files. This attribute is only available with Amazon EMR 5.30.0 and higher, excluding 6.0.0. public var logEncryptionKmsKeyId: Swift.String? /// The location in Amazon S3 where log files for the job are stored. public var logUri: Swift.String? /// The name of the job flow. /// This member is required. public var name: Swift.String? - /// The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and later and is the default for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR adds nodes to a deny list and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION available only in Amazon EMR releases 4.1.0 and later, and is the default for releases of Amazon EMR earlier than 5.1.0. + /// The way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and higher and is the default for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR adds nodes to a deny list and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION available only in Amazon EMR releases 4.1.0 and higher, and is the default for releases of Amazon EMR earlier than 5.1.0. public var scaleDownBehavior: EMRClientTypes.ScaleDownBehavior? /// The IAM role that is assumed by the Amazon EMR service to access Amazon Web Services resources on your behalf. public var serviceRole: Swift.String? @@ -8878,7 +8898,7 @@ extension EMRClientTypes { public var ec2KeyName: Swift.String? /// Applies to clusters that use the uniform instance group configuration. To launch the cluster in Amazon Virtual Private Cloud (Amazon VPC), set this parameter to the identifier of the Amazon VPC subnet where you want the cluster to launch. If you do not specify this value and your account supports EC2-Classic, the cluster launches in EC2-Classic. public var ec2SubnetId: Swift.String? - /// Applies to clusters that use the instance fleet configuration. When multiple Amazon EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances in the optimal subnet. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// Applies to clusters that use the instance fleet configuration. When multiple Amazon EC2 subnet IDs are specified, Amazon EMR evaluates them and launches instances in the optimal subnet. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. public var ec2SubnetIds: [Swift.String]? /// The identifier of the Amazon EC2 security group for the master node. If you specify EmrManagedMasterSecurityGroup, you must also specify EmrManagedSlaveSecurityGroup. public var emrManagedMasterSecurityGroup: Swift.String? @@ -8888,7 +8908,7 @@ extension EMRClientTypes { public var hadoopVersion: Swift.String? /// The number of Amazon EC2 instances in the cluster. public var instanceCount: Swift.Int? - /// The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. Describes the Amazon EC2 instances and instance configurations for clusters that use the instance fleet configuration. + /// The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. Describes the Amazon EC2 instances and instance configurations for clusters that use the instance fleet configuration. public var instanceFleets: [EMRClientTypes.InstanceFleetConfig]? /// Configuration for the instance groups in a cluster. public var instanceGroups: [EMRClientTypes.InstanceGroupConfig]? @@ -12171,7 +12191,7 @@ extension EMRClientTypes.OnDemandProvisioningSpecification: Swift.Codable { } extension EMRClientTypes { - /// The launch specification for On-Demand Instances in the instance fleet, which determines the allocation strategy. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. On-Demand Instances allocation strategy is available in Amazon EMR releases 5.12.1 and later. + /// The launch specification for On-Demand Instances in the instance fleet, which determines the allocation strategy. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. On-Demand Instances allocation strategy is available in Amazon EMR releases 5.12.1 and higher. public struct OnDemandProvisioningSpecification: Swift.Equatable { /// Specifies the strategy to use in launching On-Demand instance fleets. Currently, the only option is lowest-price (the default), which launches the lowest price first. /// This member is required. @@ -12472,7 +12492,7 @@ extension EMRClientTypes { public struct PlacementType: Swift.Equatable { /// The Amazon EC2 Availability Zone for the cluster. AvailabilityZone is used for uniform instance groups, while AvailabilityZones (plural) is used for instance fleets. public var availabilityZone: Swift.String? - /// When multiple Availability Zones are specified, Amazon EMR evaluates them and launches instances in the optimal Availability Zone. AvailabilityZones is used for instance fleets, while AvailabilityZone (singular) is used for uniform instance groups. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. + /// When multiple Availability Zones are specified, Amazon EMR evaluates them and launches instances in the optimal Availability Zone. AvailabilityZones is used for instance fleets, while AvailabilityZone (singular) is used for uniform instance groups. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. public var availabilityZones: [Swift.String]? public init( @@ -13351,7 +13371,9 @@ extension RunJobFlowInput: Swift.Encodable { case bootstrapActions = "BootstrapActions" case configurations = "Configurations" case customAmiId = "CustomAmiId" + case ebsRootVolumeIops = "EbsRootVolumeIops" case ebsRootVolumeSize = "EbsRootVolumeSize" + case ebsRootVolumeThroughput = "EbsRootVolumeThroughput" case instances = "Instances" case jobFlowRole = "JobFlowRole" case kerberosAttributes = "KerberosAttributes" @@ -13409,9 +13431,15 @@ extension RunJobFlowInput: Swift.Encodable { if let customAmiId = self.customAmiId { try encodeContainer.encode(customAmiId, forKey: .customAmiId) } + if let ebsRootVolumeIops = self.ebsRootVolumeIops { + try encodeContainer.encode(ebsRootVolumeIops, forKey: .ebsRootVolumeIops) + } if let ebsRootVolumeSize = self.ebsRootVolumeSize { try encodeContainer.encode(ebsRootVolumeSize, forKey: .ebsRootVolumeSize) } + if let ebsRootVolumeThroughput = self.ebsRootVolumeThroughput { + try encodeContainer.encode(ebsRootVolumeThroughput, forKey: .ebsRootVolumeThroughput) + } if let instances = self.instances { try encodeContainer.encode(instances, forKey: .instances) } @@ -13500,9 +13528,9 @@ extension RunJobFlowInput: ClientRuntime.URLPathProvider { public struct RunJobFlowInput: Swift.Equatable { /// A JSON string for selecting additional features. public var additionalInfo: Swift.String? - /// Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use CustomAmiID. + /// Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases 4.0 and higher, ReleaseLabel is used. To specify a custom AMI, use CustomAmiID. public var amiVersion: Swift.String? - /// Applies to Amazon EMR releases 4.0 and later. A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the [Amazon EMRRelease Guide](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/). + /// Applies to Amazon EMR releases 4.0 and higher. A case-insensitive list of applications for Amazon EMR to install and configure when launching the cluster. For a list of applications available for each Amazon EMR release version, see the [Amazon EMRRelease Guide](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/). public var applications: [EMRClientTypes.Application]? /// An IAM role for automatic scaling policies. The default role is EMR_AutoScaling_DefaultRole. The IAM role provides permissions that the automatic scaling feature requires to launch and terminate Amazon EC2 instances in an instance group. public var autoScalingRole: Swift.String? @@ -13510,12 +13538,16 @@ public struct RunJobFlowInput: Swift.Equatable { public var autoTerminationPolicy: EMRClientTypes.AutoTerminationPolicy? /// A list of bootstrap actions to run before Hadoop starts on the cluster nodes. public var bootstrapActions: [EMRClientTypes.BootstrapActionConfig]? - /// For Amazon EMR releases 4.0 and later. The list of configurations supplied for the Amazon EMR cluster that you are creating. + /// For Amazon EMR releases 4.0 and higher. The list of configurations supplied for the Amazon EMR cluster that you are creating. public var configurations: [EMRClientTypes.Configuration]? - /// Available only in Amazon EMR releases 5.7.0 and later. The ID of a custom Amazon EBS-backed Linux AMI. If specified, Amazon EMR uses this AMI when it launches cluster Amazon EC2 instances. For more information about custom AMIs in Amazon EMR, see [Using a Custom AMI](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html) in the Amazon EMR Management Guide. If omitted, the cluster uses the base Linux AMI for the ReleaseLabel specified. For Amazon EMR releases 2.x and 3.x, use AmiVersion instead. For information about creating a custom AMI, see [Creating an Amazon EBS-Backed Linux AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html) in the Amazon Elastic Compute Cloud User Guide for Linux Instances. For information about finding an AMI ID, see [Finding a Linux AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html). + /// Available only in Amazon EMR releases 5.7.0 and higher. The ID of a custom Amazon EBS-backed Linux AMI. If specified, Amazon EMR uses this AMI when it launches cluster Amazon EC2 instances. For more information about custom AMIs in Amazon EMR, see [Using a Custom AMI](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html) in the Amazon EMR Management Guide. If omitted, the cluster uses the base Linux AMI for the ReleaseLabel specified. For Amazon EMR releases 2.x and 3.x, use AmiVersion instead. For information about creating a custom AMI, see [Creating an Amazon EBS-Backed Linux AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html) in the Amazon Elastic Compute Cloud User Guide for Linux Instances. For information about finding an AMI ID, see [Finding a Linux AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html). public var customAmiId: Swift.String? - /// The size, in GiB, of the Amazon EBS root device volume of the Linux AMI that is used for each Amazon EC2 instance. Available in Amazon EMR releases 4.x and later. + /// The IOPS for the Amazon EBS root device volume for the Linux AMI that each Amazon EC2 instance uses. Available in Amazon EMR releases 6.15.0 and higher. + public var ebsRootVolumeIops: Swift.Int? + /// The size, in GiB, of the Amazon EBS root device volume for the Linux AMI that each Amazon EC2 instance uses. Available in Amazon EMR releases 4.x and higher. public var ebsRootVolumeSize: Swift.Int? + /// The throughput, in MiB/s, of the Amazon EBS root device volume for the Linux AMI that each Amazon EC2 instance uses. Available in Amazon EMR releases 6.15.0 and higher. + public var ebsRootVolumeThroughput: Swift.Int? /// A specification of the number and type of Amazon EC2 instances. /// This member is required. public var instances: EMRClientTypes.JobFlowInstancesConfig? @@ -13523,7 +13555,7 @@ public struct RunJobFlowInput: Swift.Equatable { public var jobFlowRole: Swift.String? /// Attributes for Kerberos configuration when Kerberos authentication is enabled using a security configuration. For more information see [Use Kerberos Authentication](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos.html) in the Amazon EMR Management Guide. public var kerberosAttributes: EMRClientTypes.KerberosAttributes? - /// The KMS key used for encrypting log files. If a value is not provided, the logs remain encrypted by AES-256. This attribute is only available with Amazon EMR releases 5.30.0 and later, excluding Amazon EMR 6.0.0. + /// The KMS key used for encrypting log files. If a value is not provided, the logs remain encrypted by AES-256. This attribute is only available with Amazon EMR releases 5.30.0 and higher, excluding Amazon EMR 6.0.0. public var logEncryptionKmsKeyId: Swift.String? /// The location in Amazon S3 to write the log files of the job flow. If a value is not provided, logs are not created. public var logUri: Swift.String? @@ -13532,7 +13564,7 @@ public struct RunJobFlowInput: Swift.Equatable { /// The name of the job flow. /// This member is required. public var name: Swift.String? - /// For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later, use Applications. A list of strings that indicates third-party software to use with the job flow that accepts a user argument list. Amazon EMR accepts and forwards the argument list to the corresponding installation script as bootstrap action arguments. For more information, see "Launch a Job Flow on the MapR Distribution for Hadoop" in the [Amazon EMR Developer Guide](https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf). Supported values are: + /// For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and higher, use Applications. A list of strings that indicates third-party software to use with the job flow that accepts a user argument list. Amazon EMR accepts and forwards the argument list to the corresponding installation script as bootstrap action arguments. For more information, see "Launch a Job Flow on the MapR Distribution for Hadoop" in the [Amazon EMR Developer Guide](https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf). Supported values are: /// /// * "mapr-m3" - launch the cluster using MapR M3 Edition. /// @@ -13554,11 +13586,11 @@ public struct RunJobFlowInput: Swift.Equatable { public var osReleaseLabel: Swift.String? /// The specified placement group configuration for an Amazon EMR cluster. public var placementGroupConfigs: [EMRClientTypes.PlacementGroupConfig]? - /// The Amazon EMR release label, which determines the version of open-source application packages installed on the cluster. Release labels are in the form emr-x.x.x, where x.x.x is an Amazon EMR release version such as emr-5.14.0. For more information about Amazon EMR release versions and included application versions and features, see [https://docs.aws.amazon.com/emr/latest/ReleaseGuide/](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/). The release label applies only to Amazon EMR releases version 4.0 and later. Earlier versions use AmiVersion. + /// The Amazon EMR release label, which determines the version of open-source application packages installed on the cluster. Release labels are in the form emr-x.x.x, where x.x.x is an Amazon EMR release version such as emr-5.14.0. For more information about Amazon EMR release versions and included application versions and features, see [https://docs.aws.amazon.com/emr/latest/ReleaseGuide/](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/). The release label applies only to Amazon EMR releases version 4.0 and higher. Earlier versions use AmiVersion. public var releaseLabel: Swift.String? /// Applies only when CustomAmiID is used. Specifies which updates from the Amazon Linux AMI package repositories to apply automatically when the instance boots using the AMI. If omitted, the default is SECURITY, which indicates that only security updates are applied. If NONE is specified, no updates are applied, and all updates must be applied manually. public var repoUpgradeOnBoot: EMRClientTypes.RepoUpgradeOnBoot? - /// Specifies the way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and later and is the default for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR adds nodes to a deny list and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION available only in Amazon EMR releases 4.1.0 and later, and is the default for releases of Amazon EMR earlier than 5.1.0. + /// Specifies the way that individual Amazon EC2 instances terminate when an automatic scale-in activity occurs or an instance group is resized. TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of when the request to terminate the instance was submitted. This option is only available with Amazon EMR 5.1.0 and higher and is the default for clusters created using that version. TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR adds nodes to a deny list and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION available only in Amazon EMR releases 4.1.0 and higher, and is the default for releases of Amazon EMR earlier than 5.1.0. public var scaleDownBehavior: EMRClientTypes.ScaleDownBehavior? /// The name of a security configuration to apply to the cluster. public var securityConfiguration: Swift.String? @@ -13568,7 +13600,7 @@ public struct RunJobFlowInput: Swift.Equatable { public var stepConcurrencyLevel: Swift.Int? /// A list of steps to run. public var steps: [EMRClientTypes.StepConfig]? - /// For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later, use Applications. A list of strings that indicates third-party software to use. For more information, see the [Amazon EMR Developer Guide](https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf). Currently supported values are: + /// For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and higher, use Applications. A list of strings that indicates third-party software to use. For more information, see the [Amazon EMR Developer Guide](https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf). Currently supported values are: /// /// * "mapr-m3" - launch the job flow using MapR M3 Edition. /// @@ -13588,7 +13620,9 @@ public struct RunJobFlowInput: Swift.Equatable { bootstrapActions: [EMRClientTypes.BootstrapActionConfig]? = nil, configurations: [EMRClientTypes.Configuration]? = nil, customAmiId: Swift.String? = nil, + ebsRootVolumeIops: Swift.Int? = nil, ebsRootVolumeSize: Swift.Int? = nil, + ebsRootVolumeThroughput: Swift.Int? = nil, instances: EMRClientTypes.JobFlowInstancesConfig? = nil, jobFlowRole: Swift.String? = nil, kerberosAttributes: EMRClientTypes.KerberosAttributes? = nil, @@ -13619,7 +13653,9 @@ public struct RunJobFlowInput: Swift.Equatable { self.bootstrapActions = bootstrapActions self.configurations = configurations self.customAmiId = customAmiId + self.ebsRootVolumeIops = ebsRootVolumeIops self.ebsRootVolumeSize = ebsRootVolumeSize + self.ebsRootVolumeThroughput = ebsRootVolumeThroughput self.instances = instances self.jobFlowRole = jobFlowRole self.kerberosAttributes = kerberosAttributes @@ -13673,6 +13709,8 @@ struct RunJobFlowInputBody: Swift.Equatable { let placementGroupConfigs: [EMRClientTypes.PlacementGroupConfig]? let autoTerminationPolicy: EMRClientTypes.AutoTerminationPolicy? let osReleaseLabel: Swift.String? + let ebsRootVolumeIops: Swift.Int? + let ebsRootVolumeThroughput: Swift.Int? } extension RunJobFlowInputBody: Swift.Decodable { @@ -13685,7 +13723,9 @@ extension RunJobFlowInputBody: Swift.Decodable { case bootstrapActions = "BootstrapActions" case configurations = "Configurations" case customAmiId = "CustomAmiId" + case ebsRootVolumeIops = "EbsRootVolumeIops" case ebsRootVolumeSize = "EbsRootVolumeSize" + case ebsRootVolumeThroughput = "EbsRootVolumeThroughput" case instances = "Instances" case jobFlowRole = "JobFlowRole" case kerberosAttributes = "KerberosAttributes" @@ -13840,6 +13880,10 @@ extension RunJobFlowInputBody: Swift.Decodable { autoTerminationPolicy = autoTerminationPolicyDecoded let osReleaseLabelDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .osReleaseLabel) osReleaseLabel = osReleaseLabelDecoded + let ebsRootVolumeIopsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .ebsRootVolumeIops) + ebsRootVolumeIops = ebsRootVolumeIopsDecoded + let ebsRootVolumeThroughputDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .ebsRootVolumeThroughput) + ebsRootVolumeThroughput = ebsRootVolumeThroughputDecoded } } @@ -14829,9 +14873,9 @@ extension EMRClientTypes.SpotProvisioningSpecification: Swift.Codable { } extension EMRClientTypes { - /// The launch specification for Spot Instances in the instance fleet, which determines the defined duration, provisioning timeout behavior, and allocation strategy. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and later, excluding 5.0.x versions. Spot Instance allocation strategy is available in Amazon EMR releases 5.12.1 and later. Spot Instances with a defined duration (also known as Spot blocks) are no longer available to new customers from July 1, 2021. For customers who have previously used the feature, we will continue to support Spot Instances with a defined duration until December 31, 2022. + /// The launch specification for Spot Instances in the instance fleet, which determines the defined duration, provisioning timeout behavior, and allocation strategy. The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and higher, excluding 5.0.x versions. Spot Instance allocation strategy is available in Amazon EMR releases 5.12.1 and higher. Spot Instances with a defined duration (also known as Spot blocks) are no longer available to new customers from July 1, 2021. For customers who have previously used the feature, we will continue to support Spot Instances with a defined duration until December 31, 2022. public struct SpotProvisioningSpecification: Swift.Equatable { - /// Specifies the strategy to use in launching Spot Instance fleets. Currently, the only option is capacity-optimized (the default), which launches instances from Spot Instance pools with optimal capacity for the number of instances that are launching. + /// Specifies one of the following strategies to launch Spot Instance fleets: price-capacity-optimized, capacity-optimized, lowest-price, or diversified. For more information on the provisioning strategies, see [Allocation strategies for Spot Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-allocation-strategy.html) in the Amazon EC2 User Guide for Linux Instances. When you launch a Spot Instance fleet with the old console, it automatically launches with the capacity-optimized strategy. You can't change the allocation strategy from the old console. public var allocationStrategy: EMRClientTypes.SpotProvisioningAllocationStrategy? /// The defined duration for Spot Instances (also known as Spot blocks) in minutes. When specified, the Spot Instance does not terminate before the defined duration expires, and defined duration pricing for Spot Instances applies. Valid values are 60, 120, 180, 240, 300, or 360. The duration period starts as soon as a Spot Instance receives its instance ID. At the end of the duration, Amazon EC2 marks the Spot Instance for termination and provides a Spot Instance termination notice, which gives the instance a two-minute warning before it terminates. Spot Instances with a defined duration (also known as Spot blocks) are no longer available to new customers from July 1, 2021. For customers who have previously used the feature, we will continue to support Spot Instances with a defined duration until December 31, 2022. public var blockDurationMinutes: Swift.Int? diff --git a/Sources/Services/AWSFinspace/FinspaceClient.swift b/Sources/Services/AWSFinspace/FinspaceClient.swift index b74435b9633..9233720a65b 100644 --- a/Sources/Services/AWSFinspace/FinspaceClient.swift +++ b/Sources/Services/AWSFinspace/FinspaceClient.swift @@ -1419,6 +1419,57 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Allows you to update code configuration on a running cluster. By using this API you can update the code, the initialization script path, and the command line arguments for a specific cluster. The configuration that you want to update will override any existing configurations on the cluster. + /// + /// - Parameter UpdateKxClusterCodeConfigurationInput : [no documentation found] + /// + /// - Returns: `UpdateKxClusterCodeConfigurationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `ConflictException` : There was a conflict with this action, and it could not be completed. + /// - `InternalServerException` : The request processing has failed because of an unknown error, exception or failure. + /// - `LimitExceededException` : A service limit or quota is exceeded. + /// - `ResourceNotFoundException` : One or more resources can't be found. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. + public func updateKxClusterCodeConfiguration(input: UpdateKxClusterCodeConfigurationInput) async throws -> UpdateKxClusterCodeConfigurationOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .put) + .withServiceName(value: serviceName) + .withOperation(value: "updateKxClusterCodeConfiguration") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "finspace") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "updateKxClusterCodeConfiguration") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.IdempotencyTokenMiddleware(keyPath: \.clientToken)) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "UpdateKxClusterCodeConfigurationRequest")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Updates the databases mounted on a kdb cluster, which includes the changesetId and all the dbPaths to be cached. This API does not allow you to change a database name or add a database if you created a cluster without one. Using this API you can point a cluster to a different changeset and modify a list of partitions being cached. /// /// - Parameter UpdateKxClusterDatabasesInput : [no documentation found] diff --git a/Sources/Services/AWSFinspace/FinspaceClientProtocol.swift b/Sources/Services/AWSFinspace/FinspaceClientProtocol.swift index e5235e755bb..657663251ef 100644 --- a/Sources/Services/AWSFinspace/FinspaceClientProtocol.swift +++ b/Sources/Services/AWSFinspace/FinspaceClientProtocol.swift @@ -446,6 +446,23 @@ public protocol FinspaceClientProtocol { /// - `ThrottlingException` : The request was denied due to request throttling. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. func updateEnvironment(input: UpdateEnvironmentInput) async throws -> UpdateEnvironmentOutput + /// Allows you to update code configuration on a running cluster. By using this API you can update the code, the initialization script path, and the command line arguments for a specific cluster. The configuration that you want to update will override any existing configurations on the cluster. + /// + /// - Parameter UpdateKxClusterCodeConfigurationInput : [no documentation found] + /// + /// - Returns: `UpdateKxClusterCodeConfigurationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `ConflictException` : There was a conflict with this action, and it could not be completed. + /// - `InternalServerException` : The request processing has failed because of an unknown error, exception or failure. + /// - `LimitExceededException` : A service limit or quota is exceeded. + /// - `ResourceNotFoundException` : One or more resources can't be found. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. + func updateKxClusterCodeConfiguration(input: UpdateKxClusterCodeConfigurationInput) async throws -> UpdateKxClusterCodeConfigurationOutput /// Updates the databases mounted on a kdb cluster, which includes the changesetId and all the dbPaths to be cached. This API does not allow you to change a database name or add a database if you created a cluster without one. Using this API you can point a cluster to a different changeset and modify a list of partitions being cached. /// /// - Parameter UpdateKxClusterDatabasesInput : [no documentation found] diff --git a/Sources/Services/AWSFinspace/models/Models.swift b/Sources/Services/AWSFinspace/models/Models.swift index e95111f8f16..893072ca1a7 100644 --- a/Sources/Services/AWSFinspace/models/Models.swift +++ b/Sources/Services/AWSFinspace/models/Models.swift @@ -4656,9 +4656,16 @@ extension FinspaceClientTypes { /// The size of cache in Gigabytes. /// This member is required. public var size: Swift.Int? - /// The type of cache storage . The valid values are: + /// The type of cache storage. The valid values are: /// /// * CACHE_1000 – This type provides at least 1000 MB/s disk access throughput. + /// + /// * CACHE_250 – This type provides at least 250 MB/s disk access throughput. + /// + /// * CACHE_12 – This type provides at least 12 MB/s disk access throughput. + /// + /// + /// For cache type CACHE_1000 and CACHE_250 you can select cache size as 1200 GB or increments of 2400 GB. For cache type CACHE_12 you can select the cache size in increments of 6000 GB. /// This member is required. public var type: Swift.String? @@ -4928,6 +4935,78 @@ extension FinspaceClientTypes { } +extension FinspaceClientTypes.KxClusterCodeDeploymentConfiguration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deploymentStrategy + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let deploymentStrategy = self.deploymentStrategy { + try encodeContainer.encode(deploymentStrategy.rawValue, forKey: .deploymentStrategy) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let deploymentStrategyDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterCodeDeploymentStrategy.self, forKey: .deploymentStrategy) + deploymentStrategy = deploymentStrategyDecoded + } +} + +extension FinspaceClientTypes { + /// The configuration that allows you to choose how you want to update code on a cluster. Depending on the option you choose, you can reduce the time it takes to update the cluster. + public struct KxClusterCodeDeploymentConfiguration: Swift.Equatable { + /// The type of deployment that you want on a cluster. + /// + /// * ROLLING – This options updates the cluster by stopping the exiting q process and starting a new q process with updated configuration. + /// + /// * FORCE – This option updates the cluster by immediately stopping all the running processes before starting up new ones with the updated configuration. + /// This member is required. + public var deploymentStrategy: FinspaceClientTypes.KxClusterCodeDeploymentStrategy? + + public init( + deploymentStrategy: FinspaceClientTypes.KxClusterCodeDeploymentStrategy? = nil + ) + { + self.deploymentStrategy = deploymentStrategy + } + } + +} + +extension FinspaceClientTypes { + public enum KxClusterCodeDeploymentStrategy: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case force + case rolling + case sdkUnknown(Swift.String) + + public static var allCases: [KxClusterCodeDeploymentStrategy] { + return [ + .force, + .rolling, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .force: return "FORCE" + case .rolling: return "ROLLING" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = KxClusterCodeDeploymentStrategy(rawValue: rawValue) ?? KxClusterCodeDeploymentStrategy.sdkUnknown(rawValue) + } + } +} + extension FinspaceClientTypes { public enum KxClusterStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case createFailed @@ -5262,13 +5341,13 @@ extension FinspaceClientTypes.KxDeploymentConfiguration: Swift.Codable { } extension FinspaceClientTypes { - /// The configuration that allows you to choose how you want to update the databases on a cluster. Depending on the option you choose, you can reduce the time it takes to update the database changesets on to a cluster. + /// The configuration that allows you to choose how you want to update the databases on a cluster. Depending on the option you choose, you can reduce the time it takes to update the cluster. public struct KxDeploymentConfiguration: Swift.Equatable { /// The type of deployment that you want on a cluster. /// - /// * ROLLING – This options loads the updated database by stopping the exiting q process and starting a new q process with updated configuration. + /// * ROLLING – This options updates the cluster by stopping the exiting q process and starting a new q process with updated configuration. /// - /// * NO_RESTART – This option loads the updated database on the running q process without stopping it. This option is quicker as it reduces the turn around time to update a kdb database changeset configuration on a cluster. + /// * NO_RESTART – This option updates the cluster without stopping the running q process. It is only available for HDB type cluster. This option is quicker as it reduces the turn around time to update configuration on a cluster. With this deployment mode, you cannot update the initializationScript and commandLineArguments parameters. /// This member is required. public var deploymentStrategy: FinspaceClientTypes.KxDeploymentStrategy? @@ -7706,6 +7785,157 @@ enum UpdateEnvironmentOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension UpdateKxClusterCodeConfigurationInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case code + case commandLineArguments + case deploymentConfiguration + case initializationScript + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) + } + if let code = self.code { + try encodeContainer.encode(code, forKey: .code) + } + if let commandLineArguments = commandLineArguments { + var commandLineArgumentsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .commandLineArguments) + for kxcommandlineargument0 in commandLineArguments { + try commandLineArgumentsContainer.encode(kxcommandlineargument0) + } + } + if let deploymentConfiguration = self.deploymentConfiguration { + try encodeContainer.encode(deploymentConfiguration, forKey: .deploymentConfiguration) + } + if let initializationScript = self.initializationScript { + try encodeContainer.encode(initializationScript, forKey: .initializationScript) + } + } +} + +extension UpdateKxClusterCodeConfigurationInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + guard let clusterName = clusterName else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/clusters/\(clusterName.urlPercentEncoding())/configuration/code" + } +} + +public struct UpdateKxClusterCodeConfigurationInput: Swift.Equatable { + /// A token that ensures idempotency. This token expires in 10 minutes. + public var clientToken: Swift.String? + /// The name of the cluster. + /// This member is required. + public var clusterName: Swift.String? + /// The structure of the customer code available within the running cluster. + /// This member is required. + public var code: FinspaceClientTypes.CodeConfiguration? + /// Specifies the key-value pairs to make them available inside the cluster. + public var commandLineArguments: [FinspaceClientTypes.KxCommandLineArgument]? + /// The configuration that allows you to choose how you want to update the code on a cluster. + public var deploymentConfiguration: FinspaceClientTypes.KxClusterCodeDeploymentConfiguration? + /// A unique identifier of the kdb environment. + /// This member is required. + public var environmentId: Swift.String? + /// Specifies a Q program that will be run at launch of a cluster. It is a relative path within .zip file that contains the custom code, which will be loaded on the cluster. It must include the file name itself. For example, somedir/init.q. + public var initializationScript: Swift.String? + + public init( + clientToken: Swift.String? = nil, + clusterName: Swift.String? = nil, + code: FinspaceClientTypes.CodeConfiguration? = nil, + commandLineArguments: [FinspaceClientTypes.KxCommandLineArgument]? = nil, + deploymentConfiguration: FinspaceClientTypes.KxClusterCodeDeploymentConfiguration? = nil, + environmentId: Swift.String? = nil, + initializationScript: Swift.String? = nil + ) + { + self.clientToken = clientToken + self.clusterName = clusterName + self.code = code + self.commandLineArguments = commandLineArguments + self.deploymentConfiguration = deploymentConfiguration + self.environmentId = environmentId + self.initializationScript = initializationScript + } +} + +struct UpdateKxClusterCodeConfigurationInputBody: Swift.Equatable { + let clientToken: Swift.String? + let code: FinspaceClientTypes.CodeConfiguration? + let initializationScript: Swift.String? + let commandLineArguments: [FinspaceClientTypes.KxCommandLineArgument]? + let deploymentConfiguration: FinspaceClientTypes.KxClusterCodeDeploymentConfiguration? +} + +extension UpdateKxClusterCodeConfigurationInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case code + case commandLineArguments + case deploymentConfiguration + case initializationScript + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + let codeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.CodeConfiguration.self, forKey: .code) + code = codeDecoded + let initializationScriptDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .initializationScript) + initializationScript = initializationScriptDecoded + let commandLineArgumentsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxCommandLineArgument?].self, forKey: .commandLineArguments) + var commandLineArgumentsDecoded0:[FinspaceClientTypes.KxCommandLineArgument]? = nil + if let commandLineArgumentsContainer = commandLineArgumentsContainer { + commandLineArgumentsDecoded0 = [FinspaceClientTypes.KxCommandLineArgument]() + for structure0 in commandLineArgumentsContainer { + if let structure0 = structure0 { + commandLineArgumentsDecoded0?.append(structure0) + } + } + } + commandLineArguments = commandLineArgumentsDecoded0 + let deploymentConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterCodeDeploymentConfiguration.self, forKey: .deploymentConfiguration) + deploymentConfiguration = deploymentConfigurationDecoded + } +} + +extension UpdateKxClusterCodeConfigurationOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct UpdateKxClusterCodeConfigurationOutput: Swift.Equatable { + + public init() { } +} + +enum UpdateKxClusterCodeConfigurationOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "LimitExceededException": return try await LimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension UpdateKxClusterDatabasesInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken diff --git a/Sources/Services/AWSGameLift/GameLiftClient.swift b/Sources/Services/AWSGameLift/GameLiftClient.swift index 4bcf4f738ba..9291812a123 100644 --- a/Sources/Services/AWSGameLift/GameLiftClient.swift +++ b/Sources/Services/AWSGameLift/GameLiftClient.swift @@ -287,7 +287,7 @@ extension GameLiftClient: GameLiftClientProtocol { return result } - /// Creates a fleet of Amazon Elastic Compute Cloud (Amazon EC2) instances to host your custom game server or Realtime Servers. Use this operation to configure the computing resources for your fleet and provide instructions for running game servers on each instance. Most Amazon GameLift fleets can deploy instances to multiple locations, including the home Region (where the fleet is created) and an optional set of remote locations. Fleets that are created in the following Amazon Web Services Regions support multiple locations: us-east-1 (N. Virginia), us-west-2 (Oregon), eu-central-1 (Frankfurt), eu-west-1 (Ireland), ap-southeast-2 (Sydney), ap-northeast-1 (Tokyo), and ap-northeast-2 (Seoul). Fleets that are created in other Amazon GameLift Regions can deploy instances in the fleet's home Region only. All fleet instances use the same configuration regardless of location; however, you can adjust capacity settings and turn auto-scaling on/off for each location. To create a fleet, choose the hardware for your instances, specify a game server build or Realtime script to deploy, and provide a runtime configuration to direct Amazon GameLift how to start and run game servers on each instance in the fleet. Set permissions for inbound traffic to your game servers, and enable optional features as needed. When creating a multi-location fleet, provide a list of additional remote locations. If you need to debug your fleet, fetch logs, view performance metrics or other actions on the fleet, create the development fleet with port 22/3389 open. As a best practice, we recommend opening ports for remote access only when you need them and closing them when you're finished. If successful, this operation creates a new Fleet resource and places it in NEW status, which prompts Amazon GameLift to initiate the [fleet creation workflow](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-all.html#fleets-creation-workflow). Learn more [Setting up fleets](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html)[Debug fleet creation issues](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-debug.html#fleets-creating-debug-creation)[Multi-location fleets](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html) + /// Creates a fleet of Amazon Elastic Compute Cloud (Amazon EC2) instances to host your custom game server or Realtime Servers. Use this operation to configure the computing resources for your fleet and provide instructions for running game servers on each instance. Most Amazon GameLift fleets can deploy instances to multiple locations, including the home Region (where the fleet is created) and an optional set of remote locations. Fleets that are created in the following Amazon Web Services Regions support multiple locations: us-east-1 (N. Virginia), us-west-2 (Oregon), eu-central-1 (Frankfurt), eu-west-1 (Ireland), ap-southeast-2 (Sydney), ap-northeast-1 (Tokyo), and ap-northeast-2 (Seoul). Fleets that are created in other Amazon GameLift Regions can deploy instances in the fleet's home Region only. All fleet instances use the same configuration regardless of location; however, you can adjust capacity settings and turn auto-scaling on/off for each location. To create a fleet, choose the hardware for your instances, specify a game server build or Realtime script to deploy, and provide a runtime configuration to direct Amazon GameLift how to start and run game servers on each instance in the fleet. Set permissions for inbound traffic to your game servers, and enable optional features as needed. When creating a multi-location fleet, provide a list of additional remote locations. If you need to debug your fleet, fetch logs, view performance metrics or other actions on the fleet, create the development fleet with port 22/3389 open. As a best practice, we recommend opening ports for remote access only when you need them and closing them when you're finished. If successful, this operation creates a new Fleet resource and places it in NEW status, which prompts Amazon GameLift to initiate the [fleet creation workflow](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-all.html#fleets-creation-workflow). You can track fleet creation by checking fleet status using [DescribeFleetAttributes] and [DescribeFleetLocationAttributes]/, or by monitoring fleet creation events using [DescribeFleetEvents]. When the fleet status changes to ACTIVE, you can enable automatic scaling with [PutScalingPolicy] and set capacity for the home Region with [UpdateFleetCapacity]. When the status of each remote location reaches ACTIVE, you can set capacity by location using [UpdateFleetCapacity]. Learn more [Setting up fleets](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html)[Debug fleet creation issues](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-debug.html#fleets-creating-debug-creation)[Multi-location fleets](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html) /// /// - Parameter CreateFleetInput : [no documentation found] /// @@ -1273,7 +1273,7 @@ extension GameLiftClient: GameLiftClientProtocol { return result } - /// Deletes a custom location. Before deleting a custom location, review any fleets currently using the custom location and deregister the location if it is in use. For more information see, [DeregisterCompute](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeregisterCompute.html). + /// Deletes a custom location. Before deleting a custom location, review any fleets currently using the custom location and deregister the location if it is in use. For more information, see [DeregisterCompute](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeregisterCompute.html). /// /// - Parameter DeleteLocationInput : [no documentation found] /// @@ -3903,6 +3903,7 @@ extension GameLiftClient: GameLiftClientProtocol { /// - `ConflictException` : The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request. /// - `InternalServiceException` : The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period. /// - `InvalidRequestException` : One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying. + /// - `LimitExceededException` : The requested operation would cause the resource to exceed the allowed service limit. Resolve the issue before retrying. /// - `UnauthorizedException` : The client failed authentication. Clients should not retry such requests. public func registerCompute(input: RegisterComputeInput) async throws -> RegisterComputeOutput { diff --git a/Sources/Services/AWSGameLift/GameLiftClientProtocol.swift b/Sources/Services/AWSGameLift/GameLiftClientProtocol.swift index 4ad5b422a50..161af781d83 100644 --- a/Sources/Services/AWSGameLift/GameLiftClientProtocol.swift +++ b/Sources/Services/AWSGameLift/GameLiftClientProtocol.swift @@ -103,7 +103,7 @@ public protocol GameLiftClientProtocol { /// - `TaggingFailedException` : The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. /// - `UnauthorizedException` : The client failed authentication. Clients should not retry such requests. func createBuild(input: CreateBuildInput) async throws -> CreateBuildOutput - /// Creates a fleet of Amazon Elastic Compute Cloud (Amazon EC2) instances to host your custom game server or Realtime Servers. Use this operation to configure the computing resources for your fleet and provide instructions for running game servers on each instance. Most Amazon GameLift fleets can deploy instances to multiple locations, including the home Region (where the fleet is created) and an optional set of remote locations. Fleets that are created in the following Amazon Web Services Regions support multiple locations: us-east-1 (N. Virginia), us-west-2 (Oregon), eu-central-1 (Frankfurt), eu-west-1 (Ireland), ap-southeast-2 (Sydney), ap-northeast-1 (Tokyo), and ap-northeast-2 (Seoul). Fleets that are created in other Amazon GameLift Regions can deploy instances in the fleet's home Region only. All fleet instances use the same configuration regardless of location; however, you can adjust capacity settings and turn auto-scaling on/off for each location. To create a fleet, choose the hardware for your instances, specify a game server build or Realtime script to deploy, and provide a runtime configuration to direct Amazon GameLift how to start and run game servers on each instance in the fleet. Set permissions for inbound traffic to your game servers, and enable optional features as needed. When creating a multi-location fleet, provide a list of additional remote locations. If you need to debug your fleet, fetch logs, view performance metrics or other actions on the fleet, create the development fleet with port 22/3389 open. As a best practice, we recommend opening ports for remote access only when you need them and closing them when you're finished. If successful, this operation creates a new Fleet resource and places it in NEW status, which prompts Amazon GameLift to initiate the [fleet creation workflow](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-all.html#fleets-creation-workflow). Learn more [Setting up fleets](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html)[Debug fleet creation issues](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-debug.html#fleets-creating-debug-creation)[Multi-location fleets](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html) + /// Creates a fleet of Amazon Elastic Compute Cloud (Amazon EC2) instances to host your custom game server or Realtime Servers. Use this operation to configure the computing resources for your fleet and provide instructions for running game servers on each instance. Most Amazon GameLift fleets can deploy instances to multiple locations, including the home Region (where the fleet is created) and an optional set of remote locations. Fleets that are created in the following Amazon Web Services Regions support multiple locations: us-east-1 (N. Virginia), us-west-2 (Oregon), eu-central-1 (Frankfurt), eu-west-1 (Ireland), ap-southeast-2 (Sydney), ap-northeast-1 (Tokyo), and ap-northeast-2 (Seoul). Fleets that are created in other Amazon GameLift Regions can deploy instances in the fleet's home Region only. All fleet instances use the same configuration regardless of location; however, you can adjust capacity settings and turn auto-scaling on/off for each location. To create a fleet, choose the hardware for your instances, specify a game server build or Realtime script to deploy, and provide a runtime configuration to direct Amazon GameLift how to start and run game servers on each instance in the fleet. Set permissions for inbound traffic to your game servers, and enable optional features as needed. When creating a multi-location fleet, provide a list of additional remote locations. If you need to debug your fleet, fetch logs, view performance metrics or other actions on the fleet, create the development fleet with port 22/3389 open. As a best practice, we recommend opening ports for remote access only when you need them and closing them when you're finished. If successful, this operation creates a new Fleet resource and places it in NEW status, which prompts Amazon GameLift to initiate the [fleet creation workflow](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-all.html#fleets-creation-workflow). You can track fleet creation by checking fleet status using [DescribeFleetAttributes] and [DescribeFleetLocationAttributes]/, or by monitoring fleet creation events using [DescribeFleetEvents]. When the fleet status changes to ACTIVE, you can enable automatic scaling with [PutScalingPolicy] and set capacity for the home Region with [UpdateFleetCapacity]. When the status of each remote location reaches ACTIVE, you can set capacity by location using [UpdateFleetCapacity]. Learn more [Setting up fleets](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html)[Debug fleet creation issues](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-creating-debug.html#fleets-creating-debug-creation)[Multi-location fleets](https://docs.aws.amazon.com/gamelift/latest/developerguide/fleets-intro.html) /// /// - Parameter CreateFleetInput : [no documentation found] /// @@ -443,7 +443,7 @@ public protocol GameLiftClientProtocol { /// - `TaggingFailedException` : The requested tagging operation did not succeed. This may be due to invalid tag format or the maximum tag limit may have been exceeded. Resolve the issue before retrying. /// - `UnauthorizedException` : The client failed authentication. Clients should not retry such requests. func deleteGameSessionQueue(input: DeleteGameSessionQueueInput) async throws -> DeleteGameSessionQueueOutput - /// Deletes a custom location. Before deleting a custom location, review any fleets currently using the custom location and deregister the location if it is in use. For more information see, [DeregisterCompute](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeregisterCompute.html). + /// Deletes a custom location. Before deleting a custom location, review any fleets currently using the custom location and deregister the location if it is in use. For more information, see [DeregisterCompute](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DeregisterCompute.html). /// /// - Parameter DeleteLocationInput : [no documentation found] /// @@ -1305,6 +1305,7 @@ public protocol GameLiftClientProtocol { /// - `ConflictException` : The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request. /// - `InternalServiceException` : The service encountered an unrecoverable internal failure while processing the request. Clients can retry such requests immediately or after a waiting period. /// - `InvalidRequestException` : One or more parameter values in the request are invalid. Correct the invalid parameter values before retrying. + /// - `LimitExceededException` : The requested operation would cause the resource to exceed the allowed service limit. Resolve the issue before retrying. /// - `UnauthorizedException` : The client failed authentication. Clients should not retry such requests. func registerCompute(input: RegisterComputeInput) async throws -> RegisterComputeOutput /// This operation is used with the Amazon GameLift FleetIQ solution and game server groups. Creates a new game server resource and notifies Amazon GameLift FleetIQ that the game server is ready to host gameplay and players. This operation is called by a game server process that is running on an instance in a game server group. Registering game servers enables Amazon GameLift FleetIQ to track available game servers and enables game clients and services to claim a game server for a new game session. To register a game server, identify the game server group and instance where the game server is running, and provide a unique identifier for the game server. You can also include connection and game server data. Once a game server is successfully registered, it is put in status AVAILABLE. A request to register a game server may fail if the instance it is running on is in the process of shutting down as part of instance balancing or scale-down activity. Learn more [Amazon GameLift FleetIQ Guide](https://docs.aws.amazon.com/gamelift/latest/fleetiqguide/gsg-intro.html) diff --git a/Sources/Services/AWSGameLift/models/Models.swift b/Sources/Services/AWSGameLift/models/Models.swift index 13d9e82fdbf..0bef979e2a7 100644 --- a/Sources/Services/AWSGameLift/models/Models.swift +++ b/Sources/Services/AWSGameLift/models/Models.swift @@ -2,6 +2,11 @@ import AWSClientRuntime import ClientRuntime +extension AcceptMatchInput: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "AcceptMatchInput(acceptanceType: \(Swift.String(describing: acceptanceType)), ticketId: \(Swift.String(describing: ticketId)), playerIds: \"CONTENT_REDACTED\")"} +} + extension AcceptMatchInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case acceptanceType = "AcceptanceType" @@ -16,8 +21,8 @@ extension AcceptMatchInput: Swift.Encodable { } if let playerIds = playerIds { var playerIdsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .playerIds) - for nonzeroandmaxstring0 in playerIds { - try playerIdsContainer.encode(nonzeroandmaxstring0) + for playerid0 in playerIds { + try playerIdsContainer.encode(playerid0) } } if let ticketId = self.ticketId { @@ -1034,6 +1039,11 @@ extension GameLiftClientTypes.Compute: Swift.Codable { } } +extension GameLiftClientTypes.Compute: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "Compute(computeArn: \(Swift.String(describing: computeArn)), computeName: \(Swift.String(describing: computeName)), computeStatus: \(Swift.String(describing: computeStatus)), creationTime: \(Swift.String(describing: creationTime)), dnsName: \(Swift.String(describing: dnsName)), fleetArn: \(Swift.String(describing: fleetArn)), fleetId: \(Swift.String(describing: fleetId)), gameLiftServiceSdkEndpoint: \(Swift.String(describing: gameLiftServiceSdkEndpoint)), location: \(Swift.String(describing: location)), operatingSystem: \(Swift.String(describing: operatingSystem)), type: \(Swift.String(describing: type)), ipAddress: \"CONTENT_REDACTED\")"} +} + extension GameLiftClientTypes { /// An Amazon GameLift compute resource for hosting your game servers. A compute can be an EC2instance in a managed EC2 fleet or a registered compute in an Anywhere fleet. public struct Compute: Swift.Equatable { @@ -1579,6 +1589,7 @@ extension CreateFleetInput: Swift.Encodable { case ec2InstanceType = "EC2InstanceType" case fleetType = "FleetType" case instanceRoleArn = "InstanceRoleArn" + case instanceRoleCredentialsProvider = "InstanceRoleCredentialsProvider" case locations = "Locations" case logPaths = "LogPaths" case metricGroups = "MetricGroups" @@ -1626,6 +1637,9 @@ extension CreateFleetInput: Swift.Encodable { if let instanceRoleArn = self.instanceRoleArn { try encodeContainer.encode(instanceRoleArn, forKey: .instanceRoleArn) } + if let instanceRoleCredentialsProvider = self.instanceRoleCredentialsProvider { + try encodeContainer.encode(instanceRoleCredentialsProvider.rawValue, forKey: .instanceRoleCredentialsProvider) + } if let locations = locations { var locationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .locations) for locationconfiguration0 in locations { @@ -1689,7 +1703,7 @@ extension CreateFleetInput: ClientRuntime.URLPathProvider { public struct CreateFleetInput: Swift.Equatable { /// Amazon GameLift Anywhere configuration options. public var anywhereConfiguration: GameLiftClientTypes.AnywhereConfiguration? - /// The unique identifier for a custom game server build to be deployed on fleet instances. You can use either the build ID or ARN. The build must be uploaded to Amazon GameLift and in READY status. This fleet property cannot be changed later. + /// The unique identifier for a custom game server build to be deployed on fleet instances. You can use either the build ID or ARN. The build must be uploaded to Amazon GameLift and in READY status. This fleet property can't be changed after the fleet is created. public var buildId: Swift.String? /// Prompts Amazon GameLift to generate a TLS/SSL certificate for the fleet. Amazon GameLift uses the certificates to encrypt traffic between game clients and the game servers running on Amazon GameLift. By default, the CertificateConfiguration is DISABLED. You can't change this property after you create the fleet. Certificate Manager (ACM) certificates expire after 13 months. Certificate expiration can cause fleets to fail, preventing players from connecting to instances in the fleet. We recommend you replace fleets before 13 months, consider using fleet aliases for a smooth transition. ACM isn't available in all Amazon Web Services regions. A fleet creation request with certificate generation enabled in an unsupported Region, fails with a 4xx error. For more information about the supported Regions, see [Supported Regions](https://docs.aws.amazon.com/acm/latest/userguide/acm-regions.html) in the Certificate Manager User Guide. public var certificateConfiguration: GameLiftClientTypes.CertificateConfiguration? @@ -1701,10 +1715,12 @@ public struct CreateFleetInput: Swift.Equatable { public var ec2InboundPermissions: [GameLiftClientTypes.IpPermission]? /// The Amazon GameLift-supported Amazon EC2 instance type to use for all fleet instances. Instance type determines the computing resources that will be used to host your game servers, including CPU, memory, storage, and networking capacity. See [Amazon Elastic Compute Cloud Instance Types](http://aws.amazon.com/ec2/instance-types/) for detailed descriptions of Amazon EC2 instance types. public var ec2InstanceType: GameLiftClientTypes.EC2InstanceType? - /// Indicates whether to use On-Demand or Spot instances for this fleet. By default, this property is set to ON_DEMAND. Learn more about when to use [ On-Demand versus Spot Instances](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-ec2-instances.html#gamelift-ec2-instances-spot). This property cannot be changed after the fleet is created. + /// Indicates whether to use On-Demand or Spot instances for this fleet. By default, this property is set to ON_DEMAND. Learn more about when to use [ On-Demand versus Spot Instances](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-ec2-instances.html#gamelift-ec2-instances-spot). This fleet property can't be changed after the fleet is created. public var fleetType: GameLiftClientTypes.FleetType? - /// A unique identifier for an IAM role that manages access to your Amazon Web Services services. With an instance role ARN set, any application that runs on an instance in this fleet can assume the role, including install scripts, server processes, and daemons (background processes). Create a role or look up a role's ARN by using the [IAM dashboard](https://console.aws.amazon.com/iam/) in the Amazon Web Services Management Console. Learn more about using on-box credentials for your game servers at [ Access external resources from a game server](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-resources.html). This property cannot be changed after the fleet is created. + /// A unique identifier for an IAM role with access permissions to other Amazon Web Services services. Any application that runs on an instance in the fleet--including install scripts, server processes, and other processes--can use these permissions to interact with Amazon Web Services resources that you own or have access to. For more information about using the role with your game server builds, see [ Communicate with other Amazon Web Services resources from your fleets](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-resources.html). This fleet property can't be changed after the fleet is created. public var instanceRoleArn: Swift.String? + /// Prompts Amazon GameLift to generate a shared credentials file for the IAM role defined in InstanceRoleArn. The shared credentials file is stored on each fleet instance and refreshed as needed. Use shared credentials for applications that are deployed along with the game server executable, if the game server is integrated with server SDK version 5.x. For more information about using shared credentials, see [ Communicate with other Amazon Web Services resources from your fleets](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-resources.html). + public var instanceRoleCredentialsProvider: GameLiftClientTypes.InstanceRoleCredentialsProvider? /// A set of remote locations to deploy additional instances to and manage as part of the fleet. This parameter can only be used when creating fleets in Amazon Web Services Regions that support multiple locations. You can add any Amazon GameLift-supported Amazon Web Services Region as a remote location, in the form of an Amazon Web Services Region code such as us-west-2. To create a fleet with instances in the home Region only, don't use this parameter. To use this parameter, Amazon GameLift requires you to use your home location in the request. public var locations: [GameLiftClientTypes.LocationConfiguration]? /// This parameter is no longer used. To specify where Amazon GameLift should store log files once a server process shuts down, use the Amazon GameLift server API ProcessReady() and specify one or more directory paths in logParameters. For more information, see [Initialize the server process](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-initialize) in the Amazon GameLift Developer Guide. @@ -1728,7 +1744,7 @@ public struct CreateFleetInput: Swift.Equatable { public var resourceCreationLimitPolicy: GameLiftClientTypes.ResourceCreationLimitPolicy? /// Instructions for how to launch and maintain server processes on instances in the fleet. The runtime configuration defines one or more server process configurations, each identifying a build executable or Realtime script file and the number of processes of that type to run concurrently. The RuntimeConfiguration parameter is required unless the fleet is being configured using the older parameters ServerLaunchPath and ServerLaunchParameters, which are still supported for backward compatibility. public var runtimeConfiguration: GameLiftClientTypes.RuntimeConfiguration? - /// The unique identifier for a Realtime configuration script to be deployed on fleet instances. You can use either the script ID or ARN. Scripts must be uploaded to Amazon GameLift prior to creating the fleet. This fleet property cannot be changed later. + /// The unique identifier for a Realtime configuration script to be deployed on fleet instances. You can use either the script ID or ARN. Scripts must be uploaded to Amazon GameLift prior to creating the fleet. This fleet property can't be changed after the fleet is created. public var scriptId: Swift.String? /// This parameter is no longer used. Specify server launch parameters using the RuntimeConfiguration parameter. Requests that use this parameter instead continue to be valid. public var serverLaunchParameters: Swift.String? @@ -1747,6 +1763,7 @@ public struct CreateFleetInput: Swift.Equatable { ec2InstanceType: GameLiftClientTypes.EC2InstanceType? = nil, fleetType: GameLiftClientTypes.FleetType? = nil, instanceRoleArn: Swift.String? = nil, + instanceRoleCredentialsProvider: GameLiftClientTypes.InstanceRoleCredentialsProvider? = nil, locations: [GameLiftClientTypes.LocationConfiguration]? = nil, logPaths: [Swift.String]? = nil, metricGroups: [Swift.String]? = nil, @@ -1771,6 +1788,7 @@ public struct CreateFleetInput: Swift.Equatable { self.ec2InstanceType = ec2InstanceType self.fleetType = fleetType self.instanceRoleArn = instanceRoleArn + self.instanceRoleCredentialsProvider = instanceRoleCredentialsProvider self.locations = locations self.logPaths = logPaths self.metricGroups = metricGroups @@ -1810,6 +1828,7 @@ struct CreateFleetInputBody: Swift.Equatable { let tags: [GameLiftClientTypes.Tag]? let computeType: GameLiftClientTypes.ComputeType? let anywhereConfiguration: GameLiftClientTypes.AnywhereConfiguration? + let instanceRoleCredentialsProvider: GameLiftClientTypes.InstanceRoleCredentialsProvider? } extension CreateFleetInputBody: Swift.Decodable { @@ -1823,6 +1842,7 @@ extension CreateFleetInputBody: Swift.Decodable { case ec2InstanceType = "EC2InstanceType" case fleetType = "FleetType" case instanceRoleArn = "InstanceRoleArn" + case instanceRoleCredentialsProvider = "InstanceRoleCredentialsProvider" case locations = "Locations" case logPaths = "LogPaths" case metricGroups = "MetricGroups" @@ -1929,6 +1949,8 @@ extension CreateFleetInputBody: Swift.Decodable { computeType = computeTypeDecoded let anywhereConfigurationDecoded = try containerValues.decodeIfPresent(GameLiftClientTypes.AnywhereConfiguration.self, forKey: .anywhereConfiguration) anywhereConfiguration = anywhereConfigurationDecoded + let instanceRoleCredentialsProviderDecoded = try containerValues.decodeIfPresent(GameLiftClientTypes.InstanceRoleCredentialsProvider.self, forKey: .instanceRoleCredentialsProvider) + instanceRoleCredentialsProvider = instanceRoleCredentialsProviderDecoded } } @@ -3488,6 +3510,11 @@ enum CreateMatchmakingRuleSetOutputError: ClientRuntime.HttpResponseErrorBinding } } +extension CreatePlayerSessionInput: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "CreatePlayerSessionInput(gameSessionId: \(Swift.String(describing: gameSessionId)), playerData: \(Swift.String(describing: playerData)), playerId: \"CONTENT_REDACTED\")"} +} + extension CreatePlayerSessionInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case gameSessionId = "GameSessionId" @@ -3618,6 +3645,11 @@ enum CreatePlayerSessionOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension CreatePlayerSessionsInput: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "CreatePlayerSessionsInput(gameSessionId: \(Swift.String(describing: gameSessionId)), playerDataMap: \(Swift.String(describing: playerDataMap)), playerIds: \"CONTENT_REDACTED\")"} +} + extension CreatePlayerSessionsInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case gameSessionId = "GameSessionId" @@ -3638,8 +3670,8 @@ extension CreatePlayerSessionsInput: Swift.Encodable { } if let playerIds = playerIds { var playerIdsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .playerIds) - for nonzeroandmaxstring0 in playerIds { - try playerIdsContainer.encode(nonzeroandmaxstring0) + for playerid0 in playerIds { + try playerIdsContainer.encode(playerid0) } } } @@ -8754,6 +8786,11 @@ enum DescribeMatchmakingRuleSetsOutputError: ClientRuntime.HttpResponseErrorBind } } +extension DescribePlayerSessionsInput: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "DescribePlayerSessionsInput(gameSessionId: \(Swift.String(describing: gameSessionId)), limit: \(Swift.String(describing: limit)), nextToken: \(Swift.String(describing: nextToken)), playerSessionId: \(Swift.String(describing: playerSessionId)), playerSessionStatusFilter: \(Swift.String(describing: playerSessionStatusFilter)), playerId: \"CONTENT_REDACTED\")"} +} + extension DescribePlayerSessionsInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case gameSessionId = "GameSessionId" @@ -9555,6 +9592,11 @@ extension GameLiftClientTypes.DesiredPlayerSession: Swift.Codable { } } +extension GameLiftClientTypes.DesiredPlayerSession: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "DesiredPlayerSession(playerData: \(Swift.String(describing: playerData)), playerId: \"CONTENT_REDACTED\")"} +} + extension GameLiftClientTypes { /// Player information for use when creating player sessions using a game session placement request. public struct DesiredPlayerSession: Swift.Equatable { @@ -10706,6 +10748,7 @@ extension GameLiftClientTypes.FleetAttributes: Swift.Codable { case fleetId = "FleetId" case fleetType = "FleetType" case instanceRoleArn = "InstanceRoleArn" + case instanceRoleCredentialsProvider = "InstanceRoleCredentialsProvider" case instanceType = "InstanceType" case logPaths = "LogPaths" case metricGroups = "MetricGroups" @@ -10757,6 +10800,9 @@ extension GameLiftClientTypes.FleetAttributes: Swift.Codable { if let instanceRoleArn = self.instanceRoleArn { try encodeContainer.encode(instanceRoleArn, forKey: .instanceRoleArn) } + if let instanceRoleCredentialsProvider = self.instanceRoleCredentialsProvider { + try encodeContainer.encode(instanceRoleCredentialsProvider.rawValue, forKey: .instanceRoleCredentialsProvider) + } if let instanceType = self.instanceType { try encodeContainer.encode(instanceType.rawValue, forKey: .instanceType) } @@ -10889,6 +10935,8 @@ extension GameLiftClientTypes.FleetAttributes: Swift.Codable { computeType = computeTypeDecoded let anywhereConfigurationDecoded = try containerValues.decodeIfPresent(GameLiftClientTypes.AnywhereConfiguration.self, forKey: .anywhereConfiguration) anywhereConfiguration = anywhereConfigurationDecoded + let instanceRoleCredentialsProviderDecoded = try containerValues.decodeIfPresent(GameLiftClientTypes.InstanceRoleCredentialsProvider.self, forKey: .instanceRoleCredentialsProvider) + instanceRoleCredentialsProvider = instanceRoleCredentialsProviderDecoded } } @@ -10913,10 +10961,12 @@ extension GameLiftClientTypes { public var fleetArn: Swift.String? /// A unique identifier for the fleet. public var fleetId: Swift.String? - /// Indicates whether to use On-Demand or Spot instances for this fleet. By default, this property is set to ON_DEMAND. Learn more about when to use [ On-Demand versus Spot Instances](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-ec2-instances.html#gamelift-ec2-instances-spot). This property cannot be changed after the fleet is created. + /// Indicates whether to use On-Demand or Spot instances for this fleet. By default, this property is set to ON_DEMAND. Learn more about when to use [ On-Demand versus Spot Instances](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-ec2-instances.html#gamelift-ec2-instances-spot). This fleet property can't be changed after the fleet is created. public var fleetType: GameLiftClientTypes.FleetType? - /// A unique identifier for an IAM role that manages access to your Amazon Web Services services. With an instance role ARN set, any application that runs on an instance in this fleet can assume the role, including install scripts, server processes, and daemons (background processes). Create a role or look up a role's ARN by using the [IAM dashboard](https://console.aws.amazon.com/iam/) in the Amazon Web Services Management Console. Learn more about using on-box credentials for your game servers at [ Access external resources from a game server](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-resources.html). + /// A unique identifier for an IAM role with access permissions to other Amazon Web Services services. Any application that runs on an instance in the fleet--including install scripts, server processes, and other processes--can use these permissions to interact with Amazon Web Services resources that you own or have access to. For more information about using the role with your game server builds, see [ Communicate with other Amazon Web Services resources from your fleets](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-resources.html). public var instanceRoleArn: Swift.String? + /// Indicates that fleet instances maintain a shared credentials file for the IAM role defined in InstanceRoleArn. Shared credentials allow applications that are deployed with the game server executable to communicate with other Amazon Web Services resources. This property is used only when the game server is integrated with the server SDK version 5.x. For more information about using shared credentials, see [ Communicate with other Amazon Web Services resources from your fleets](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-resources.html). + public var instanceRoleCredentialsProvider: GameLiftClientTypes.InstanceRoleCredentialsProvider? /// The Amazon EC2 instance type that determines the computing resources of each instance in the fleet. Instance type defines the CPU, memory, storage, and networking capacity. See [Amazon Elastic Compute Cloud Instance Types](http://aws.amazon.com/ec2/instance-types/) for detailed descriptions. public var instanceType: GameLiftClientTypes.EC2InstanceType? /// This parameter is no longer used. Game session log paths are now defined using the Amazon GameLift server API ProcessReady()logParameters. See more information in the [Server API Reference](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api-ref.html#gamelift-sdk-server-api-ref-dataypes-process). @@ -10974,6 +11024,7 @@ extension GameLiftClientTypes { fleetId: Swift.String? = nil, fleetType: GameLiftClientTypes.FleetType? = nil, instanceRoleArn: Swift.String? = nil, + instanceRoleCredentialsProvider: GameLiftClientTypes.InstanceRoleCredentialsProvider? = nil, instanceType: GameLiftClientTypes.EC2InstanceType? = nil, logPaths: [Swift.String]? = nil, metricGroups: [Swift.String]? = nil, @@ -11001,6 +11052,7 @@ extension GameLiftClientTypes { self.fleetId = fleetId self.fleetType = fleetType self.instanceRoleArn = instanceRoleArn + self.instanceRoleCredentialsProvider = instanceRoleCredentialsProvider self.instanceType = instanceType self.logPaths = logPaths self.metricGroups = metricGroups @@ -12548,6 +12600,11 @@ extension GameLiftClientTypes.GameSession: Swift.Codable { } } +extension GameLiftClientTypes.GameSession: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "GameSession(creationTime: \(Swift.String(describing: creationTime)), creatorId: \(Swift.String(describing: creatorId)), currentPlayerSessionCount: \(Swift.String(describing: currentPlayerSessionCount)), dnsName: \(Swift.String(describing: dnsName)), fleetArn: \(Swift.String(describing: fleetArn)), fleetId: \(Swift.String(describing: fleetId)), gameProperties: \(Swift.String(describing: gameProperties)), gameSessionData: \(Swift.String(describing: gameSessionData)), gameSessionId: \(Swift.String(describing: gameSessionId)), location: \(Swift.String(describing: location)), matchmakerData: \(Swift.String(describing: matchmakerData)), maximumPlayerSessionCount: \(Swift.String(describing: maximumPlayerSessionCount)), name: \(Swift.String(describing: name)), playerSessionCreationPolicy: \(Swift.String(describing: playerSessionCreationPolicy)), status: \(Swift.String(describing: status)), statusReason: \(Swift.String(describing: statusReason)), terminationTime: \(Swift.String(describing: terminationTime)), ipAddress: \"CONTENT_REDACTED\", port: \"CONTENT_REDACTED\")"} +} + extension GameLiftClientTypes { /// Properties describing a game session. A game session in ACTIVE status can host players. When a game session ends, its status is set to TERMINATED. Amazon GameLift retains a game session resource for 30 days after the game session ends. You can reuse idempotency token values after this time. Game session logs are retained for 14 days. [All APIs by task](https://docs.aws.amazon.com/gamelift/latest/developerguide/reference-awssdk.html#reference-awssdk-resources-fleets) public struct GameSession: Swift.Equatable { @@ -12698,6 +12755,11 @@ extension GameLiftClientTypes.GameSessionConnectionInfo: Swift.Codable { } } +extension GameLiftClientTypes.GameSessionConnectionInfo: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "GameSessionConnectionInfo(dnsName: \(Swift.String(describing: dnsName)), gameSessionArn: \(Swift.String(describing: gameSessionArn)), matchedPlayerSessions: \(Swift.String(describing: matchedPlayerSessions)), port: \(Swift.String(describing: port)), ipAddress: \"CONTENT_REDACTED\")"} +} + extension GameLiftClientTypes { /// Connection information for a new game session that is created in response to a start matchmaking request. Once a match is made, the FlexMatch engine creates a new game session for it. This information, including the game session endpoint and player sessions for each player in the original matchmaking request, is added to the matchmaking ticket. public struct GameSessionConnectionInfo: Swift.Equatable { @@ -12998,6 +13060,11 @@ extension GameLiftClientTypes.GameSessionPlacement: Swift.Codable { } } +extension GameLiftClientTypes.GameSessionPlacement: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "GameSessionPlacement(dnsName: \(Swift.String(describing: dnsName)), endTime: \(Swift.String(describing: endTime)), gameProperties: \(Swift.String(describing: gameProperties)), gameSessionArn: \(Swift.String(describing: gameSessionArn)), gameSessionData: \(Swift.String(describing: gameSessionData)), gameSessionId: \(Swift.String(describing: gameSessionId)), gameSessionName: \(Swift.String(describing: gameSessionName)), gameSessionQueueName: \(Swift.String(describing: gameSessionQueueName)), gameSessionRegion: \(Swift.String(describing: gameSessionRegion)), matchmakerData: \(Swift.String(describing: matchmakerData)), maximumPlayerSessionCount: \(Swift.String(describing: maximumPlayerSessionCount)), placedPlayerSessions: \(Swift.String(describing: placedPlayerSessions)), placementId: \(Swift.String(describing: placementId)), playerLatencies: \(Swift.String(describing: playerLatencies)), startTime: \(Swift.String(describing: startTime)), status: \(Swift.String(describing: status)), ipAddress: \"CONTENT_REDACTED\", port: \"CONTENT_REDACTED\")"} +} + extension GameLiftClientTypes { /// Represents a potential game session placement, including the full details of the original placement request and the current status. If the game session placement status is PENDING, the properties for game session ID/ARN, region, IP address/DNS, and port aren't final. A game session is not active and ready to accept players until placement status reaches FULFILLED. When the placement is in PENDING status, Amazon GameLift may attempt to place a game session multiple times before succeeding. With each attempt it creates a [GameSession] object and updates this placement object with the new game session properties.. public struct GameSessionPlacement: Swift.Equatable { @@ -14054,6 +14121,11 @@ extension GameLiftClientTypes.Instance: Swift.Codable { } } +extension GameLiftClientTypes.Instance: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "Instance(creationTime: \(Swift.String(describing: creationTime)), dnsName: \(Swift.String(describing: dnsName)), fleetArn: \(Swift.String(describing: fleetArn)), fleetId: \(Swift.String(describing: fleetId)), instanceId: \(Swift.String(describing: instanceId)), location: \(Swift.String(describing: location)), operatingSystem: \(Swift.String(describing: operatingSystem)), status: \(Swift.String(describing: status)), type: \(Swift.String(describing: type)), ipAddress: \"CONTENT_REDACTED\")"} +} + extension GameLiftClientTypes { /// Represents a virtual computing instance that runs game server processes and hosts game sessions. In Amazon GameLift, one or more instances make up a managed EC2 fleet. public struct Instance: Swift.Equatable { @@ -14164,7 +14236,7 @@ extension GameLiftClientTypes.InstanceAccess: Swift.Codable { extension GameLiftClientTypes.InstanceAccess: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "InstanceAccess(fleetId: \(Swift.String(describing: fleetId)), instanceId: \(Swift.String(describing: instanceId)), ipAddress: \(Swift.String(describing: ipAddress)), operatingSystem: \(Swift.String(describing: operatingSystem)), credentials: \"CONTENT_REDACTED\")"} + "InstanceAccess(fleetId: \(Swift.String(describing: fleetId)), instanceId: \(Swift.String(describing: instanceId)), operatingSystem: \(Swift.String(describing: operatingSystem)), credentials: \"CONTENT_REDACTED\", ipAddress: \"CONTENT_REDACTED\")"} } extension GameLiftClientTypes { @@ -14296,6 +14368,35 @@ extension GameLiftClientTypes { } +extension GameLiftClientTypes { + public enum InstanceRoleCredentialsProvider: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case sharedCredentialFile + case sdkUnknown(Swift.String) + + public static var allCases: [InstanceRoleCredentialsProvider] { + return [ + .sharedCredentialFile, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .sharedCredentialFile: return "SHARED_CREDENTIAL_FILE" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = InstanceRoleCredentialsProvider(rawValue: rawValue) ?? InstanceRoleCredentialsProvider.sdkUnknown(rawValue) + } + } +} + extension GameLiftClientTypes { public enum InstanceStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case active @@ -14588,6 +14689,11 @@ extension GameLiftClientTypes.IpPermission: Swift.Codable { } } +extension GameLiftClientTypes.IpPermission: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "IpPermission(protocol: \(Swift.String(describing: `protocol`)), fromPort: \"CONTENT_REDACTED\", ipRange: \"CONTENT_REDACTED\", toPort: \"CONTENT_REDACTED\")"} +} + extension GameLiftClientTypes { /// A range of IP addresses and port settings that allow inbound traffic to connect to server processes on an instance in a fleet. New game sessions are assigned an IP address/port number combination, which must fall into the fleet's allowed ranges. Fleets with custom game builds must have permissions explicitly set. For Realtime Servers fleets, Amazon GameLift automatically opens two port ranges, one for TCP messaging and one for UDP. public struct IpPermission: Swift.Equatable { @@ -16359,6 +16465,11 @@ extension GameLiftClientTypes.MatchedPlayerSession: Swift.Codable { } } +extension GameLiftClientTypes.MatchedPlayerSession: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "MatchedPlayerSession(playerSessionId: \(Swift.String(describing: playerSessionId)), playerId: \"CONTENT_REDACTED\")"} +} + extension GameLiftClientTypes { /// Represents a new player session that is created as a result of a successful FlexMatch match. A successful match automatically creates new player sessions for every player ID in the original matchmaking request. When players connect to the match's game session, they must include both player ID and player session ID in order to claim their assigned player slot. public struct MatchedPlayerSession: Swift.Equatable { @@ -17130,6 +17241,11 @@ extension GameLiftClientTypes.PlacedPlayerSession: Swift.Codable { } } +extension GameLiftClientTypes.PlacedPlayerSession: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "PlacedPlayerSession(playerSessionId: \(Swift.String(describing: playerSessionId)), playerId: \"CONTENT_REDACTED\")"} +} + extension GameLiftClientTypes { /// Information about a player session. This object contains only the player ID and player session ID. To retrieve full details on a player session, call [DescribePlayerSessions](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribePlayerSessions.html) with the player session ID. public struct PlacedPlayerSession: Swift.Equatable { @@ -17211,6 +17327,11 @@ extension GameLiftClientTypes.Player: Swift.Codable { } } +extension GameLiftClientTypes.Player: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "Player(latencyInMs: \(Swift.String(describing: latencyInMs)), playerAttributes: \(Swift.String(describing: playerAttributes)), team: \(Swift.String(describing: team)), playerId: \"CONTENT_REDACTED\")"} +} + extension GameLiftClientTypes { /// Represents a player in matchmaking. When starting a matchmaking request, a player has a player ID, attributes, and may have latency data. Team information is added after a match has been successfully completed. public struct Player: Swift.Equatable { @@ -17270,6 +17391,11 @@ extension GameLiftClientTypes.PlayerLatency: Swift.Codable { } } +extension GameLiftClientTypes.PlayerLatency: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "PlayerLatency(latencyInMilliseconds: \(Swift.String(describing: latencyInMilliseconds)), regionIdentifier: \(Swift.String(describing: regionIdentifier)), playerId: \"CONTENT_REDACTED\")"} +} + extension GameLiftClientTypes { /// Regional latency information for a player, used when requesting a new game session. This value indicates the amount of time lag that exists when the player is connected to a fleet in the specified Region. The relative difference between a player's latency values for multiple Regions are used to determine which fleets are best suited to place a new game session for the player. public struct PlayerLatency: Swift.Equatable { @@ -17424,6 +17550,11 @@ extension GameLiftClientTypes.PlayerSession: Swift.Codable { } } +extension GameLiftClientTypes.PlayerSession: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "PlayerSession(creationTime: \(Swift.String(describing: creationTime)), dnsName: \(Swift.String(describing: dnsName)), fleetArn: \(Swift.String(describing: fleetArn)), fleetId: \(Swift.String(describing: fleetId)), gameSessionId: \(Swift.String(describing: gameSessionId)), playerData: \(Swift.String(describing: playerData)), playerSessionId: \(Swift.String(describing: playerSessionId)), status: \(Swift.String(describing: status)), terminationTime: \(Swift.String(describing: terminationTime)), ipAddress: \"CONTENT_REDACTED\", playerId: \"CONTENT_REDACTED\", port: \"CONTENT_REDACTED\")"} +} + extension GameLiftClientTypes { /// Represents a player session. Player sessions are created either for a specific game session, or as part of a game session placement or matchmaking request. A player session can represents a reserved player slot in a game session (when status is RESERVED) or actual player activity in a game session (when status is ACTIVE). A player session object, including player data, is automatically passed to a game session when the player connects to the game session and is validated. After the game session ends, player sessions information is retained for 30 days and then removed. Related actions [All APIs by task](https://docs.aws.amazon.com/gamelift/latest/developerguide/reference-awssdk.html#reference-awssdk-resources-fleets) public struct PlayerSession: Swift.Equatable { @@ -17995,6 +18126,11 @@ enum PutScalingPolicyOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension RegisterComputeInput: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "RegisterComputeInput(certificatePath: \(Swift.String(describing: certificatePath)), computeName: \(Swift.String(describing: computeName)), dnsName: \(Swift.String(describing: dnsName)), fleetId: \(Swift.String(describing: fleetId)), location: \(Swift.String(describing: location)), ipAddress: \"CONTENT_REDACTED\")"} +} + extension RegisterComputeInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case certificatePath = "CertificatePath" @@ -18152,6 +18288,7 @@ enum RegisterComputeOutputError: ClientRuntime.HttpResponseErrorBinding { case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InternalServiceException": return try await InternalServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InvalidRequestException": return try await InvalidRequestException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "LimitExceededException": return try await LimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "UnauthorizedException": return try await UnauthorizedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) } diff --git a/Sources/Services/AWSGlobalAccelerator/GlobalAcceleratorClient.swift b/Sources/Services/AWSGlobalAccelerator/GlobalAcceleratorClient.swift index b18a441ad0e..5ddcb5f6fd2 100644 --- a/Sources/Services/AWSGlobalAccelerator/GlobalAcceleratorClient.swift +++ b/Sources/Services/AWSGlobalAccelerator/GlobalAcceleratorClient.swift @@ -319,6 +319,56 @@ extension GlobalAcceleratorClient: GlobalAcceleratorClientProtocol { return result } + /// Create a cross-account attachment in Global Accelerator. You create a cross-account attachment to specify the principals who have permission to add to accelerators in their own account the resources in your account that you also list in the attachment. A principal can be an Amazon Web Services account number or the Amazon Resource Name (ARN) for an accelerator. For account numbers that are listed as principals, to add a resource listed in the attachment to an accelerator, you must sign in to an account specified as a principal. Then you can add the resources that are listed to any of your accelerators. If an accelerator ARN is listed in the cross-account attachment as a principal, anyone with permission to make updates to the accelerator can add as endpoints resources that are listed in the attachment. + /// + /// - Parameter CreateCrossAccountAttachmentInput : [no documentation found] + /// + /// - Returns: `CreateCrossAccountAttachmentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access permission. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + /// - `InvalidArgumentException` : An argument that you specified is invalid. + /// - `LimitExceededException` : Processing your request would cause you to exceed an Global Accelerator limit. + /// - `TransactionInProgressException` : There's already a transaction in progress. Another transaction can't be processed. + public func createCrossAccountAttachment(input: CreateCrossAccountAttachmentInput) async throws -> CreateCrossAccountAttachmentOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createCrossAccountAttachment") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "globalaccelerator") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "createCrossAccountAttachment") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.IdempotencyTokenMiddleware(keyPath: \.idempotencyToken)) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "GlobalAccelerator_V20180706.CreateCrossAccountAttachment")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "CreateCrossAccountAttachmentRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Create a custom routing accelerator. A custom routing accelerator directs traffic to one of possibly thousands of Amazon EC2 instance destinations running in a single or multiple virtual private clouds (VPC) subnet endpoints. Be aware that, by default, all destination EC2 instances in a VPC subnet endpoint cannot receive traffic. To enable all destinations to receive traffic, or to specify individual port mappings that can receive traffic, see the [ AllowCustomRoutingTraffic](https://docs.aws.amazon.com/global-accelerator/latest/api/API_AllowCustomRoutingTraffic.html) operation. Global Accelerator is a global service that supports endpoints in multiple Amazon Web Services Regions but you must specify the US West (Oregon) Region to create, update, or otherwise work with accelerators. That is, for example, specify --region us-west-2 on Amazon Web Services CLI commands. /// /// - Parameter CreateCustomRoutingAcceleratorInput : [no documentation found] @@ -622,6 +672,62 @@ extension GlobalAcceleratorClient: GlobalAcceleratorClientProtocol { return result } + /// Delete a cross-account attachment. When you delete an attachment, Global Accelerator revokes the permission to use the resources in the attachment from all principals in the list of principals. Global Accelerator revokes the permission for specific resources by doing the following: + /// + /// * If the principal is an account ID, Global Accelerator reviews every accelerator in the account and removes cross-account endpoints from all accelerators. + /// + /// * If the principal is an accelerator, Global Accelerator reviews just that accelerator and removes cross-account endpoints from it. + /// + /// + /// If there are overlapping permissions provided by multiple cross-account attachments, Global Accelerator only removes endpoints if there are no current cross-account attachments that provide access permission. For example, if you delete a cross-account attachment that lists an accelerator as a principal, but another cross-account attachment includes the account ID that owns that accelerator, endpoints will not be removed from the accelerator. + /// + /// - Parameter DeleteCrossAccountAttachmentInput : [no documentation found] + /// + /// - Returns: `DeleteCrossAccountAttachmentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access permission. + /// - `AttachmentNotFoundException` : No cross-account attachment was found. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + /// - `InvalidArgumentException` : An argument that you specified is invalid. + /// - `TransactionInProgressException` : There's already a transaction in progress. Another transaction can't be processed. + public func deleteCrossAccountAttachment(input: DeleteCrossAccountAttachmentInput) async throws -> DeleteCrossAccountAttachmentOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "deleteCrossAccountAttachment") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "globalaccelerator") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deleteCrossAccountAttachment") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "GlobalAccelerator_V20180706.DeleteCrossAccountAttachment")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "DeleteCrossAccountAttachmentRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Delete a custom routing accelerator. Before you can delete an accelerator, you must disable it and remove all dependent resources (listeners and endpoint groups). To disable the accelerator, update the accelerator to set Enabled to false. When you create a custom routing accelerator, by default, Global Accelerator provides you with a set of two static IP addresses. The IP addresses are assigned to your accelerator for as long as it exists, even if you disable the accelerator and it no longer accepts or routes traffic. However, when you delete an accelerator, you lose the static IP addresses that are assigned to the accelerator, so you can no longer route traffic by using them. As a best practice, ensure that you have permissions in place to avoid inadvertently deleting accelerators. You can use IAM policies with Global Accelerator to limit the users who have permissions to delete an accelerator. For more information, see [Identity and access management](https://docs.aws.amazon.com/global-accelerator/latest/dg/auth-and-access-control.html) in the Global Accelerator Developer Guide. /// /// - Parameter DeleteCustomRoutingAcceleratorInput : [no documentation found] @@ -1051,6 +1157,54 @@ extension GlobalAcceleratorClient: GlobalAcceleratorClientProtocol { return result } + /// Gets configuration information about a cross-account attachment. + /// + /// - Parameter DescribeCrossAccountAttachmentInput : [no documentation found] + /// + /// - Returns: `DescribeCrossAccountAttachmentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access permission. + /// - `AttachmentNotFoundException` : No cross-account attachment was found. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + /// - `InvalidArgumentException` : An argument that you specified is invalid. + public func describeCrossAccountAttachment(input: DescribeCrossAccountAttachmentInput) async throws -> DescribeCrossAccountAttachmentOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "describeCrossAccountAttachment") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "globalaccelerator") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "describeCrossAccountAttachment") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "GlobalAccelerator_V20180706.DescribeCrossAccountAttachment")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "DescribeCrossAccountAttachmentRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Describe a custom routing accelerator. /// /// - Parameter DescribeCustomRoutingAcceleratorInput : [no documentation found] @@ -1428,6 +1582,149 @@ extension GlobalAcceleratorClient: GlobalAcceleratorClientProtocol { return result } + /// List the cross-account attachments that have been created in Global Accelerator. + /// + /// - Parameter ListCrossAccountAttachmentsInput : [no documentation found] + /// + /// - Returns: `ListCrossAccountAttachmentsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access permission. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + /// - `InvalidArgumentException` : An argument that you specified is invalid. + /// - `InvalidNextTokenException` : There isn't another item to return. + public func listCrossAccountAttachments(input: ListCrossAccountAttachmentsInput) async throws -> ListCrossAccountAttachmentsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listCrossAccountAttachments") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "globalaccelerator") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listCrossAccountAttachments") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "GlobalAccelerator_V20180706.ListCrossAccountAttachments")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "ListCrossAccountAttachmentsRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + + /// List the accounts that have cross-account endpoints. + /// + /// - Parameter ListCrossAccountResourceAccountsInput : [no documentation found] + /// + /// - Returns: `ListCrossAccountResourceAccountsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access permission. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + public func listCrossAccountResourceAccounts(input: ListCrossAccountResourceAccountsInput) async throws -> ListCrossAccountResourceAccountsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listCrossAccountResourceAccounts") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "globalaccelerator") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listCrossAccountResourceAccounts") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "GlobalAccelerator_V20180706.ListCrossAccountResourceAccounts")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "ListCrossAccountResourceAccountsRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + + /// List the cross-account endpoints available to add to an accelerator. + /// + /// - Parameter ListCrossAccountResourcesInput : [no documentation found] + /// + /// - Returns: `ListCrossAccountResourcesOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AcceleratorNotFoundException` : The accelerator that you specified doesn't exist. + /// - `AccessDeniedException` : You don't have access permission. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + /// - `InvalidArgumentException` : An argument that you specified is invalid. + /// - `InvalidNextTokenException` : There isn't another item to return. + public func listCrossAccountResources(input: ListCrossAccountResourcesInput) async throws -> ListCrossAccountResourcesOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listCrossAccountResources") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "globalaccelerator") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listCrossAccountResources") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "GlobalAccelerator_V20180706.ListCrossAccountResources")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "ListCrossAccountResourcesRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// List the custom routing accelerators for an Amazon Web Services account. /// /// - Parameter ListCustomRoutingAcceleratorsInput : [no documentation found] @@ -2164,6 +2461,63 @@ extension GlobalAcceleratorClient: GlobalAcceleratorClientProtocol { return result } + /// Update a cross-account attachment to add or remove principals or resources. When you update an attachment to remove a principal (account ID or accelerator) or a resource, Global Accelerator revokes the permission for specific resources by doing the following: + /// + /// * If the principal is an account ID, Global Accelerator reviews every accelerator in the account and removes cross-account endpoints from all accelerators. + /// + /// * If the principal is an accelerator, Global Accelerator reviews just that accelerator and removes cross-account endpoints from it. + /// + /// + /// If there are overlapping permissions provided by multiple cross-account attachments, Global Accelerator only removes endpoints if there are no current cross-account attachments that provide access permission. For example, if you delete a cross-account attachment that lists an accelerator as a principal, but another cross-account attachment includes the account ID that owns that accelerator, endpoints will not be removed from the accelerator. + /// + /// - Parameter UpdateCrossAccountAttachmentInput : [no documentation found] + /// + /// - Returns: `UpdateCrossAccountAttachmentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access permission. + /// - `AttachmentNotFoundException` : No cross-account attachment was found. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + /// - `InvalidArgumentException` : An argument that you specified is invalid. + /// - `LimitExceededException` : Processing your request would cause you to exceed an Global Accelerator limit. + /// - `TransactionInProgressException` : There's already a transaction in progress. Another transaction can't be processed. + public func updateCrossAccountAttachment(input: UpdateCrossAccountAttachmentInput) async throws -> UpdateCrossAccountAttachmentOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "updateCrossAccountAttachment") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "globalaccelerator") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "updateCrossAccountAttachment") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "GlobalAccelerator_V20180706.UpdateCrossAccountAttachment")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "UpdateCrossAccountAttachmentRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Update a custom routing accelerator. /// /// - Parameter UpdateCustomRoutingAcceleratorInput : [no documentation found] diff --git a/Sources/Services/AWSGlobalAccelerator/GlobalAcceleratorClientProtocol.swift b/Sources/Services/AWSGlobalAccelerator/GlobalAcceleratorClientProtocol.swift index c34086d785d..d40c33a5ab0 100644 --- a/Sources/Services/AWSGlobalAccelerator/GlobalAcceleratorClientProtocol.swift +++ b/Sources/Services/AWSGlobalAccelerator/GlobalAcceleratorClientProtocol.swift @@ -9,7 +9,7 @@ import ClientRuntime /// * For other scenarios, you might choose a custom routing accelerator. With a custom routing accelerator, you can use application logic to directly map one or more users to a specific endpoint among many endpoints. /// /// -/// Global Accelerator is a global service that supports endpoints in multiple Amazon Web Services Regions but you must specify the US West (Oregon) Region to create, update, or otherwise work with accelerators. That is, for example, specify --region us-west-2 on Amazon Web Services CLI commands. By default, Global Accelerator provides you with static IP addresses that you associate with your accelerator. The static IP addresses are anycast from the Amazon Web Services edge network. For IPv4, Global Accelerator provides two static IPv4 addresses. For dual-stack, Global Accelerator provides a total of four addresses: two static IPv4 addresses and two static IPv6 addresses. With a standard accelerator for IPv4, instead of using the addresses that Global Accelerator provides, you can configure these entry points to be IPv4 addresses from your own IP address ranges that you bring toGlobal Accelerator (BYOIP). For a standard accelerator, they distribute incoming application traffic across multiple endpoint resources in multiple Amazon Web Services Regions , which increases the availability of your applications. Endpoints for standard accelerators can be Network Load Balancers, Application Load Balancers, Amazon EC2 instances, or Elastic IP addresses that are located in one Amazon Web Services Region or multiple Amazon Web Services Regions. For custom routing accelerators, you map traffic that arrives to the static IP addresses to specific Amazon EC2 servers in endpoints that are virtual private cloud (VPC) subnets. The static IP addresses remain assigned to your accelerator for as long as it exists, even if you disable the accelerator and it no longer accepts or routes traffic. However, when you delete an accelerator, you lose the static IP addresses that are assigned to it, so you can no longer route traffic by using them. You can use IAM policies like tag-based permissions with Global Accelerator to limit the users who have permissions to delete an accelerator. For more information, see [Tag-based policies](https://docs.aws.amazon.com/global-accelerator/latest/dg/access-control-manage-access-tag-policies.html). For standard accelerators, Global Accelerator uses the Amazon Web Services global network to route traffic to the optimal regional endpoint based on health, client location, and policies that you configure. The service reacts instantly to changes in health or configuration to ensure that internet traffic from clients is always directed to healthy endpoints. For more information about understanding and using Global Accelerator, see the [Global Accelerator Developer Guide](https://docs.aws.amazon.com/global-accelerator/latest/dg/what-is-global-accelerator.html). +/// Global Accelerator is a global service that supports endpoints in multiple Amazon Web Services Regions but you must specify the US West (Oregon) Region to create, update, or otherwise work with accelerators. That is, for example, specify --region us-west-2 on Amazon Web Services CLI commands. By default, Global Accelerator provides you with static IP addresses that you associate with your accelerator. The static IP addresses are anycast from the Amazon Web Services edge network. For IPv4, Global Accelerator provides two static IPv4 addresses. For dual-stack, Global Accelerator provides a total of four addresses: two static IPv4 addresses and two static IPv6 addresses. With a standard accelerator for IPv4, instead of using the addresses that Global Accelerator provides, you can configure these entry points to be IPv4 addresses from your own IP address ranges that you bring to Global Accelerator (BYOIP). For a standard accelerator, they distribute incoming application traffic across multiple endpoint resources in multiple Amazon Web Services Regions , which increases the availability of your applications. Endpoints for standard accelerators can be Network Load Balancers, Application Load Balancers, Amazon EC2 instances, or Elastic IP addresses that are located in one Amazon Web Services Region or multiple Amazon Web Services Regions. For custom routing accelerators, you map traffic that arrives to the static IP addresses to specific Amazon EC2 servers in endpoints that are virtual private cloud (VPC) subnets. The static IP addresses remain assigned to your accelerator for as long as it exists, even if you disable the accelerator and it no longer accepts or routes traffic. However, when you delete an accelerator, you lose the static IP addresses that are assigned to it, so you can no longer route traffic by using them. You can use IAM policies like tag-based permissions with Global Accelerator to limit the users who have permissions to delete an accelerator. For more information, see [Tag-based policies](https://docs.aws.amazon.com/global-accelerator/latest/dg/access-control-manage-access-tag-policies.html). For standard accelerators, Global Accelerator uses the Amazon Web Services global network to route traffic to the optimal regional endpoint based on health, client location, and policies that you configure. The service reacts instantly to changes in health or configuration to ensure that internet traffic from clients is always directed to healthy endpoints. For more information about understanding and using Global Accelerator, see the [Global Accelerator Developer Guide](https://docs.aws.amazon.com/global-accelerator/latest/dg/what-is-global-accelerator.html). public protocol GlobalAcceleratorClientProtocol { /// Associate a virtual private cloud (VPC) subnet endpoint with your custom routing accelerator. The listener port range must be large enough to support the number of IP addresses that can be specified in your subnet. The number of ports required is: subnet size times the number of ports per destination EC2 instances. For example, a subnet defined as /24 requires a listener port range of at least 255 ports. Note: You must have enough remaining listener ports available to map to the subnet ports, or the call will fail with a LimitExceededException. By default, all destinations in a subnet in a custom routing accelerator cannot receive traffic. To enable all destinations to receive traffic, or to specify individual port mappings that can receive traffic, see the [ AllowCustomRoutingTraffic](https://docs.aws.amazon.com/global-accelerator/latest/api/API_AllowCustomRoutingTraffic.html) operation. /// @@ -92,6 +92,21 @@ public protocol GlobalAcceleratorClientProtocol { /// - `InvalidArgumentException` : An argument that you specified is invalid. /// - `LimitExceededException` : Processing your request would cause you to exceed an Global Accelerator limit. func createAccelerator(input: CreateAcceleratorInput) async throws -> CreateAcceleratorOutput + /// Create a cross-account attachment in Global Accelerator. You create a cross-account attachment to specify the principals who have permission to add to accelerators in their own account the resources in your account that you also list in the attachment. A principal can be an Amazon Web Services account number or the Amazon Resource Name (ARN) for an accelerator. For account numbers that are listed as principals, to add a resource listed in the attachment to an accelerator, you must sign in to an account specified as a principal. Then you can add the resources that are listed to any of your accelerators. If an accelerator ARN is listed in the cross-account attachment as a principal, anyone with permission to make updates to the accelerator can add as endpoints resources that are listed in the attachment. + /// + /// - Parameter CreateCrossAccountAttachmentInput : [no documentation found] + /// + /// - Returns: `CreateCrossAccountAttachmentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access permission. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + /// - `InvalidArgumentException` : An argument that you specified is invalid. + /// - `LimitExceededException` : Processing your request would cause you to exceed an Global Accelerator limit. + /// - `TransactionInProgressException` : There's already a transaction in progress. Another transaction can't be processed. + func createCrossAccountAttachment(input: CreateCrossAccountAttachmentInput) async throws -> CreateCrossAccountAttachmentOutput /// Create a custom routing accelerator. A custom routing accelerator directs traffic to one of possibly thousands of Amazon EC2 instance destinations running in a single or multiple virtual private clouds (VPC) subnet endpoints. Be aware that, by default, all destination EC2 instances in a VPC subnet endpoint cannot receive traffic. To enable all destinations to receive traffic, or to specify individual port mappings that can receive traffic, see the [ AllowCustomRoutingTraffic](https://docs.aws.amazon.com/global-accelerator/latest/api/API_AllowCustomRoutingTraffic.html) operation. Global Accelerator is a global service that supports endpoints in multiple Amazon Web Services Regions but you must specify the US West (Oregon) Region to create, update, or otherwise work with accelerators. That is, for example, specify --region us-west-2 on Amazon Web Services CLI commands. /// /// - Parameter CreateCustomRoutingAcceleratorInput : [no documentation found] @@ -186,6 +201,28 @@ public protocol GlobalAcceleratorClientProtocol { /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. /// - `InvalidArgumentException` : An argument that you specified is invalid. func deleteAccelerator(input: DeleteAcceleratorInput) async throws -> DeleteAcceleratorOutput + /// Delete a cross-account attachment. When you delete an attachment, Global Accelerator revokes the permission to use the resources in the attachment from all principals in the list of principals. Global Accelerator revokes the permission for specific resources by doing the following: + /// + /// * If the principal is an account ID, Global Accelerator reviews every accelerator in the account and removes cross-account endpoints from all accelerators. + /// + /// * If the principal is an accelerator, Global Accelerator reviews just that accelerator and removes cross-account endpoints from it. + /// + /// + /// If there are overlapping permissions provided by multiple cross-account attachments, Global Accelerator only removes endpoints if there are no current cross-account attachments that provide access permission. For example, if you delete a cross-account attachment that lists an accelerator as a principal, but another cross-account attachment includes the account ID that owns that accelerator, endpoints will not be removed from the accelerator. + /// + /// - Parameter DeleteCrossAccountAttachmentInput : [no documentation found] + /// + /// - Returns: `DeleteCrossAccountAttachmentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access permission. + /// - `AttachmentNotFoundException` : No cross-account attachment was found. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + /// - `InvalidArgumentException` : An argument that you specified is invalid. + /// - `TransactionInProgressException` : There's already a transaction in progress. Another transaction can't be processed. + func deleteCrossAccountAttachment(input: DeleteCrossAccountAttachmentInput) async throws -> DeleteCrossAccountAttachmentOutput /// Delete a custom routing accelerator. Before you can delete an accelerator, you must disable it and remove all dependent resources (listeners and endpoint groups). To disable the accelerator, update the accelerator to set Enabled to false. When you create a custom routing accelerator, by default, Global Accelerator provides you with a set of two static IP addresses. The IP addresses are assigned to your accelerator for as long as it exists, even if you disable the accelerator and it no longer accepts or routes traffic. However, when you delete an accelerator, you lose the static IP addresses that are assigned to the accelerator, so you can no longer route traffic by using them. As a best practice, ensure that you have permissions in place to avoid inadvertently deleting accelerators. You can use IAM policies with Global Accelerator to limit the users who have permissions to delete an accelerator. For more information, see [Identity and access management](https://docs.aws.amazon.com/global-accelerator/latest/dg/auth-and-access-control.html) in the Global Accelerator Developer Guide. /// /// - Parameter DeleteCustomRoutingAcceleratorInput : [no documentation found] @@ -309,6 +346,20 @@ public protocol GlobalAcceleratorClientProtocol { /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. /// - `InvalidArgumentException` : An argument that you specified is invalid. func describeAcceleratorAttributes(input: DescribeAcceleratorAttributesInput) async throws -> DescribeAcceleratorAttributesOutput + /// Gets configuration information about a cross-account attachment. + /// + /// - Parameter DescribeCrossAccountAttachmentInput : [no documentation found] + /// + /// - Returns: `DescribeCrossAccountAttachmentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access permission. + /// - `AttachmentNotFoundException` : No cross-account attachment was found. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + /// - `InvalidArgumentException` : An argument that you specified is invalid. + func describeCrossAccountAttachment(input: DescribeCrossAccountAttachmentInput) async throws -> DescribeCrossAccountAttachmentOutput /// Describe a custom routing accelerator. /// /// - Parameter DescribeCustomRoutingAcceleratorInput : [no documentation found] @@ -414,6 +465,47 @@ public protocol GlobalAcceleratorClientProtocol { /// - `InvalidArgumentException` : An argument that you specified is invalid. /// - `InvalidNextTokenException` : There isn't another item to return. func listByoipCidrs(input: ListByoipCidrsInput) async throws -> ListByoipCidrsOutput + /// List the cross-account attachments that have been created in Global Accelerator. + /// + /// - Parameter ListCrossAccountAttachmentsInput : [no documentation found] + /// + /// - Returns: `ListCrossAccountAttachmentsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access permission. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + /// - `InvalidArgumentException` : An argument that you specified is invalid. + /// - `InvalidNextTokenException` : There isn't another item to return. + func listCrossAccountAttachments(input: ListCrossAccountAttachmentsInput) async throws -> ListCrossAccountAttachmentsOutput + /// List the accounts that have cross-account endpoints. + /// + /// - Parameter ListCrossAccountResourceAccountsInput : [no documentation found] + /// + /// - Returns: `ListCrossAccountResourceAccountsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access permission. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + func listCrossAccountResourceAccounts(input: ListCrossAccountResourceAccountsInput) async throws -> ListCrossAccountResourceAccountsOutput + /// List the cross-account endpoints available to add to an accelerator. + /// + /// - Parameter ListCrossAccountResourcesInput : [no documentation found] + /// + /// - Returns: `ListCrossAccountResourcesOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AcceleratorNotFoundException` : The accelerator that you specified doesn't exist. + /// - `AccessDeniedException` : You don't have access permission. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + /// - `InvalidArgumentException` : An argument that you specified is invalid. + /// - `InvalidNextTokenException` : There isn't another item to return. + func listCrossAccountResources(input: ListCrossAccountResourcesInput) async throws -> ListCrossAccountResourcesOutput /// List the custom routing accelerators for an Amazon Web Services account. /// /// - Parameter ListCustomRoutingAcceleratorsInput : [no documentation found] @@ -640,6 +732,29 @@ public protocol GlobalAcceleratorClientProtocol { /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. /// - `InvalidArgumentException` : An argument that you specified is invalid. func updateAcceleratorAttributes(input: UpdateAcceleratorAttributesInput) async throws -> UpdateAcceleratorAttributesOutput + /// Update a cross-account attachment to add or remove principals or resources. When you update an attachment to remove a principal (account ID or accelerator) or a resource, Global Accelerator revokes the permission for specific resources by doing the following: + /// + /// * If the principal is an account ID, Global Accelerator reviews every accelerator in the account and removes cross-account endpoints from all accelerators. + /// + /// * If the principal is an accelerator, Global Accelerator reviews just that accelerator and removes cross-account endpoints from it. + /// + /// + /// If there are overlapping permissions provided by multiple cross-account attachments, Global Accelerator only removes endpoints if there are no current cross-account attachments that provide access permission. For example, if you delete a cross-account attachment that lists an accelerator as a principal, but another cross-account attachment includes the account ID that owns that accelerator, endpoints will not be removed from the accelerator. + /// + /// - Parameter UpdateCrossAccountAttachmentInput : [no documentation found] + /// + /// - Returns: `UpdateCrossAccountAttachmentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access permission. + /// - `AttachmentNotFoundException` : No cross-account attachment was found. + /// - `InternalServiceErrorException` : There was an internal error for Global Accelerator. + /// - `InvalidArgumentException` : An argument that you specified is invalid. + /// - `LimitExceededException` : Processing your request would cause you to exceed an Global Accelerator limit. + /// - `TransactionInProgressException` : There's already a transaction in progress. Another transaction can't be processed. + func updateCrossAccountAttachment(input: UpdateCrossAccountAttachmentInput) async throws -> UpdateCrossAccountAttachmentOutput /// Update a custom routing accelerator. /// /// - Parameter UpdateCustomRoutingAcceleratorInput : [no documentation found] diff --git a/Sources/Services/AWSGlobalAccelerator/Paginators.swift b/Sources/Services/AWSGlobalAccelerator/Paginators.swift index c95d0f42c78..a814a7eb507 100644 --- a/Sources/Services/AWSGlobalAccelerator/Paginators.swift +++ b/Sources/Services/AWSGlobalAccelerator/Paginators.swift @@ -62,6 +62,68 @@ extension PaginatorSequence where Input == ListByoipCidrsInput, Output == ListBy return try await self.asyncCompactMap { item in item.byoipCidrs } } } +extension GlobalAcceleratorClient { + /// Paginate over `[ListCrossAccountAttachmentsOutput]` results. + /// + /// When this operation is called, an `AsyncSequence` is created. AsyncSequences are lazy so no service + /// calls are made until the sequence is iterated over. This also means there is no guarantee that the request is valid + /// until then. If there are errors in your request, you will see the failures only after you start iterating. + /// - Parameters: + /// - input: A `[ListCrossAccountAttachmentsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListCrossAccountAttachmentsOutput` + public func listCrossAccountAttachmentsPaginated(input: ListCrossAccountAttachmentsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \ListCrossAccountAttachmentsInput.nextToken, outputKey: \ListCrossAccountAttachmentsOutput.nextToken, paginationFunction: self.listCrossAccountAttachments(input:)) + } +} + +extension ListCrossAccountAttachmentsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListCrossAccountAttachmentsInput { + return ListCrossAccountAttachmentsInput( + maxResults: self.maxResults, + nextToken: token + )} +} + +extension PaginatorSequence where Input == ListCrossAccountAttachmentsInput, Output == ListCrossAccountAttachmentsOutput { + /// This paginator transforms the `AsyncSequence` returned by `listCrossAccountAttachmentsPaginated` + /// to access the nested member `[GlobalAcceleratorClientTypes.Attachment]` + /// - Returns: `[GlobalAcceleratorClientTypes.Attachment]` + public func crossAccountAttachments() async throws -> [GlobalAcceleratorClientTypes.Attachment] { + return try await self.asyncCompactMap { item in item.crossAccountAttachments } + } +} +extension GlobalAcceleratorClient { + /// Paginate over `[ListCrossAccountResourcesOutput]` results. + /// + /// When this operation is called, an `AsyncSequence` is created. AsyncSequences are lazy so no service + /// calls are made until the sequence is iterated over. This also means there is no guarantee that the request is valid + /// until then. If there are errors in your request, you will see the failures only after you start iterating. + /// - Parameters: + /// - input: A `[ListCrossAccountResourcesInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListCrossAccountResourcesOutput` + public func listCrossAccountResourcesPaginated(input: ListCrossAccountResourcesInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \ListCrossAccountResourcesInput.nextToken, outputKey: \ListCrossAccountResourcesOutput.nextToken, paginationFunction: self.listCrossAccountResources(input:)) + } +} + +extension ListCrossAccountResourcesInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListCrossAccountResourcesInput { + return ListCrossAccountResourcesInput( + acceleratorArn: self.acceleratorArn, + maxResults: self.maxResults, + nextToken: token, + resourceOwnerAwsAccountId: self.resourceOwnerAwsAccountId + )} +} + +extension PaginatorSequence where Input == ListCrossAccountResourcesInput, Output == ListCrossAccountResourcesOutput { + /// This paginator transforms the `AsyncSequence` returned by `listCrossAccountResourcesPaginated` + /// to access the nested member `[GlobalAcceleratorClientTypes.CrossAccountResource]` + /// - Returns: `[GlobalAcceleratorClientTypes.CrossAccountResource]` + public func crossAccountResources() async throws -> [GlobalAcceleratorClientTypes.CrossAccountResource] { + return try await self.asyncCompactMap { item in item.crossAccountResources } + } +} extension GlobalAcceleratorClient { /// Paginate over `[ListCustomRoutingAcceleratorsOutput]` results. /// diff --git a/Sources/Services/AWSGlobalAccelerator/models/Models.swift b/Sources/Services/AWSGlobalAccelerator/models/Models.swift index d14ecf6832a..31f95a4737d 100644 --- a/Sources/Services/AWSGlobalAccelerator/models/Models.swift +++ b/Sources/Services/AWSGlobalAccelerator/models/Models.swift @@ -1112,6 +1112,170 @@ extension AssociatedListenerFoundExceptionBody: Swift.Decodable { } } +extension GlobalAcceleratorClientTypes.Attachment: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case attachmentArn = "AttachmentArn" + case createdTime = "CreatedTime" + case lastModifiedTime = "LastModifiedTime" + case name = "Name" + case principals = "Principals" + case resources = "Resources" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let attachmentArn = self.attachmentArn { + try encodeContainer.encode(attachmentArn, forKey: .attachmentArn) + } + if let createdTime = self.createdTime { + try encodeContainer.encodeTimestamp(createdTime, format: .epochSeconds, forKey: .createdTime) + } + if let lastModifiedTime = self.lastModifiedTime { + try encodeContainer.encodeTimestamp(lastModifiedTime, format: .epochSeconds, forKey: .lastModifiedTime) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let principals = principals { + var principalsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .principals) + for principal0 in principals { + try principalsContainer.encode(principal0) + } + } + if let resources = resources { + var resourcesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .resources) + for resource0 in resources { + try resourcesContainer.encode(resource0) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let attachmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .attachmentArn) + attachmentArn = attachmentArnDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let principalsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .principals) + var principalsDecoded0:[Swift.String]? = nil + if let principalsContainer = principalsContainer { + principalsDecoded0 = [Swift.String]() + for string0 in principalsContainer { + if let string0 = string0 { + principalsDecoded0?.append(string0) + } + } + } + principals = principalsDecoded0 + let resourcesContainer = try containerValues.decodeIfPresent([GlobalAcceleratorClientTypes.Resource?].self, forKey: .resources) + var resourcesDecoded0:[GlobalAcceleratorClientTypes.Resource]? = nil + if let resourcesContainer = resourcesContainer { + resourcesDecoded0 = [GlobalAcceleratorClientTypes.Resource]() + for structure0 in resourcesContainer { + if let structure0 = structure0 { + resourcesDecoded0?.append(structure0) + } + } + } + resources = resourcesDecoded0 + let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) + lastModifiedTime = lastModifiedTimeDecoded + let createdTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTime) + createdTime = createdTimeDecoded + } +} + +extension GlobalAcceleratorClientTypes { + /// A cross-account attachment in Global Accelerator. A cross-account attachment specifies the principals who have permission to add to accelerators in their own account the resources in your account that you also list in the attachment. + public struct Attachment: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the cross-account attachment. + public var attachmentArn: Swift.String? + /// The date and time that the cross-account attachment was created. + public var createdTime: ClientRuntime.Date? + /// The date and time that the cross-account attachment was last modified. + public var lastModifiedTime: ClientRuntime.Date? + /// The name of the cross-account attachment. + public var name: Swift.String? + /// The principals included in the cross-account attachment. + public var principals: [Swift.String]? + /// The resources included in the cross-account attachment. + public var resources: [GlobalAcceleratorClientTypes.Resource]? + + public init( + attachmentArn: Swift.String? = nil, + createdTime: ClientRuntime.Date? = nil, + lastModifiedTime: ClientRuntime.Date? = nil, + name: Swift.String? = nil, + principals: [Swift.String]? = nil, + resources: [GlobalAcceleratorClientTypes.Resource]? = nil + ) + { + self.attachmentArn = attachmentArn + self.createdTime = createdTime + self.lastModifiedTime = lastModifiedTime + self.name = name + self.principals = principals + self.resources = resources + } + } + +} + +extension AttachmentNotFoundException { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: AttachmentNotFoundExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// No cross-account attachment was found. +public struct AttachmentNotFoundException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "AttachmentNotFoundException" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct AttachmentNotFoundExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension AttachmentNotFoundExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message = "Message" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + extension GlobalAcceleratorClientTypes.ByoipCidr: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case cidr = "Cidr" @@ -1680,6 +1844,194 @@ enum CreateAcceleratorOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension CreateCrossAccountAttachmentInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case idempotencyToken = "IdempotencyToken" + case name = "Name" + case principals = "Principals" + case resources = "Resources" + case tags = "Tags" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let idempotencyToken = self.idempotencyToken { + try encodeContainer.encode(idempotencyToken, forKey: .idempotencyToken) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let principals = principals { + var principalsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .principals) + for principal0 in principals { + try principalsContainer.encode(principal0) + } + } + if let resources = resources { + var resourcesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .resources) + for resource0 in resources { + try resourcesContainer.encode(resource0) + } + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .tags) + for tag0 in tags { + try tagsContainer.encode(tag0) + } + } + } +} + +extension CreateCrossAccountAttachmentInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct CreateCrossAccountAttachmentInput: Swift.Equatable { + /// A unique, case-sensitive identifier that you provide to ensure the idempotency—that is, the uniqueness—of the request. + /// This member is required. + public var idempotencyToken: Swift.String? + /// The name of the cross-account attachment. + /// This member is required. + public var name: Swift.String? + /// The principals to list in the cross-account attachment. A principal can be an Amazon Web Services account number or the Amazon Resource Name (ARN) for an accelerator. + public var principals: [Swift.String]? + /// The Amazon Resource Names (ARNs) for the resources to list in the cross-account attachment. A resource can be any supported Amazon Web Services resource type for Global Accelerator. + public var resources: [GlobalAcceleratorClientTypes.Resource]? + /// Create tags for cross-account attachment. For more information, see [Tagging in Global Accelerator](https://docs.aws.amazon.com/global-accelerator/latest/dg/tagging-in-global-accelerator.html) in the Global Accelerator Developer Guide. + public var tags: [GlobalAcceleratorClientTypes.Tag]? + + public init( + idempotencyToken: Swift.String? = nil, + name: Swift.String? = nil, + principals: [Swift.String]? = nil, + resources: [GlobalAcceleratorClientTypes.Resource]? = nil, + tags: [GlobalAcceleratorClientTypes.Tag]? = nil + ) + { + self.idempotencyToken = idempotencyToken + self.name = name + self.principals = principals + self.resources = resources + self.tags = tags + } +} + +struct CreateCrossAccountAttachmentInputBody: Swift.Equatable { + let name: Swift.String? + let principals: [Swift.String]? + let resources: [GlobalAcceleratorClientTypes.Resource]? + let idempotencyToken: Swift.String? + let tags: [GlobalAcceleratorClientTypes.Tag]? +} + +extension CreateCrossAccountAttachmentInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case idempotencyToken = "IdempotencyToken" + case name = "Name" + case principals = "Principals" + case resources = "Resources" + case tags = "Tags" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let principalsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .principals) + var principalsDecoded0:[Swift.String]? = nil + if let principalsContainer = principalsContainer { + principalsDecoded0 = [Swift.String]() + for string0 in principalsContainer { + if let string0 = string0 { + principalsDecoded0?.append(string0) + } + } + } + principals = principalsDecoded0 + let resourcesContainer = try containerValues.decodeIfPresent([GlobalAcceleratorClientTypes.Resource?].self, forKey: .resources) + var resourcesDecoded0:[GlobalAcceleratorClientTypes.Resource]? = nil + if let resourcesContainer = resourcesContainer { + resourcesDecoded0 = [GlobalAcceleratorClientTypes.Resource]() + for structure0 in resourcesContainer { + if let structure0 = structure0 { + resourcesDecoded0?.append(structure0) + } + } + } + resources = resourcesDecoded0 + let idempotencyTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .idempotencyToken) + idempotencyToken = idempotencyTokenDecoded + let tagsContainer = try containerValues.decodeIfPresent([GlobalAcceleratorClientTypes.Tag?].self, forKey: .tags) + var tagsDecoded0:[GlobalAcceleratorClientTypes.Tag]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [GlobalAcceleratorClientTypes.Tag]() + for structure0 in tagsContainer { + if let structure0 = structure0 { + tagsDecoded0?.append(structure0) + } + } + } + tags = tagsDecoded0 + } +} + +extension CreateCrossAccountAttachmentOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: CreateCrossAccountAttachmentOutputBody = try responseDecoder.decode(responseBody: data) + self.crossAccountAttachment = output.crossAccountAttachment + } else { + self.crossAccountAttachment = nil + } + } +} + +public struct CreateCrossAccountAttachmentOutput: Swift.Equatable { + /// Information about the cross-account attachment. + public var crossAccountAttachment: GlobalAcceleratorClientTypes.Attachment? + + public init( + crossAccountAttachment: GlobalAcceleratorClientTypes.Attachment? = nil + ) + { + self.crossAccountAttachment = crossAccountAttachment + } +} + +struct CreateCrossAccountAttachmentOutputBody: Swift.Equatable { + let crossAccountAttachment: GlobalAcceleratorClientTypes.Attachment? +} + +extension CreateCrossAccountAttachmentOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case crossAccountAttachment = "CrossAccountAttachment" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let crossAccountAttachmentDecoded = try containerValues.decodeIfPresent(GlobalAcceleratorClientTypes.Attachment.self, forKey: .crossAccountAttachment) + crossAccountAttachment = crossAccountAttachmentDecoded + } +} + +enum CreateCrossAccountAttachmentOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServiceErrorException": return try await InternalServiceErrorException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidArgumentException": return try await InvalidArgumentException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "LimitExceededException": return try await LimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "TransactionInProgressException": return try await TransactionInProgressException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension CreateCustomRoutingAcceleratorInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case enabled = "Enabled" @@ -2582,26 +2934,71 @@ enum CreateListenerOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension GlobalAcceleratorClientTypes.CustomRoutingAccelerator: Swift.Codable { +extension GlobalAcceleratorClientTypes.CrossAccountResource: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case acceleratorArn = "AcceleratorArn" - case createdTime = "CreatedTime" - case dnsName = "DnsName" - case enabled = "Enabled" - case ipAddressType = "IpAddressType" - case ipSets = "IpSets" - case lastModifiedTime = "LastModifiedTime" - case name = "Name" - case status = "Status" + case attachmentArn = "AttachmentArn" + case endpointId = "EndpointId" } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let acceleratorArn = self.acceleratorArn { - try encodeContainer.encode(acceleratorArn, forKey: .acceleratorArn) + if let attachmentArn = self.attachmentArn { + try encodeContainer.encode(attachmentArn, forKey: .attachmentArn) } - if let createdTime = self.createdTime { - try encodeContainer.encodeTimestamp(createdTime, format: .epochSeconds, forKey: .createdTime) + if let endpointId = self.endpointId { + try encodeContainer.encode(endpointId, forKey: .endpointId) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let endpointIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endpointId) + endpointId = endpointIdDecoded + let attachmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .attachmentArn) + attachmentArn = attachmentArnDecoded + } +} + +extension GlobalAcceleratorClientTypes { + /// An endpoint (Amazon Web Services resource) that is listed in a cross-account attachment and can be added to an accelerator by specified principals, that are also listed in the attachment. + public struct CrossAccountResource: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the cross-account attachment that specifies the endpoints (resources) that can be added to accelerators and principals that have permission to add the endpoints to accelerators. + public var attachmentArn: Swift.String? + /// The endpoint ID for the endpoint that is listed in a cross-account attachment and can be added to an accelerator by specified principals. + public var endpointId: Swift.String? + + public init( + attachmentArn: Swift.String? = nil, + endpointId: Swift.String? = nil + ) + { + self.attachmentArn = attachmentArn + self.endpointId = endpointId + } + } + +} + +extension GlobalAcceleratorClientTypes.CustomRoutingAccelerator: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case acceleratorArn = "AcceleratorArn" + case createdTime = "CreatedTime" + case dnsName = "DnsName" + case enabled = "Enabled" + case ipAddressType = "IpAddressType" + case ipSets = "IpSets" + case lastModifiedTime = "LastModifiedTime" + case name = "Name" + case status = "Status" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let acceleratorArn = self.acceleratorArn { + try encodeContainer.encode(acceleratorArn, forKey: .acceleratorArn) + } + if let createdTime = self.createdTime { + try encodeContainer.encodeTimestamp(createdTime, format: .epochSeconds, forKey: .createdTime) } if let dnsName = self.dnsName { try encodeContainer.encode(dnsName, forKey: .dnsName) @@ -2967,11 +3364,15 @@ extension GlobalAcceleratorClientTypes { extension GlobalAcceleratorClientTypes.CustomRoutingEndpointConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case attachmentArn = "AttachmentArn" case endpointId = "EndpointId" } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let attachmentArn = self.attachmentArn { + try encodeContainer.encode(attachmentArn, forKey: .attachmentArn) + } if let endpointId = self.endpointId { try encodeContainer.encode(endpointId, forKey: .endpointId) } @@ -2981,19 +3382,25 @@ extension GlobalAcceleratorClientTypes.CustomRoutingEndpointConfiguration: Swift let containerValues = try decoder.container(keyedBy: CodingKeys.self) let endpointIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endpointId) endpointId = endpointIdDecoded + let attachmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .attachmentArn) + attachmentArn = attachmentArnDecoded } } extension GlobalAcceleratorClientTypes { /// The list of endpoint objects. For custom routing, this is a list of virtual private cloud (VPC) subnet IDs. public struct CustomRoutingEndpointConfiguration: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the cross-account attachment that specifies the endpoints (resources) that can be added to accelerators and principals that have permission to add the endpoints to accelerators. + public var attachmentArn: Swift.String? /// An ID for the endpoint. For custom routing accelerators, this is the virtual private cloud (VPC) subnet ID. public var endpointId: Swift.String? public init( + attachmentArn: Swift.String? = nil, endpointId: Swift.String? = nil ) { + self.attachmentArn = attachmentArn self.endpointId = endpointId } } @@ -3286,6 +3693,79 @@ enum DeleteAcceleratorOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DeleteCrossAccountAttachmentInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case attachmentArn = "AttachmentArn" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let attachmentArn = self.attachmentArn { + try encodeContainer.encode(attachmentArn, forKey: .attachmentArn) + } + } +} + +extension DeleteCrossAccountAttachmentInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct DeleteCrossAccountAttachmentInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) for the cross-account attachment to delete. + /// This member is required. + public var attachmentArn: Swift.String? + + public init( + attachmentArn: Swift.String? = nil + ) + { + self.attachmentArn = attachmentArn + } +} + +struct DeleteCrossAccountAttachmentInputBody: Swift.Equatable { + let attachmentArn: Swift.String? +} + +extension DeleteCrossAccountAttachmentInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case attachmentArn = "AttachmentArn" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let attachmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .attachmentArn) + attachmentArn = attachmentArnDecoded + } +} + +extension DeleteCrossAccountAttachmentOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct DeleteCrossAccountAttachmentOutput: Swift.Equatable { + + public init() { } +} + +enum DeleteCrossAccountAttachmentOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "AttachmentNotFoundException": return try await AttachmentNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServiceErrorException": return try await InternalServiceErrorException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidArgumentException": return try await InvalidArgumentException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "TransactionInProgressException": return try await TransactionInProgressException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension DeleteCustomRoutingAcceleratorInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case acceleratorArn = "AcceleratorArn" @@ -4094,6 +4574,108 @@ enum DescribeAcceleratorOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DescribeCrossAccountAttachmentInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case attachmentArn = "AttachmentArn" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let attachmentArn = self.attachmentArn { + try encodeContainer.encode(attachmentArn, forKey: .attachmentArn) + } + } +} + +extension DescribeCrossAccountAttachmentInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct DescribeCrossAccountAttachmentInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) for the cross-account attachment to describe. + /// This member is required. + public var attachmentArn: Swift.String? + + public init( + attachmentArn: Swift.String? = nil + ) + { + self.attachmentArn = attachmentArn + } +} + +struct DescribeCrossAccountAttachmentInputBody: Swift.Equatable { + let attachmentArn: Swift.String? +} + +extension DescribeCrossAccountAttachmentInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case attachmentArn = "AttachmentArn" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let attachmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .attachmentArn) + attachmentArn = attachmentArnDecoded + } +} + +extension DescribeCrossAccountAttachmentOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: DescribeCrossAccountAttachmentOutputBody = try responseDecoder.decode(responseBody: data) + self.crossAccountAttachment = output.crossAccountAttachment + } else { + self.crossAccountAttachment = nil + } + } +} + +public struct DescribeCrossAccountAttachmentOutput: Swift.Equatable { + /// Information about the cross-account attachment. + public var crossAccountAttachment: GlobalAcceleratorClientTypes.Attachment? + + public init( + crossAccountAttachment: GlobalAcceleratorClientTypes.Attachment? = nil + ) + { + self.crossAccountAttachment = crossAccountAttachment + } +} + +struct DescribeCrossAccountAttachmentOutputBody: Swift.Equatable { + let crossAccountAttachment: GlobalAcceleratorClientTypes.Attachment? +} + +extension DescribeCrossAccountAttachmentOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case crossAccountAttachment = "CrossAccountAttachment" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let crossAccountAttachmentDecoded = try containerValues.decodeIfPresent(GlobalAcceleratorClientTypes.Attachment.self, forKey: .crossAccountAttachment) + crossAccountAttachment = crossAccountAttachmentDecoded + } +} + +enum DescribeCrossAccountAttachmentOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "AttachmentNotFoundException": return try await AttachmentNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServiceErrorException": return try await InternalServiceErrorException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidArgumentException": return try await InvalidArgumentException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension DescribeCustomRoutingAcceleratorAttributesInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case acceleratorArn = "AcceleratorArn" @@ -4874,6 +5456,7 @@ extension EndpointAlreadyExistsExceptionBody: Swift.Decodable { extension GlobalAcceleratorClientTypes.EndpointConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case attachmentArn = "AttachmentArn" case clientIPPreservationEnabled = "ClientIPPreservationEnabled" case endpointId = "EndpointId" case weight = "Weight" @@ -4881,6 +5464,9 @@ extension GlobalAcceleratorClientTypes.EndpointConfiguration: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let attachmentArn = self.attachmentArn { + try encodeContainer.encode(attachmentArn, forKey: .attachmentArn) + } if let clientIPPreservationEnabled = self.clientIPPreservationEnabled { try encodeContainer.encode(clientIPPreservationEnabled, forKey: .clientIPPreservationEnabled) } @@ -4900,13 +5486,17 @@ extension GlobalAcceleratorClientTypes.EndpointConfiguration: Swift.Codable { weight = weightDecoded let clientIPPreservationEnabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .clientIPPreservationEnabled) clientIPPreservationEnabled = clientIPPreservationEnabledDecoded + let attachmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .attachmentArn) + attachmentArn = attachmentArnDecoded } } extension GlobalAcceleratorClientTypes { /// A complex type for endpoints. A resource must be valid and active when you add it as an endpoint. public struct EndpointConfiguration: Swift.Equatable { - /// Indicates whether client IP address preservation is enabled for an endpoint. The value is true or false. The default value is true for new accelerators. If the value is set to true, the client's IP address is preserved in the X-Forwarded-For request header as traffic travels to applications on the endpoint fronted by the accelerator. Client IP address preservation is supported, in specific Amazon Web Services Regions, for endpoints that are Application Load Balancers, Amazon EC2 instances, and Network Load Balancers with Security Groups. IMPORTANT: You cannot use client IP address preservation with Network Load Balancers with TLS listeners. For more information, see [ Preserve client IP addresses in Global Accelerator](https://docs.aws.amazon.com/global-accelerator/latest/dg/preserve-client-ip-address.html) in the Global Accelerator Developer Guide. + /// The Amazon Resource Name (ARN) of the cross-account attachment that specifies the endpoints (resources) that can be added to accelerators and principals that have permission to add the endpoints to accelerators. + public var attachmentArn: Swift.String? + /// Indicates whether client IP address preservation is enabled for an endpoint. The value is true or false. The default value is true for Application Load Balancer endpoints. If the value is set to true, the client's IP address is preserved in the X-Forwarded-For request header as traffic travels to applications on the endpoint fronted by the accelerator. Client IP address preservation is supported, in specific Amazon Web Services Regions, for endpoints that are Application Load Balancers, Amazon EC2 instances, and Network Load Balancers with security groups. IMPORTANT: You cannot use client IP address preservation with Network Load Balancers with TLS listeners. For more information, see [ Preserve client IP addresses in Global Accelerator](https://docs.aws.amazon.com/global-accelerator/latest/dg/preserve-client-ip-address.html) in the Global Accelerator Developer Guide. public var clientIPPreservationEnabled: Swift.Bool? /// An ID for the endpoint. If the endpoint is a Network Load Balancer or Application Load Balancer, this is the Amazon Resource Name (ARN) of the resource. If the endpoint is an Elastic IP address, this is the Elastic IP address allocation ID. For Amazon EC2 instances, this is the EC2 instance ID. A resource must be valid and active when you add it as an endpoint. An Application Load Balancer can be either internal or internet-facing. public var endpointId: Swift.String? @@ -4914,11 +5504,13 @@ extension GlobalAcceleratorClientTypes { public var weight: Swift.Int? public init( + attachmentArn: Swift.String? = nil, clientIPPreservationEnabled: Swift.Bool? = nil, endpointId: Swift.String? = nil, weight: Swift.Int? = nil ) { + self.attachmentArn = attachmentArn self.clientIPPreservationEnabled = clientIPPreservationEnabled self.endpointId = endpointId self.weight = weight @@ -4973,7 +5565,7 @@ extension GlobalAcceleratorClientTypes.EndpointDescription: Swift.Codable { extension GlobalAcceleratorClientTypes { /// A complex type for an endpoint. Each endpoint group can include one or more endpoints, such as load balancers. public struct EndpointDescription: Swift.Equatable { - /// Indicates whether client IP address preservation is enabled for an endpoint. The value is true or false. The default value is true for new accelerators. If the value is set to true, the client's IP address is preserved in the X-Forwarded-For request header as traffic travels to applications on the endpoint fronted by the accelerator. Client IP address preservation is supported, in specific Amazon Web Services Regions, for endpoints that are Application Load Balancers, Amazon EC2 instances, and Network Load Balancers with Security Groups. IMPORTANT: You cannot use client IP address preservation with Network Load Balancers with TLS listeners. For more information, see [ Preserve client IP addresses in Global Accelerator](https://docs.aws.amazon.com/global-accelerator/latest/dg/preserve-client-ip-address.html) in the Global Accelerator Developer Guide. + /// Indicates whether client IP address preservation is enabled for an endpoint. The value is true or false. The default value is true for Application Load Balancers endpoints. If the value is set to true, the client's IP address is preserved in the X-Forwarded-For request header as traffic travels to applications on the endpoint fronted by the accelerator. Client IP address preservation is supported, in specific Amazon Web Services Regions, for endpoints that are Application Load Balancers, Amazon EC2 instances, and Network Load Balancers with security groups. IMPORTANT: You cannot use client IP address preservation with Network Load Balancers with TLS listeners. For more information, see [ Preserve client IP addresses in Global Accelerator](https://docs.aws.amazon.com/global-accelerator/latest/dg/preserve-client-ip-address.html) in the Global Accelerator Developer Guide. public var clientIPPreservationEnabled: Swift.Bool? /// An ID for the endpoint. If the endpoint is a Network Load Balancer or Application Load Balancer, this is the Amazon Resource Name (ARN) of the resource. If the endpoint is an Elastic IP address, this is the Elastic IP address allocation ID. For Amazon EC2 instances, this is the EC2 instance ID. An Application Load Balancer can be either internal or internet-facing. public var endpointId: Swift.String? @@ -5911,172 +6503,550 @@ extension ListAcceleratorsInput: Swift.Encodable { } } -extension ListAcceleratorsInput: ClientRuntime.URLPathProvider { +extension ListAcceleratorsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct ListAcceleratorsInput: Swift.Equatable { + /// The number of Global Accelerator objects that you want to return with this call. The default value is 10. + public var maxResults: Swift.Int? + /// The token for the next set of results. You receive this token from a previous call. + public var nextToken: Swift.String? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListAcceleratorsInputBody: Swift.Equatable { + let maxResults: Swift.Int? + let nextToken: Swift.String? +} + +extension ListAcceleratorsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults = "MaxResults" + case nextToken = "NextToken" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) + maxResults = maxResultsDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +extension ListAcceleratorsOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ListAcceleratorsOutputBody = try responseDecoder.decode(responseBody: data) + self.accelerators = output.accelerators + self.nextToken = output.nextToken + } else { + self.accelerators = nil + self.nextToken = nil + } + } +} + +public struct ListAcceleratorsOutput: Swift.Equatable { + /// The list of accelerators for a customer account. + public var accelerators: [GlobalAcceleratorClientTypes.Accelerator]? + /// The token for the next set of results. You receive this token from a previous call. + public var nextToken: Swift.String? + + public init( + accelerators: [GlobalAcceleratorClientTypes.Accelerator]? = nil, + nextToken: Swift.String? = nil + ) + { + self.accelerators = accelerators + self.nextToken = nextToken + } +} + +struct ListAcceleratorsOutputBody: Swift.Equatable { + let accelerators: [GlobalAcceleratorClientTypes.Accelerator]? + let nextToken: Swift.String? +} + +extension ListAcceleratorsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accelerators = "Accelerators" + case nextToken = "NextToken" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let acceleratorsContainer = try containerValues.decodeIfPresent([GlobalAcceleratorClientTypes.Accelerator?].self, forKey: .accelerators) + var acceleratorsDecoded0:[GlobalAcceleratorClientTypes.Accelerator]? = nil + if let acceleratorsContainer = acceleratorsContainer { + acceleratorsDecoded0 = [GlobalAcceleratorClientTypes.Accelerator]() + for structure0 in acceleratorsContainer { + if let structure0 = structure0 { + acceleratorsDecoded0?.append(structure0) + } + } + } + accelerators = acceleratorsDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListAcceleratorsOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "InternalServiceErrorException": return try await InternalServiceErrorException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidArgumentException": return try await InvalidArgumentException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidNextTokenException": return try await InvalidNextTokenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension ListByoipCidrsInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults = "MaxResults" + case nextToken = "NextToken" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let maxResults = self.maxResults { + try encodeContainer.encode(maxResults, forKey: .maxResults) + } + if let nextToken = self.nextToken { + try encodeContainer.encode(nextToken, forKey: .nextToken) + } + } +} + +extension ListByoipCidrsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct ListByoipCidrsInput: Swift.Equatable { + /// The maximum number of results to return with a single call. To retrieve the remaining results, make another call with the returned nextToken value. + public var maxResults: Swift.Int? + /// The token for the next page of results. + public var nextToken: Swift.String? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListByoipCidrsInputBody: Swift.Equatable { + let maxResults: Swift.Int? + let nextToken: Swift.String? +} + +extension ListByoipCidrsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults = "MaxResults" + case nextToken = "NextToken" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) + maxResults = maxResultsDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +extension ListByoipCidrsOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ListByoipCidrsOutputBody = try responseDecoder.decode(responseBody: data) + self.byoipCidrs = output.byoipCidrs + self.nextToken = output.nextToken + } else { + self.byoipCidrs = nil + self.nextToken = nil + } + } +} + +public struct ListByoipCidrsOutput: Swift.Equatable { + /// Information about your address ranges. + public var byoipCidrs: [GlobalAcceleratorClientTypes.ByoipCidr]? + /// The token for the next page of results. + public var nextToken: Swift.String? + + public init( + byoipCidrs: [GlobalAcceleratorClientTypes.ByoipCidr]? = nil, + nextToken: Swift.String? = nil + ) + { + self.byoipCidrs = byoipCidrs + self.nextToken = nextToken + } +} + +struct ListByoipCidrsOutputBody: Swift.Equatable { + let byoipCidrs: [GlobalAcceleratorClientTypes.ByoipCidr]? + let nextToken: Swift.String? +} + +extension ListByoipCidrsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case byoipCidrs = "ByoipCidrs" + case nextToken = "NextToken" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let byoipCidrsContainer = try containerValues.decodeIfPresent([GlobalAcceleratorClientTypes.ByoipCidr?].self, forKey: .byoipCidrs) + var byoipCidrsDecoded0:[GlobalAcceleratorClientTypes.ByoipCidr]? = nil + if let byoipCidrsContainer = byoipCidrsContainer { + byoipCidrsDecoded0 = [GlobalAcceleratorClientTypes.ByoipCidr]() + for structure0 in byoipCidrsContainer { + if let structure0 = structure0 { + byoipCidrsDecoded0?.append(structure0) + } + } + } + byoipCidrs = byoipCidrsDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListByoipCidrsOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServiceErrorException": return try await InternalServiceErrorException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidArgumentException": return try await InvalidArgumentException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidNextTokenException": return try await InvalidNextTokenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension ListCrossAccountAttachmentsInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults = "MaxResults" + case nextToken = "NextToken" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let maxResults = self.maxResults { + try encodeContainer.encode(maxResults, forKey: .maxResults) + } + if let nextToken = self.nextToken { + try encodeContainer.encode(nextToken, forKey: .nextToken) + } + } +} + +extension ListCrossAccountAttachmentsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct ListCrossAccountAttachmentsInput: Swift.Equatable { + /// The number of cross-account attachment objects that you want to return with this call. The default value is 10. + public var maxResults: Swift.Int? + /// The token for the next set of results. You receive this token from a previous call. + public var nextToken: Swift.String? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListCrossAccountAttachmentsInputBody: Swift.Equatable { + let maxResults: Swift.Int? + let nextToken: Swift.String? +} + +extension ListCrossAccountAttachmentsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults = "MaxResults" + case nextToken = "NextToken" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) + maxResults = maxResultsDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +extension ListCrossAccountAttachmentsOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ListCrossAccountAttachmentsOutputBody = try responseDecoder.decode(responseBody: data) + self.crossAccountAttachments = output.crossAccountAttachments + self.nextToken = output.nextToken + } else { + self.crossAccountAttachments = nil + self.nextToken = nil + } + } +} + +public struct ListCrossAccountAttachmentsOutput: Swift.Equatable { + /// Information about the cross-account attachments. + public var crossAccountAttachments: [GlobalAcceleratorClientTypes.Attachment]? + /// The token for the next set of results. You receive this token from a previous call. + public var nextToken: Swift.String? + + public init( + crossAccountAttachments: [GlobalAcceleratorClientTypes.Attachment]? = nil, + nextToken: Swift.String? = nil + ) + { + self.crossAccountAttachments = crossAccountAttachments + self.nextToken = nextToken + } +} + +struct ListCrossAccountAttachmentsOutputBody: Swift.Equatable { + let crossAccountAttachments: [GlobalAcceleratorClientTypes.Attachment]? + let nextToken: Swift.String? +} + +extension ListCrossAccountAttachmentsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case crossAccountAttachments = "CrossAccountAttachments" + case nextToken = "NextToken" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let crossAccountAttachmentsContainer = try containerValues.decodeIfPresent([GlobalAcceleratorClientTypes.Attachment?].self, forKey: .crossAccountAttachments) + var crossAccountAttachmentsDecoded0:[GlobalAcceleratorClientTypes.Attachment]? = nil + if let crossAccountAttachmentsContainer = crossAccountAttachmentsContainer { + crossAccountAttachmentsDecoded0 = [GlobalAcceleratorClientTypes.Attachment]() + for structure0 in crossAccountAttachmentsContainer { + if let structure0 = structure0 { + crossAccountAttachmentsDecoded0?.append(structure0) + } + } + } + crossAccountAttachments = crossAccountAttachmentsDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListCrossAccountAttachmentsOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServiceErrorException": return try await InternalServiceErrorException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidArgumentException": return try await InvalidArgumentException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidNextTokenException": return try await InvalidNextTokenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension ListCrossAccountResourceAccountsInput: Swift.Encodable { + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.singleValueContainer() + try container.encode([String:String]()) + } +} + +extension ListCrossAccountResourceAccountsInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { return "/" } } -public struct ListAcceleratorsInput: Swift.Equatable { - /// The number of Global Accelerator objects that you want to return with this call. The default value is 10. - public var maxResults: Swift.Int? - /// The token for the next set of results. You receive this token from a previous call. - public var nextToken: Swift.String? +public struct ListCrossAccountResourceAccountsInput: Swift.Equatable { - public init( - maxResults: Swift.Int? = nil, - nextToken: Swift.String? = nil - ) - { - self.maxResults = maxResults - self.nextToken = nextToken - } + public init() { } } -struct ListAcceleratorsInputBody: Swift.Equatable { - let maxResults: Swift.Int? - let nextToken: Swift.String? +struct ListCrossAccountResourceAccountsInputBody: Swift.Equatable { } -extension ListAcceleratorsInputBody: Swift.Decodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case maxResults = "MaxResults" - case nextToken = "NextToken" - } +extension ListCrossAccountResourceAccountsInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) - maxResults = maxResultsDecoded - let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) - nextToken = nextTokenDecoded } } -extension ListAcceleratorsOutput: ClientRuntime.HttpResponseBinding { +extension ListCrossAccountResourceAccountsOutput: ClientRuntime.HttpResponseBinding { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { - let output: ListAcceleratorsOutputBody = try responseDecoder.decode(responseBody: data) - self.accelerators = output.accelerators - self.nextToken = output.nextToken + let output: ListCrossAccountResourceAccountsOutputBody = try responseDecoder.decode(responseBody: data) + self.resourceOwnerAwsAccountIds = output.resourceOwnerAwsAccountIds } else { - self.accelerators = nil - self.nextToken = nil + self.resourceOwnerAwsAccountIds = nil } } } -public struct ListAcceleratorsOutput: Swift.Equatable { - /// The list of accelerators for a customer account. - public var accelerators: [GlobalAcceleratorClientTypes.Accelerator]? - /// The token for the next set of results. You receive this token from a previous call. - public var nextToken: Swift.String? +public struct ListCrossAccountResourceAccountsOutput: Swift.Equatable { + /// The account IDs of principals (resource owners) in a cross-account attachment who can add endpoints (resources) listed in the same attachment. + public var resourceOwnerAwsAccountIds: [Swift.String]? public init( - accelerators: [GlobalAcceleratorClientTypes.Accelerator]? = nil, - nextToken: Swift.String? = nil + resourceOwnerAwsAccountIds: [Swift.String]? = nil ) { - self.accelerators = accelerators - self.nextToken = nextToken + self.resourceOwnerAwsAccountIds = resourceOwnerAwsAccountIds } } -struct ListAcceleratorsOutputBody: Swift.Equatable { - let accelerators: [GlobalAcceleratorClientTypes.Accelerator]? - let nextToken: Swift.String? +struct ListCrossAccountResourceAccountsOutputBody: Swift.Equatable { + let resourceOwnerAwsAccountIds: [Swift.String]? } -extension ListAcceleratorsOutputBody: Swift.Decodable { +extension ListCrossAccountResourceAccountsOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case accelerators = "Accelerators" - case nextToken = "NextToken" + case resourceOwnerAwsAccountIds = "ResourceOwnerAwsAccountIds" } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let acceleratorsContainer = try containerValues.decodeIfPresent([GlobalAcceleratorClientTypes.Accelerator?].self, forKey: .accelerators) - var acceleratorsDecoded0:[GlobalAcceleratorClientTypes.Accelerator]? = nil - if let acceleratorsContainer = acceleratorsContainer { - acceleratorsDecoded0 = [GlobalAcceleratorClientTypes.Accelerator]() - for structure0 in acceleratorsContainer { - if let structure0 = structure0 { - acceleratorsDecoded0?.append(structure0) + let resourceOwnerAwsAccountIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .resourceOwnerAwsAccountIds) + var resourceOwnerAwsAccountIdsDecoded0:[Swift.String]? = nil + if let resourceOwnerAwsAccountIdsContainer = resourceOwnerAwsAccountIdsContainer { + resourceOwnerAwsAccountIdsDecoded0 = [Swift.String]() + for string0 in resourceOwnerAwsAccountIdsContainer { + if let string0 = string0 { + resourceOwnerAwsAccountIdsDecoded0?.append(string0) } } } - accelerators = acceleratorsDecoded0 - let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) - nextToken = nextTokenDecoded + resourceOwnerAwsAccountIds = resourceOwnerAwsAccountIdsDecoded0 } } -enum ListAcceleratorsOutputError: ClientRuntime.HttpResponseErrorBinding { +enum ListCrossAccountResourceAccountsOutputError: ClientRuntime.HttpResponseErrorBinding { static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) let requestID = httpResponse.requestId switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InternalServiceErrorException": return try await InternalServiceErrorException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "InvalidArgumentException": return try await InvalidArgumentException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "InvalidNextTokenException": return try await InvalidNextTokenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) } } } -extension ListByoipCidrsInput: Swift.Encodable { +extension ListCrossAccountResourcesInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case acceleratorArn = "AcceleratorArn" case maxResults = "MaxResults" case nextToken = "NextToken" + case resourceOwnerAwsAccountId = "ResourceOwnerAwsAccountId" } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let acceleratorArn = self.acceleratorArn { + try encodeContainer.encode(acceleratorArn, forKey: .acceleratorArn) + } if let maxResults = self.maxResults { try encodeContainer.encode(maxResults, forKey: .maxResults) } if let nextToken = self.nextToken { try encodeContainer.encode(nextToken, forKey: .nextToken) } + if let resourceOwnerAwsAccountId = self.resourceOwnerAwsAccountId { + try encodeContainer.encode(resourceOwnerAwsAccountId, forKey: .resourceOwnerAwsAccountId) + } } } -extension ListByoipCidrsInput: ClientRuntime.URLPathProvider { +extension ListCrossAccountResourcesInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { return "/" } } -public struct ListByoipCidrsInput: Swift.Equatable { - /// The maximum number of results to return with a single call. To retrieve the remaining results, make another call with the returned nextToken value. +public struct ListCrossAccountResourcesInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of an accelerator in a cross-account attachment. + public var acceleratorArn: Swift.String? + /// The number of cross-account endpoints objects that you want to return with this call. The default value is 10. public var maxResults: Swift.Int? - /// The token for the next page of results. + /// The token for the next set of results. You receive this token from a previous call. public var nextToken: Swift.String? + /// The account ID of a resource owner in a cross-account attachment. + /// This member is required. + public var resourceOwnerAwsAccountId: Swift.String? public init( + acceleratorArn: Swift.String? = nil, maxResults: Swift.Int? = nil, - nextToken: Swift.String? = nil + nextToken: Swift.String? = nil, + resourceOwnerAwsAccountId: Swift.String? = nil ) { + self.acceleratorArn = acceleratorArn self.maxResults = maxResults self.nextToken = nextToken + self.resourceOwnerAwsAccountId = resourceOwnerAwsAccountId } } -struct ListByoipCidrsInputBody: Swift.Equatable { +struct ListCrossAccountResourcesInputBody: Swift.Equatable { + let acceleratorArn: Swift.String? + let resourceOwnerAwsAccountId: Swift.String? let maxResults: Swift.Int? let nextToken: Swift.String? } -extension ListByoipCidrsInputBody: Swift.Decodable { +extension ListCrossAccountResourcesInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case acceleratorArn = "AcceleratorArn" case maxResults = "MaxResults" case nextToken = "NextToken" + case resourceOwnerAwsAccountId = "ResourceOwnerAwsAccountId" } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let acceleratorArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .acceleratorArn) + acceleratorArn = acceleratorArnDecoded + let resourceOwnerAwsAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceOwnerAwsAccountId) + resourceOwnerAwsAccountId = resourceOwnerAwsAccountIdDecoded let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) maxResults = maxResultsDecoded let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) @@ -6084,70 +7054,71 @@ extension ListByoipCidrsInputBody: Swift.Decodable { } } -extension ListByoipCidrsOutput: ClientRuntime.HttpResponseBinding { +extension ListCrossAccountResourcesOutput: ClientRuntime.HttpResponseBinding { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { - let output: ListByoipCidrsOutputBody = try responseDecoder.decode(responseBody: data) - self.byoipCidrs = output.byoipCidrs + let output: ListCrossAccountResourcesOutputBody = try responseDecoder.decode(responseBody: data) + self.crossAccountResources = output.crossAccountResources self.nextToken = output.nextToken } else { - self.byoipCidrs = nil + self.crossAccountResources = nil self.nextToken = nil } } } -public struct ListByoipCidrsOutput: Swift.Equatable { - /// Information about your address ranges. - public var byoipCidrs: [GlobalAcceleratorClientTypes.ByoipCidr]? - /// The token for the next page of results. +public struct ListCrossAccountResourcesOutput: Swift.Equatable { + /// The endpoints attached to an accelerator in a cross-account attachment. + public var crossAccountResources: [GlobalAcceleratorClientTypes.CrossAccountResource]? + /// The token for the next set of results. You receive this token from a previous call. public var nextToken: Swift.String? public init( - byoipCidrs: [GlobalAcceleratorClientTypes.ByoipCidr]? = nil, + crossAccountResources: [GlobalAcceleratorClientTypes.CrossAccountResource]? = nil, nextToken: Swift.String? = nil ) { - self.byoipCidrs = byoipCidrs + self.crossAccountResources = crossAccountResources self.nextToken = nextToken } } -struct ListByoipCidrsOutputBody: Swift.Equatable { - let byoipCidrs: [GlobalAcceleratorClientTypes.ByoipCidr]? +struct ListCrossAccountResourcesOutputBody: Swift.Equatable { + let crossAccountResources: [GlobalAcceleratorClientTypes.CrossAccountResource]? let nextToken: Swift.String? } -extension ListByoipCidrsOutputBody: Swift.Decodable { +extension ListCrossAccountResourcesOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case byoipCidrs = "ByoipCidrs" + case crossAccountResources = "CrossAccountResources" case nextToken = "NextToken" } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let byoipCidrsContainer = try containerValues.decodeIfPresent([GlobalAcceleratorClientTypes.ByoipCidr?].self, forKey: .byoipCidrs) - var byoipCidrsDecoded0:[GlobalAcceleratorClientTypes.ByoipCidr]? = nil - if let byoipCidrsContainer = byoipCidrsContainer { - byoipCidrsDecoded0 = [GlobalAcceleratorClientTypes.ByoipCidr]() - for structure0 in byoipCidrsContainer { + let crossAccountResourcesContainer = try containerValues.decodeIfPresent([GlobalAcceleratorClientTypes.CrossAccountResource?].self, forKey: .crossAccountResources) + var crossAccountResourcesDecoded0:[GlobalAcceleratorClientTypes.CrossAccountResource]? = nil + if let crossAccountResourcesContainer = crossAccountResourcesContainer { + crossAccountResourcesDecoded0 = [GlobalAcceleratorClientTypes.CrossAccountResource]() + for structure0 in crossAccountResourcesContainer { if let structure0 = structure0 { - byoipCidrsDecoded0?.append(structure0) + crossAccountResourcesDecoded0?.append(structure0) } } } - byoipCidrs = byoipCidrsDecoded0 + crossAccountResources = crossAccountResourcesDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded } } -enum ListByoipCidrsOutputError: ClientRuntime.HttpResponseErrorBinding { +enum ListCrossAccountResourcesOutputError: ClientRuntime.HttpResponseErrorBinding { static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) let requestID = httpResponse.requestId switch restJSONError.errorType { + case "AcceleratorNotFoundException": return try await AcceleratorNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InternalServiceErrorException": return try await InternalServiceErrorException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InvalidArgumentException": return try await InvalidArgumentException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) @@ -7958,6 +8929,52 @@ enum RemoveEndpointsOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension GlobalAcceleratorClientTypes.Resource: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case endpointId = "EndpointId" + case region = "Region" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let endpointId = self.endpointId { + try encodeContainer.encode(endpointId, forKey: .endpointId) + } + if let region = self.region { + try encodeContainer.encode(region, forKey: .region) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let endpointIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endpointId) + endpointId = endpointIdDecoded + let regionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .region) + region = regionDecoded + } +} + +extension GlobalAcceleratorClientTypes { + /// An Amazon Web Services resource that is supported by Global Accelerator and can be added as an endpoint for an accelerator. + public struct Resource: Swift.Equatable { + /// The endpoint ID for the endpoint (Amazon Web Services resource). + /// This member is required. + public var endpointId: Swift.String? + /// The Amazon Web Services Region where a resource is located. + public var region: Swift.String? + + public init( + endpointId: Swift.String? = nil, + region: Swift.String? = nil + ) + { + self.endpointId = endpointId + self.region = region + } + } + +} + extension GlobalAcceleratorClientTypes.SocketAddress: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case ipAddress = "IpAddress" @@ -8573,6 +9590,218 @@ enum UpdateAcceleratorOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension UpdateCrossAccountAttachmentInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case addPrincipals = "AddPrincipals" + case addResources = "AddResources" + case attachmentArn = "AttachmentArn" + case name = "Name" + case removePrincipals = "RemovePrincipals" + case removeResources = "RemoveResources" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let addPrincipals = addPrincipals { + var addPrincipalsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .addPrincipals) + for principal0 in addPrincipals { + try addPrincipalsContainer.encode(principal0) + } + } + if let addResources = addResources { + var addResourcesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .addResources) + for resource0 in addResources { + try addResourcesContainer.encode(resource0) + } + } + if let attachmentArn = self.attachmentArn { + try encodeContainer.encode(attachmentArn, forKey: .attachmentArn) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let removePrincipals = removePrincipals { + var removePrincipalsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .removePrincipals) + for principal0 in removePrincipals { + try removePrincipalsContainer.encode(principal0) + } + } + if let removeResources = removeResources { + var removeResourcesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .removeResources) + for resource0 in removeResources { + try removeResourcesContainer.encode(resource0) + } + } + } +} + +extension UpdateCrossAccountAttachmentInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct UpdateCrossAccountAttachmentInput: Swift.Equatable { + /// The principals to add to the cross-account attachment. A principal is an account or the Amazon Resource Name (ARN) of an accelerator that the attachment gives permission to add the resources from another account, listed in the attachment. To add more than one principal, separate the account numbers or accelerator ARNs, or both, with commas. + public var addPrincipals: [Swift.String]? + /// The resources to add to the cross-account attachment. A resource listed in a cross-account attachment can be added to an accelerator by the principals that are listed in the attachment. To add more than one resource, separate the resource ARNs with commas. + public var addResources: [GlobalAcceleratorClientTypes.Resource]? + /// The Amazon Resource Name (ARN) of the cross-account attachment to update. + /// This member is required. + public var attachmentArn: Swift.String? + /// The name of the cross-account attachment. + public var name: Swift.String? + /// The principals to remove from the cross-account attachment. A principal is an account or the Amazon Resource Name (ARN) of an accelerator that is given permission to add the resources from another account, listed in the cross-account attachment. To remove more than one principal, separate the account numbers or accelerator ARNs, or both, with commas. + public var removePrincipals: [Swift.String]? + /// The resources to remove from the cross-account attachment. A resource listed in a cross-account attachment can be added to an accelerator fy principals that are listed in the cross-account attachment. To remove more than one resource, separate the resource ARNs with commas. + public var removeResources: [GlobalAcceleratorClientTypes.Resource]? + + public init( + addPrincipals: [Swift.String]? = nil, + addResources: [GlobalAcceleratorClientTypes.Resource]? = nil, + attachmentArn: Swift.String? = nil, + name: Swift.String? = nil, + removePrincipals: [Swift.String]? = nil, + removeResources: [GlobalAcceleratorClientTypes.Resource]? = nil + ) + { + self.addPrincipals = addPrincipals + self.addResources = addResources + self.attachmentArn = attachmentArn + self.name = name + self.removePrincipals = removePrincipals + self.removeResources = removeResources + } +} + +struct UpdateCrossAccountAttachmentInputBody: Swift.Equatable { + let attachmentArn: Swift.String? + let name: Swift.String? + let addPrincipals: [Swift.String]? + let removePrincipals: [Swift.String]? + let addResources: [GlobalAcceleratorClientTypes.Resource]? + let removeResources: [GlobalAcceleratorClientTypes.Resource]? +} + +extension UpdateCrossAccountAttachmentInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case addPrincipals = "AddPrincipals" + case addResources = "AddResources" + case attachmentArn = "AttachmentArn" + case name = "Name" + case removePrincipals = "RemovePrincipals" + case removeResources = "RemoveResources" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let attachmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .attachmentArn) + attachmentArn = attachmentArnDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let addPrincipalsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .addPrincipals) + var addPrincipalsDecoded0:[Swift.String]? = nil + if let addPrincipalsContainer = addPrincipalsContainer { + addPrincipalsDecoded0 = [Swift.String]() + for string0 in addPrincipalsContainer { + if let string0 = string0 { + addPrincipalsDecoded0?.append(string0) + } + } + } + addPrincipals = addPrincipalsDecoded0 + let removePrincipalsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .removePrincipals) + var removePrincipalsDecoded0:[Swift.String]? = nil + if let removePrincipalsContainer = removePrincipalsContainer { + removePrincipalsDecoded0 = [Swift.String]() + for string0 in removePrincipalsContainer { + if let string0 = string0 { + removePrincipalsDecoded0?.append(string0) + } + } + } + removePrincipals = removePrincipalsDecoded0 + let addResourcesContainer = try containerValues.decodeIfPresent([GlobalAcceleratorClientTypes.Resource?].self, forKey: .addResources) + var addResourcesDecoded0:[GlobalAcceleratorClientTypes.Resource]? = nil + if let addResourcesContainer = addResourcesContainer { + addResourcesDecoded0 = [GlobalAcceleratorClientTypes.Resource]() + for structure0 in addResourcesContainer { + if let structure0 = structure0 { + addResourcesDecoded0?.append(structure0) + } + } + } + addResources = addResourcesDecoded0 + let removeResourcesContainer = try containerValues.decodeIfPresent([GlobalAcceleratorClientTypes.Resource?].self, forKey: .removeResources) + var removeResourcesDecoded0:[GlobalAcceleratorClientTypes.Resource]? = nil + if let removeResourcesContainer = removeResourcesContainer { + removeResourcesDecoded0 = [GlobalAcceleratorClientTypes.Resource]() + for structure0 in removeResourcesContainer { + if let structure0 = structure0 { + removeResourcesDecoded0?.append(structure0) + } + } + } + removeResources = removeResourcesDecoded0 + } +} + +extension UpdateCrossAccountAttachmentOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: UpdateCrossAccountAttachmentOutputBody = try responseDecoder.decode(responseBody: data) + self.crossAccountAttachment = output.crossAccountAttachment + } else { + self.crossAccountAttachment = nil + } + } +} + +public struct UpdateCrossAccountAttachmentOutput: Swift.Equatable { + /// Information about the updated cross-account attachment. + public var crossAccountAttachment: GlobalAcceleratorClientTypes.Attachment? + + public init( + crossAccountAttachment: GlobalAcceleratorClientTypes.Attachment? = nil + ) + { + self.crossAccountAttachment = crossAccountAttachment + } +} + +struct UpdateCrossAccountAttachmentOutputBody: Swift.Equatable { + let crossAccountAttachment: GlobalAcceleratorClientTypes.Attachment? +} + +extension UpdateCrossAccountAttachmentOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case crossAccountAttachment = "CrossAccountAttachment" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let crossAccountAttachmentDecoded = try containerValues.decodeIfPresent(GlobalAcceleratorClientTypes.Attachment.self, forKey: .crossAccountAttachment) + crossAccountAttachment = crossAccountAttachmentDecoded + } +} + +enum UpdateCrossAccountAttachmentOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "AttachmentNotFoundException": return try await AttachmentNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServiceErrorException": return try await InternalServiceErrorException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidArgumentException": return try await InvalidArgumentException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "LimitExceededException": return try await LimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "TransactionInProgressException": return try await TransactionInProgressException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension UpdateCustomRoutingAcceleratorAttributesInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case acceleratorArn = "AcceleratorArn" diff --git a/Sources/Services/AWSGlue/models/Models.swift b/Sources/Services/AWSGlue/models/Models.swift index eb9ec52ab8c..2a786185562 100644 --- a/Sources/Services/AWSGlue/models/Models.swift +++ b/Sources/Services/AWSGlue/models/Models.swift @@ -5982,6 +5982,8 @@ extension GlueClientTypes.CodeGenConfigurationNode: Swift.Codable { case catalogKinesisSource = "CatalogKinesisSource" case catalogSource = "CatalogSource" case catalogTarget = "CatalogTarget" + case connectorDataSource = "ConnectorDataSource" + case connectorDataTarget = "ConnectorDataTarget" case customCode = "CustomCode" case directJDBCSource = "DirectJDBCSource" case directKafkaSource = "DirectKafkaSource" @@ -6077,6 +6079,12 @@ extension GlueClientTypes.CodeGenConfigurationNode: Swift.Codable { if let catalogTarget = self.catalogTarget { try encodeContainer.encode(catalogTarget, forKey: .catalogTarget) } + if let connectorDataSource = self.connectorDataSource { + try encodeContainer.encode(connectorDataSource, forKey: .connectorDataSource) + } + if let connectorDataTarget = self.connectorDataTarget { + try encodeContainer.encode(connectorDataTarget, forKey: .connectorDataTarget) + } if let customCode = self.customCode { try encodeContainer.encode(customCode, forKey: .customCode) } @@ -6393,6 +6401,10 @@ extension GlueClientTypes.CodeGenConfigurationNode: Swift.Codable { snowflakeSource = snowflakeSourceDecoded let snowflakeTargetDecoded = try containerValues.decodeIfPresent(GlueClientTypes.SnowflakeTarget.self, forKey: .snowflakeTarget) snowflakeTarget = snowflakeTargetDecoded + let connectorDataSourceDecoded = try containerValues.decodeIfPresent(GlueClientTypes.ConnectorDataSource.self, forKey: .connectorDataSource) + connectorDataSource = connectorDataSourceDecoded + let connectorDataTargetDecoded = try containerValues.decodeIfPresent(GlueClientTypes.ConnectorDataTarget.self, forKey: .connectorDataTarget) + connectorDataTarget = connectorDataTargetDecoded } } @@ -6421,6 +6433,10 @@ extension GlueClientTypes { public var catalogSource: GlueClientTypes.CatalogSource? /// Specifies a target that uses a Glue Data Catalog table. public var catalogTarget: GlueClientTypes.BasicCatalogTarget? + /// Specifies a source generated with standard connection options. + public var connectorDataSource: GlueClientTypes.ConnectorDataSource? + /// Specifies a target generated with standard connection options. + public var connectorDataTarget: GlueClientTypes.ConnectorDataTarget? /// Specifies a transform that uses custom code you provide to perform the data transformation. The output is a collection of DynamicFrames. public var customCode: GlueClientTypes.CustomCode? /// Specifies the direct JDBC source connection. @@ -6550,6 +6566,8 @@ extension GlueClientTypes { catalogKinesisSource: GlueClientTypes.CatalogKinesisSource? = nil, catalogSource: GlueClientTypes.CatalogSource? = nil, catalogTarget: GlueClientTypes.BasicCatalogTarget? = nil, + connectorDataSource: GlueClientTypes.ConnectorDataSource? = nil, + connectorDataTarget: GlueClientTypes.ConnectorDataTarget? = nil, customCode: GlueClientTypes.CustomCode? = nil, directJDBCSource: GlueClientTypes.DirectJDBCSource? = nil, directKafkaSource: GlueClientTypes.DirectKafkaSource? = nil, @@ -6621,6 +6639,8 @@ extension GlueClientTypes { self.catalogKinesisSource = catalogKinesisSource self.catalogSource = catalogSource self.catalogTarget = catalogTarget + self.connectorDataSource = connectorDataSource + self.connectorDataTarget = connectorDataTarget self.customCode = customCode self.directJDBCSource = directJDBCSource self.directKafkaSource = directKafkaSource @@ -8510,6 +8530,194 @@ extension GlueClientTypes { } +extension GlueClientTypes.ConnectorDataSource: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case connectionType = "ConnectionType" + case data = "Data" + case name = "Name" + case outputSchemas = "OutputSchemas" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let connectionType = self.connectionType { + try encodeContainer.encode(connectionType, forKey: .connectionType) + } + if let data = data { + var dataContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .data) + for (dictKey0, connectorOptions0) in data { + try dataContainer.encode(connectorOptions0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let outputSchemas = outputSchemas { + var outputSchemasContainer = encodeContainer.nestedUnkeyedContainer(forKey: .outputSchemas) + for glueschema0 in outputSchemas { + try outputSchemasContainer.encode(glueschema0) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let connectionTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .connectionType) + connectionType = connectionTypeDecoded + let dataContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .data) + var dataDecoded0: [Swift.String:Swift.String]? = nil + if let dataContainer = dataContainer { + dataDecoded0 = [Swift.String:Swift.String]() + for (key0, genericstring0) in dataContainer { + if let genericstring0 = genericstring0 { + dataDecoded0?[key0] = genericstring0 + } + } + } + data = dataDecoded0 + let outputSchemasContainer = try containerValues.decodeIfPresent([GlueClientTypes.GlueSchema?].self, forKey: .outputSchemas) + var outputSchemasDecoded0:[GlueClientTypes.GlueSchema]? = nil + if let outputSchemasContainer = outputSchemasContainer { + outputSchemasDecoded0 = [GlueClientTypes.GlueSchema]() + for structure0 in outputSchemasContainer { + if let structure0 = structure0 { + outputSchemasDecoded0?.append(structure0) + } + } + } + outputSchemas = outputSchemasDecoded0 + } +} + +extension GlueClientTypes { + /// Specifies a source generated with standard connection options. + public struct ConnectorDataSource: Swift.Equatable { + /// The connectionType, as provided to the underlying Glue library. This node type supports the following connection types: + /// + /// * bigquery + /// This member is required. + public var connectionType: Swift.String? + /// A map specifying connection options for the node. You can find standard connection options for the corresponding connection type in the [ Connection parameters](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html) section of the Glue documentation. + /// This member is required. + public var data: [Swift.String:Swift.String]? + /// The name of this source node. + /// This member is required. + public var name: Swift.String? + /// Specifies the data schema for this source. + public var outputSchemas: [GlueClientTypes.GlueSchema]? + + public init( + connectionType: Swift.String? = nil, + data: [Swift.String:Swift.String]? = nil, + name: Swift.String? = nil, + outputSchemas: [GlueClientTypes.GlueSchema]? = nil + ) + { + self.connectionType = connectionType + self.data = data + self.name = name + self.outputSchemas = outputSchemas + } + } + +} + +extension GlueClientTypes.ConnectorDataTarget: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case connectionType = "ConnectionType" + case data = "Data" + case inputs = "Inputs" + case name = "Name" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let connectionType = self.connectionType { + try encodeContainer.encode(connectionType, forKey: .connectionType) + } + if let data = data { + var dataContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .data) + for (dictKey0, connectorOptions0) in data { + try dataContainer.encode(connectorOptions0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let inputs = inputs { + var inputsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .inputs) + for nodeid0 in inputs { + try inputsContainer.encode(nodeid0) + } + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let connectionTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .connectionType) + connectionType = connectionTypeDecoded + let dataContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .data) + var dataDecoded0: [Swift.String:Swift.String]? = nil + if let dataContainer = dataContainer { + dataDecoded0 = [Swift.String:Swift.String]() + for (key0, genericstring0) in dataContainer { + if let genericstring0 = genericstring0 { + dataDecoded0?[key0] = genericstring0 + } + } + } + data = dataDecoded0 + let inputsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .inputs) + var inputsDecoded0:[Swift.String]? = nil + if let inputsContainer = inputsContainer { + inputsDecoded0 = [Swift.String]() + for string0 in inputsContainer { + if let string0 = string0 { + inputsDecoded0?.append(string0) + } + } + } + inputs = inputsDecoded0 + } +} + +extension GlueClientTypes { + /// Specifies a target generated with standard connection options. + public struct ConnectorDataTarget: Swift.Equatable { + /// The connectionType, as provided to the underlying Glue library. This node type supports the following connection types: + /// + /// * bigquery + /// This member is required. + public var connectionType: Swift.String? + /// A map specifying connection options for the node. You can find standard connection options for the corresponding connection type in the [ Connection parameters](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html) section of the Glue documentation. + /// This member is required. + public var data: [Swift.String:Swift.String]? + /// The nodes that are inputs to the data target. + public var inputs: [Swift.String]? + /// The name of this target node. + /// This member is required. + public var name: Swift.String? + + public init( + connectionType: Swift.String? = nil, + data: [Swift.String:Swift.String]? = nil, + inputs: [Swift.String]? = nil, + name: Swift.String? = nil + ) + { + self.connectionType = connectionType + self.data = data + self.inputs = inputs + self.name = name + } + } + +} + extension GlueClientTypes.Crawl: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case completedOn = "CompletedOn" diff --git a/Sources/Services/AWSGroundStation/models/Models.swift b/Sources/Services/AWSGroundStation/models/Models.swift index 0c6c1fe8a1a..0c6962c8858 100644 --- a/Sources/Services/AWSGroundStation/models/Models.swift +++ b/Sources/Services/AWSGroundStation/models/Models.swift @@ -5439,6 +5439,7 @@ extension InvalidParameterExceptionBody: Swift.Decodable { extension GroundStationClientTypes.KmsKey: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case kmsaliasarn = "kmsAliasArn" + case kmsaliasname = "kmsAliasName" case kmskeyarn = "kmsKeyArn" case sdkUnknown } @@ -5448,6 +5449,8 @@ extension GroundStationClientTypes.KmsKey: Swift.Codable { switch self { case let .kmsaliasarn(kmsaliasarn): try container.encode(kmsaliasarn, forKey: .kmsaliasarn) + case let .kmsaliasname(kmsaliasname): + try container.encode(kmsaliasname, forKey: .kmsaliasname) case let .kmskeyarn(kmskeyarn): try container.encode(kmskeyarn, forKey: .kmskeyarn) case let .sdkUnknown(sdkUnknown): @@ -5467,6 +5470,11 @@ extension GroundStationClientTypes.KmsKey: Swift.Codable { self = .kmsaliasarn(kmsaliasarn) return } + let kmsaliasnameDecoded = try values.decodeIfPresent(Swift.String.self, forKey: .kmsaliasname) + if let kmsaliasname = kmsaliasnameDecoded { + self = .kmsaliasname(kmsaliasname) + return + } self = .sdkUnknown("") } } @@ -5478,6 +5486,8 @@ extension GroundStationClientTypes { case kmskeyarn(Swift.String) /// KMS Alias Arn. case kmsaliasarn(Swift.String) + /// KMS Alias Name. + case kmsaliasname(Swift.String) case sdkUnknown(Swift.String) } diff --git a/Sources/Services/AWSIAM/EndpointResolver.swift b/Sources/Services/AWSIAM/EndpointResolver.swift index 807462fc79d..4ae89fc2ff4 100644 --- a/Sources/Services/AWSIAM/EndpointResolver.swift +++ b/Sources/Services/AWSIAM/EndpointResolver.swift @@ -34,7 +34,7 @@ public protocol EndpointResolver { public struct DefaultEndpointResolver: EndpointResolver { private let engine: AWSClientRuntime.AWSEndpointsRuleEngine - private let ruleSet = "{\"version\":\"1.0\",\"parameters\":{\"Region\":{\"builtIn\":\"AWS::Region\",\"required\":false,\"documentation\":\"The AWS region used to dispatch the request.\",\"type\":\"String\"},\"UseDualStack\":{\"builtIn\":\"AWS::UseDualStack\",\"required\":true,\"default\":false,\"documentation\":\"When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.\",\"type\":\"Boolean\"},\"UseFIPS\":{\"builtIn\":\"AWS::UseFIPS\",\"required\":true,\"default\":false,\"documentation\":\"When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.\",\"type\":\"Boolean\"},\"Endpoint\":{\"builtIn\":\"SDK::Endpoint\",\"required\":false,\"documentation\":\"Override the endpoint used to send this request\",\"type\":\"String\"}},\"rules\":[{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Endpoint\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"error\":\"Invalid Configuration: FIPS and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"error\":\"Invalid Configuration: Dualstack and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[],\"endpoint\":{\"url\":{\"ref\":\"Endpoint\"},\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Region\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"aws.partition\",\"argv\":[{\"ref\":\"Region\"}],\"assign\":\"PartitionResult\"}],\"rules\":[{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"us-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam-fips.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"us-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-cn\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.cn-north-1.amazonaws.com.cn\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"cn-north-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-us-gov\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.us-gov.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"us-gov-west-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-us-gov\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.us-gov.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"us-gov-west-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-iso\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.us-iso-east-1.c2s.ic.gov\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"us-iso-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-iso-b\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.us-isob-east-1.sc2s.sgov.gov\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"us-isob-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]}]},{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://iam-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS and DualStack are enabled, but this partition does not support one or both\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]},true]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://iam-fips.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS is enabled but this partition does not support FIPS\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://iam.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"DualStack is enabled but this partition does not support DualStack\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[],\"endpoint\":{\"url\":\"https://iam.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"Invalid Configuration: Missing Region\",\"type\":\"error\"}]}" + private let ruleSet = "{\"version\":\"1.0\",\"parameters\":{\"Region\":{\"builtIn\":\"AWS::Region\",\"required\":false,\"documentation\":\"The AWS region used to dispatch the request.\",\"type\":\"String\"},\"UseDualStack\":{\"builtIn\":\"AWS::UseDualStack\",\"required\":true,\"default\":false,\"documentation\":\"When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.\",\"type\":\"Boolean\"},\"UseFIPS\":{\"builtIn\":\"AWS::UseFIPS\",\"required\":true,\"default\":false,\"documentation\":\"When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.\",\"type\":\"Boolean\"},\"Endpoint\":{\"builtIn\":\"SDK::Endpoint\",\"required\":false,\"documentation\":\"Override the endpoint used to send this request\",\"type\":\"String\"}},\"rules\":[{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Endpoint\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"error\":\"Invalid Configuration: FIPS and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"error\":\"Invalid Configuration: Dualstack and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[],\"endpoint\":{\"url\":{\"ref\":\"Endpoint\"},\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Region\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"aws.partition\",\"argv\":[{\"ref\":\"Region\"}],\"assign\":\"PartitionResult\"}],\"rules\":[{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"us-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam-fips.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"us-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-cn\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.cn-north-1.amazonaws.com.cn\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"cn-north-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-us-gov\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.us-gov.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"us-gov-west-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-us-gov\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.us-gov.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"us-gov-west-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-iso\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.us-iso-east-1.c2s.ic.gov\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"us-iso-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-iso-b\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.us-isob-east-1.sc2s.sgov.gov\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"us-isob-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-iso-e\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.eu-isoe-west-1.cloud.adc-e.uk\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"eu-isoe-west-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-iso-f\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://iam.us-isof-south-1.csp.hci.ic.gov\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"iam\",\"signingRegion\":\"us-isof-south-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]}]},{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://iam-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS and DualStack are enabled, but this partition does not support one or both\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]},true]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://iam-fips.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS is enabled but this partition does not support FIPS\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://iam.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"DualStack is enabled but this partition does not support DualStack\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[],\"endpoint\":{\"url\":\"https://iam.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"Invalid Configuration: Missing Region\",\"type\":\"error\"}]}" public init() throws { engine = try AWSClientRuntime.AWSEndpointsRuleEngine(ruleSet: ruleSet) diff --git a/Sources/Services/AWSIAM/IAMClient.swift b/Sources/Services/AWSIAM/IAMClient.swift index 14d2cc0c5ac..e9552f00c9d 100644 --- a/Sources/Services/AWSIAM/IAMClient.swift +++ b/Sources/Services/AWSIAM/IAMClient.swift @@ -2538,7 +2538,7 @@ extension IAMClient: IAMClientProtocol { return result } - /// Generates a report that includes details about when an IAM resource (user, group, role, or policy) was last used in an attempt to access Amazon Web Services services. Recent activity usually appears within four hours. IAM reports activity for at least the last 400 days, or less if your Region began supporting this feature within the last year. For more information, see [Regions where data is tracked](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period). The service last accessed data includes all attempts to access an Amazon Web Services API, not just the successful ones. This includes all attempts that were made using the Amazon Web Services Management Console, the Amazon Web Services API through any of the SDKs, or any of the command line tools. An unexpected entry in the service last accessed data does not mean that your account has been compromised, because the request might have been denied. Refer to your CloudTrail logs as the authoritative source for information about all API calls and whether they were successful or denied access. For more information, see [Logging IAM events with CloudTrail](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html) in the IAM User Guide. The GenerateServiceLastAccessedDetails operation returns a JobId. Use this parameter in the following operations to retrieve the following details from your report: + /// Generates a report that includes details about when an IAM resource (user, group, role, or policy) was last used in an attempt to access Amazon Web Services services. Recent activity usually appears within four hours. IAM reports activity for at least the last 400 days, or less if your Region began supporting this feature within the last year. For more information, see [Regions where data is tracked](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period). For more information about services and actions for which action last accessed information is displayed, see [IAM action last accessed information services and actions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor-action-last-accessed.html). The service last accessed data includes all attempts to access an Amazon Web Services API, not just the successful ones. This includes all attempts that were made using the Amazon Web Services Management Console, the Amazon Web Services API through any of the SDKs, or any of the command line tools. An unexpected entry in the service last accessed data does not mean that your account has been compromised, because the request might have been denied. Refer to your CloudTrail logs as the authoritative source for information about all API calls and whether they were successful or denied access. For more information, see [Logging IAM events with CloudTrail](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html) in the IAM User Guide. The GenerateServiceLastAccessedDetails operation returns a JobId. Use this parameter in the following operations to retrieve the following details from your report: /// /// * [GetServiceLastAccessedDetails] – Use this operation for users, groups, roles, or policies to list every Amazon Web Services service that the resource could access using permissions policies. For each service, the response includes information about the most recent access attempt. The JobId returned by GenerateServiceLastAccessedDetail must be used by the same role within a session, or by the same user when used to call GetServiceLastAccessedDetail. /// @@ -2595,11 +2595,6 @@ extension IAMClient: IAMClientProtocol { /// - Parameter GetAccessKeyLastUsedInput : [no documentation found] /// /// - Returns: `GetAccessKeyLastUsedOutput` : Contains the response to a successful [GetAccessKeyLastUsed] request. It is also returned as a member of the [AccessKeyMetaData] structure returned by the [ListAccessKeys] action. - /// - /// - Throws: One of the exceptions listed below __Possible Exceptions__. - /// - /// __Possible Exceptions:__ - /// - `NoSuchEntityException` : The request was rejected because it referenced a resource entity that does not exist. The error message describes the resource. public func getAccessKeyLastUsed(input: GetAccessKeyLastUsedInput) async throws -> GetAccessKeyLastUsedOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3780,7 +3775,7 @@ extension IAMClient: IAMClientProtocol { return result } - /// Returns information about the access key IDs associated with the specified IAM user. If there is none, the operation returns an empty list. Although each user is limited to a small number of keys, you can still paginate the results using the MaxItems and Marker parameters. If the UserName is not specified, the user name is determined implicitly based on the Amazon Web Services access key ID used to sign the request. If a temporary access key is used, then UserName is required. If a long-term key is assigned to the user, then UserName is not required. This operation works for access keys under the Amazon Web Services account. Consequently, you can use this operation to manage Amazon Web Services account root user credentials even if the Amazon Web Services account has no associated users. To ensure the security of your Amazon Web Services account, the secret access key is accessible only during key and user creation. + /// Returns information about the access key IDs associated with the specified IAM user. If there is none, the operation returns an empty list. Although each user is limited to a small number of keys, you can still paginate the results using the MaxItems and Marker parameters. If the UserName is not specified, the user name is determined implicitly based on the Amazon Web Services access key ID used to sign the request. If a temporary access key is used, then UserName is required. If a long-term key is assigned to the user, then UserName is not required. This operation works for access keys under the Amazon Web Services account. If the Amazon Web Services account has no associated users, the root user returns it's own access key IDs by running this command. To ensure the security of your Amazon Web Services account, the secret access key is accessible only during key and user creation. /// /// - Parameter ListAccessKeysInput : [no documentation found] /// diff --git a/Sources/Services/AWSIAM/IAMClientProtocol.swift b/Sources/Services/AWSIAM/IAMClientProtocol.swift index aaf80073fdf..5d3bf56e827 100644 --- a/Sources/Services/AWSIAM/IAMClientProtocol.swift +++ b/Sources/Services/AWSIAM/IAMClientProtocol.swift @@ -796,7 +796,7 @@ public protocol IAMClientProtocol { /// __Possible Exceptions:__ /// - `ReportGenerationLimitExceededException` : The request failed because the maximum number of concurrent requests for this account are already running. func generateOrganizationsAccessReport(input: GenerateOrganizationsAccessReportInput) async throws -> GenerateOrganizationsAccessReportOutput - /// Generates a report that includes details about when an IAM resource (user, group, role, or policy) was last used in an attempt to access Amazon Web Services services. Recent activity usually appears within four hours. IAM reports activity for at least the last 400 days, or less if your Region began supporting this feature within the last year. For more information, see [Regions where data is tracked](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period). The service last accessed data includes all attempts to access an Amazon Web Services API, not just the successful ones. This includes all attempts that were made using the Amazon Web Services Management Console, the Amazon Web Services API through any of the SDKs, or any of the command line tools. An unexpected entry in the service last accessed data does not mean that your account has been compromised, because the request might have been denied. Refer to your CloudTrail logs as the authoritative source for information about all API calls and whether they were successful or denied access. For more information, see [Logging IAM events with CloudTrail](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html) in the IAM User Guide. The GenerateServiceLastAccessedDetails operation returns a JobId. Use this parameter in the following operations to retrieve the following details from your report: + /// Generates a report that includes details about when an IAM resource (user, group, role, or policy) was last used in an attempt to access Amazon Web Services services. Recent activity usually appears within four hours. IAM reports activity for at least the last 400 days, or less if your Region began supporting this feature within the last year. For more information, see [Regions where data is tracked](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html#access-advisor_tracking-period). For more information about services and actions for which action last accessed information is displayed, see [IAM action last accessed information services and actions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor-action-last-accessed.html). The service last accessed data includes all attempts to access an Amazon Web Services API, not just the successful ones. This includes all attempts that were made using the Amazon Web Services Management Console, the Amazon Web Services API through any of the SDKs, or any of the command line tools. An unexpected entry in the service last accessed data does not mean that your account has been compromised, because the request might have been denied. Refer to your CloudTrail logs as the authoritative source for information about all API calls and whether they were successful or denied access. For more information, see [Logging IAM events with CloudTrail](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html) in the IAM User Guide. The GenerateServiceLastAccessedDetails operation returns a JobId. Use this parameter in the following operations to retrieve the following details from your report: /// /// * [GetServiceLastAccessedDetails] – Use this operation for users, groups, roles, or policies to list every Amazon Web Services service that the resource could access using permissions policies. For each service, the response includes information about the most recent access attempt. The JobId returned by GenerateServiceLastAccessedDetail must be used by the same role within a session, or by the same user when used to call GetServiceLastAccessedDetail. /// @@ -820,11 +820,6 @@ public protocol IAMClientProtocol { /// - Parameter GetAccessKeyLastUsedInput : [no documentation found] /// /// - Returns: `GetAccessKeyLastUsedOutput` : Contains the response to a successful [GetAccessKeyLastUsed] request. It is also returned as a member of the [AccessKeyMetaData] structure returned by the [ListAccessKeys] action. - /// - /// - Throws: One of the exceptions listed below __Possible Exceptions__. - /// - /// __Possible Exceptions:__ - /// - `NoSuchEntityException` : The request was rejected because it referenced a resource entity that does not exist. The error message describes the resource. func getAccessKeyLastUsed(input: GetAccessKeyLastUsedInput) async throws -> GetAccessKeyLastUsedOutput /// Retrieves information about all IAM users, groups, roles, and policies in your Amazon Web Services account, including their relationships to one another. Use this operation to obtain a snapshot of the configuration of IAM permissions (users, groups, roles, and policies) in your account. Policies returned by this operation are URL-encoded compliant with [RFC 3986](https://tools.ietf.org/html/rfc3986). 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. You can optionally filter the results using the Filter parameter. You can paginate the results using the MaxItems and Marker parameters. /// @@ -1147,7 +1142,7 @@ public protocol IAMClientProtocol { /// - `NoSuchEntityException` : The request was rejected because it referenced a resource entity that does not exist. The error message describes the resource. /// - `ServiceFailureException` : The request processing has failed because of an unknown error, exception or failure. func getUserPolicy(input: GetUserPolicyInput) async throws -> GetUserPolicyOutput - /// Returns information about the access key IDs associated with the specified IAM user. If there is none, the operation returns an empty list. Although each user is limited to a small number of keys, you can still paginate the results using the MaxItems and Marker parameters. If the UserName is not specified, the user name is determined implicitly based on the Amazon Web Services access key ID used to sign the request. If a temporary access key is used, then UserName is required. If a long-term key is assigned to the user, then UserName is not required. This operation works for access keys under the Amazon Web Services account. Consequently, you can use this operation to manage Amazon Web Services account root user credentials even if the Amazon Web Services account has no associated users. To ensure the security of your Amazon Web Services account, the secret access key is accessible only during key and user creation. + /// Returns information about the access key IDs associated with the specified IAM user. If there is none, the operation returns an empty list. Although each user is limited to a small number of keys, you can still paginate the results using the MaxItems and Marker parameters. If the UserName is not specified, the user name is determined implicitly based on the Amazon Web Services access key ID used to sign the request. If a temporary access key is used, then UserName is required. If a long-term key is assigned to the user, then UserName is not required. This operation works for access keys under the Amazon Web Services account. If the Amazon Web Services account has no associated users, the root user returns it's own access key IDs by running this command. To ensure the security of your Amazon Web Services account, the secret access key is accessible only during key and user creation. /// /// - Parameter ListAccessKeysInput : [no documentation found] /// diff --git a/Sources/Services/AWSIAM/models/Models.swift b/Sources/Services/AWSIAM/models/Models.swift index 50ee21e5546..23246340109 100644 --- a/Sources/Services/AWSIAM/models/Models.swift +++ b/Sources/Services/AWSIAM/models/Models.swift @@ -6813,7 +6813,6 @@ enum GetAccessKeyLastUsedOutputError: ClientRuntime.HttpResponseErrorBinding { static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { let restXMLError = try await AWSClientRuntime.RestXMLError(httpResponse: httpResponse) switch restXMLError.errorCode { - case "NoSuchEntity": return try await NoSuchEntityException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } diff --git a/Sources/Services/AWSIoTWireless/models/Models.swift b/Sources/Services/AWSIoTWireless/models/Models.swift index bd6779361e8..419eaa45363 100644 --- a/Sources/Services/AWSIoTWireless/models/Models.swift +++ b/Sources/Services/AWSIoTWireless/models/Models.swift @@ -2584,7 +2584,7 @@ public struct CreateNetworkAnalyzerConfigurationInput: Swift.Equatable { public var name: Swift.String? /// The tag to attach to the specified resource. Tags are metadata that you can use to manage a resource. public var tags: [IoTWirelessClientTypes.Tag]? - /// Trace content for your wireless gateway and wireless device resources. + /// Trace content for your wireless devices, gateways, and multicast groups. public var traceContent: IoTWirelessClientTypes.TraceContent? /// Wireless device resources to add to the network analyzer configuration. Provide the WirelessDeviceId of the resource to add in the input array. public var wirelessDevices: [Swift.String]? @@ -6908,9 +6908,9 @@ public struct GetNetworkAnalyzerConfigurationOutput: Swift.Equatable { public var multicastGroups: [Swift.String]? /// Name of the network analyzer configuration. public var name: Swift.String? - /// Trace content for your wireless gateway and wireless device resources. + /// Trace content for your wireless devices, gateways, and multicast groups. public var traceContent: IoTWirelessClientTypes.TraceContent? - /// List of wireless gateway resources that have been added to the network analyzer configuration. + /// List of wireless device resources that have been added to the network analyzer configuration. public var wirelessDevices: [Swift.String]? /// List of wireless gateway resources that have been added to the network analyzer configuration. public var wirelessGateways: [Swift.String]? @@ -7371,7 +7371,7 @@ extension GetPositionEstimateOutput: ClientRuntime.HttpResponseBinding { } public struct GetPositionEstimateOutput: Swift.Equatable { - /// The position information of the resource, displayed as a JSON payload. The payload uses the GeoJSON format, which a format that's used to encode geographic data structures. For more information, see [GeoJSON](https://geojson.org/). + /// The position information of the resource, displayed as a JSON payload. The payload is of type blob and uses the [GeoJSON](https://geojson.org/) format, which a format that's used to encode geographic data structures. A sample payload contains the timestamp information, the WGS84 coordinates of the location, and the accuracy and confidence level. For more information and examples, see [Resolve device location (console)](https://docs.aws.amazon.com/iot/latest/developerguide/location-resolve-console.html). public var geoJsonPayload: ClientRuntime.Data? public init( @@ -12727,7 +12727,7 @@ extension IoTWirelessClientTypes { public var factoryPresetFreqsList: [Swift.Int]? /// The MAC version (such as OTAA 1.1 or OTAA 1.0.3) to use with this device profile. public var macVersion: Swift.String? - /// The MaxDutyCycle value. + /// The MaxDutyCycle value. It ranges from 0 to 15. public var maxDutyCycle: Swift.Int? /// The MaxEIRP value. public var maxEirp: Swift.Int? @@ -14473,7 +14473,7 @@ extension IoTWirelessClientTypes { } extension IoTWirelessClientTypes { - /// FrameInfo of your multicast group resources for the trace content. Use FrameInfo to debug the multicast communication between your LoRaWAN end devices and the network server. + /// FrameInfo of your multicast group resources for the trace content. Use FrameInfo to debug the multicast communication between your multicast groups and the network server. public enum MulticastFrameInfo: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case disabled case enabled @@ -14718,6 +14718,7 @@ extension IoTWirelessClientTypes.OtaaV1_0_x: Swift.Codable { case appEui = "AppEui" case appKey = "AppKey" case genAppKey = "GenAppKey" + case joinEui = "JoinEui" } public func encode(to encoder: Swift.Encoder) throws { @@ -14731,6 +14732,9 @@ extension IoTWirelessClientTypes.OtaaV1_0_x: Swift.Codable { if let genAppKey = self.genAppKey { try encodeContainer.encode(genAppKey, forKey: .genAppKey) } + if let joinEui = self.joinEui { + try encodeContainer.encode(joinEui, forKey: .joinEui) + } } public init(from decoder: Swift.Decoder) throws { @@ -14739,6 +14743,8 @@ extension IoTWirelessClientTypes.OtaaV1_0_x: Swift.Codable { appKey = appKeyDecoded let appEuiDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .appEui) appEui = appEuiDecoded + let joinEuiDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .joinEui) + joinEui = joinEuiDecoded let genAppKeyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .genAppKey) genAppKey = genAppKeyDecoded } @@ -14753,16 +14759,20 @@ extension IoTWirelessClientTypes { public var appKey: Swift.String? /// The GenAppKey value. public var genAppKey: Swift.String? + /// The JoinEUI value. + public var joinEui: Swift.String? public init( appEui: Swift.String? = nil, appKey: Swift.String? = nil, - genAppKey: Swift.String? = nil + genAppKey: Swift.String? = nil, + joinEui: Swift.String? = nil ) { self.appEui = appEui self.appKey = appKey self.genAppKey = genAppKey + self.joinEui = joinEui } } @@ -18643,11 +18653,11 @@ extension IoTWirelessClientTypes.TraceContent: Swift.Codable { } extension IoTWirelessClientTypes { - /// Trace content for your wireless gateway and wireless device resources. + /// Trace content for your wireless devices, gateways, and multicast groups. public struct TraceContent: Swift.Equatable { /// The log level for a log message. The log levels can be disabled, or set to ERROR to display less verbose logs containing only error information, or to INFO for more detailed logs. public var logLevel: IoTWirelessClientTypes.LogLevel? - /// FrameInfo of your multicast group resources for the trace content. Use FrameInfo to debug the multicast communication between your LoRaWAN end devices and the network server. + /// FrameInfo of your multicast group resources for the trace content. Use FrameInfo to debug the multicast communication between your multicast groups and the network server. public var multicastFrameInfo: IoTWirelessClientTypes.MulticastFrameInfo? /// FrameInfo of your wireless device resources for the trace content. Use FrameInfo to debug the communication between your LoRaWAN end devices and the network server. public var wirelessDeviceFrameInfo: IoTWirelessClientTypes.WirelessDeviceFrameInfo? @@ -19576,9 +19586,9 @@ public struct UpdateNetworkAnalyzerConfigurationInput: Swift.Equatable { public var description: Swift.String? /// Multicast group resources to add to the network analyzer configuration. Provide the MulticastGroupId of the resource to add in the input array. public var multicastGroupsToAdd: [Swift.String]? - /// Multicast group resources to remove from the network analyzer configuration. Provide the MulticastGroupId of the resource to remove in the input array. + /// Multicast group resources to remove from the network analyzer configuration. Provide the MulticastGroupId of the resources to remove in the input array. public var multicastGroupsToRemove: [Swift.String]? - /// Trace content for your wireless gateway and wireless device resources. + /// Trace content for your wireless devices, gateways, and multicast groups. public var traceContent: IoTWirelessClientTypes.TraceContent? /// Wireless device resources to add to the network analyzer configuration. Provide the WirelessDeviceId of the resource to add in the input array. public var wirelessDevicesToAdd: [Swift.String]? diff --git a/Sources/Services/AWSLaunchWizard/EndpointResolver.swift b/Sources/Services/AWSLaunchWizard/EndpointResolver.swift new file mode 100644 index 00000000000..ce75f86ceeb --- /dev/null +++ b/Sources/Services/AWSLaunchWizard/EndpointResolver.swift @@ -0,0 +1,153 @@ +// Code generated by smithy-swift-codegen. DO NOT EDIT! + +import AWSClientRuntime +import ClientRuntime + +public struct EndpointParams { + /// Override the endpoint used to send this request + public let endpoint: Swift.String? + /// The AWS region used to dispatch the request. + public let region: Swift.String? + /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error. + public let useDualStack: Swift.Bool + /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error. + public let useFIPS: Swift.Bool + + public init( + endpoint: Swift.String? = nil, + region: Swift.String? = nil, + useDualStack: Swift.Bool = false, + useFIPS: Swift.Bool = false + ) + { + self.endpoint = endpoint + self.region = region + self.useDualStack = useDualStack + self.useFIPS = useFIPS + } +} + +public protocol EndpointResolver { + func resolve(params: EndpointParams) throws -> ClientRuntime.Endpoint +} + +public struct DefaultEndpointResolver: EndpointResolver { + + private let engine: AWSClientRuntime.AWSEndpointsRuleEngine + private let ruleSet = "{\"version\":\"1.0\",\"parameters\":{\"Region\":{\"builtIn\":\"AWS::Region\",\"required\":false,\"documentation\":\"The AWS region used to dispatch the request.\",\"type\":\"String\"},\"UseDualStack\":{\"builtIn\":\"AWS::UseDualStack\",\"required\":true,\"default\":false,\"documentation\":\"When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.\",\"type\":\"Boolean\"},\"UseFIPS\":{\"builtIn\":\"AWS::UseFIPS\",\"required\":true,\"default\":false,\"documentation\":\"When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.\",\"type\":\"Boolean\"},\"Endpoint\":{\"builtIn\":\"SDK::Endpoint\",\"required\":false,\"documentation\":\"Override the endpoint used to send this request\",\"type\":\"String\"}},\"rules\":[{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Endpoint\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"error\":\"Invalid Configuration: FIPS and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"error\":\"Invalid Configuration: Dualstack and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[],\"endpoint\":{\"url\":{\"ref\":\"Endpoint\"},\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"}],\"type\":\"tree\"},{\"conditions\":[],\"rules\":[{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Region\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"aws.partition\",\"argv\":[{\"ref\":\"Region\"}],\"assign\":\"PartitionResult\"}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]}]},{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://launchwizard-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS and DualStack are enabled, but this partition does not support one or both\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]},true]}],\"rules\":[{\"conditions\":[],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://launchwizard-fips.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS is enabled but this partition does not support FIPS\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://launchwizard.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"DualStack is enabled but this partition does not support DualStack\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://launchwizard.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"}],\"type\":\"tree\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"Invalid Configuration: Missing Region\",\"type\":\"error\"}],\"type\":\"tree\"}]}" + + public init() throws { + engine = try AWSClientRuntime.AWSEndpointsRuleEngine(ruleSet: ruleSet) + } + + public func resolve(params: EndpointParams) throws -> ClientRuntime.Endpoint { + let context = try AWSClientRuntime.AWSEndpointsRequestContext() + try context.add(name: "Endpoint", value: params.endpoint) + try context.add(name: "Region", value: params.region) + try context.add(name: "UseDualStack", value: params.useDualStack) + try context.add(name: "UseFIPS", value: params.useFIPS) + + guard let crtResolvedEndpoint = try engine.resolve(context: context) else { + throw EndpointError.unresolved("Failed to resolved endpoint") + } + + if crtResolvedEndpoint.getType() == .error { + let error = crtResolvedEndpoint.getError() + throw EndpointError.unresolved(error) + } + + guard let url = crtResolvedEndpoint.getURL() else { + assertionFailure("This must be a bug in either CRT or the rule engine, if the endpoint is not an error, it must have a url") + throw EndpointError.unresolved("Failed to resolved endpoint") + } + + let headers = crtResolvedEndpoint.getHeaders() ?? [:] + let properties = crtResolvedEndpoint.getProperties() ?? [:] + return try Endpoint(urlString: url, headers: Headers(headers), properties: properties) + } +} + +public struct EndpointResolverMiddleware: ClientRuntime.Middleware { + public let id: Swift.String = "EndpointResolverMiddleware" + + let endpointResolver: EndpointResolver + + let endpointParams: EndpointParams + + let authSchemeResolver: AWSClientRuntime.AuthSchemeResolver + + public init(endpointResolver: EndpointResolver, endpointParams: EndpointParams, authSchemeResolver: AWSClientRuntime.AuthSchemeResolver = AWSClientRuntime.DefaultAuthSchemeResolver()) { + self.endpointResolver = endpointResolver + self.endpointParams = endpointParams + self.authSchemeResolver = authSchemeResolver + } + + public func handle(context: Context, + input: ClientRuntime.SdkHttpRequestBuilder, + next: H) async throws -> ClientRuntime.OperationOutput + where H: Handler, + Self.MInput == H.Input, + Self.MOutput == H.Output, + Self.Context == H.Context + { + let endpoint = try endpointResolver.resolve(params: endpointParams) + + var signingName: String? = nil + var signingRegion: String? = nil + var signingAlgorithm: String? = nil + if let authSchemes = endpoint.authSchemes() { + let schemes = try authSchemes.map { try AuthScheme(from: $0) } + let authScheme = try authSchemeResolver.resolve(authSchemes: schemes) + signingAlgorithm = authScheme.name + switch authScheme { + case .sigV4(let param): + signingName = param.signingName + signingRegion = param.signingRegion + case .sigV4A(let param): + signingName = param.signingName + signingRegion = param.signingRegionSet?.first + case .none: + break + } + } + + let awsEndpoint = AWSEndpoint(endpoint: endpoint, signingName: signingName, signingRegion: signingRegion) + + var host = "" + if let hostOverride = context.getHost() { + host = hostOverride + } else { + host = "\(context.getHostPrefix() ?? "")\(awsEndpoint.endpoint.host)" + } + + if let protocolType = awsEndpoint.endpoint.protocolType { + input.withProtocol(protocolType) + } + + if let signingRegion = signingRegion { + context.attributes.set(key: HttpContext.signingRegion, value: signingRegion) + } + if let signingName = signingName { + context.attributes.set(key: HttpContext.signingName, value: signingName) + } + if let signingAlgorithm = signingAlgorithm { + context.attributes.set(key: HttpContext.signingAlgorithm, value: signingAlgorithm) + } + + if let headers = endpoint.headers { + input.withHeaders(headers) + } + + input.withMethod(context.getMethod()) + .withHost(host) + .withPort(awsEndpoint.endpoint.port) + .withPath(awsEndpoint.endpoint.path.appendingPathComponent(context.getPath())) + .withHeader(name: "Host", value: host) + + return try await next.handle(context: context, input: input) + } + + public typealias MInput = ClientRuntime.SdkHttpRequestBuilder + public typealias MOutput = ClientRuntime.OperationOutput + public typealias Context = ClientRuntime.HttpContext +} diff --git a/Sources/Services/AWSLaunchWizard/LaunchWizardClient.swift b/Sources/Services/AWSLaunchWizard/LaunchWizardClient.swift new file mode 100644 index 00000000000..50eb56b96af --- /dev/null +++ b/Sources/Services/AWSLaunchWizard/LaunchWizardClient.swift @@ -0,0 +1,437 @@ +// Code generated by smithy-swift-codegen. DO NOT EDIT! + +@_spi(FileBasedConfig) import AWSClientRuntime +import ClientRuntime +import Foundation +import Logging + +public class LaunchWizardClient { + public static let clientName = "LaunchWizardClient" + let client: ClientRuntime.SdkHttpClient + let config: LaunchWizardClient.LaunchWizardClientConfiguration + let serviceName = "Launch Wizard" + let encoder: ClientRuntime.RequestEncoder + let decoder: ClientRuntime.ResponseDecoder + + public init(config: LaunchWizardClient.LaunchWizardClientConfiguration) { + client = ClientRuntime.SdkHttpClient(engine: config.httpClientEngine, config: config.httpClientConfiguration) + let encoder = ClientRuntime.JSONEncoder() + encoder.dateEncodingStrategy = .secondsSince1970 + encoder.nonConformingFloatEncodingStrategy = .convertToString(positiveInfinity: "Infinity", negativeInfinity: "-Infinity", nan: "NaN") + self.encoder = config.encoder ?? encoder + let decoder = ClientRuntime.JSONDecoder() + decoder.dateDecodingStrategy = .secondsSince1970 + decoder.nonConformingFloatDecodingStrategy = .convertFromString(positiveInfinity: "Infinity", negativeInfinity: "-Infinity", nan: "NaN") + self.decoder = config.decoder ?? decoder + self.config = config + } + + public convenience init(region: Swift.String) throws { + let config = try LaunchWizardClient.LaunchWizardClientConfiguration(region: region) + self.init(config: config) + } + + public convenience init() async throws { + let config = try await LaunchWizardClient.LaunchWizardClientConfiguration() + self.init(config: config) + } +} + +extension LaunchWizardClient { + public typealias LaunchWizardClientConfiguration = AWSClientConfiguration + + public struct ServiceSpecificConfiguration: AWSServiceSpecificConfiguration { + public typealias AWSServiceEndpointResolver = EndpointResolver + + public var serviceName: String { "Launch Wizard" } + public var clientName: String { "LaunchWizardClient" } + public var endpointResolver: EndpointResolver + + public init(endpointResolver: EndpointResolver? = nil) throws { + self.endpointResolver = try endpointResolver ?? DefaultEndpointResolver() + } + } +} + +public struct LaunchWizardClientLogHandlerFactory: ClientRuntime.SDKLogHandlerFactory { + public var label = "LaunchWizardClient" + let logLevel: ClientRuntime.SDKLogLevel + public func construct(label: String) -> LogHandler { + var handler = StreamLogHandler.standardOutput(label: label) + handler.logLevel = logLevel.toLoggerType() + return handler + } + public init(logLevel: ClientRuntime.SDKLogLevel) { + self.logLevel = logLevel + } +} + +extension LaunchWizardClient: LaunchWizardClientProtocol { + /// Creates a deployment for the given workload. Deployments created by this operation are not available in the Launch Wizard console to use the Clone deployment action on. + /// + /// - Parameter CreateDeploymentInput : [no documentation found] + /// + /// - Returns: `CreateDeploymentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ResourceLimitException` : You have exceeded an Launch Wizard resource limit. For example, you might have too many deployments in progress. + /// - `ResourceNotFoundException` : The specified workload or deployment resource can't be found. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + public func createDeployment(input: CreateDeploymentInput) async throws -> CreateDeploymentOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createDeployment") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "launchwizard") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "createDeployment") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "CreateDeploymentInput")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + + /// Deletes a deployment. + /// + /// - Parameter DeleteDeploymentInput : [no documentation found] + /// + /// - Returns: `DeleteDeploymentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ResourceNotFoundException` : The specified workload or deployment resource can't be found. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + public func deleteDeployment(input: DeleteDeploymentInput) async throws -> DeleteDeploymentOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "deleteDeployment") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "launchwizard") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deleteDeployment") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "DeleteDeploymentInput")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + + /// Returns information about the deployment. + /// + /// - Parameter GetDeploymentInput : [no documentation found] + /// + /// - Returns: `GetDeploymentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ResourceNotFoundException` : The specified workload or deployment resource can't be found. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + public func getDeployment(input: GetDeploymentInput) async throws -> GetDeploymentOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "getDeployment") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "launchwizard") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "getDeployment") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "GetDeploymentInput")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + + /// Returns information about a workload. + /// + /// - Parameter GetWorkloadInput : [no documentation found] + /// + /// - Returns: `GetWorkloadOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ResourceNotFoundException` : The specified workload or deployment resource can't be found. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + public func getWorkload(input: GetWorkloadInput) async throws -> GetWorkloadOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "getWorkload") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "launchwizard") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "getWorkload") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "GetWorkloadInput")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + + /// Lists the events of a deployment. + /// + /// - Parameter ListDeploymentEventsInput : [no documentation found] + /// + /// - Returns: `ListDeploymentEventsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ResourceNotFoundException` : The specified workload or deployment resource can't be found. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + public func listDeploymentEvents(input: ListDeploymentEventsInput) async throws -> ListDeploymentEventsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listDeploymentEvents") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "launchwizard") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listDeploymentEvents") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "ListDeploymentEventsInput")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + + /// Lists the deployments that have been created. + /// + /// - Parameter ListDeploymentsInput : [no documentation found] + /// + /// - Returns: `ListDeploymentsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + public func listDeployments(input: ListDeploymentsInput) async throws -> ListDeploymentsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listDeployments") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "launchwizard") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listDeployments") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "ListDeploymentsInput")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + + /// Lists the workload deployment patterns. + /// + /// - Parameter ListWorkloadDeploymentPatternsInput : [no documentation found] + /// + /// - Returns: `ListWorkloadDeploymentPatternsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ResourceNotFoundException` : The specified workload or deployment resource can't be found. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + public func listWorkloadDeploymentPatterns(input: ListWorkloadDeploymentPatternsInput) async throws -> ListWorkloadDeploymentPatternsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listWorkloadDeploymentPatterns") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "launchwizard") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listWorkloadDeploymentPatterns") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "ListWorkloadDeploymentPatternsInput")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + + /// Lists the workloads. + /// + /// - Parameter ListWorkloadsInput : [no documentation found] + /// + /// - Returns: `ListWorkloadsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + public func listWorkloads(input: ListWorkloadsInput) async throws -> ListWorkloadsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listWorkloads") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "launchwizard") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listWorkloads") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "ListWorkloadsInput")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + +} diff --git a/Sources/Services/AWSLaunchWizard/LaunchWizardClientProtocol.swift b/Sources/Services/AWSLaunchWizard/LaunchWizardClientProtocol.swift new file mode 100644 index 00000000000..08e8e0f0c43 --- /dev/null +++ b/Sources/Services/AWSLaunchWizard/LaunchWizardClientProtocol.swift @@ -0,0 +1,112 @@ +// Code generated by smithy-swift-codegen. DO NOT EDIT! + +import ClientRuntime + +/// Launch Wizard offers a guided way of sizing, configuring, and deploying Amazon Web Services resources for third party applications, such as Microsoft SQL Server Always On and HANA based SAP systems, without the need to manually identify and provision individual Amazon Web Services resources. +public protocol LaunchWizardClientProtocol { + /// Creates a deployment for the given workload. Deployments created by this operation are not available in the Launch Wizard console to use the Clone deployment action on. + /// + /// - Parameter CreateDeploymentInput : [no documentation found] + /// + /// - Returns: `CreateDeploymentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ResourceLimitException` : You have exceeded an Launch Wizard resource limit. For example, you might have too many deployments in progress. + /// - `ResourceNotFoundException` : The specified workload or deployment resource can't be found. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + func createDeployment(input: CreateDeploymentInput) async throws -> CreateDeploymentOutput + /// Deletes a deployment. + /// + /// - Parameter DeleteDeploymentInput : [no documentation found] + /// + /// - Returns: `DeleteDeploymentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ResourceNotFoundException` : The specified workload or deployment resource can't be found. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + func deleteDeployment(input: DeleteDeploymentInput) async throws -> DeleteDeploymentOutput + /// Returns information about the deployment. + /// + /// - Parameter GetDeploymentInput : [no documentation found] + /// + /// - Returns: `GetDeploymentOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ResourceNotFoundException` : The specified workload or deployment resource can't be found. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + func getDeployment(input: GetDeploymentInput) async throws -> GetDeploymentOutput + /// Returns information about a workload. + /// + /// - Parameter GetWorkloadInput : [no documentation found] + /// + /// - Returns: `GetWorkloadOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ResourceNotFoundException` : The specified workload or deployment resource can't be found. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + func getWorkload(input: GetWorkloadInput) async throws -> GetWorkloadOutput + /// Lists the events of a deployment. + /// + /// - Parameter ListDeploymentEventsInput : [no documentation found] + /// + /// - Returns: `ListDeploymentEventsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ResourceNotFoundException` : The specified workload or deployment resource can't be found. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + func listDeploymentEvents(input: ListDeploymentEventsInput) async throws -> ListDeploymentEventsOutput + /// Lists the deployments that have been created. + /// + /// - Parameter ListDeploymentsInput : [no documentation found] + /// + /// - Returns: `ListDeploymentsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + func listDeployments(input: ListDeploymentsInput) async throws -> ListDeploymentsOutput + /// Lists the workload deployment patterns. + /// + /// - Parameter ListWorkloadDeploymentPatternsInput : [no documentation found] + /// + /// - Returns: `ListWorkloadDeploymentPatternsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ResourceNotFoundException` : The specified workload or deployment resource can't be found. + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + func listWorkloadDeploymentPatterns(input: ListWorkloadDeploymentPatternsInput) async throws -> ListWorkloadDeploymentPatternsOutput + /// Lists the workloads. + /// + /// - Parameter ListWorkloadsInput : [no documentation found] + /// + /// - Returns: `ListWorkloadsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). + /// - `ValidationException` : The input fails to satisfy the constraints specified by an Amazon Web Services service. + func listWorkloads(input: ListWorkloadsInput) async throws -> ListWorkloadsOutput +} + +public enum LaunchWizardClientTypes {} diff --git a/Sources/Services/AWSLaunchWizard/Paginators.swift b/Sources/Services/AWSLaunchWizard/Paginators.swift new file mode 100644 index 00000000000..0f79619f2fc --- /dev/null +++ b/Sources/Services/AWSLaunchWizard/Paginators.swift @@ -0,0 +1,5 @@ +// Code generated by smithy-swift-codegen. DO NOT EDIT! + + + + diff --git a/Sources/Services/AWSLaunchWizard/models/Models.swift b/Sources/Services/AWSLaunchWizard/models/Models.swift new file mode 100644 index 00000000000..d3fc7e95544 --- /dev/null +++ b/Sources/Services/AWSLaunchWizard/models/Models.swift @@ -0,0 +1,2077 @@ +// Code generated by smithy-swift-codegen. DO NOT EDIT! +import AWSClientRuntime +import ClientRuntime + +extension CreateDeploymentInput: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "CreateDeploymentInput(deploymentPatternName: \(Swift.String(describing: deploymentPatternName)), dryRun: \(Swift.String(describing: dryRun)), name: \(Swift.String(describing: name)), workloadName: \(Swift.String(describing: workloadName)), specifications: \"CONTENT_REDACTED\")"} +} + +extension CreateDeploymentInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deploymentPatternName + case dryRun + case name + case specifications + case workloadName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let deploymentPatternName = self.deploymentPatternName { + try encodeContainer.encode(deploymentPatternName, forKey: .deploymentPatternName) + } + if let dryRun = self.dryRun { + try encodeContainer.encode(dryRun, forKey: .dryRun) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let specifications = specifications { + var specificationsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .specifications) + for (dictKey0, deploymentSpecifications0) in specifications { + try specificationsContainer.encode(deploymentSpecifications0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let workloadName = self.workloadName { + try encodeContainer.encode(workloadName, forKey: .workloadName) + } + } +} + +extension CreateDeploymentInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/createDeployment" + } +} + +public struct CreateDeploymentInput: Swift.Equatable { + /// The name of the deployment pattern supported by a given workload. You can use the [ListWorkloadDeploymentPatterns](https://docs.aws.amazon.com/launchwizard/latest/APIReference/API_ListWorkloadDeploymentPatterns.html) operation to discover supported values for this parameter. + /// This member is required. + public var deploymentPatternName: Swift.String? + /// Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation. + public var dryRun: Swift.Bool? + /// The name of the deployment. + /// This member is required. + public var name: Swift.String? + /// The settings specified for the deployment. For more information on the specifications required for creating a deployment, see [Workload specifications](https://docs.aws.amazon.com/launchwizard/latest/APIReference/launch-wizard-specifications.html). + /// This member is required. + public var specifications: [Swift.String:Swift.String]? + /// The name of the workload. You can use the [ListWorkloadDeploymentPatterns](https://docs.aws.amazon.com/launchwizard/latest/APIReference/API_ListWorkloadDeploymentPatterns.html) operation to discover supported values for this parameter. + /// This member is required. + public var workloadName: Swift.String? + + public init( + deploymentPatternName: Swift.String? = nil, + dryRun: Swift.Bool? = nil, + name: Swift.String? = nil, + specifications: [Swift.String:Swift.String]? = nil, + workloadName: Swift.String? = nil + ) + { + self.deploymentPatternName = deploymentPatternName + self.dryRun = dryRun + self.name = name + self.specifications = specifications + self.workloadName = workloadName + } +} + +struct CreateDeploymentInputBody: Swift.Equatable { + let workloadName: Swift.String? + let deploymentPatternName: Swift.String? + let name: Swift.String? + let specifications: [Swift.String:Swift.String]? + let dryRun: Swift.Bool? +} + +extension CreateDeploymentInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deploymentPatternName + case dryRun + case name + case specifications + case workloadName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workloadNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workloadName) + workloadName = workloadNameDecoded + let deploymentPatternNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .deploymentPatternName) + deploymentPatternName = deploymentPatternNameDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let specificationsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .specifications) + var specificationsDecoded0: [Swift.String:Swift.String]? = nil + if let specificationsContainer = specificationsContainer { + specificationsDecoded0 = [Swift.String:Swift.String]() + for (key0, valuestring0) in specificationsContainer { + if let valuestring0 = valuestring0 { + specificationsDecoded0?[key0] = valuestring0 + } + } + } + specifications = specificationsDecoded0 + let dryRunDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .dryRun) + dryRun = dryRunDecoded + } +} + +extension CreateDeploymentOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: CreateDeploymentOutputBody = try responseDecoder.decode(responseBody: data) + self.deploymentId = output.deploymentId + } else { + self.deploymentId = nil + } + } +} + +public struct CreateDeploymentOutput: Swift.Equatable { + /// The ID of the deployment. + public var deploymentId: Swift.String? + + public init( + deploymentId: Swift.String? = nil + ) + { + self.deploymentId = deploymentId + } +} + +struct CreateDeploymentOutputBody: Swift.Equatable { + let deploymentId: Swift.String? +} + +extension CreateDeploymentOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deploymentId + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let deploymentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .deploymentId) + deploymentId = deploymentIdDecoded + } +} + +enum CreateDeploymentOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceLimitException": return try await ResourceLimitException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension DeleteDeploymentInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deploymentId + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let deploymentId = self.deploymentId { + try encodeContainer.encode(deploymentId, forKey: .deploymentId) + } + } +} + +extension DeleteDeploymentInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/deleteDeployment" + } +} + +public struct DeleteDeploymentInput: Swift.Equatable { + /// The ID of the deployment. + /// This member is required. + public var deploymentId: Swift.String? + + public init( + deploymentId: Swift.String? = nil + ) + { + self.deploymentId = deploymentId + } +} + +struct DeleteDeploymentInputBody: Swift.Equatable { + let deploymentId: Swift.String? +} + +extension DeleteDeploymentInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deploymentId + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let deploymentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .deploymentId) + deploymentId = deploymentIdDecoded + } +} + +extension DeleteDeploymentOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: DeleteDeploymentOutputBody = try responseDecoder.decode(responseBody: data) + self.status = output.status + self.statusReason = output.statusReason + } else { + self.status = nil + self.statusReason = nil + } + } +} + +public struct DeleteDeploymentOutput: Swift.Equatable { + /// The status of the deployment. + public var status: LaunchWizardClientTypes.DeploymentStatus? + /// The reason for the deployment status. + public var statusReason: Swift.String? + + public init( + status: LaunchWizardClientTypes.DeploymentStatus? = nil, + statusReason: Swift.String? = nil + ) + { + self.status = status + self.statusReason = statusReason + } +} + +struct DeleteDeploymentOutputBody: Swift.Equatable { + let status: LaunchWizardClientTypes.DeploymentStatus? + let statusReason: Swift.String? +} + +extension DeleteDeploymentOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case status + case statusReason + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let statusDecoded = try containerValues.decodeIfPresent(LaunchWizardClientTypes.DeploymentStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + } +} + +enum DeleteDeploymentOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension LaunchWizardClientTypes.DeploymentData: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case createdAt + case deletedAt + case id + case name + case patternName + case resourceGroup + case specifications + case status + case workloadName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let createdAt = self.createdAt { + try encodeContainer.encodeTimestamp(createdAt, format: .epochSeconds, forKey: .createdAt) + } + if let deletedAt = self.deletedAt { + try encodeContainer.encodeTimestamp(deletedAt, format: .epochSeconds, forKey: .deletedAt) + } + if let id = self.id { + try encodeContainer.encode(id, forKey: .id) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let patternName = self.patternName { + try encodeContainer.encode(patternName, forKey: .patternName) + } + if let resourceGroup = self.resourceGroup { + try encodeContainer.encode(resourceGroup, forKey: .resourceGroup) + } + if let specifications = specifications { + var specificationsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .specifications) + for (dictKey0, deploymentSpecifications0) in specifications { + try specificationsContainer.encode(deploymentSpecifications0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + if let workloadName = self.workloadName { + try encodeContainer.encode(workloadName, forKey: .workloadName) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let workloadNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workloadName) + workloadName = workloadNameDecoded + let patternNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .patternName) + patternName = patternNameDecoded + let statusDecoded = try containerValues.decodeIfPresent(LaunchWizardClientTypes.DeploymentStatus.self, forKey: .status) + status = statusDecoded + let createdAtDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdAt) + createdAt = createdAtDecoded + let specificationsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .specifications) + var specificationsDecoded0: [Swift.String:Swift.String]? = nil + if let specificationsContainer = specificationsContainer { + specificationsDecoded0 = [Swift.String:Swift.String]() + for (key0, valuestring0) in specificationsContainer { + if let valuestring0 = valuestring0 { + specificationsDecoded0?[key0] = valuestring0 + } + } + } + specifications = specificationsDecoded0 + let resourceGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceGroup) + resourceGroup = resourceGroupDecoded + let deletedAtDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .deletedAt) + deletedAt = deletedAtDecoded + } +} + +extension LaunchWizardClientTypes.DeploymentData: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "DeploymentData(createdAt: \(Swift.String(describing: createdAt)), deletedAt: \(Swift.String(describing: deletedAt)), id: \(Swift.String(describing: id)), name: \(Swift.String(describing: name)), patternName: \(Swift.String(describing: patternName)), resourceGroup: \(Swift.String(describing: resourceGroup)), status: \(Swift.String(describing: status)), workloadName: \(Swift.String(describing: workloadName)), specifications: \"CONTENT_REDACTED\")"} +} + +extension LaunchWizardClientTypes { + /// The data associated with a deployment. + public struct DeploymentData: Swift.Equatable { + /// The time the deployment was created. + public var createdAt: ClientRuntime.Date? + /// The time the deployment was deleted. + public var deletedAt: ClientRuntime.Date? + /// The ID of the deployment. + public var id: Swift.String? + /// The name of the deployment. + public var name: Swift.String? + /// The pattern name of the deployment. + public var patternName: Swift.String? + /// The resource group of the deployment. + public var resourceGroup: Swift.String? + /// The specifications of the deployment. For more information on specifications for each deployment, see [Workload specifications](https://docs.aws.amazon.com/launchwizard/latest/APIReference/launch-wizard-specifications.html). + public var specifications: [Swift.String:Swift.String]? + /// The status of the deployment. + public var status: LaunchWizardClientTypes.DeploymentStatus? + /// The name of the workload. + public var workloadName: Swift.String? + + public init( + createdAt: ClientRuntime.Date? = nil, + deletedAt: ClientRuntime.Date? = nil, + id: Swift.String? = nil, + name: Swift.String? = nil, + patternName: Swift.String? = nil, + resourceGroup: Swift.String? = nil, + specifications: [Swift.String:Swift.String]? = nil, + status: LaunchWizardClientTypes.DeploymentStatus? = nil, + workloadName: Swift.String? = nil + ) + { + self.createdAt = createdAt + self.deletedAt = deletedAt + self.id = id + self.name = name + self.patternName = patternName + self.resourceGroup = resourceGroup + self.specifications = specifications + self.status = status + self.workloadName = workloadName + } + } + +} + +extension LaunchWizardClientTypes.DeploymentDataSummary: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case createdAt + case id + case name + case patternName + case status + case workloadName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let createdAt = self.createdAt { + try encodeContainer.encodeTimestamp(createdAt, format: .epochSeconds, forKey: .createdAt) + } + if let id = self.id { + try encodeContainer.encode(id, forKey: .id) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let patternName = self.patternName { + try encodeContainer.encode(patternName, forKey: .patternName) + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + if let workloadName = self.workloadName { + try encodeContainer.encode(workloadName, forKey: .workloadName) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let workloadNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workloadName) + workloadName = workloadNameDecoded + let patternNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .patternName) + patternName = patternNameDecoded + let statusDecoded = try containerValues.decodeIfPresent(LaunchWizardClientTypes.DeploymentStatus.self, forKey: .status) + status = statusDecoded + let createdAtDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdAt) + createdAt = createdAtDecoded + } +} + +extension LaunchWizardClientTypes { + /// A summary of the deployment data. + public struct DeploymentDataSummary: Swift.Equatable { + /// The time the deployment was created. + public var createdAt: ClientRuntime.Date? + /// The ID of the deployment. + public var id: Swift.String? + /// The name of the deployment + public var name: Swift.String? + /// The name of the workload deployment pattern. + public var patternName: Swift.String? + /// The status of the deployment. + public var status: LaunchWizardClientTypes.DeploymentStatus? + /// The name of the workload. + public var workloadName: Swift.String? + + public init( + createdAt: ClientRuntime.Date? = nil, + id: Swift.String? = nil, + name: Swift.String? = nil, + patternName: Swift.String? = nil, + status: LaunchWizardClientTypes.DeploymentStatus? = nil, + workloadName: Swift.String? = nil + ) + { + self.createdAt = createdAt + self.id = id + self.name = name + self.patternName = patternName + self.status = status + self.workloadName = workloadName + } + } + +} + +extension LaunchWizardClientTypes.DeploymentEventDataSummary: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case description + case name + case status + case statusReason + case timestamp + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + if let statusReason = self.statusReason { + try encodeContainer.encode(statusReason, forKey: .statusReason) + } + if let timestamp = self.timestamp { + try encodeContainer.encodeTimestamp(timestamp, format: .epochSeconds, forKey: .timestamp) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let statusDecoded = try containerValues.decodeIfPresent(LaunchWizardClientTypes.EventStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let timestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .timestamp) + timestamp = timestampDecoded + } +} + +extension LaunchWizardClientTypes { + /// A summary of the deployment event data. + public struct DeploymentEventDataSummary: Swift.Equatable { + /// The description of the deployment event. + public var description: Swift.String? + /// The name of the deployment event. + public var name: Swift.String? + /// The status of the deployment event. + public var status: LaunchWizardClientTypes.EventStatus? + /// The reason of the deployment event status. + public var statusReason: Swift.String? + /// The timestamp of the deployment event. + public var timestamp: ClientRuntime.Date? + + public init( + description: Swift.String? = nil, + name: Swift.String? = nil, + status: LaunchWizardClientTypes.EventStatus? = nil, + statusReason: Swift.String? = nil, + timestamp: ClientRuntime.Date? = nil + ) + { + self.description = description + self.name = name + self.status = status + self.statusReason = statusReason + self.timestamp = timestamp + } + } + +} + +extension LaunchWizardClientTypes.DeploymentFilter: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case name + case values + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let name = self.name { + try encodeContainer.encode(name.rawValue, forKey: .name) + } + if let values = values { + var valuesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .values) + for string0 in values { + try valuesContainer.encode(string0) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nameDecoded = try containerValues.decodeIfPresent(LaunchWizardClientTypes.DeploymentFilterKey.self, forKey: .name) + name = nameDecoded + let valuesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .values) + var valuesDecoded0:[Swift.String]? = nil + if let valuesContainer = valuesContainer { + valuesDecoded0 = [Swift.String]() + for string0 in valuesContainer { + if let string0 = string0 { + valuesDecoded0?.append(string0) + } + } + } + values = valuesDecoded0 + } +} + +extension LaunchWizardClientTypes { + /// A filter name and value pair that is used to return more specific results from a describe operation. Filters can be used to match a set of resources by specific criteria. + public struct DeploymentFilter: Swift.Equatable { + /// The name of the filter. Filter names are case-sensitive. + public var name: LaunchWizardClientTypes.DeploymentFilterKey? + /// The filter values. Filter values are case-sensitive. If you specify multiple values for a filter, the values are joined with an OR, and the request returns all results that match any of the specified values. + public var values: [Swift.String]? + + public init( + name: LaunchWizardClientTypes.DeploymentFilterKey? = nil, + values: [Swift.String]? = nil + ) + { + self.name = name + self.values = values + } + } + +} + +extension LaunchWizardClientTypes { + public enum DeploymentFilterKey: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case deploymentStatus + case workloadName + case sdkUnknown(Swift.String) + + public static var allCases: [DeploymentFilterKey] { + return [ + .deploymentStatus, + .workloadName, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .deploymentStatus: return "DEPLOYMENT_STATUS" + case .workloadName: return "WORKLOAD_NAME" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = DeploymentFilterKey(rawValue: rawValue) ?? DeploymentFilterKey.sdkUnknown(rawValue) + } + } +} + +extension LaunchWizardClientTypes { + public enum DeploymentStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case completed + case creating + case deleted + case deleteFailed + case deleteInitiating + case deleteInProgress + case failed + case inProgress + case validating + case sdkUnknown(Swift.String) + + public static var allCases: [DeploymentStatus] { + return [ + .completed, + .creating, + .deleted, + .deleteFailed, + .deleteInitiating, + .deleteInProgress, + .failed, + .inProgress, + .validating, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .completed: return "COMPLETED" + case .creating: return "CREATING" + case .deleted: return "DELETED" + case .deleteFailed: return "DELETE_FAILED" + case .deleteInitiating: return "DELETE_INITIATING" + case .deleteInProgress: return "DELETE_IN_PROGRESS" + case .failed: return "FAILED" + case .inProgress: return "IN_PROGRESS" + case .validating: return "VALIDATING" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = DeploymentStatus(rawValue: rawValue) ?? DeploymentStatus.sdkUnknown(rawValue) + } + } +} + +extension LaunchWizardClientTypes { + public enum EventStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case canceled + case canceling + case completed + case created + case failed + case inProgress + case pending + case timedOut + case sdkUnknown(Swift.String) + + public static var allCases: [EventStatus] { + return [ + .canceled, + .canceling, + .completed, + .created, + .failed, + .inProgress, + .pending, + .timedOut, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .canceled: return "CANCELED" + case .canceling: return "CANCELING" + case .completed: return "COMPLETED" + case .created: return "CREATED" + case .failed: return "FAILED" + case .inProgress: return "IN_PROGRESS" + case .pending: return "PENDING" + case .timedOut: return "TIMED_OUT" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = EventStatus(rawValue: rawValue) ?? EventStatus.sdkUnknown(rawValue) + } + } +} + +extension GetDeploymentInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deploymentId + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let deploymentId = self.deploymentId { + try encodeContainer.encode(deploymentId, forKey: .deploymentId) + } + } +} + +extension GetDeploymentInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/getDeployment" + } +} + +public struct GetDeploymentInput: Swift.Equatable { + /// The ID of the deployment. + /// This member is required. + public var deploymentId: Swift.String? + + public init( + deploymentId: Swift.String? = nil + ) + { + self.deploymentId = deploymentId + } +} + +struct GetDeploymentInputBody: Swift.Equatable { + let deploymentId: Swift.String? +} + +extension GetDeploymentInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deploymentId + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let deploymentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .deploymentId) + deploymentId = deploymentIdDecoded + } +} + +extension GetDeploymentOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: GetDeploymentOutputBody = try responseDecoder.decode(responseBody: data) + self.deployment = output.deployment + } else { + self.deployment = nil + } + } +} + +public struct GetDeploymentOutput: Swift.Equatable { + /// An object that details the deployment. + public var deployment: LaunchWizardClientTypes.DeploymentData? + + public init( + deployment: LaunchWizardClientTypes.DeploymentData? = nil + ) + { + self.deployment = deployment + } +} + +struct GetDeploymentOutputBody: Swift.Equatable { + let deployment: LaunchWizardClientTypes.DeploymentData? +} + +extension GetDeploymentOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deployment + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let deploymentDecoded = try containerValues.decodeIfPresent(LaunchWizardClientTypes.DeploymentData.self, forKey: .deployment) + deployment = deploymentDecoded + } +} + +enum GetDeploymentOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension GetWorkloadInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case workloadName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let workloadName = self.workloadName { + try encodeContainer.encode(workloadName, forKey: .workloadName) + } + } +} + +extension GetWorkloadInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/getWorkload" + } +} + +public struct GetWorkloadInput: Swift.Equatable { + /// The name of the workload. + /// This member is required. + public var workloadName: Swift.String? + + public init( + workloadName: Swift.String? = nil + ) + { + self.workloadName = workloadName + } +} + +struct GetWorkloadInputBody: Swift.Equatable { + let workloadName: Swift.String? +} + +extension GetWorkloadInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case workloadName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workloadNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workloadName) + workloadName = workloadNameDecoded + } +} + +extension GetWorkloadOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: GetWorkloadOutputBody = try responseDecoder.decode(responseBody: data) + self.workload = output.workload + } else { + self.workload = nil + } + } +} + +public struct GetWorkloadOutput: Swift.Equatable { + /// Information about the workload. + public var workload: LaunchWizardClientTypes.WorkloadData? + + public init( + workload: LaunchWizardClientTypes.WorkloadData? = nil + ) + { + self.workload = workload + } +} + +struct GetWorkloadOutputBody: Swift.Equatable { + let workload: LaunchWizardClientTypes.WorkloadData? +} + +extension GetWorkloadOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case workload + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workloadDecoded = try containerValues.decodeIfPresent(LaunchWizardClientTypes.WorkloadData.self, forKey: .workload) + workload = workloadDecoded + } +} + +enum GetWorkloadOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension InternalServerException { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: InternalServerExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// An internal error has occurred. Retry your request, but if the problem persists, contact us with details by posting a question on [re:Post](https://repost.aws/). +public struct InternalServerException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "InternalServerException" } + public static var fault: ErrorFault { .server } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct InternalServerExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension InternalServerExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + +extension ListDeploymentEventsInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deploymentId + case maxResults + case nextToken + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let deploymentId = self.deploymentId { + try encodeContainer.encode(deploymentId, forKey: .deploymentId) + } + if let maxResults = self.maxResults { + try encodeContainer.encode(maxResults, forKey: .maxResults) + } + if let nextToken = self.nextToken { + try encodeContainer.encode(nextToken, forKey: .nextToken) + } + } +} + +extension ListDeploymentEventsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/listDeploymentEvents" + } +} + +public struct ListDeploymentEventsInput: Swift.Equatable { + /// The ID of the deployment. + /// This member is required. + public var deploymentId: Swift.String? + /// The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. + public var maxResults: Swift.Int? + /// The token returned from a previous paginated request. Pagination continues from the end of the items returned by the previous request. + public var nextToken: Swift.String? + + public init( + deploymentId: Swift.String? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.deploymentId = deploymentId + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListDeploymentEventsInputBody: Swift.Equatable { + let deploymentId: Swift.String? + let maxResults: Swift.Int? + let nextToken: Swift.String? +} + +extension ListDeploymentEventsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deploymentId + case maxResults + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let deploymentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .deploymentId) + deploymentId = deploymentIdDecoded + let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) + maxResults = maxResultsDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +extension ListDeploymentEventsOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ListDeploymentEventsOutputBody = try responseDecoder.decode(responseBody: data) + self.deploymentEvents = output.deploymentEvents + self.nextToken = output.nextToken + } else { + self.deploymentEvents = nil + self.nextToken = nil + } + } +} + +public struct ListDeploymentEventsOutput: Swift.Equatable { + /// Lists the deployment events. + public var deploymentEvents: [LaunchWizardClientTypes.DeploymentEventDataSummary]? + /// The token to include in another request to get the next page of items. This value is null when there are no more items to return. + public var nextToken: Swift.String? + + public init( + deploymentEvents: [LaunchWizardClientTypes.DeploymentEventDataSummary]? = nil, + nextToken: Swift.String? = nil + ) + { + self.deploymentEvents = deploymentEvents + self.nextToken = nextToken + } +} + +struct ListDeploymentEventsOutputBody: Swift.Equatable { + let deploymentEvents: [LaunchWizardClientTypes.DeploymentEventDataSummary]? + let nextToken: Swift.String? +} + +extension ListDeploymentEventsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deploymentEvents + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let deploymentEventsContainer = try containerValues.decodeIfPresent([LaunchWizardClientTypes.DeploymentEventDataSummary?].self, forKey: .deploymentEvents) + var deploymentEventsDecoded0:[LaunchWizardClientTypes.DeploymentEventDataSummary]? = nil + if let deploymentEventsContainer = deploymentEventsContainer { + deploymentEventsDecoded0 = [LaunchWizardClientTypes.DeploymentEventDataSummary]() + for structure0 in deploymentEventsContainer { + if let structure0 = structure0 { + deploymentEventsDecoded0?.append(structure0) + } + } + } + deploymentEvents = deploymentEventsDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListDeploymentEventsOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension ListDeploymentsInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case filters + case maxResults + case nextToken + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let filters = filters { + var filtersContainer = encodeContainer.nestedUnkeyedContainer(forKey: .filters) + for deploymentfilter0 in filters { + try filtersContainer.encode(deploymentfilter0) + } + } + if let maxResults = self.maxResults { + try encodeContainer.encode(maxResults, forKey: .maxResults) + } + if let nextToken = self.nextToken { + try encodeContainer.encode(nextToken, forKey: .nextToken) + } + } +} + +extension ListDeploymentsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/listDeployments" + } +} + +public struct ListDeploymentsInput: Swift.Equatable { + /// Filters to scope the results. The following filters are supported: + /// + /// * WORKLOAD_NAME + /// + /// * DEPLOYMENT_STATUS + public var filters: [LaunchWizardClientTypes.DeploymentFilter]? + /// The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. + public var maxResults: Swift.Int? + /// The token returned from a previous paginated request. Pagination continues from the end of the items returned by the previous request. + public var nextToken: Swift.String? + + public init( + filters: [LaunchWizardClientTypes.DeploymentFilter]? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.filters = filters + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListDeploymentsInputBody: Swift.Equatable { + let filters: [LaunchWizardClientTypes.DeploymentFilter]? + let maxResults: Swift.Int? + let nextToken: Swift.String? +} + +extension ListDeploymentsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case filters + case maxResults + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let filtersContainer = try containerValues.decodeIfPresent([LaunchWizardClientTypes.DeploymentFilter?].self, forKey: .filters) + var filtersDecoded0:[LaunchWizardClientTypes.DeploymentFilter]? = nil + if let filtersContainer = filtersContainer { + filtersDecoded0 = [LaunchWizardClientTypes.DeploymentFilter]() + for structure0 in filtersContainer { + if let structure0 = structure0 { + filtersDecoded0?.append(structure0) + } + } + } + filters = filtersDecoded0 + let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) + maxResults = maxResultsDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +extension ListDeploymentsOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ListDeploymentsOutputBody = try responseDecoder.decode(responseBody: data) + self.deployments = output.deployments + self.nextToken = output.nextToken + } else { + self.deployments = nil + self.nextToken = nil + } + } +} + +public struct ListDeploymentsOutput: Swift.Equatable { + /// Lists the deployments. + public var deployments: [LaunchWizardClientTypes.DeploymentDataSummary]? + /// The token to include in another request to get the next page of items. This value is null when there are no more items to return. + public var nextToken: Swift.String? + + public init( + deployments: [LaunchWizardClientTypes.DeploymentDataSummary]? = nil, + nextToken: Swift.String? = nil + ) + { + self.deployments = deployments + self.nextToken = nextToken + } +} + +struct ListDeploymentsOutputBody: Swift.Equatable { + let deployments: [LaunchWizardClientTypes.DeploymentDataSummary]? + let nextToken: Swift.String? +} + +extension ListDeploymentsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deployments + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let deploymentsContainer = try containerValues.decodeIfPresent([LaunchWizardClientTypes.DeploymentDataSummary?].self, forKey: .deployments) + var deploymentsDecoded0:[LaunchWizardClientTypes.DeploymentDataSummary]? = nil + if let deploymentsContainer = deploymentsContainer { + deploymentsDecoded0 = [LaunchWizardClientTypes.DeploymentDataSummary]() + for structure0 in deploymentsContainer { + if let structure0 = structure0 { + deploymentsDecoded0?.append(structure0) + } + } + } + deployments = deploymentsDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListDeploymentsOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension ListWorkloadDeploymentPatternsInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults + case nextToken + case workloadName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let maxResults = self.maxResults { + try encodeContainer.encode(maxResults, forKey: .maxResults) + } + if let nextToken = self.nextToken { + try encodeContainer.encode(nextToken, forKey: .nextToken) + } + if let workloadName = self.workloadName { + try encodeContainer.encode(workloadName, forKey: .workloadName) + } + } +} + +extension ListWorkloadDeploymentPatternsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/listWorkloadDeploymentPatterns" + } +} + +public struct ListWorkloadDeploymentPatternsInput: Swift.Equatable { + /// The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. + public var maxResults: Swift.Int? + /// The token returned from a previous paginated request. Pagination continues from the end of the items returned by the previous request. + public var nextToken: Swift.String? + /// The name of the workload. + /// This member is required. + public var workloadName: Swift.String? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil, + workloadName: Swift.String? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + self.workloadName = workloadName + } +} + +struct ListWorkloadDeploymentPatternsInputBody: Swift.Equatable { + let workloadName: Swift.String? + let maxResults: Swift.Int? + let nextToken: Swift.String? +} + +extension ListWorkloadDeploymentPatternsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults + case nextToken + case workloadName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workloadNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workloadName) + workloadName = workloadNameDecoded + let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) + maxResults = maxResultsDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +extension ListWorkloadDeploymentPatternsOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ListWorkloadDeploymentPatternsOutputBody = try responseDecoder.decode(responseBody: data) + self.nextToken = output.nextToken + self.workloadDeploymentPatterns = output.workloadDeploymentPatterns + } else { + self.nextToken = nil + self.workloadDeploymentPatterns = nil + } + } +} + +public struct ListWorkloadDeploymentPatternsOutput: Swift.Equatable { + /// The token to include in another request to get the next page of items. This value is null when there are no more items to return. + public var nextToken: Swift.String? + /// Describes the workload deployment patterns. + public var workloadDeploymentPatterns: [LaunchWizardClientTypes.WorkloadDeploymentPatternDataSummary]? + + public init( + nextToken: Swift.String? = nil, + workloadDeploymentPatterns: [LaunchWizardClientTypes.WorkloadDeploymentPatternDataSummary]? = nil + ) + { + self.nextToken = nextToken + self.workloadDeploymentPatterns = workloadDeploymentPatterns + } +} + +struct ListWorkloadDeploymentPatternsOutputBody: Swift.Equatable { + let workloadDeploymentPatterns: [LaunchWizardClientTypes.WorkloadDeploymentPatternDataSummary]? + let nextToken: Swift.String? +} + +extension ListWorkloadDeploymentPatternsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case nextToken + case workloadDeploymentPatterns + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workloadDeploymentPatternsContainer = try containerValues.decodeIfPresent([LaunchWizardClientTypes.WorkloadDeploymentPatternDataSummary?].self, forKey: .workloadDeploymentPatterns) + var workloadDeploymentPatternsDecoded0:[LaunchWizardClientTypes.WorkloadDeploymentPatternDataSummary]? = nil + if let workloadDeploymentPatternsContainer = workloadDeploymentPatternsContainer { + workloadDeploymentPatternsDecoded0 = [LaunchWizardClientTypes.WorkloadDeploymentPatternDataSummary]() + for structure0 in workloadDeploymentPatternsContainer { + if let structure0 = structure0 { + workloadDeploymentPatternsDecoded0?.append(structure0) + } + } + } + workloadDeploymentPatterns = workloadDeploymentPatternsDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListWorkloadDeploymentPatternsOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension ListWorkloadsInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults + case nextToken + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let maxResults = self.maxResults { + try encodeContainer.encode(maxResults, forKey: .maxResults) + } + if let nextToken = self.nextToken { + try encodeContainer.encode(nextToken, forKey: .nextToken) + } + } +} + +extension ListWorkloadsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/listWorkloads" + } +} + +public struct ListWorkloadsInput: Swift.Equatable { + /// The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. + public var maxResults: Swift.Int? + /// The token returned from a previous paginated request. Pagination continues from the end of the items returned by the previous request. + public var nextToken: Swift.String? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListWorkloadsInputBody: Swift.Equatable { + let maxResults: Swift.Int? + let nextToken: Swift.String? +} + +extension ListWorkloadsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) + maxResults = maxResultsDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +extension ListWorkloadsOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ListWorkloadsOutputBody = try responseDecoder.decode(responseBody: data) + self.nextToken = output.nextToken + self.workloads = output.workloads + } else { + self.nextToken = nil + self.workloads = nil + } + } +} + +public struct ListWorkloadsOutput: Swift.Equatable { + /// The token to include in another request to get the next page of items. This value is null when there are no more items to return. + public var nextToken: Swift.String? + /// Information about the workloads. + public var workloads: [LaunchWizardClientTypes.WorkloadDataSummary]? + + public init( + nextToken: Swift.String? = nil, + workloads: [LaunchWizardClientTypes.WorkloadDataSummary]? = nil + ) + { + self.nextToken = nextToken + self.workloads = workloads + } +} + +struct ListWorkloadsOutputBody: Swift.Equatable { + let workloads: [LaunchWizardClientTypes.WorkloadDataSummary]? + let nextToken: Swift.String? +} + +extension ListWorkloadsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case nextToken + case workloads + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workloadsContainer = try containerValues.decodeIfPresent([LaunchWizardClientTypes.WorkloadDataSummary?].self, forKey: .workloads) + var workloadsDecoded0:[LaunchWizardClientTypes.WorkloadDataSummary]? = nil + if let workloadsContainer = workloadsContainer { + workloadsDecoded0 = [LaunchWizardClientTypes.WorkloadDataSummary]() + for structure0 in workloadsContainer { + if let structure0 = structure0 { + workloadsDecoded0?.append(structure0) + } + } + } + workloads = workloadsDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListWorkloadsOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension ResourceLimitException { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ResourceLimitExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// You have exceeded an Launch Wizard resource limit. For example, you might have too many deployments in progress. +public struct ResourceLimitException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ResourceLimitException" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct ResourceLimitExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension ResourceLimitExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + +extension ResourceNotFoundException { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ResourceNotFoundExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// The specified workload or deployment resource can't be found. +public struct ResourceNotFoundException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ResourceNotFoundException" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct ResourceNotFoundExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension ResourceNotFoundExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + +extension ValidationException { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ValidationExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// The input fails to satisfy the constraints specified by an Amazon Web Services service. +public struct ValidationException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ValidationException" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct ValidationExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension ValidationExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + +extension LaunchWizardClientTypes.WorkloadData: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case description + case displayName + case documentationUrl + case iconUrl + case status + case statusMessage + case workloadName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let displayName = self.displayName { + try encodeContainer.encode(displayName, forKey: .displayName) + } + if let documentationUrl = self.documentationUrl { + try encodeContainer.encode(documentationUrl, forKey: .documentationUrl) + } + if let iconUrl = self.iconUrl { + try encodeContainer.encode(iconUrl, forKey: .iconUrl) + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + if let statusMessage = self.statusMessage { + try encodeContainer.encode(statusMessage, forKey: .statusMessage) + } + if let workloadName = self.workloadName { + try encodeContainer.encode(workloadName, forKey: .workloadName) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workloadNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workloadName) + workloadName = workloadNameDecoded + let displayNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .displayName) + displayName = displayNameDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let documentationUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .documentationUrl) + documentationUrl = documentationUrlDecoded + let iconUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .iconUrl) + iconUrl = iconUrlDecoded + let statusDecoded = try containerValues.decodeIfPresent(LaunchWizardClientTypes.WorkloadStatus.self, forKey: .status) + status = statusDecoded + let statusMessageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusMessage) + statusMessage = statusMessageDecoded + } +} + +extension LaunchWizardClientTypes { + /// Describes a workload. + public struct WorkloadData: Swift.Equatable { + /// The description of a workload. + public var description: Swift.String? + /// The display name of a workload. + public var displayName: Swift.String? + /// The URL of a workload document. + public var documentationUrl: Swift.String? + /// The URL of a workload icon. + public var iconUrl: Swift.String? + /// The status of a workload. + public var status: LaunchWizardClientTypes.WorkloadStatus? + /// The message about a workload's status. + public var statusMessage: Swift.String? + /// The name of the workload. + public var workloadName: Swift.String? + + public init( + description: Swift.String? = nil, + displayName: Swift.String? = nil, + documentationUrl: Swift.String? = nil, + iconUrl: Swift.String? = nil, + status: LaunchWizardClientTypes.WorkloadStatus? = nil, + statusMessage: Swift.String? = nil, + workloadName: Swift.String? = nil + ) + { + self.description = description + self.displayName = displayName + self.documentationUrl = documentationUrl + self.iconUrl = iconUrl + self.status = status + self.statusMessage = statusMessage + self.workloadName = workloadName + } + } + +} + +extension LaunchWizardClientTypes.WorkloadDataSummary: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case displayName + case workloadName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let displayName = self.displayName { + try encodeContainer.encode(displayName, forKey: .displayName) + } + if let workloadName = self.workloadName { + try encodeContainer.encode(workloadName, forKey: .workloadName) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workloadNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workloadName) + workloadName = workloadNameDecoded + let displayNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .displayName) + displayName = displayNameDecoded + } +} + +extension LaunchWizardClientTypes { + /// Describes workload data. + public struct WorkloadDataSummary: Swift.Equatable { + /// The display name of the workload data. + public var displayName: Swift.String? + /// The name of the workload. + public var workloadName: Swift.String? + + public init( + displayName: Swift.String? = nil, + workloadName: Swift.String? = nil + ) + { + self.displayName = displayName + self.workloadName = workloadName + } + } + +} + +extension LaunchWizardClientTypes.WorkloadDeploymentPatternDataSummary: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deploymentPatternName + case description + case displayName + case status + case statusMessage + case workloadName + case workloadVersionName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let deploymentPatternName = self.deploymentPatternName { + try encodeContainer.encode(deploymentPatternName, forKey: .deploymentPatternName) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let displayName = self.displayName { + try encodeContainer.encode(displayName, forKey: .displayName) + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + if let statusMessage = self.statusMessage { + try encodeContainer.encode(statusMessage, forKey: .statusMessage) + } + if let workloadName = self.workloadName { + try encodeContainer.encode(workloadName, forKey: .workloadName) + } + if let workloadVersionName = self.workloadVersionName { + try encodeContainer.encode(workloadVersionName, forKey: .workloadVersionName) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workloadNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workloadName) + workloadName = workloadNameDecoded + let deploymentPatternNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .deploymentPatternName) + deploymentPatternName = deploymentPatternNameDecoded + let workloadVersionNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workloadVersionName) + workloadVersionName = workloadVersionNameDecoded + let displayNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .displayName) + displayName = displayNameDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let statusDecoded = try containerValues.decodeIfPresent(LaunchWizardClientTypes.WorkloadDeploymentPatternStatus.self, forKey: .status) + status = statusDecoded + let statusMessageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusMessage) + statusMessage = statusMessageDecoded + } +} + +extension LaunchWizardClientTypes { + /// Describes a workload deployment pattern. + public struct WorkloadDeploymentPatternDataSummary: Swift.Equatable { + /// The name of a workload deployment pattern. + public var deploymentPatternName: Swift.String? + /// The description of a workload deployment pattern. + public var description: Swift.String? + /// The display name of a workload deployment pattern. + public var displayName: Swift.String? + /// The status of a workload deployment pattern. + public var status: LaunchWizardClientTypes.WorkloadDeploymentPatternStatus? + /// A message about a workload deployment pattern's status. + public var statusMessage: Swift.String? + /// The name of the workload. + public var workloadName: Swift.String? + /// The name of the workload deployment pattern version. + public var workloadVersionName: Swift.String? + + public init( + deploymentPatternName: Swift.String? = nil, + description: Swift.String? = nil, + displayName: Swift.String? = nil, + status: LaunchWizardClientTypes.WorkloadDeploymentPatternStatus? = nil, + statusMessage: Swift.String? = nil, + workloadName: Swift.String? = nil, + workloadVersionName: Swift.String? = nil + ) + { + self.deploymentPatternName = deploymentPatternName + self.description = description + self.displayName = displayName + self.status = status + self.statusMessage = statusMessage + self.workloadName = workloadName + self.workloadVersionName = workloadVersionName + } + } + +} + +extension LaunchWizardClientTypes { + public enum WorkloadDeploymentPatternStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case active + case deleted + case disabled + case inactive + case sdkUnknown(Swift.String) + + public static var allCases: [WorkloadDeploymentPatternStatus] { + return [ + .active, + .deleted, + .disabled, + .inactive, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .active: return "ACTIVE" + case .deleted: return "DELETED" + case .disabled: return "DISABLED" + case .inactive: return "INACTIVE" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = WorkloadDeploymentPatternStatus(rawValue: rawValue) ?? WorkloadDeploymentPatternStatus.sdkUnknown(rawValue) + } + } +} + +extension LaunchWizardClientTypes { + public enum WorkloadStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case active + case deleted + case disabled + case inactive + case sdkUnknown(Swift.String) + + public static var allCases: [WorkloadStatus] { + return [ + .active, + .deleted, + .disabled, + .inactive, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .active: return "ACTIVE" + case .deleted: return "DELETED" + case .disabled: return "DISABLED" + case .inactive: return "INACTIVE" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = WorkloadStatus(rawValue: rawValue) ?? WorkloadStatus.sdkUnknown(rawValue) + } + } +} diff --git a/Sources/Services/AWSM2/M2Client.swift b/Sources/Services/AWSM2/M2Client.swift index 9b6eea1bc85..93ada37fd40 100644 --- a/Sources/Services/AWSM2/M2Client.swift +++ b/Sources/Services/AWSM2/M2Client.swift @@ -596,8 +596,11 @@ extension M2Client: M2ClientProtocol { /// /// __Possible Exceptions:__ /// - `AccessDeniedException` : The account or role doesn't have the right permissions to make the request. + /// - `ConflictException` : The parameters provided in the request conflict with existing resources. + /// - `ExecutionTimeoutException` : Failed to connect to server, or didn’t receive response within expected time period. /// - `InternalServerException` : An unexpected error occurred during the processing of the request. /// - `ResourceNotFoundException` : The specified resource was not found. + /// - `ServiceUnavailableException` : Server cannot process the request at the moment. /// - `ThrottlingException` : The number of requests made exceeds the limit. /// - `ValidationException` : One or more parameters provided in the request is not valid. public func getDataSetDetails(input: GetDataSetDetailsInput) async throws -> GetDataSetDetailsOutput @@ -1048,8 +1051,11 @@ extension M2Client: M2ClientProtocol { /// /// __Possible Exceptions:__ /// - `AccessDeniedException` : The account or role doesn't have the right permissions to make the request. + /// - `ConflictException` : The parameters provided in the request conflict with existing resources. + /// - `ExecutionTimeoutException` : Failed to connect to server, or didn’t receive response within expected time period. /// - `InternalServerException` : An unexpected error occurred during the processing of the request. /// - `ResourceNotFoundException` : The specified resource was not found. + /// - `ServiceUnavailableException` : Server cannot process the request at the moment. /// - `ThrottlingException` : The number of requests made exceeds the limit. /// - `ValidationException` : One or more parameters provided in the request is not valid. public func listDataSets(input: ListDataSetsInput) async throws -> ListDataSetsOutput diff --git a/Sources/Services/AWSM2/M2ClientProtocol.swift b/Sources/Services/AWSM2/M2ClientProtocol.swift index 0d28539a7df..2caff5340ed 100644 --- a/Sources/Services/AWSM2/M2ClientProtocol.swift +++ b/Sources/Services/AWSM2/M2ClientProtocol.swift @@ -187,8 +187,11 @@ public protocol M2ClientProtocol { /// /// __Possible Exceptions:__ /// - `AccessDeniedException` : The account or role doesn't have the right permissions to make the request. + /// - `ConflictException` : The parameters provided in the request conflict with existing resources. + /// - `ExecutionTimeoutException` : Failed to connect to server, or didn’t receive response within expected time period. /// - `InternalServerException` : An unexpected error occurred during the processing of the request. /// - `ResourceNotFoundException` : The specified resource was not found. + /// - `ServiceUnavailableException` : Server cannot process the request at the moment. /// - `ThrottlingException` : The number of requests made exceeds the limit. /// - `ValidationException` : One or more parameters provided in the request is not valid. func getDataSetDetails(input: GetDataSetDetailsInput) async throws -> GetDataSetDetailsOutput @@ -334,8 +337,11 @@ public protocol M2ClientProtocol { /// /// __Possible Exceptions:__ /// - `AccessDeniedException` : The account or role doesn't have the right permissions to make the request. + /// - `ConflictException` : The parameters provided in the request conflict with existing resources. + /// - `ExecutionTimeoutException` : Failed to connect to server, or didn’t receive response within expected time period. /// - `InternalServerException` : An unexpected error occurred during the processing of the request. /// - `ResourceNotFoundException` : The specified resource was not found. + /// - `ServiceUnavailableException` : Server cannot process the request at the moment. /// - `ThrottlingException` : The number of requests made exceeds the limit. /// - `ValidationException` : One or more parameters provided in the request is not valid. func listDataSets(input: ListDataSetsInput) async throws -> ListDataSetsOutput diff --git a/Sources/Services/AWSM2/models/Models.swift b/Sources/Services/AWSM2/models/Models.swift index 8b775426605..2a0e70ef507 100644 --- a/Sources/Services/AWSM2/models/Models.swift +++ b/Sources/Services/AWSM2/models/Models.swift @@ -713,6 +713,7 @@ extension M2ClientTypes { extension M2ClientTypes.BatchJobIdentifier: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case filebatchjobidentifier = "fileBatchJobIdentifier" + case s3batchjobidentifier = "s3BatchJobIdentifier" case scriptbatchjobidentifier = "scriptBatchJobIdentifier" case sdkUnknown } @@ -722,6 +723,8 @@ extension M2ClientTypes.BatchJobIdentifier: Swift.Codable { switch self { case let .filebatchjobidentifier(filebatchjobidentifier): try container.encode(filebatchjobidentifier, forKey: .filebatchjobidentifier) + case let .s3batchjobidentifier(s3batchjobidentifier): + try container.encode(s3batchjobidentifier, forKey: .s3batchjobidentifier) case let .scriptbatchjobidentifier(scriptbatchjobidentifier): try container.encode(scriptbatchjobidentifier, forKey: .scriptbatchjobidentifier) case let .sdkUnknown(sdkUnknown): @@ -741,6 +744,11 @@ extension M2ClientTypes.BatchJobIdentifier: Swift.Codable { self = .scriptbatchjobidentifier(scriptbatchjobidentifier) return } + let s3batchjobidentifierDecoded = try values.decodeIfPresent(M2ClientTypes.S3BatchJobIdentifier.self, forKey: .s3batchjobidentifier) + if let s3batchjobidentifier = s3batchjobidentifierDecoded { + self = .s3batchjobidentifier(s3batchjobidentifier) + return + } self = .sdkUnknown("") } } @@ -752,6 +760,8 @@ extension M2ClientTypes { case filebatchjobidentifier(M2ClientTypes.FileBatchJobIdentifier) /// A batch job identifier in which the batch job to run is identified by the script name. case scriptbatchjobidentifier(M2ClientTypes.ScriptBatchJobIdentifier) + /// Specifies an Amazon S3 location that identifies the batch jobs that you want to run. Use this identifier to run ad hoc batch jobs. + case s3batchjobidentifier(M2ClientTypes.S3BatchJobIdentifier) case sdkUnknown(Swift.String) } @@ -1526,7 +1536,7 @@ public struct CreateEnvironmentInput: Swift.Equatable { /// The name of the runtime environment. Must be unique within the account. /// This member is required. public var name: Swift.String? - /// Configures the maintenance window you want for the runtime environment. If you do not provide a value, a random system-generated value will be assigned. + /// Configures the maintenance window that you want for the runtime environment. The maintenance window must have the format ddd:hh24:mi-ddd:hh24:mi and must be less than 24 hours. The following two examples are valid maintenance windows: sun:23:45-mon:00:15 or sat:01:00-sat:03:00. If you do not provide a value, a random system-generated value will be assigned. public var preferredMaintenanceWindow: Swift.String? /// Specifies whether the runtime environment is publicly accessible. public var publiclyAccessible: Swift.Bool @@ -2001,6 +2011,7 @@ extension M2ClientTypes { extension M2ClientTypes.DataSetImportTask: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case status + case statusReason case summary case taskId } @@ -2010,6 +2021,9 @@ extension M2ClientTypes.DataSetImportTask: Swift.Codable { if let status = self.status { try encodeContainer.encode(status.rawValue, forKey: .status) } + if let statusReason = self.statusReason { + try encodeContainer.encode(statusReason, forKey: .statusReason) + } if let summary = self.summary { try encodeContainer.encode(summary, forKey: .summary) } @@ -2026,6 +2040,8 @@ extension M2ClientTypes.DataSetImportTask: Swift.Codable { status = statusDecoded let summaryDecoded = try containerValues.decodeIfPresent(M2ClientTypes.DataSetImportSummary.self, forKey: .summary) summary = summaryDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded } } @@ -2035,6 +2051,8 @@ extension M2ClientTypes { /// The status of the data set import task. /// This member is required. public var status: M2ClientTypes.DataSetTaskLifecycle? + /// If dataset import failed, the failure reason will show here. + public var statusReason: Swift.String? /// A summary of the data set import task. /// This member is required. public var summary: M2ClientTypes.DataSetImportSummary? @@ -2044,11 +2062,13 @@ extension M2ClientTypes { public init( status: M2ClientTypes.DataSetTaskLifecycle? = nil, + statusReason: Swift.String? = nil, summary: M2ClientTypes.DataSetImportSummary? = nil, taskId: Swift.String? = nil ) { self.status = status + self.statusReason = statusReason self.summary = summary self.taskId = taskId } @@ -2146,6 +2166,7 @@ extension M2ClientTypes { public enum DataSetTaskLifecycle: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case completed case creating + case failed case running case sdkUnknown(Swift.String) @@ -2153,6 +2174,7 @@ extension M2ClientTypes { return [ .completed, .creating, + .failed, .running, .sdkUnknown("") ] @@ -2165,6 +2187,7 @@ extension M2ClientTypes { switch self { case .completed: return "Completed" case .creating: return "Creating" + case .failed: return "Failed" case .running: return "Running" case let .sdkUnknown(s): return s } @@ -2595,6 +2618,7 @@ extension M2ClientTypes { extension M2ClientTypes { public enum DeploymentLifecycle: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case deploying + case deployUpdate case failed case succeeded case sdkUnknown(Swift.String) @@ -2602,6 +2626,7 @@ extension M2ClientTypes { public static var allCases: [DeploymentLifecycle] { return [ .deploying, + .deployUpdate, .failed, .succeeded, .sdkUnknown("") @@ -2614,6 +2639,7 @@ extension M2ClientTypes { public var rawValue: Swift.String { switch self { case .deploying: return "Deploying" + case .deployUpdate: return "Updating Deployment" case .failed: return "Failed" case .succeeded: return "Succeeded" case let .sdkUnknown(s): return s @@ -3008,6 +3034,62 @@ extension M2ClientTypes { } +extension ExecutionTimeoutException { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ExecutionTimeoutExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// Failed to connect to server, or didn’t receive response within expected time period. +public struct ExecutionTimeoutException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + /// This member is required. + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ExecutionTimeoutException" } + public static var fault: ErrorFault { .server } + public static var isRetryable: Swift.Bool { true } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct ExecutionTimeoutExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension ExecutionTimeoutExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + extension M2ClientTypes.ExternalLocation: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case s3location = "s3Location" @@ -4017,6 +4099,7 @@ extension GetDataSetDetailsOutput: ClientRuntime.HttpResponseBinding { self.creationTime = output.creationTime self.dataSetName = output.dataSetName self.dataSetOrg = output.dataSetOrg + self.fileSize = output.fileSize self.lastReferencedTime = output.lastReferencedTime self.lastUpdatedTime = output.lastUpdatedTime self.location = output.location @@ -4026,6 +4109,7 @@ extension GetDataSetDetailsOutput: ClientRuntime.HttpResponseBinding { self.creationTime = nil self.dataSetName = nil self.dataSetOrg = nil + self.fileSize = nil self.lastReferencedTime = nil self.lastUpdatedTime = nil self.location = nil @@ -4044,6 +4128,8 @@ public struct GetDataSetDetailsOutput: Swift.Equatable { public var dataSetName: Swift.String? /// The type of data set. The only supported value is VSAM. public var dataSetOrg: M2ClientTypes.DatasetDetailOrgAttributes? + /// File size of the dataset. + public var fileSize: Swift.Int? /// The last time the data set was referenced. public var lastReferencedTime: ClientRuntime.Date? /// The last time the data set was updated. @@ -4058,6 +4144,7 @@ public struct GetDataSetDetailsOutput: Swift.Equatable { creationTime: ClientRuntime.Date? = nil, dataSetName: Swift.String? = nil, dataSetOrg: M2ClientTypes.DatasetDetailOrgAttributes? = nil, + fileSize: Swift.Int? = nil, lastReferencedTime: ClientRuntime.Date? = nil, lastUpdatedTime: ClientRuntime.Date? = nil, location: Swift.String? = nil, @@ -4068,6 +4155,7 @@ public struct GetDataSetDetailsOutput: Swift.Equatable { self.creationTime = creationTime self.dataSetName = dataSetName self.dataSetOrg = dataSetOrg + self.fileSize = fileSize self.lastReferencedTime = lastReferencedTime self.lastUpdatedTime = lastUpdatedTime self.location = location @@ -4084,6 +4172,7 @@ struct GetDataSetDetailsOutputBody: Swift.Equatable { let creationTime: ClientRuntime.Date? let lastUpdatedTime: ClientRuntime.Date? let lastReferencedTime: ClientRuntime.Date? + let fileSize: Swift.Int? } extension GetDataSetDetailsOutputBody: Swift.Decodable { @@ -4092,6 +4181,7 @@ extension GetDataSetDetailsOutputBody: Swift.Decodable { case creationTime case dataSetName case dataSetOrg + case fileSize case lastReferencedTime case lastUpdatedTime case location @@ -4116,6 +4206,8 @@ extension GetDataSetDetailsOutputBody: Swift.Decodable { lastUpdatedTime = lastUpdatedTimeDecoded let lastReferencedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastReferencedTime) lastReferencedTime = lastReferencedTimeDecoded + let fileSizeDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .fileSize) + fileSize = fileSizeDecoded } } @@ -4125,8 +4217,11 @@ enum GetDataSetDetailsOutputError: ClientRuntime.HttpResponseErrorBinding { let requestID = httpResponse.requestId switch restJSONError.errorType { case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ExecutionTimeoutException": return try await ExecutionTimeoutException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) @@ -4496,7 +4591,7 @@ extension GetEnvironmentOutput: ClientRuntime.HttpResponseBinding { } public struct GetEnvironmentOutput: Swift.Equatable { - /// The number of instances included in the runtime environment. A standalone runtime environment has a maxiumum of one instance. Currently, a high availability runtime environment has a maximum of two instances. + /// The number of instances included in the runtime environment. A standalone runtime environment has a maximum of one instance. Currently, a high availability runtime environment has a maximum of two instances. public var actualCapacity: Swift.Int? /// The timestamp when the runtime environment was created. /// This member is required. @@ -4529,7 +4624,7 @@ public struct GetEnvironmentOutput: Swift.Equatable { public var name: Swift.String? /// Indicates the pending maintenance scheduled on this environment. public var pendingMaintenance: M2ClientTypes.PendingMaintenance? - /// Configures the maintenance window you want for the runtime environment. If you do not provide a value, a random system-generated value will be assigned. + /// The maintenance window for the runtime environment. If you don't provide a value for the maintenance window, the service assigns a random value. public var preferredMaintenanceWindow: Swift.String? /// Whether applications running in this runtime environment are publicly accessible. public var publiclyAccessible: Swift.Bool @@ -4928,6 +5023,53 @@ extension InternalServerExceptionBody: Swift.Decodable { } } +extension M2ClientTypes.JobIdentifier: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case filename = "fileName" + case scriptname = "scriptName" + case sdkUnknown + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + switch self { + case let .filename(filename): + try container.encode(filename, forKey: .filename) + case let .scriptname(scriptname): + try container.encode(scriptname, forKey: .scriptname) + case let .sdkUnknown(sdkUnknown): + try container.encode(sdkUnknown, forKey: .sdkUnknown) + } + } + + public init(from decoder: Swift.Decoder) throws { + let values = try decoder.container(keyedBy: CodingKeys.self) + let filenameDecoded = try values.decodeIfPresent(Swift.String.self, forKey: .filename) + if let filename = filenameDecoded { + self = .filename(filename) + return + } + let scriptnameDecoded = try values.decodeIfPresent(Swift.String.self, forKey: .scriptname) + if let scriptname = scriptnameDecoded { + self = .scriptname(scriptname) + return + } + self = .sdkUnknown("") + } +} + +extension M2ClientTypes { + /// Identifies a specific batch job. + public enum JobIdentifier: Swift.Equatable { + /// The name of the file that contains the batch job definition. + case filename(Swift.String) + /// The name of the script that contains the batch job definition. + case scriptname(Swift.String) + case sdkUnknown(Swift.String) + } + +} + extension ListApplicationVersionsInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { @@ -5658,6 +5800,10 @@ extension ListDataSetsInput: ClientRuntime.QueryItemProvider { let prefixQueryItem = ClientRuntime.URLQueryItem(name: "prefix".urlPercentEncoding(), value: Swift.String(`prefix`).urlPercentEncoding()) items.append(prefixQueryItem) } + if let nameFilter = nameFilter { + let nameFilterQueryItem = ClientRuntime.URLQueryItem(name: "nameFilter".urlPercentEncoding(), value: Swift.String(nameFilter).urlPercentEncoding()) + items.append(nameFilterQueryItem) + } return items } } @@ -5678,6 +5824,8 @@ public struct ListDataSetsInput: Swift.Equatable { public var applicationId: Swift.String? /// The maximum number of objects to return. public var maxResults: Swift.Int? + /// Filter dataset name matching the specified pattern. Can use * and % as wild cards. + public var nameFilter: Swift.String? /// A pagination token returned from a previous call to this operation. This specifies the next item to return. To return to the beginning of the list, exclude this parameter. public var nextToken: Swift.String? /// The prefix of the data set name, which you can use to filter the list of data sets. @@ -5686,12 +5834,14 @@ public struct ListDataSetsInput: Swift.Equatable { public init( applicationId: Swift.String? = nil, maxResults: Swift.Int? = nil, + nameFilter: Swift.String? = nil, nextToken: Swift.String? = nil, `prefix`: Swift.String? = nil ) { self.applicationId = applicationId self.maxResults = maxResults + self.nameFilter = nameFilter self.nextToken = nextToken self.`prefix` = `prefix` } @@ -5772,8 +5922,11 @@ enum ListDataSetsOutputError: ClientRuntime.HttpResponseErrorBinding { let requestID = httpResponse.requestId switch restJSONError.errorType { case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ExecutionTimeoutException": return try await ExecutionTimeoutException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) @@ -6804,6 +6957,63 @@ extension ResourceNotFoundExceptionBody: Swift.Decodable { } } +extension M2ClientTypes.S3BatchJobIdentifier: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case bucket + case identifier + case keyPrefix + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let bucket = self.bucket { + try encodeContainer.encode(bucket, forKey: .bucket) + } + if let identifier = self.identifier { + try encodeContainer.encode(identifier, forKey: .identifier) + } + if let keyPrefix = self.keyPrefix { + try encodeContainer.encode(keyPrefix, forKey: .keyPrefix) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let bucketDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .bucket) + bucket = bucketDecoded + let keyPrefixDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .keyPrefix) + keyPrefix = keyPrefixDecoded + let identifierDecoded = try containerValues.decodeIfPresent(M2ClientTypes.JobIdentifier.self, forKey: .identifier) + identifier = identifierDecoded + } +} + +extension M2ClientTypes { + /// A batch job identifier in which the batch jobs to run are identified by an Amazon S3 location. + public struct S3BatchJobIdentifier: Swift.Equatable { + /// The Amazon S3 bucket that contains the batch job definitions. + /// This member is required. + public var bucket: Swift.String? + /// Identifies the batch job definition. This identifier can also point to any batch job definition that already exists in the application or to one of the batch job definitions within the directory that is specified in keyPrefix. + /// This member is required. + public var identifier: M2ClientTypes.JobIdentifier? + /// The key prefix that specifies the path to the folder in the S3 bucket that has the batch job definitions. + public var keyPrefix: Swift.String? + + public init( + bucket: Swift.String? = nil, + identifier: M2ClientTypes.JobIdentifier? = nil, + keyPrefix: Swift.String? = nil + ) + { + self.bucket = bucket + self.identifier = identifier + self.keyPrefix = keyPrefix + } + } + +} + extension M2ClientTypes.ScriptBatchJobDefinition: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case scriptName @@ -6972,6 +7182,62 @@ extension ServiceQuotaExceededExceptionBody: Swift.Decodable { } } +extension ServiceUnavailableException { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ServiceUnavailableExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// Server cannot process the request at the moment. +public struct ServiceUnavailableException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + /// This member is required. + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ServiceUnavailableException" } + public static var fault: ErrorFault { .server } + public static var isRetryable: Swift.Bool { true } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct ServiceUnavailableExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension ServiceUnavailableExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + extension StartApplicationInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { guard let applicationId = applicationId else { @@ -7418,7 +7684,7 @@ public struct ThrottlingException: ClientRuntime.ModeledError, AWSClientRuntime. public struct Properties { /// This member is required. public internal(set) var message: Swift.String? = nil - /// The identifier of the throttled reuqest. + /// The identifier of the throttled request. public internal(set) var quotaCode: Swift.String? = nil /// The number of seconds to wait before retrying the request. public internal(set) var retryAfterSeconds: Swift.Int = 0 @@ -7693,6 +7959,7 @@ extension UpdateEnvironmentInput: Swift.Encodable { case applyDuringMaintenanceWindow case desiredCapacity case engineVersion + case forceUpdate case instanceType case preferredMaintenanceWindow } @@ -7708,6 +7975,9 @@ extension UpdateEnvironmentInput: Swift.Encodable { if let engineVersion = self.engineVersion { try encodeContainer.encode(engineVersion, forKey: .engineVersion) } + if forceUpdate != false { + try encodeContainer.encode(forceUpdate, forKey: .forceUpdate) + } if let instanceType = self.instanceType { try encodeContainer.encode(instanceType, forKey: .instanceType) } @@ -7736,9 +8006,11 @@ public struct UpdateEnvironmentInput: Swift.Equatable { /// The unique identifier of the runtime environment that you want to update. /// This member is required. public var environmentId: Swift.String? + /// Forces the updates on the environment. This option is needed if the applications in the environment are not stopped or if there are ongoing application-related activities in the environment. If you use this option, be aware that it could lead to data corruption in the applications, and that you might need to perform repair and recovery procedures for the applications. This option is not needed if the attribute being updated is preferredMaintenanceWindow. + public var forceUpdate: Swift.Bool /// The instance type for the runtime environment to update. public var instanceType: Swift.String? - /// Configures the maintenance window you want for the runtime environment. If you do not provide a value, a random system-generated value will be assigned. + /// Configures the maintenance window that you want for the runtime environment. The maintenance window must have the format ddd:hh24:mi-ddd:hh24:mi and must be less than 24 hours. The following two examples are valid maintenance windows: sun:23:45-mon:00:15 or sat:01:00-sat:03:00. If you do not provide a value, a random system-generated value will be assigned. public var preferredMaintenanceWindow: Swift.String? public init( @@ -7746,6 +8018,7 @@ public struct UpdateEnvironmentInput: Swift.Equatable { desiredCapacity: Swift.Int? = nil, engineVersion: Swift.String? = nil, environmentId: Swift.String? = nil, + forceUpdate: Swift.Bool = false, instanceType: Swift.String? = nil, preferredMaintenanceWindow: Swift.String? = nil ) @@ -7754,6 +8027,7 @@ public struct UpdateEnvironmentInput: Swift.Equatable { self.desiredCapacity = desiredCapacity self.engineVersion = engineVersion self.environmentId = environmentId + self.forceUpdate = forceUpdate self.instanceType = instanceType self.preferredMaintenanceWindow = preferredMaintenanceWindow } @@ -7765,6 +8039,7 @@ struct UpdateEnvironmentInputBody: Swift.Equatable { let engineVersion: Swift.String? let preferredMaintenanceWindow: Swift.String? let applyDuringMaintenanceWindow: Swift.Bool + let forceUpdate: Swift.Bool } extension UpdateEnvironmentInputBody: Swift.Decodable { @@ -7772,6 +8047,7 @@ extension UpdateEnvironmentInputBody: Swift.Decodable { case applyDuringMaintenanceWindow case desiredCapacity case engineVersion + case forceUpdate case instanceType case preferredMaintenanceWindow } @@ -7788,6 +8064,8 @@ extension UpdateEnvironmentInputBody: Swift.Decodable { preferredMaintenanceWindow = preferredMaintenanceWindowDecoded let applyDuringMaintenanceWindowDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .applyDuringMaintenanceWindow) ?? false applyDuringMaintenanceWindow = applyDuringMaintenanceWindowDecoded + let forceUpdateDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .forceUpdate) ?? false + forceUpdate = forceUpdateDecoded } } diff --git a/Sources/Services/AWSMWAA/MWAAClient.swift b/Sources/Services/AWSMWAA/MWAAClient.swift index da434c35454..ead0c8abea4 100644 --- a/Sources/Services/AWSMWAA/MWAAClient.swift +++ b/Sources/Services/AWSMWAA/MWAAClient.swift @@ -370,6 +370,7 @@ extension MWAAClient: MWAAClientProtocol { } /// Internal only. Publishes environment health metrics to Amazon CloudWatch. + @available(*, deprecated, message: "This API is for internal use and not meant for public use, and is no longer available.") /// /// - Parameter PublishMetricsInput : [no documentation found] /// diff --git a/Sources/Services/AWSMWAA/MWAAClientProtocol.swift b/Sources/Services/AWSMWAA/MWAAClientProtocol.swift index 05a908f3c45..631531f4cea 100644 --- a/Sources/Services/AWSMWAA/MWAAClientProtocol.swift +++ b/Sources/Services/AWSMWAA/MWAAClientProtocol.swift @@ -34,15 +34,8 @@ import ClientRuntime /// /// /// -/// * ops.airflow.{region}.amazonaws.com - This endpoint is used to push environment metrics that track environment health. /// -/// * [PublishMetrics](https://docs.aws.amazon.com/mwaa/latest/API/API_PublishMetrics.html) -/// -/// -/// -/// -/// -/// Regions For a list of regions that Amazon MWAA supports, see [Region availability](https://docs.aws.amazon.com/mwaa/latest/userguide/what-is-mwaa.html#regions-mwaa) in the Amazon MWAA User Guide. +/// Regions For a list of supported regions, see [Amazon MWAA endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/mwaa.html) in the Amazon Web Services General Reference. public protocol MWAAClientProtocol { /// Creates a CLI token for the Airflow CLI. To learn more, see [Creating an Apache Airflow CLI token](https://docs.aws.amazon.com/mwaa/latest/userguide/call-mwaa-apis-cli.html). /// @@ -133,6 +126,7 @@ public protocol MWAAClientProtocol { /// - `ValidationException` : ValidationException: The provided input is not valid. func listTagsForResource(input: ListTagsForResourceInput) async throws -> ListTagsForResourceOutput /// Internal only. Publishes environment health metrics to Amazon CloudWatch. + @available(*, deprecated, message: "This API is for internal use and not meant for public use, and is no longer available.") /// /// - Parameter PublishMetricsInput : [no documentation found] /// diff --git a/Sources/Services/AWSMWAA/models/Models.swift b/Sources/Services/AWSMWAA/models/Models.swift index 8e36bd421af..229f398f1f3 100644 --- a/Sources/Services/AWSMWAA/models/Models.swift +++ b/Sources/Services/AWSMWAA/models/Models.swift @@ -271,7 +271,7 @@ extension CreateEnvironmentInput: ClientRuntime.URLPathProvider { public struct CreateEnvironmentInput: Swift.Equatable { /// A list of key-value pairs containing the Apache Airflow configuration options you want to attach to your environment. For more information, see [Apache Airflow configuration options](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-env-variables.html). public var airflowConfigurationOptions: [Swift.String:Swift.String]? - /// The Apache Airflow version for your environment. If no value is specified, it defaults to the latest version. Valid values: 1.10.12, 2.0.2, 2.2.2, 2.4.3, and 2.5.1. For more information, see [Apache Airflow versions on Amazon Managed Workflows for Apache Airflow (MWAA)](https://docs.aws.amazon.com/mwaa/latest/userguide/airflow-versions.html). + /// The Apache Airflow version for your environment. If no value is specified, it defaults to the latest version. For more information, see [Apache Airflow versions on Amazon Managed Workflows for Apache Airflow (MWAA)](https://docs.aws.amazon.com/mwaa/latest/userguide/airflow-versions.html). Valid values: 1.10.12, 2.0.2, 2.2.2, 2.4.3, 2.5.1, 2.6.3, 2.7.2. public var airflowVersion: Swift.String? /// The relative path to the DAGs folder on your Amazon S3 bucket. For example, dags. For more information, see [Adding or updating DAGs](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-folder.html). /// This member is required. @@ -720,6 +720,7 @@ extension MWAAClientTypes.Dimension: Swift.Codable { extension MWAAClientTypes { /// Internal only. Represents the dimensions of a metric. To learn more about the metrics published to Amazon CloudWatch, see [Amazon MWAA performance metrics in Amazon CloudWatch](https://docs.aws.amazon.com/mwaa/latest/userguide/cw-metrics.html). + @available(*, deprecated, message: "This type is for internal use and not meant for public use. Data set for this type will be ignored.") public struct Dimension: Swift.Equatable { /// Internal only. The name of the dimension. /// This member is required. @@ -955,7 +956,7 @@ extension MWAAClientTypes { public struct Environment: Swift.Equatable { /// A list of key-value pairs containing the Apache Airflow configuration options attached to your environment. For more information, see [Apache Airflow configuration options](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-env-variables.html). public var airflowConfigurationOptions: [Swift.String:Swift.String]? - /// The Apache Airflow version on your environment. Valid values: 1.10.12, 2.0.2, 2.2.2, 2.4.3, and 2.5.1. + /// The Apache Airflow version on your environment. Valid values: 1.10.12, 2.0.2, 2.2.2, 2.4.3, 2.5.1, 2.6.3, 2.7.2. public var airflowVersion: Swift.String? /// The Amazon Resource Name (ARN) of the Amazon MWAA environment. public var arn: Swift.String? @@ -1824,13 +1825,16 @@ extension MWAAClientTypes.MetricDatum: Swift.Codable { extension MWAAClientTypes { /// Internal only. Collects Apache Airflow metrics. To learn more about the metrics published to Amazon CloudWatch, see [Amazon MWAA performance metrics in Amazon CloudWatch](https://docs.aws.amazon.com/mwaa/latest/userguide/cw-metrics.html). + @available(*, deprecated, message: "This type is for internal use and not meant for public use. Data set for this type will be ignored.") public struct MetricDatum: Swift.Equatable { /// Internal only. The dimensions associated with the metric. + @available(*, deprecated, message: "This type is for internal use and not meant for public use. Data set for this type will be ignored.") public var dimensions: [MWAAClientTypes.Dimension]? /// Internal only. The name of the metric. /// This member is required. public var metricName: Swift.String? /// Internal only. The statistical values for the metric. + @available(*, deprecated, message: "This type is for internal use and not meant for public use. Data set for this type will be ignored.") public var statisticValues: MWAAClientTypes.StatisticSet? /// Internal only. The time the metric data was received. /// This member is required. @@ -2056,12 +2060,14 @@ extension PublishMetricsInput: ClientRuntime.URLPathProvider { } } +@available(*, deprecated, message: "This type is for internal use and not meant for public use. Data set for this type will be ignored.") public struct PublishMetricsInput: Swift.Equatable { /// Internal only. The name of the environment. /// This member is required. public var environmentName: Swift.String? /// Internal only. Publishes metrics to Amazon CloudWatch. To learn more about the metrics published to Amazon CloudWatch, see [Amazon MWAA performance metrics in Amazon CloudWatch](https://docs.aws.amazon.com/mwaa/latest/userguide/cw-metrics.html). /// This member is required. + @available(*, deprecated, message: "This type is for internal use and not meant for public use. Data set for this type will be ignored.") public var metricData: [MWAAClientTypes.MetricDatum]? public init( @@ -2104,6 +2110,7 @@ extension PublishMetricsOutput: ClientRuntime.HttpResponseBinding { } } +@available(*, deprecated, message: "This type is for internal use and not meant for public use. Data set for this type will be ignored.") public struct PublishMetricsOutput: Swift.Equatable { public init() { } @@ -2215,6 +2222,7 @@ extension MWAAClientTypes.StatisticSet: Swift.Codable { extension MWAAClientTypes { /// Internal only. Represents a set of statistics that describe a specific metric. To learn more about the metrics published to Amazon CloudWatch, see [Amazon MWAA performance metrics in Amazon CloudWatch](https://docs.aws.amazon.com/mwaa/latest/userguide/cw-metrics.html). + @available(*, deprecated, message: "This type is for internal use and not meant for public use. Data set for this type will be ignored.") public struct StatisticSet: Swift.Equatable { /// Internal only. The maximum value of the sample set. public var maximum: Swift.Double? @@ -2620,7 +2628,7 @@ extension UpdateEnvironmentInput: ClientRuntime.URLPathProvider { public struct UpdateEnvironmentInput: Swift.Equatable { /// A list of key-value pairs containing the Apache Airflow configuration options you want to attach to your environment. For more information, see [Apache Airflow configuration options](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-env-variables.html). public var airflowConfigurationOptions: [Swift.String:Swift.String]? - /// The Apache Airflow version for your environment. To upgrade your environment, specify a newer version of Apache Airflow supported by Amazon MWAA. Before you upgrade an environment, make sure your requirements, DAGs, plugins, and other resources used in your workflows are compatible with the new Apache Airflow version. For more information about updating your resources, see [Upgrading an Amazon MWAA environment](https://docs.aws.amazon.com/mwaa/latest/userguide/upgrading-environment.html). Valid values: 1.10.12, 2.0.2, 2.2.2, 2.4.3, and 2.5.1. + /// The Apache Airflow version for your environment. To upgrade your environment, specify a newer version of Apache Airflow supported by Amazon MWAA. Before you upgrade an environment, make sure your requirements, DAGs, plugins, and other resources used in your workflows are compatible with the new Apache Airflow version. For more information about updating your resources, see [Upgrading an Amazon MWAA environment](https://docs.aws.amazon.com/mwaa/latest/userguide/upgrading-environment.html). Valid values: 1.10.12, 2.0.2, 2.2.2, 2.4.3, 2.5.1, 2.6.3, 2.7.2. public var airflowVersion: Swift.String? /// The relative path to the DAGs folder on your Amazon S3 bucket. For example, dags. For more information, see [Adding or updating DAGs](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-folder.html). public var dagS3Path: Swift.String? diff --git a/Sources/Services/AWSMediaPackageV2/MediaPackageV2Client.swift b/Sources/Services/AWSMediaPackageV2/MediaPackageV2Client.swift index 2cc02aa5542..8a1c99649e9 100644 --- a/Sources/Services/AWSMediaPackageV2/MediaPackageV2Client.swift +++ b/Sources/Services/AWSMediaPackageV2/MediaPackageV2Client.swift @@ -728,6 +728,7 @@ extension MediaPackageV2Client: MediaPackageV2ClientProtocol { /// __Possible Exceptions:__ /// - `AccessDeniedException` : You don't have permissions to perform the requested operation. The user or role that is making the request must have at least one IAM permissions policy attached that grants the required permissions. For more information, see Access Management in the IAM User Guide. /// - `InternalServerException` : Indicates that an error from the service occurred while trying to process a request. + /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request throughput limit was exceeded. /// - `ValidationException` : The input failed to meet the constraints specified by the AWS service. public func listChannels(input: ListChannelsInput) async throws -> ListChannelsOutput diff --git a/Sources/Services/AWSMediaPackageV2/MediaPackageV2ClientProtocol.swift b/Sources/Services/AWSMediaPackageV2/MediaPackageV2ClientProtocol.swift index 67d739440c8..1a97ba48d52 100644 --- a/Sources/Services/AWSMediaPackageV2/MediaPackageV2ClientProtocol.swift +++ b/Sources/Services/AWSMediaPackageV2/MediaPackageV2ClientProtocol.swift @@ -229,6 +229,7 @@ public protocol MediaPackageV2ClientProtocol { /// __Possible Exceptions:__ /// - `AccessDeniedException` : You don't have permissions to perform the requested operation. The user or role that is making the request must have at least one IAM permissions policy attached that grants the required permissions. For more information, see Access Management in the IAM User Guide. /// - `InternalServerException` : Indicates that an error from the service occurred while trying to process a request. + /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request throughput limit was exceeded. /// - `ValidationException` : The input failed to meet the constraints specified by the AWS service. func listChannels(input: ListChannelsInput) async throws -> ListChannelsOutput diff --git a/Sources/Services/AWSMediaPackageV2/models/Models.swift b/Sources/Services/AWSMediaPackageV2/models/Models.swift index 321c08b4713..04602454257 100644 --- a/Sources/Services/AWSMediaPackageV2/models/Models.swift +++ b/Sources/Services/AWSMediaPackageV2/models/Models.swift @@ -912,6 +912,7 @@ enum CreateChannelOutputError: ClientRuntime.HttpResponseErrorBinding { extension MediaPackageV2ClientTypes.CreateHlsManifestConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case childManifestName = "ChildManifestName" + case filterConfiguration = "FilterConfiguration" case manifestName = "ManifestName" case manifestWindowSeconds = "ManifestWindowSeconds" case programDateTimeIntervalSeconds = "ProgramDateTimeIntervalSeconds" @@ -923,6 +924,9 @@ extension MediaPackageV2ClientTypes.CreateHlsManifestConfiguration: Swift.Codabl if let childManifestName = self.childManifestName { try encodeContainer.encode(childManifestName, forKey: .childManifestName) } + if let filterConfiguration = self.filterConfiguration { + try encodeContainer.encode(filterConfiguration, forKey: .filterConfiguration) + } if let manifestName = self.manifestName { try encodeContainer.encode(manifestName, forKey: .manifestName) } @@ -949,6 +953,8 @@ extension MediaPackageV2ClientTypes.CreateHlsManifestConfiguration: Swift.Codabl manifestWindowSeconds = manifestWindowSecondsDecoded let programDateTimeIntervalSecondsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .programDateTimeIntervalSeconds) programDateTimeIntervalSeconds = programDateTimeIntervalSecondsDecoded + let filterConfigurationDecoded = try containerValues.decodeIfPresent(MediaPackageV2ClientTypes.FilterConfiguration.self, forKey: .filterConfiguration) + filterConfiguration = filterConfigurationDecoded } } @@ -957,6 +963,8 @@ extension MediaPackageV2ClientTypes { public struct CreateHlsManifestConfiguration: Swift.Equatable { /// A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index, with an added suffix to distinguish it from the manifest name. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object. public var childManifestName: Swift.String? + /// Filter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest. + public var filterConfiguration: MediaPackageV2ClientTypes.FilterConfiguration? /// A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object. /// This member is required. public var manifestName: Swift.String? @@ -969,6 +977,7 @@ extension MediaPackageV2ClientTypes { public init( childManifestName: Swift.String? = nil, + filterConfiguration: MediaPackageV2ClientTypes.FilterConfiguration? = nil, manifestName: Swift.String? = nil, manifestWindowSeconds: Swift.Int? = nil, programDateTimeIntervalSeconds: Swift.Int? = nil, @@ -976,6 +985,7 @@ extension MediaPackageV2ClientTypes { ) { self.childManifestName = childManifestName + self.filterConfiguration = filterConfiguration self.manifestName = manifestName self.manifestWindowSeconds = manifestWindowSeconds self.programDateTimeIntervalSeconds = programDateTimeIntervalSeconds @@ -988,6 +998,7 @@ extension MediaPackageV2ClientTypes { extension MediaPackageV2ClientTypes.CreateLowLatencyHlsManifestConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case childManifestName = "ChildManifestName" + case filterConfiguration = "FilterConfiguration" case manifestName = "ManifestName" case manifestWindowSeconds = "ManifestWindowSeconds" case programDateTimeIntervalSeconds = "ProgramDateTimeIntervalSeconds" @@ -999,6 +1010,9 @@ extension MediaPackageV2ClientTypes.CreateLowLatencyHlsManifestConfiguration: Sw if let childManifestName = self.childManifestName { try encodeContainer.encode(childManifestName, forKey: .childManifestName) } + if let filterConfiguration = self.filterConfiguration { + try encodeContainer.encode(filterConfiguration, forKey: .filterConfiguration) + } if let manifestName = self.manifestName { try encodeContainer.encode(manifestName, forKey: .manifestName) } @@ -1025,6 +1039,8 @@ extension MediaPackageV2ClientTypes.CreateLowLatencyHlsManifestConfiguration: Sw manifestWindowSeconds = manifestWindowSecondsDecoded let programDateTimeIntervalSecondsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .programDateTimeIntervalSeconds) programDateTimeIntervalSeconds = programDateTimeIntervalSecondsDecoded + let filterConfigurationDecoded = try containerValues.decodeIfPresent(MediaPackageV2ClientTypes.FilterConfiguration.self, forKey: .filterConfiguration) + filterConfiguration = filterConfigurationDecoded } } @@ -1033,6 +1049,8 @@ extension MediaPackageV2ClientTypes { public struct CreateLowLatencyHlsManifestConfiguration: Swift.Equatable { /// A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index, with an added suffix to distinguish it from the manifest name. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object. public var childManifestName: Swift.String? + /// Filter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest. + public var filterConfiguration: MediaPackageV2ClientTypes.FilterConfiguration? /// A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object. /// This member is required. public var manifestName: Swift.String? @@ -1045,6 +1063,7 @@ extension MediaPackageV2ClientTypes { public init( childManifestName: Swift.String? = nil, + filterConfiguration: MediaPackageV2ClientTypes.FilterConfiguration? = nil, manifestName: Swift.String? = nil, manifestWindowSeconds: Swift.Int? = nil, programDateTimeIntervalSeconds: Swift.Int? = nil, @@ -1052,6 +1071,7 @@ extension MediaPackageV2ClientTypes { ) { self.childManifestName = childManifestName + self.filterConfiguration = filterConfiguration self.manifestName = manifestName self.manifestWindowSeconds = manifestWindowSeconds self.programDateTimeIntervalSeconds = programDateTimeIntervalSeconds @@ -2027,6 +2047,71 @@ extension MediaPackageV2ClientTypes { } +extension MediaPackageV2ClientTypes.FilterConfiguration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case end = "End" + case manifestFilter = "ManifestFilter" + case start = "Start" + case timeDelaySeconds = "TimeDelaySeconds" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let end = self.end { + try encodeContainer.encodeTimestamp(end, format: .epochSeconds, forKey: .end) + } + if let manifestFilter = self.manifestFilter { + try encodeContainer.encode(manifestFilter, forKey: .manifestFilter) + } + if let start = self.start { + try encodeContainer.encodeTimestamp(start, format: .epochSeconds, forKey: .start) + } + if let timeDelaySeconds = self.timeDelaySeconds { + try encodeContainer.encode(timeDelaySeconds, forKey: .timeDelaySeconds) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let manifestFilterDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .manifestFilter) + manifestFilter = manifestFilterDecoded + let startDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .start) + start = startDecoded + let endDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .end) + end = endDecoded + let timeDelaySecondsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .timeDelaySeconds) + timeDelaySeconds = timeDelaySecondsDecoded + } +} + +extension MediaPackageV2ClientTypes { + /// Filter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest. + public struct FilterConfiguration: Swift.Equatable { + /// Optionally specify the end time for all of your manifest egress requests. When you include end time, note that you cannot use end time query parameters for this manifest's endpoint URL. + public var end: ClientRuntime.Date? + /// Optionally specify one or more manifest filters for all of your manifest egress requests. When you include a manifest filter, note that you cannot use an identical manifest filter query parameter for this manifest's endpoint URL. + public var manifestFilter: Swift.String? + /// Optionally specify the start time for all of your manifest egress requests. When you include start time, note that you cannot use start time query parameters for this manifest's endpoint URL. + public var start: ClientRuntime.Date? + /// Optionally specify the time delay for all of your manifest egress requests. Enter a value that is smaller than your endpoint's startover window. When you include time delay, note that you cannot use time delay query parameters for this manifest's endpoint URL. + public var timeDelaySeconds: Swift.Int? + + public init( + end: ClientRuntime.Date? = nil, + manifestFilter: Swift.String? = nil, + start: ClientRuntime.Date? = nil, + timeDelaySeconds: Swift.Int? = nil + ) + { + self.end = end + self.manifestFilter = manifestFilter + self.start = start + self.timeDelaySeconds = timeDelaySeconds + } + } + +} + extension GetChannelGroupInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { guard let channelGroupName = channelGroupName else { @@ -2494,6 +2579,7 @@ enum GetChannelPolicyOutputError: ClientRuntime.HttpResponseErrorBinding { extension MediaPackageV2ClientTypes.GetHlsManifestConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case childManifestName = "ChildManifestName" + case filterConfiguration = "FilterConfiguration" case manifestName = "ManifestName" case manifestWindowSeconds = "ManifestWindowSeconds" case programDateTimeIntervalSeconds = "ProgramDateTimeIntervalSeconds" @@ -2506,6 +2592,9 @@ extension MediaPackageV2ClientTypes.GetHlsManifestConfiguration: Swift.Codable { if let childManifestName = self.childManifestName { try encodeContainer.encode(childManifestName, forKey: .childManifestName) } + if let filterConfiguration = self.filterConfiguration { + try encodeContainer.encode(filterConfiguration, forKey: .filterConfiguration) + } if let manifestName = self.manifestName { try encodeContainer.encode(manifestName, forKey: .manifestName) } @@ -2537,6 +2626,8 @@ extension MediaPackageV2ClientTypes.GetHlsManifestConfiguration: Swift.Codable { programDateTimeIntervalSeconds = programDateTimeIntervalSecondsDecoded let scteHlsDecoded = try containerValues.decodeIfPresent(MediaPackageV2ClientTypes.ScteHls.self, forKey: .scteHls) scteHls = scteHlsDecoded + let filterConfigurationDecoded = try containerValues.decodeIfPresent(MediaPackageV2ClientTypes.FilterConfiguration.self, forKey: .filterConfiguration) + filterConfiguration = filterConfigurationDecoded } } @@ -2545,6 +2636,8 @@ extension MediaPackageV2ClientTypes { public struct GetHlsManifestConfiguration: Swift.Equatable { /// A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default child manifest name, index_1. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object. public var childManifestName: Swift.String? + /// Filter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest. + public var filterConfiguration: MediaPackageV2ClientTypes.FilterConfiguration? /// A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object. /// This member is required. public var manifestName: Swift.String? @@ -2560,6 +2653,7 @@ extension MediaPackageV2ClientTypes { public init( childManifestName: Swift.String? = nil, + filterConfiguration: MediaPackageV2ClientTypes.FilterConfiguration? = nil, manifestName: Swift.String? = nil, manifestWindowSeconds: Swift.Int? = nil, programDateTimeIntervalSeconds: Swift.Int? = nil, @@ -2568,6 +2662,7 @@ extension MediaPackageV2ClientTypes { ) { self.childManifestName = childManifestName + self.filterConfiguration = filterConfiguration self.manifestName = manifestName self.manifestWindowSeconds = manifestWindowSeconds self.programDateTimeIntervalSeconds = programDateTimeIntervalSeconds @@ -2581,6 +2676,7 @@ extension MediaPackageV2ClientTypes { extension MediaPackageV2ClientTypes.GetLowLatencyHlsManifestConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case childManifestName = "ChildManifestName" + case filterConfiguration = "FilterConfiguration" case manifestName = "ManifestName" case manifestWindowSeconds = "ManifestWindowSeconds" case programDateTimeIntervalSeconds = "ProgramDateTimeIntervalSeconds" @@ -2593,6 +2689,9 @@ extension MediaPackageV2ClientTypes.GetLowLatencyHlsManifestConfiguration: Swift if let childManifestName = self.childManifestName { try encodeContainer.encode(childManifestName, forKey: .childManifestName) } + if let filterConfiguration = self.filterConfiguration { + try encodeContainer.encode(filterConfiguration, forKey: .filterConfiguration) + } if let manifestName = self.manifestName { try encodeContainer.encode(manifestName, forKey: .manifestName) } @@ -2624,6 +2723,8 @@ extension MediaPackageV2ClientTypes.GetLowLatencyHlsManifestConfiguration: Swift programDateTimeIntervalSeconds = programDateTimeIntervalSecondsDecoded let scteHlsDecoded = try containerValues.decodeIfPresent(MediaPackageV2ClientTypes.ScteHls.self, forKey: .scteHls) scteHls = scteHlsDecoded + let filterConfigurationDecoded = try containerValues.decodeIfPresent(MediaPackageV2ClientTypes.FilterConfiguration.self, forKey: .filterConfiguration) + filterConfiguration = filterConfigurationDecoded } } @@ -2632,6 +2733,8 @@ extension MediaPackageV2ClientTypes { public struct GetLowLatencyHlsManifestConfiguration: Swift.Equatable { /// A short string that's appended to the endpoint URL. The child manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default child manifest name, index_1. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object. public var childManifestName: Swift.String? + /// Filter configuration includes settings for manifest filtering, start and end times, and time delay that apply to all of your egress requests for this manifest. + public var filterConfiguration: MediaPackageV2ClientTypes.FilterConfiguration? /// A short short string that's appended to the endpoint URL. The manifest name creates a unique path to this endpoint. If you don't enter a value, MediaPackage uses the default manifest name, index. MediaPackage automatically inserts the format extension, such as .m3u8. You can't use the same manifest name if you use HLS manifest and low-latency HLS manifest. The manifestName on the HLSManifest object overrides the manifestName you provided on the originEndpoint object. /// This member is required. public var manifestName: Swift.String? @@ -2647,6 +2750,7 @@ extension MediaPackageV2ClientTypes { public init( childManifestName: Swift.String? = nil, + filterConfiguration: MediaPackageV2ClientTypes.FilterConfiguration? = nil, manifestName: Swift.String? = nil, manifestWindowSeconds: Swift.Int? = nil, programDateTimeIntervalSeconds: Swift.Int? = nil, @@ -2655,6 +2759,7 @@ extension MediaPackageV2ClientTypes { ) { self.childManifestName = childManifestName + self.filterConfiguration = filterConfiguration self.manifestName = manifestName self.manifestWindowSeconds = manifestWindowSeconds self.programDateTimeIntervalSeconds = programDateTimeIntervalSeconds @@ -3401,6 +3506,7 @@ enum ListChannelsOutputError: ClientRuntime.HttpResponseErrorBinding { switch restJSONError.errorType { case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) @@ -5756,10 +5862,13 @@ extension MediaPackageV2ClientTypes { case encryptionContractUnencrypted case encryptionContractWithoutAudioRenditionIncompatible case encryptionMethodContainerTypeMismatch + case endTimeEarlierThanStartTime + case invalidManifestFilter case invalidPaginationMaxResults case invalidPaginationToken case invalidPolicy case invalidRoleArn + case invalidTimeDelaySeconds case manifestNameCollision case memberDoesNotMatchPattern case memberInvalid @@ -5794,10 +5903,13 @@ extension MediaPackageV2ClientTypes { .encryptionContractUnencrypted, .encryptionContractWithoutAudioRenditionIncompatible, .encryptionMethodContainerTypeMismatch, + .endTimeEarlierThanStartTime, + .invalidManifestFilter, .invalidPaginationMaxResults, .invalidPaginationToken, .invalidPolicy, .invalidRoleArn, + .invalidTimeDelaySeconds, .manifestNameCollision, .memberDoesNotMatchPattern, .memberInvalid, @@ -5837,10 +5949,13 @@ extension MediaPackageV2ClientTypes { case .encryptionContractUnencrypted: return "ENCRYPTION_CONTRACT_UNENCRYPTED" case .encryptionContractWithoutAudioRenditionIncompatible: return "ENCRYPTION_CONTRACT_WITHOUT_AUDIO_RENDITION_INCOMPATIBLE" case .encryptionMethodContainerTypeMismatch: return "ENCRYPTION_METHOD_CONTAINER_TYPE_MISMATCH" + case .endTimeEarlierThanStartTime: return "END_TIME_EARLIER_THAN_START_TIME" + case .invalidManifestFilter: return "INVALID_MANIFEST_FILTER" case .invalidPaginationMaxResults: return "INVALID_PAGINATION_MAX_RESULTS" case .invalidPaginationToken: return "INVALID_PAGINATION_TOKEN" case .invalidPolicy: return "INVALID_POLICY" case .invalidRoleArn: return "INVALID_ROLE_ARN" + case .invalidTimeDelaySeconds: return "INVALID_TIME_DELAY_SECONDS" case .manifestNameCollision: return "MANIFEST_NAME_COLLISION" case .memberDoesNotMatchPattern: return "MEMBER_DOES_NOT_MATCH_PATTERN" case .memberInvalid: return "MEMBER_INVALID" diff --git a/Sources/Services/AWSMigrationHubConfig/MigrationHubConfigClient.swift b/Sources/Services/AWSMigrationHubConfig/MigrationHubConfigClient.swift index 161fcd30aa9..bb2d52a361c 100644 --- a/Sources/Services/AWSMigrationHubConfig/MigrationHubConfigClient.swift +++ b/Sources/Services/AWSMigrationHubConfig/MigrationHubConfigClient.swift @@ -117,6 +117,55 @@ extension MigrationHubConfigClient: MigrationHubConfigClientProtocol { return result } + /// This operation deletes the home region configuration for the calling account. The operation does not delete discovery or migration tracking data in the home region. + /// + /// - Parameter DeleteHomeRegionControlInput : [no documentation found] + /// + /// - Returns: `DeleteHomeRegionControlOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `InternalServerError` : Exception raised when an internal, configuration, or dependency error is encountered. + /// - `InvalidInputException` : Exception raised when the provided input violates a policy constraint or is entered in the wrong format or data type. + /// - `ServiceUnavailableException` : Exception raised when a request fails due to temporary unavailability of the service. + /// - `ThrottlingException` : The request was denied due to request throttling. + public func deleteHomeRegionControl(input: DeleteHomeRegionControlInput) async throws -> DeleteHomeRegionControlOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "deleteHomeRegionControl") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "mgh") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deleteHomeRegionControl") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "AWSMigrationHubMultiAccountService.DeleteHomeRegionControl")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "DeleteHomeRegionControlRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// This API permits filtering on the ControlId and HomeRegion fields. /// /// - Parameter DescribeHomeRegionControlsInput : [no documentation found] diff --git a/Sources/Services/AWSMigrationHubConfig/MigrationHubConfigClientProtocol.swift b/Sources/Services/AWSMigrationHubConfig/MigrationHubConfigClientProtocol.swift index 3121bdedd77..ce447901b3d 100644 --- a/Sources/Services/AWSMigrationHubConfig/MigrationHubConfigClientProtocol.swift +++ b/Sources/Services/AWSMigrationHubConfig/MigrationHubConfigClientProtocol.swift @@ -31,6 +31,21 @@ public protocol MigrationHubConfigClientProtocol { /// - `ServiceUnavailableException` : Exception raised when a request fails due to temporary unavailability of the service. /// - `ThrottlingException` : The request was denied due to request throttling. func createHomeRegionControl(input: CreateHomeRegionControlInput) async throws -> CreateHomeRegionControlOutput + /// This operation deletes the home region configuration for the calling account. The operation does not delete discovery or migration tracking data in the home region. + /// + /// - Parameter DeleteHomeRegionControlInput : [no documentation found] + /// + /// - Returns: `DeleteHomeRegionControlOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `InternalServerError` : Exception raised when an internal, configuration, or dependency error is encountered. + /// - `InvalidInputException` : Exception raised when the provided input violates a policy constraint or is entered in the wrong format or data type. + /// - `ServiceUnavailableException` : Exception raised when a request fails due to temporary unavailability of the service. + /// - `ThrottlingException` : The request was denied due to request throttling. + func deleteHomeRegionControl(input: DeleteHomeRegionControlInput) async throws -> DeleteHomeRegionControlOutput /// This API permits filtering on the ControlId and HomeRegion fields. /// /// - Parameter DescribeHomeRegionControlsInput : [no documentation found] diff --git a/Sources/Services/AWSMigrationHubConfig/models/Models.swift b/Sources/Services/AWSMigrationHubConfig/models/Models.swift index 504948617b1..cd897662cac 100644 --- a/Sources/Services/AWSMigrationHubConfig/models/Models.swift +++ b/Sources/Services/AWSMigrationHubConfig/models/Models.swift @@ -186,6 +186,79 @@ enum CreateHomeRegionControlOutputError: ClientRuntime.HttpResponseErrorBinding } } +extension DeleteHomeRegionControlInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case controlId = "ControlId" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let controlId = self.controlId { + try encodeContainer.encode(controlId, forKey: .controlId) + } + } +} + +extension DeleteHomeRegionControlInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct DeleteHomeRegionControlInput: Swift.Equatable { + /// A unique identifier that's generated for each home region control. It's always a string that begins with "hrc-" followed by 12 lowercase letters and numbers. + /// This member is required. + public var controlId: Swift.String? + + public init( + controlId: Swift.String? = nil + ) + { + self.controlId = controlId + } +} + +struct DeleteHomeRegionControlInputBody: Swift.Equatable { + let controlId: Swift.String? +} + +extension DeleteHomeRegionControlInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case controlId = "ControlId" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let controlIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .controlId) + controlId = controlIdDecoded + } +} + +extension DeleteHomeRegionControlOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct DeleteHomeRegionControlOutput: Swift.Equatable { + + public init() { } +} + +enum DeleteHomeRegionControlOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServerError": return try await InternalServerError(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidInputException": return try await InvalidInputException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension DescribeHomeRegionControlsInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case controlId = "ControlId" diff --git a/Sources/Services/AWSMigrationHubStrategy/MigrationHubStrategyClient.swift b/Sources/Services/AWSMigrationHubStrategy/MigrationHubStrategyClient.swift index 16d63b30390..fa78c55e9b0 100644 --- a/Sources/Services/AWSMigrationHubStrategy/MigrationHubStrategyClient.swift +++ b/Sources/Services/AWSMigrationHubStrategy/MigrationHubStrategyClient.swift @@ -509,6 +509,53 @@ extension MigrationHubStrategyClient: MigrationHubStrategyClientProtocol { return result } + /// Retrieves a list of all the servers fetched from customer vCenter using Strategy Recommendation Collector. + /// + /// - Parameter ListAnalyzableServersInput : Represents input for ListAnalyzableServers operation. + /// + /// - Returns: `ListAnalyzableServersOutput` : Represents output for ListAnalyzableServers operation. + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : The user does not have permission to perform the action. Check the AWS Identity and Access Management (IAM) policy associated with this user. + /// - `InternalServerException` : The server experienced an internal error. Try again. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The request body isn't valid. + public func listAnalyzableServers(input: ListAnalyzableServersInput) async throws -> ListAnalyzableServersOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listAnalyzableServers") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "migrationhub-strategy") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listAnalyzableServers") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/json")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "ListAnalyzableServersRequest")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Retrieves a list of all the application components (processes). /// /// - Parameter ListApplicationComponentsInput : [no documentation found] diff --git a/Sources/Services/AWSMigrationHubStrategy/MigrationHubStrategyClientProtocol.swift b/Sources/Services/AWSMigrationHubStrategy/MigrationHubStrategyClientProtocol.swift index e2422fd9c55..25d90056baa 100644 --- a/Sources/Services/AWSMigrationHubStrategy/MigrationHubStrategyClientProtocol.swift +++ b/Sources/Services/AWSMigrationHubStrategy/MigrationHubStrategyClientProtocol.swift @@ -145,6 +145,20 @@ public protocol MigrationHubStrategyClientProtocol { /// - `ThrottlingException` : The request was denied due to request throttling. /// - `ValidationException` : The request body isn't valid. func getServerStrategies(input: GetServerStrategiesInput) async throws -> GetServerStrategiesOutput + /// Retrieves a list of all the servers fetched from customer vCenter using Strategy Recommendation Collector. + /// + /// - Parameter ListAnalyzableServersInput : Represents input for ListAnalyzableServers operation. + /// + /// - Returns: `ListAnalyzableServersOutput` : Represents output for ListAnalyzableServers operation. + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : The user does not have permission to perform the action. Check the AWS Identity and Access Management (IAM) policy associated with this user. + /// - `InternalServerException` : The server experienced an internal error. Try again. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The request body isn't valid. + func listAnalyzableServers(input: ListAnalyzableServersInput) async throws -> ListAnalyzableServersOutput /// Retrieves a list of all the application components (processes). /// /// - Parameter ListApplicationComponentsInput : [no documentation found] diff --git a/Sources/Services/AWSMigrationHubStrategy/Paginators.swift b/Sources/Services/AWSMigrationHubStrategy/Paginators.swift index c08d63fada0..9f5ade699d3 100644 --- a/Sources/Services/AWSMigrationHubStrategy/Paginators.swift +++ b/Sources/Services/AWSMigrationHubStrategy/Paginators.swift @@ -33,6 +33,37 @@ extension PaginatorSequence where Input == GetServerDetailsInput, Output == GetS return try await self.asyncCompactMap { item in item.associatedApplications } } } +extension MigrationHubStrategyClient { + /// Paginate over `[ListAnalyzableServersOutput]` results. + /// + /// When this operation is called, an `AsyncSequence` is created. AsyncSequences are lazy so no service + /// calls are made until the sequence is iterated over. This also means there is no guarantee that the request is valid + /// until then. If there are errors in your request, you will see the failures only after you start iterating. + /// - Parameters: + /// - input: A `[ListAnalyzableServersInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListAnalyzableServersOutput` + public func listAnalyzableServersPaginated(input: ListAnalyzableServersInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \ListAnalyzableServersInput.nextToken, outputKey: \ListAnalyzableServersOutput.nextToken, paginationFunction: self.listAnalyzableServers(input:)) + } +} + +extension ListAnalyzableServersInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListAnalyzableServersInput { + return ListAnalyzableServersInput( + maxResults: self.maxResults, + nextToken: token, + sort: self.sort + )} +} + +extension PaginatorSequence where Input == ListAnalyzableServersInput, Output == ListAnalyzableServersOutput { + /// This paginator transforms the `AsyncSequence` returned by `listAnalyzableServersPaginated` + /// to access the nested member `[MigrationHubStrategyClientTypes.AnalyzableServerSummary]` + /// - Returns: `[MigrationHubStrategyClientTypes.AnalyzableServerSummary]` + public func analyzableServers() async throws -> [MigrationHubStrategyClientTypes.AnalyzableServerSummary] { + return try await self.asyncCompactMap { item in item.analyzableServers } + } +} extension MigrationHubStrategyClient { /// Paginate over `[ListApplicationComponentsOutput]` results. /// diff --git a/Sources/Services/AWSMigrationHubStrategy/models/Models.swift b/Sources/Services/AWSMigrationHubStrategy/models/Models.swift index 7d7e4cd05c4..e54df759598 100644 --- a/Sources/Services/AWSMigrationHubStrategy/models/Models.swift +++ b/Sources/Services/AWSMigrationHubStrategy/models/Models.swift @@ -143,6 +143,71 @@ extension MigrationHubStrategyClientTypes { } } +extension MigrationHubStrategyClientTypes.AnalyzableServerSummary: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case hostname + case ipAddress + case source + case vmId + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let hostname = self.hostname { + try encodeContainer.encode(hostname, forKey: .hostname) + } + if let ipAddress = self.ipAddress { + try encodeContainer.encode(ipAddress, forKey: .ipAddress) + } + if let source = self.source { + try encodeContainer.encode(source, forKey: .source) + } + if let vmId = self.vmId { + try encodeContainer.encode(vmId, forKey: .vmId) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let hostnameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .hostname) + hostname = hostnameDecoded + let ipAddressDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ipAddress) + ipAddress = ipAddressDecoded + let sourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .source) + source = sourceDecoded + let vmIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .vmId) + vmId = vmIdDecoded + } +} + +extension MigrationHubStrategyClientTypes { + /// Summary information about an analyzable server. + public struct AnalyzableServerSummary: Swift.Equatable { + /// The host name of the analyzable server. + public var hostname: Swift.String? + /// The ip address of the analyzable server. + public var ipAddress: Swift.String? + /// The data source of the analyzable server. + public var source: Swift.String? + /// The virtual machine id of the analyzable server. + public var vmId: Swift.String? + + public init( + hostname: Swift.String? = nil, + ipAddress: Swift.String? = nil, + source: Swift.String? = nil, + vmId: Swift.String? = nil + ) + { + self.hostname = hostname + self.ipAddress = ipAddress + self.source = source + self.vmId = vmId + } + } + +} + extension MigrationHubStrategyClientTypes.AnalyzerNameUnion: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case binaryanalyzername = "binaryAnalyzerName" @@ -1069,6 +1134,41 @@ extension MigrationHubStrategyClientTypes { } +extension MigrationHubStrategyClientTypes { + public enum AssessmentDataSourceType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case ads + case manualImport + case srCollector + case sdkUnknown(Swift.String) + + public static var allCases: [AssessmentDataSourceType] { + return [ + .ads, + .manualImport, + .srCollector, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .ads: return "ApplicationDiscoveryService" + case .manualImport: return "ManualImport" + case .srCollector: return "StrategyRecommendationsApplicationDataCollector" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = AssessmentDataSourceType(rawValue: rawValue) ?? AssessmentDataSourceType.sdkUnknown(rawValue) + } + } +} + extension MigrationHubStrategyClientTypes { public enum AssessmentStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case complete @@ -2119,6 +2219,7 @@ extension MigrationHubStrategyClientTypes { public enum DataSourceType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case ads case `import` + case mhsrCollector case mpa case sdkUnknown(Swift.String) @@ -2126,6 +2227,7 @@ extension MigrationHubStrategyClientTypes { return [ .ads, .import, + .mhsrCollector, .mpa, .sdkUnknown("") ] @@ -2138,6 +2240,7 @@ extension MigrationHubStrategyClientTypes { switch self { case .ads: return "ApplicationDiscoveryService" case .import: return "Import" + case .mhsrCollector: return "StrategyRecommendationsApplicationDataCollector" case .mpa: return "MPA" case let .sdkUnknown(s): return s } @@ -4068,6 +4171,152 @@ extension InternalServerExceptionBody: Swift.Decodable { } } +extension ListAnalyzableServersInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults + case nextToken + case sort + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let maxResults = self.maxResults { + try encodeContainer.encode(maxResults, forKey: .maxResults) + } + if let nextToken = self.nextToken { + try encodeContainer.encode(nextToken, forKey: .nextToken) + } + if let sort = self.sort { + try encodeContainer.encode(sort.rawValue, forKey: .sort) + } + } +} + +extension ListAnalyzableServersInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/list-analyzable-servers" + } +} + +/// Represents input for ListAnalyzableServers operation. +public struct ListAnalyzableServersInput: Swift.Equatable { + /// The maximum number of items to include in the response. The maximum value is 100. + public var maxResults: Swift.Int? + /// The token from a previous call that you use to retrieve the next set of results. For example, if a previous call to this action returned 100 items, but you set maxResults to 10. You'll receive a set of 10 results along with a token. You then use the returned token to retrieve the next set of 10. + public var nextToken: Swift.String? + /// Specifies whether to sort by ascending (ASC) or descending (DESC) order. + public var sort: MigrationHubStrategyClientTypes.SortOrder? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil, + sort: MigrationHubStrategyClientTypes.SortOrder? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + self.sort = sort + } +} + +struct ListAnalyzableServersInputBody: Swift.Equatable { + let sort: MigrationHubStrategyClientTypes.SortOrder? + let nextToken: Swift.String? + let maxResults: Swift.Int? +} + +extension ListAnalyzableServersInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults + case nextToken + case sort + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let sortDecoded = try containerValues.decodeIfPresent(MigrationHubStrategyClientTypes.SortOrder.self, forKey: .sort) + sort = sortDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) + maxResults = maxResultsDecoded + } +} + +extension ListAnalyzableServersOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ListAnalyzableServersOutputBody = try responseDecoder.decode(responseBody: data) + self.analyzableServers = output.analyzableServers + self.nextToken = output.nextToken + } else { + self.analyzableServers = nil + self.nextToken = nil + } + } +} + +/// Represents output for ListAnalyzableServers operation. +public struct ListAnalyzableServersOutput: Swift.Equatable { + /// The list of analyzable servers with summary information about each server. + public var analyzableServers: [MigrationHubStrategyClientTypes.AnalyzableServerSummary]? + /// The token you use to retrieve the next set of results, or null if there are no more results. + public var nextToken: Swift.String? + + public init( + analyzableServers: [MigrationHubStrategyClientTypes.AnalyzableServerSummary]? = nil, + nextToken: Swift.String? = nil + ) + { + self.analyzableServers = analyzableServers + self.nextToken = nextToken + } +} + +struct ListAnalyzableServersOutputBody: Swift.Equatable { + let analyzableServers: [MigrationHubStrategyClientTypes.AnalyzableServerSummary]? + let nextToken: Swift.String? +} + +extension ListAnalyzableServersOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case analyzableServers + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let analyzableServersContainer = try containerValues.decodeIfPresent([MigrationHubStrategyClientTypes.AnalyzableServerSummary?].self, forKey: .analyzableServers) + var analyzableServersDecoded0:[MigrationHubStrategyClientTypes.AnalyzableServerSummary]? = nil + if let analyzableServersContainer = analyzableServersContainer { + analyzableServersDecoded0 = [MigrationHubStrategyClientTypes.AnalyzableServerSummary]() + for structure0 in analyzableServersContainer { + if let structure0 = structure0 { + analyzableServersDecoded0?.append(structure0) + } + } + } + analyzableServers = analyzableServersDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListAnalyzableServersOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension ListApplicationComponentsInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case applicationComponentCriteria @@ -6835,6 +7084,7 @@ extension MigrationHubStrategyClientTypes { extension StartAssessmentInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case assessmentDataSourceType case assessmentTargets case s3bucketForAnalysisData case s3bucketForReportData @@ -6842,6 +7092,9 @@ extension StartAssessmentInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let assessmentDataSourceType = self.assessmentDataSourceType { + try encodeContainer.encode(assessmentDataSourceType.rawValue, forKey: .assessmentDataSourceType) + } if let assessmentTargets = assessmentTargets { var assessmentTargetsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .assessmentTargets) for assessmenttarget0 in assessmentTargets { @@ -6864,6 +7117,8 @@ extension StartAssessmentInput: ClientRuntime.URLPathProvider { } public struct StartAssessmentInput: Swift.Equatable { + /// The data source type of an assessment to be started. + public var assessmentDataSourceType: MigrationHubStrategyClientTypes.AssessmentDataSourceType? /// List of criteria for assessment. public var assessmentTargets: [MigrationHubStrategyClientTypes.AssessmentTarget]? /// The S3 bucket used by the collectors to send analysis data to the service. The bucket name must begin with migrationhub-strategy-. @@ -6872,11 +7127,13 @@ public struct StartAssessmentInput: Swift.Equatable { public var s3bucketForReportData: Swift.String? public init( + assessmentDataSourceType: MigrationHubStrategyClientTypes.AssessmentDataSourceType? = nil, assessmentTargets: [MigrationHubStrategyClientTypes.AssessmentTarget]? = nil, s3bucketForAnalysisData: Swift.String? = nil, s3bucketForReportData: Swift.String? = nil ) { + self.assessmentDataSourceType = assessmentDataSourceType self.assessmentTargets = assessmentTargets self.s3bucketForAnalysisData = s3bucketForAnalysisData self.s3bucketForReportData = s3bucketForReportData @@ -6887,10 +7144,12 @@ struct StartAssessmentInputBody: Swift.Equatable { let s3bucketForAnalysisData: Swift.String? let s3bucketForReportData: Swift.String? let assessmentTargets: [MigrationHubStrategyClientTypes.AssessmentTarget]? + let assessmentDataSourceType: MigrationHubStrategyClientTypes.AssessmentDataSourceType? } extension StartAssessmentInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case assessmentDataSourceType case assessmentTargets case s3bucketForAnalysisData case s3bucketForReportData @@ -6913,6 +7172,8 @@ extension StartAssessmentInputBody: Swift.Decodable { } } assessmentTargets = assessmentTargetsDecoded0 + let assessmentDataSourceTypeDecoded = try containerValues.decodeIfPresent(MigrationHubStrategyClientTypes.AssessmentDataSourceType.self, forKey: .assessmentDataSourceType) + assessmentDataSourceType = assessmentDataSourceTypeDecoded } } diff --git a/Sources/Services/AWSNeptune/models/Models.swift b/Sources/Services/AWSNeptune/models/Models.swift index b067410a4cd..8e04bb20f5f 100644 --- a/Sources/Services/AWSNeptune/models/Models.swift +++ b/Sources/Services/AWSNeptune/models/Models.swift @@ -1978,7 +1978,7 @@ public struct CreateDBClusterInput: Swift.Equatable { public var port: Swift.Int? /// This parameter is not currently supported. public var preSignedUrl: Swift.String? - /// The daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter. The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Region. To see the time blocks available, see [ Adjusting the Preferred Maintenance Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html) in the Amazon Neptune User Guide. Constraints: + /// The daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter. The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Region. To see the time blocks available, see [Neptune Maintenance Window](https://docs.aws.amazon.com/neptune/latest/userguide/manage-console-maintaining.html#manage-console-maintaining-window) in the Amazon Neptune User Guide. Constraints: /// /// * Must be in the format hh24:mi-hh24:mi. /// @@ -1988,7 +1988,7 @@ public struct CreateDBClusterInput: Swift.Equatable { /// /// * Must be at least 30 minutes. public var preferredBackupWindow: Swift.String? - /// The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). Format: ddd:hh24:mi-ddd:hh24:mi The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Region, occurring on a random day of the week. To see the time blocks available, see [ Adjusting the Preferred Maintenance Window](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/AdjustingTheMaintenanceWindow.html) in the Amazon Neptune User Guide. Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun. Constraints: Minimum 30-minute window. + /// The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). Format: ddd:hh24:mi-ddd:hh24:mi The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Region, occurring on a random day of the week. To see the time blocks available, see [Neptune Maintenance Window](https://docs.aws.amazon.com/neptune/latest/userguide/manage-console-maintaining.html#manage-console-maintaining-window) in the Amazon Neptune User Guide. Valid Days: Mon, Tue, Wed, Thu, Fri, Sat, Sun. Constraints: Minimum 30-minute window. public var preferredMaintenanceWindow: Swift.String? /// The Amazon Resource Name (ARN) of the source DB instance or DB cluster if this DB cluster is created as a Read Replica. public var replicationSourceIdentifier: Swift.String? @@ -2262,7 +2262,7 @@ extension CreateDBClusterOutput: ClientRuntime.HttpResponseBinding { } public struct CreateDBClusterOutput: Swift.Equatable { - /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters] action. + /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters]. public var dbCluster: NeptuneClientTypes.DBCluster? public init( @@ -2644,6 +2644,11 @@ enum CreateDBClusterSnapshotOutputError: ClientRuntime.HttpResponseErrorBinding } } +extension CreateDBInstanceInput: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "CreateDBInstanceInput(allocatedStorage: \(Swift.String(describing: allocatedStorage)), autoMinorVersionUpgrade: \(Swift.String(describing: autoMinorVersionUpgrade)), availabilityZone: \(Swift.String(describing: availabilityZone)), backupRetentionPeriod: \(Swift.String(describing: backupRetentionPeriod)), characterSetName: \(Swift.String(describing: characterSetName)), copyTagsToSnapshot: \(Swift.String(describing: copyTagsToSnapshot)), dbClusterIdentifier: \(Swift.String(describing: dbClusterIdentifier)), dbInstanceClass: \(Swift.String(describing: dbInstanceClass)), dbInstanceIdentifier: \(Swift.String(describing: dbInstanceIdentifier)), dbName: \(Swift.String(describing: dbName)), dbParameterGroupName: \(Swift.String(describing: dbParameterGroupName)), dbSecurityGroups: \(Swift.String(describing: dbSecurityGroups)), dbSubnetGroupName: \(Swift.String(describing: dbSubnetGroupName)), deletionProtection: \(Swift.String(describing: deletionProtection)), domain: \(Swift.String(describing: domain)), domainIAMRoleName: \(Swift.String(describing: domainIAMRoleName)), enableCloudwatchLogsExports: \(Swift.String(describing: enableCloudwatchLogsExports)), enableIAMDatabaseAuthentication: \(Swift.String(describing: enableIAMDatabaseAuthentication)), enablePerformanceInsights: \(Swift.String(describing: enablePerformanceInsights)), engine: \(Swift.String(describing: engine)), engineVersion: \(Swift.String(describing: engineVersion)), iops: \(Swift.String(describing: iops)), kmsKeyId: \(Swift.String(describing: kmsKeyId)), licenseModel: \(Swift.String(describing: licenseModel)), masterUserPassword: \(Swift.String(describing: masterUserPassword)), masterUsername: \(Swift.String(describing: masterUsername)), monitoringInterval: \(Swift.String(describing: monitoringInterval)), monitoringRoleArn: \(Swift.String(describing: monitoringRoleArn)), multiAZ: \(Swift.String(describing: multiAZ)), optionGroupName: \(Swift.String(describing: optionGroupName)), performanceInsightsKMSKeyId: \(Swift.String(describing: performanceInsightsKMSKeyId)), port: \(Swift.String(describing: port)), preferredBackupWindow: \(Swift.String(describing: preferredBackupWindow)), preferredMaintenanceWindow: \(Swift.String(describing: preferredMaintenanceWindow)), promotionTier: \(Swift.String(describing: promotionTier)), publiclyAccessible: \(Swift.String(describing: publiclyAccessible)), storageEncrypted: \(Swift.String(describing: storageEncrypted)), storageType: \(Swift.String(describing: storageType)), tags: \(Swift.String(describing: tags)), tdeCredentialArn: \(Swift.String(describing: tdeCredentialArn)), timezone: \(Swift.String(describing: timezone)), vpcSecurityGroupIds: \(Swift.String(describing: vpcSecurityGroupIds)), tdeCredentialPassword: \"CONTENT_REDACTED\")"} +} + extension CreateDBInstanceInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -4570,7 +4575,7 @@ extension NeptuneClientTypes.DBCluster: Swift.Codable { } extension NeptuneClientTypes { - /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters] action. + /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters]. public struct DBCluster: Swift.Equatable { /// AllocatedStorage always returns 1, because Neptune DB cluster storage size is not fixed, but instead automatically adjusts as needed. public var allocatedStorage: Swift.Int? @@ -5535,7 +5540,7 @@ extension NeptuneClientTypes.DBClusterRole: Swift.Codable { extension NeptuneClientTypes { /// Describes an Amazon Identity and Access Management (IAM) role that is associated with a DB cluster. public struct DBClusterRole: Swift.Equatable { - /// The name of the feature associated with the Amazon Identity and Access Management (IAM) role. For the list of supported feature names, see [DescribeDBEngineVersions](https://docs.aws.amazon.com/neptune/latest/userguide/api-other-apis.html#DescribeDBEngineVersions). + /// The name of the feature associated with the Amazon Identity and Access Management (IAM) role. For the list of supported feature names, see [DescribeDBEngineVersions]. public var featureName: Swift.String? /// The Amazon Resource Name (ARN) of the IAM role that is associated with the DB cluster. public var roleArn: Swift.String? @@ -8712,7 +8717,7 @@ extension DeleteDBClusterOutput: ClientRuntime.HttpResponseBinding { } public struct DeleteDBClusterOutput: Swift.Equatable { - /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters] action. + /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters]. public var dbCluster: NeptuneClientTypes.DBCluster? public init( @@ -13846,7 +13851,7 @@ extension FailoverDBClusterOutput: ClientRuntime.HttpResponseBinding { } public struct FailoverDBClusterOutput: Swift.Equatable { - /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters] action. + /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters]. public var dbCluster: NeptuneClientTypes.DBCluster? public init( @@ -16088,7 +16093,7 @@ public struct ModifyDBClusterInput: Swift.Equatable { public var deletionProtection: Swift.Bool? /// True to enable mapping of Amazon Identity and Access Management (IAM) accounts to database accounts, and otherwise false. Default: false public var enableIAMDatabaseAuthentication: Swift.Bool? - /// The version number of the database engine to which you want to upgrade. Changing this parameter results in an outage. The change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true. For a list of valid engine versions, see [Engine Releases for Amazon Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/engine-releases.html), or call [DescribeDBEngineVersions](https://docs.aws.amazon.com/neptune/latest/userguide/api-other-apis.html#DescribeDBEngineVersions). + /// The version number of the database engine to which you want to upgrade. Changing this parameter results in an outage. The change is applied during the next maintenance window unless the ApplyImmediately parameter is set to true. For a list of valid engine versions, see [Engine Releases for Amazon Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/engine-releases.html), or call [DescribeDBEngineVersions]. public var engineVersion: Swift.String? /// Not supported by Neptune. public var masterUserPassword: Swift.String? @@ -16286,7 +16291,7 @@ extension ModifyDBClusterOutput: ClientRuntime.HttpResponseBinding { } public struct ModifyDBClusterOutput: Swift.Equatable { - /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters] action. + /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters]. public var dbCluster: NeptuneClientTypes.DBCluster? public init( @@ -16664,6 +16669,11 @@ enum ModifyDBClusterSnapshotAttributeOutputError: ClientRuntime.HttpResponseErro } } +extension ModifyDBInstanceInput: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "ModifyDBInstanceInput(allocatedStorage: \(Swift.String(describing: allocatedStorage)), allowMajorVersionUpgrade: \(Swift.String(describing: allowMajorVersionUpgrade)), applyImmediately: \(Swift.String(describing: applyImmediately)), autoMinorVersionUpgrade: \(Swift.String(describing: autoMinorVersionUpgrade)), backupRetentionPeriod: \(Swift.String(describing: backupRetentionPeriod)), caCertificateIdentifier: \(Swift.String(describing: caCertificateIdentifier)), cloudwatchLogsExportConfiguration: \(Swift.String(describing: cloudwatchLogsExportConfiguration)), copyTagsToSnapshot: \(Swift.String(describing: copyTagsToSnapshot)), dbInstanceClass: \(Swift.String(describing: dbInstanceClass)), dbInstanceIdentifier: \(Swift.String(describing: dbInstanceIdentifier)), dbParameterGroupName: \(Swift.String(describing: dbParameterGroupName)), dbPortNumber: \(Swift.String(describing: dbPortNumber)), dbSecurityGroups: \(Swift.String(describing: dbSecurityGroups)), dbSubnetGroupName: \(Swift.String(describing: dbSubnetGroupName)), deletionProtection: \(Swift.String(describing: deletionProtection)), domain: \(Swift.String(describing: domain)), domainIAMRoleName: \(Swift.String(describing: domainIAMRoleName)), enableIAMDatabaseAuthentication: \(Swift.String(describing: enableIAMDatabaseAuthentication)), enablePerformanceInsights: \(Swift.String(describing: enablePerformanceInsights)), engineVersion: \(Swift.String(describing: engineVersion)), iops: \(Swift.String(describing: iops)), licenseModel: \(Swift.String(describing: licenseModel)), masterUserPassword: \(Swift.String(describing: masterUserPassword)), monitoringInterval: \(Swift.String(describing: monitoringInterval)), monitoringRoleArn: \(Swift.String(describing: monitoringRoleArn)), multiAZ: \(Swift.String(describing: multiAZ)), newDBInstanceIdentifier: \(Swift.String(describing: newDBInstanceIdentifier)), optionGroupName: \(Swift.String(describing: optionGroupName)), performanceInsightsKMSKeyId: \(Swift.String(describing: performanceInsightsKMSKeyId)), preferredBackupWindow: \(Swift.String(describing: preferredBackupWindow)), preferredMaintenanceWindow: \(Swift.String(describing: preferredMaintenanceWindow)), promotionTier: \(Swift.String(describing: promotionTier)), publiclyAccessible: \(Swift.String(describing: publiclyAccessible)), storageType: \(Swift.String(describing: storageType)), tdeCredentialArn: \(Swift.String(describing: tdeCredentialArn)), vpcSecurityGroupIds: \(Swift.String(describing: vpcSecurityGroupIds)), tdeCredentialPassword: \"CONTENT_REDACTED\")"} +} + extension ModifyDBInstanceInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -18751,7 +18761,7 @@ extension PromoteReadReplicaDBClusterOutput: ClientRuntime.HttpResponseBinding { } public struct PromoteReadReplicaDBClusterOutput: Swift.Equatable { - /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters] action. + /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters]. public var dbCluster: NeptuneClientTypes.DBCluster? public init( @@ -19149,7 +19159,7 @@ public struct RemoveRoleFromDBClusterInput: Swift.Equatable { /// The name of the DB cluster to disassociate the IAM role from. /// This member is required. public var dbClusterIdentifier: Swift.String? - /// The name of the feature for the DB cluster that the IAM role is to be disassociated from. For the list of supported feature names, see [DescribeDBEngineVersions](https://docs.aws.amazon.com/neptune/latest/userguide/api-other-apis.html#DescribeDBEngineVersions). + /// The name of the feature for the DB cluster that the IAM role is to be disassociated from. For the list of supported feature names, see [DescribeDBEngineVersions]. public var featureName: Swift.String? /// The Amazon Resource Name (ARN) of the IAM role to disassociate from the DB cluster, for example arn:aws:iam::123456789012:role/NeptuneAccessRole. /// This member is required. @@ -20227,7 +20237,7 @@ extension RestoreDBClusterFromSnapshotOutput: ClientRuntime.HttpResponseBinding } public struct RestoreDBClusterFromSnapshotOutput: Swift.Equatable { - /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters] action. + /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters]. public var dbCluster: NeptuneClientTypes.DBCluster? public init( @@ -20618,7 +20628,7 @@ extension RestoreDBClusterToPointInTimeOutput: ClientRuntime.HttpResponseBinding } public struct RestoreDBClusterToPointInTimeOutput: Swift.Equatable { - /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters] action. + /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters]. public var dbCluster: NeptuneClientTypes.DBCluster? public init( @@ -21195,7 +21205,7 @@ extension StartDBClusterOutput: ClientRuntime.HttpResponseBinding { } public struct StartDBClusterOutput: Swift.Equatable { - /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters] action. + /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters]. public var dbCluster: NeptuneClientTypes.DBCluster? public init( @@ -21294,7 +21304,7 @@ extension StopDBClusterOutput: ClientRuntime.HttpResponseBinding { } public struct StopDBClusterOutput: Swift.Equatable { - /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters] action. + /// Contains the details of an Amazon Neptune DB cluster. This data type is used as a response element in the [DescribeDBClusters]. public var dbCluster: NeptuneClientTypes.DBCluster? public init( diff --git a/Sources/Services/AWSNeptunedata/NeptunedataClient.swift b/Sources/Services/AWSNeptunedata/NeptunedataClient.swift index 6fd9f33fe6c..b5effe89a6f 100644 --- a/Sources/Services/AWSNeptunedata/NeptunedataClient.swift +++ b/Sources/Services/AWSNeptunedata/NeptunedataClient.swift @@ -862,7 +862,7 @@ extension NeptunedataClient: NeptunedataClientProtocol { return result } - /// Executes an openCypher explain request. See [The openCypher explain feature](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-opencypher-explain.html) for more information. When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows the [neptune-db:ReadDataViaQuery](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#readdataviaquery) IAM action in that cluster. Note that the [neptune-db:QueryLanguage:Opencypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). + /// Executes an openCypher explain request. See [The openCypher explain feature](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-opencypher-explain.html) for more information. When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows the [neptune-db:ReadDataViaQuery](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#readdataviaquery) IAM action in that cluster. Note that the [neptune-db:QueryLanguage:OpenCypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). /// /// - Parameter ExecuteOpenCypherExplainQueryInput : [no documentation found] /// @@ -935,7 +935,7 @@ extension NeptunedataClient: NeptunedataClientProtocol { /// * [neptune-db:DeleteDataViaQuery](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#deletedataviaquery) /// /// - /// Note also that the [neptune-db:QueryLanguage:Opencypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). + /// Note also that the [neptune-db:QueryLanguage:OpenCypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). /// /// - Parameter ExecuteOpenCypherQueryInput : [no documentation found] /// @@ -1365,7 +1365,7 @@ extension NeptunedataClient: NeptunedataClientProtocol { return result } - /// Retrieves the status of a specified openCypher query. When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows the [neptune-db:GetQueryStatus](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#getquerystatus) IAM action in that cluster. Note that the [neptune-db:QueryLanguage:Opencypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). + /// Retrieves the status of a specified openCypher query. When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows the [neptune-db:GetQueryStatus](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#getquerystatus) IAM action in that cluster. Note that the [neptune-db:QueryLanguage:OpenCypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). /// /// - Parameter GetOpenCypherQueryStatusInput : [no documentation found] /// @@ -1479,7 +1479,7 @@ extension NeptunedataClient: NeptunedataClientProtocol { /// /// * [neptune-db:QueryLanguage:Gremlin](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) /// - /// * [neptune-db:QueryLanguage:Opencypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) + /// * [neptune-db:QueryLanguage:OpenCypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) /// /// /// See [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). @@ -2069,7 +2069,7 @@ extension NeptunedataClient: NeptunedataClientProtocol { return result } - /// Lists active openCypher queries. See [Neptune openCypher status endpoint](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-opencypher-status.html) for more information. When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows the [neptune-db:GetQueryStatus](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#getquerystatus) IAM action in that cluster. Note that the [neptune-db:QueryLanguage:Opencypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). + /// Lists active openCypher queries. See [Neptune openCypher status endpoint](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-opencypher-status.html) for more information. When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows the [neptune-db:GetQueryStatus](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#getquerystatus) IAM action in that cluster. Note that the [neptune-db:QueryLanguage:OpenCypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). /// /// - Parameter ListOpenCypherQueriesInput : [no documentation found] /// diff --git a/Sources/Services/AWSNeptunedata/NeptunedataClientProtocol.swift b/Sources/Services/AWSNeptunedata/NeptunedataClientProtocol.swift index 6cb42a30150..e4323cbf382 100644 --- a/Sources/Services/AWSNeptunedata/NeptunedataClientProtocol.swift +++ b/Sources/Services/AWSNeptunedata/NeptunedataClientProtocol.swift @@ -358,7 +358,7 @@ public protocol NeptunedataClientProtocol { /// - `TooManyRequestsException` : Raised when the number of requests being processed exceeds the limit. /// - `UnsupportedOperationException` : Raised when a request attempts to initiate an operation that is not supported. func executeGremlinQuery(input: ExecuteGremlinQueryInput) async throws -> ExecuteGremlinQueryOutput - /// Executes an openCypher explain request. See [The openCypher explain feature](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-opencypher-explain.html) for more information. When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows the [neptune-db:ReadDataViaQuery](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#readdataviaquery) IAM action in that cluster. Note that the [neptune-db:QueryLanguage:Opencypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). + /// Executes an openCypher explain request. See [The openCypher explain feature](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-opencypher-explain.html) for more information. When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows the [neptune-db:ReadDataViaQuery](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#readdataviaquery) IAM action in that cluster. Note that the [neptune-db:QueryLanguage:OpenCypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). /// /// - Parameter ExecuteOpenCypherExplainQueryInput : [no documentation found] /// @@ -398,7 +398,7 @@ public protocol NeptunedataClientProtocol { /// * [neptune-db:DeleteDataViaQuery](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#deletedataviaquery) /// /// - /// Note also that the [neptune-db:QueryLanguage:Opencypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). + /// Note also that the [neptune-db:QueryLanguage:OpenCypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). /// /// - Parameter ExecuteOpenCypherQueryInput : [no documentation found] /// @@ -580,7 +580,7 @@ public protocol NeptunedataClientProtocol { /// - `TooManyRequestsException` : Raised when the number of requests being processed exceeds the limit. /// - `UnsupportedOperationException` : Raised when a request attempts to initiate an operation that is not supported. func getMLModelTransformJob(input: GetMLModelTransformJobInput) async throws -> GetMLModelTransformJobOutput - /// Retrieves the status of a specified openCypher query. When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows the [neptune-db:GetQueryStatus](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#getquerystatus) IAM action in that cluster. Note that the [neptune-db:QueryLanguage:Opencypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). + /// Retrieves the status of a specified openCypher query. When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows the [neptune-db:GetQueryStatus](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#getquerystatus) IAM action in that cluster. Note that the [neptune-db:QueryLanguage:OpenCypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). /// /// - Parameter GetOpenCypherQueryStatusInput : [no documentation found] /// @@ -634,7 +634,7 @@ public protocol NeptunedataClientProtocol { /// /// * [neptune-db:QueryLanguage:Gremlin](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) /// - /// * [neptune-db:QueryLanguage:Opencypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) + /// * [neptune-db:QueryLanguage:OpenCypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) /// /// /// See [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). @@ -882,7 +882,7 @@ public protocol NeptunedataClientProtocol { /// - `TooManyRequestsException` : Raised when the number of requests being processed exceeds the limit. /// - `UnsupportedOperationException` : Raised when a request attempts to initiate an operation that is not supported. func listMLModelTransformJobs(input: ListMLModelTransformJobsInput) async throws -> ListMLModelTransformJobsOutput - /// Lists active openCypher queries. See [Neptune openCypher status endpoint](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-opencypher-status.html) for more information. When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows the [neptune-db:GetQueryStatus](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#getquerystatus) IAM action in that cluster. Note that the [neptune-db:QueryLanguage:Opencypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). + /// Lists active openCypher queries. See [Neptune openCypher status endpoint](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-opencypher-status.html) for more information. When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows the [neptune-db:GetQueryStatus](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#getquerystatus) IAM action in that cluster. Note that the [neptune-db:QueryLanguage:OpenCypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)). /// /// - Parameter ListOpenCypherQueriesInput : [no documentation found] /// diff --git a/Sources/Services/AWSNeptunedata/models/Models.swift b/Sources/Services/AWSNeptunedata/models/Models.swift index 1aa341d4f54..b6736ee6446 100644 --- a/Sources/Services/AWSNeptunedata/models/Models.swift +++ b/Sources/Services/AWSNeptunedata/models/Models.swift @@ -971,7 +971,7 @@ public struct CancelledByUserException: ClientRuntime.ModeledError, AWSClientRun public internal(set) var properties = Properties() public static var typeName: Swift.String { "CancelledByUserException" } public static var fault: ErrorFault { .server } - public static var isRetryable: Swift.Bool { true } + public static var isRetryable: Swift.Bool { false } public static var isThrottling: Swift.Bool { false } public internal(set) var httpResponse = HttpResponse() public internal(set) var message: Swift.String? @@ -9506,7 +9506,7 @@ public struct StartLoaderJobInput: Swift.Equatable { /// /// * allowEmptyStrings – Gremlin users need to be able to pass empty string values("") as node and edge properties when loading CSV data. If allowEmptyStrings is set to false (the default), such empty strings are treated as nulls and are not loaded. If allowEmptyStrings is set to true, the loader treats empty strings as valid property values and loads them accordingly. public var parserConfiguration: [Swift.String:Swift.String]? - /// This is an optional flag parameter that indicates whether the load request can be queued up or not. You don't have to wait for one load job to complete before issuing the next one, because Neptune can queue up as many as 64 jobs at a time, provided that their queueRequest parameters are all set to "TRUE". If the queueRequest parameter is omitted or set to "FALSE", the load request will fail if another load job is already running. Allowed values: "TRUE", "FALSE". Default value: "FALSE". + /// This is an optional flag parameter that indicates whether the load request can be queued up or not. You don't have to wait for one load job to complete before issuing the next one, because Neptune can queue up as many as 64 jobs at a time, provided that their queueRequest parameters are all set to "TRUE". The queue order of the jobs will be first-in-first-out (FIFO). If the queueRequest parameter is omitted or set to "FALSE", the load request will fail if another load job is already running. Allowed values: "TRUE", "FALSE". Default value: "FALSE". public var queueRequest: Swift.Bool? /// The Amazon region of the S3 bucket. This must match the Amazon Region of the DB cluster. /// This member is required. diff --git a/Sources/Services/AWSNetworkFirewall/NetworkFirewallClient.swift b/Sources/Services/AWSNetworkFirewall/NetworkFirewallClient.swift index 8cfe6f171f5..a150b2f0f63 100644 --- a/Sources/Services/AWSNetworkFirewall/NetworkFirewallClient.swift +++ b/Sources/Services/AWSNetworkFirewall/NetworkFirewallClient.swift @@ -76,7 +76,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -133,7 +133,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// /// __Possible Exceptions:__ /// - `InsufficientCapacityException` : Amazon Web Services doesn't currently have enough available capacity to fulfill your request. Try your request later. - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -190,7 +190,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// /// __Possible Exceptions:__ /// - `InsufficientCapacityException` : Amazon Web Services doesn't currently have enough available capacity to fulfill your request. Try your request later. - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -246,7 +246,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// /// __Possible Exceptions:__ /// - `InsufficientCapacityException` : Amazon Web Services doesn't currently have enough available capacity to fulfill your request. Try your request later. - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -301,7 +301,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// /// __Possible Exceptions:__ /// - `InsufficientCapacityException` : Amazon Web Services doesn't currently have enough available capacity to fulfill your request. Try your request later. - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -346,7 +346,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { return result } - /// Creates an Network Firewall TLS inspection configuration. A TLS inspection configuration contains the Certificate Manager certificate references that Network Firewall uses to decrypt and re-encrypt inbound traffic. After you create a TLS inspection configuration, you associate it with a new firewall policy. To update the settings for a TLS inspection configuration, use [UpdateTLSInspectionConfiguration]. To manage a TLS inspection configuration's tags, use the standard Amazon Web Services resource tagging operations, [ListTagsForResource], [TagResource], and [UntagResource]. To retrieve information about TLS inspection configurations, use [ListTLSInspectionConfigurations] and [DescribeTLSInspectionConfiguration]. For more information about TLS inspection configurations, see [Decrypting SSL/TLS traffic with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection.html) in the Network Firewall Developer Guide. + /// Creates an Network Firewall TLS inspection configuration. A TLS inspection configuration contains Certificate Manager certificate associations between and the scope configurations that Network Firewall uses to decrypt and re-encrypt traffic traveling through your firewall. After you create a TLS inspection configuration, you can associate it with a new firewall policy. To update the settings for a TLS inspection configuration, use [UpdateTLSInspectionConfiguration]. To manage a TLS inspection configuration's tags, use the standard Amazon Web Services resource tagging operations, [ListTagsForResource], [TagResource], and [UntagResource]. To retrieve information about TLS inspection configurations, use [ListTLSInspectionConfigurations] and [DescribeTLSInspectionConfiguration]. For more information about TLS inspection configurations, see [Inspecting SSL/TLS traffic with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection.html) in the Network Firewall Developer Guide. /// /// - Parameter CreateTLSInspectionConfigurationInput : [no documentation found] /// @@ -356,7 +356,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// /// __Possible Exceptions:__ /// - `InsufficientCapacityException` : Amazon Web Services doesn't currently have enough available capacity to fulfill your request. Try your request later. - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -410,7 +410,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -466,7 +466,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -522,7 +522,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -577,7 +577,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -633,7 +633,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -688,7 +688,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -742,7 +742,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -796,7 +796,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -850,7 +850,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -904,7 +904,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -958,7 +958,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1012,7 +1012,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1066,7 +1066,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -1122,7 +1122,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1175,7 +1175,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1228,7 +1228,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1281,7 +1281,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1334,7 +1334,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1395,7 +1395,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1450,7 +1450,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1504,7 +1504,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1558,7 +1558,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1614,7 +1614,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1669,7 +1669,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1725,7 +1725,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1780,7 +1780,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1845,7 +1845,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1901,7 +1901,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -1956,7 +1956,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -2003,7 +2003,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { return result } - /// Updates the TLS inspection configuration settings for the specified TLS inspection configuration. You use a TLS inspection configuration by reference in one or more firewall policies. When you modify a TLS inspection configuration, you modify all firewall policies that use the TLS inspection configuration. To update a TLS inspection configuration, first call [DescribeTLSInspectionConfiguration] to retrieve the current [TLSInspectionConfiguration] object, update the object as needed, and then provide the updated object to this call. + /// Updates the TLS inspection configuration settings for the specified TLS inspection configuration. You use a TLS inspection configuration by referencing it in one or more firewall policies. When you modify a TLS inspection configuration, you modify all firewall policies that use the TLS inspection configuration. To update a TLS inspection configuration, first call [DescribeTLSInspectionConfiguration] to retrieve the current [TLSInspectionConfiguration] object, update the object as needed, and then provide the updated object to this call. /// /// - Parameter UpdateTLSInspectionConfigurationInput : [no documentation found] /// @@ -2012,7 +2012,7 @@ extension NetworkFirewallClient: NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. diff --git a/Sources/Services/AWSNetworkFirewall/NetworkFirewallClientProtocol.swift b/Sources/Services/AWSNetworkFirewall/NetworkFirewallClientProtocol.swift index 4db306eeece..9bc2b0aebef 100644 --- a/Sources/Services/AWSNetworkFirewall/NetworkFirewallClientProtocol.swift +++ b/Sources/Services/AWSNetworkFirewall/NetworkFirewallClientProtocol.swift @@ -45,7 +45,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -68,7 +68,7 @@ public protocol NetworkFirewallClientProtocol { /// /// __Possible Exceptions:__ /// - `InsufficientCapacityException` : Amazon Web Services doesn't currently have enough available capacity to fulfill your request. Try your request later. - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -91,7 +91,7 @@ public protocol NetworkFirewallClientProtocol { /// /// __Possible Exceptions:__ /// - `InsufficientCapacityException` : Amazon Web Services doesn't currently have enough available capacity to fulfill your request. Try your request later. - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -113,7 +113,7 @@ public protocol NetworkFirewallClientProtocol { /// /// __Possible Exceptions:__ /// - `InsufficientCapacityException` : Amazon Web Services doesn't currently have enough available capacity to fulfill your request. Try your request later. - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -134,7 +134,7 @@ public protocol NetworkFirewallClientProtocol { /// /// __Possible Exceptions:__ /// - `InsufficientCapacityException` : Amazon Web Services doesn't currently have enough available capacity to fulfill your request. Try your request later. - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -145,7 +145,7 @@ public protocol NetworkFirewallClientProtocol { /// - `LimitExceededException` : Unable to perform the operation because doing so would violate a limit setting. /// - `ThrottlingException` : Unable to process the request due to throttling limitations. func createRuleGroup(input: CreateRuleGroupInput) async throws -> CreateRuleGroupOutput - /// Creates an Network Firewall TLS inspection configuration. A TLS inspection configuration contains the Certificate Manager certificate references that Network Firewall uses to decrypt and re-encrypt inbound traffic. After you create a TLS inspection configuration, you associate it with a new firewall policy. To update the settings for a TLS inspection configuration, use [UpdateTLSInspectionConfiguration]. To manage a TLS inspection configuration's tags, use the standard Amazon Web Services resource tagging operations, [ListTagsForResource], [TagResource], and [UntagResource]. To retrieve information about TLS inspection configurations, use [ListTLSInspectionConfigurations] and [DescribeTLSInspectionConfiguration]. For more information about TLS inspection configurations, see [Decrypting SSL/TLS traffic with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection.html) in the Network Firewall Developer Guide. + /// Creates an Network Firewall TLS inspection configuration. A TLS inspection configuration contains Certificate Manager certificate associations between and the scope configurations that Network Firewall uses to decrypt and re-encrypt traffic traveling through your firewall. After you create a TLS inspection configuration, you can associate it with a new firewall policy. To update the settings for a TLS inspection configuration, use [UpdateTLSInspectionConfiguration]. To manage a TLS inspection configuration's tags, use the standard Amazon Web Services resource tagging operations, [ListTagsForResource], [TagResource], and [UntagResource]. To retrieve information about TLS inspection configurations, use [ListTLSInspectionConfigurations] and [DescribeTLSInspectionConfiguration]. For more information about TLS inspection configurations, see [Inspecting SSL/TLS traffic with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection.html) in the Network Firewall Developer Guide. /// /// - Parameter CreateTLSInspectionConfigurationInput : [no documentation found] /// @@ -155,7 +155,7 @@ public protocol NetworkFirewallClientProtocol { /// /// __Possible Exceptions:__ /// - `InsufficientCapacityException` : Amazon Web Services doesn't currently have enough available capacity to fulfill your request. Try your request later. - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -175,7 +175,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -197,7 +197,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -219,7 +219,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -240,7 +240,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -262,7 +262,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -283,7 +283,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -303,7 +303,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -323,7 +323,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -343,7 +343,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -363,7 +363,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -383,7 +383,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -403,7 +403,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -423,7 +423,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidOperationException` : The operation failed because it's not valid. For example, you might have tried to delete a rule group or firewall policy that's in use. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// @@ -445,7 +445,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -464,7 +464,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -483,7 +483,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -502,7 +502,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -522,7 +522,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -548,7 +548,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -569,7 +569,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -589,7 +589,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -609,7 +609,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -631,7 +631,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -652,7 +652,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -674,7 +674,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -695,7 +695,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -726,7 +726,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -748,7 +748,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -769,7 +769,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. @@ -782,7 +782,7 @@ public protocol NetworkFirewallClientProtocol { /// - `ResourceOwnerCheckException` : Unable to change the resource because your account doesn't own it. /// - `ThrottlingException` : Unable to process the request due to throttling limitations. func updateSubnetChangeProtection(input: UpdateSubnetChangeProtectionInput) async throws -> UpdateSubnetChangeProtectionOutput - /// Updates the TLS inspection configuration settings for the specified TLS inspection configuration. You use a TLS inspection configuration by reference in one or more firewall policies. When you modify a TLS inspection configuration, you modify all firewall policies that use the TLS inspection configuration. To update a TLS inspection configuration, first call [DescribeTLSInspectionConfiguration] to retrieve the current [TLSInspectionConfiguration] object, update the object as needed, and then provide the updated object to this call. + /// Updates the TLS inspection configuration settings for the specified TLS inspection configuration. You use a TLS inspection configuration by referencing it in one or more firewall policies. When you modify a TLS inspection configuration, you modify all firewall policies that use the TLS inspection configuration. To update a TLS inspection configuration, first call [DescribeTLSInspectionConfiguration] to retrieve the current [TLSInspectionConfiguration] object, update the object as needed, and then provide the updated object to this call. /// /// - Parameter UpdateTLSInspectionConfigurationInput : [no documentation found] /// @@ -791,7 +791,7 @@ public protocol NetworkFirewallClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ - /// - `InternalServerError` : Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. + /// - `InternalServerError` : Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. /// - `InvalidRequestException` : The operation failed because of a problem with your request. Examples include: /// /// * You specified an unsupported parameter name or value. diff --git a/Sources/Services/AWSNetworkFirewall/models/Models.swift b/Sources/Services/AWSNetworkFirewall/models/Models.swift index e5d0a5e6025..b4ca099ef67 100644 --- a/Sources/Services/AWSNetworkFirewall/models/Models.swift +++ b/Sources/Services/AWSNetworkFirewall/models/Models.swift @@ -84,6 +84,81 @@ extension NetworkFirewallClientTypes { } +extension NetworkFirewallClientTypes.AnalysisResult: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case analysisDetail = "AnalysisDetail" + case identifiedRuleIds = "IdentifiedRuleIds" + case identifiedType = "IdentifiedType" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let analysisDetail = self.analysisDetail { + try encodeContainer.encode(analysisDetail, forKey: .analysisDetail) + } + if let identifiedRuleIds = identifiedRuleIds { + var identifiedRuleIdsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .identifiedRuleIds) + for collectionmember_string0 in identifiedRuleIds { + try identifiedRuleIdsContainer.encode(collectionmember_string0) + } + } + if let identifiedType = self.identifiedType { + try encodeContainer.encode(identifiedType.rawValue, forKey: .identifiedType) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let identifiedRuleIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .identifiedRuleIds) + var identifiedRuleIdsDecoded0:[Swift.String]? = nil + if let identifiedRuleIdsContainer = identifiedRuleIdsContainer { + identifiedRuleIdsDecoded0 = [Swift.String]() + for string0 in identifiedRuleIdsContainer { + if let string0 = string0 { + identifiedRuleIdsDecoded0?.append(string0) + } + } + } + identifiedRuleIds = identifiedRuleIdsDecoded0 + let identifiedTypeDecoded = try containerValues.decodeIfPresent(NetworkFirewallClientTypes.IdentifiedType.self, forKey: .identifiedType) + identifiedType = identifiedTypeDecoded + let analysisDetailDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .analysisDetail) + analysisDetail = analysisDetailDecoded + } +} + +extension NetworkFirewallClientTypes { + /// The analysis result for Network Firewall's stateless rule group analyzer. Every time you call [CreateRuleGroup], [UpdateRuleGroup], or [DescribeRuleGroup] on a stateless rule group, Network Firewall analyzes the stateless rule groups in your account and identifies the rules that might adversely effect your firewall's functionality. For example, if Network Firewall detects a rule that's routing traffic asymmetrically, which impacts the service's ability to properly process traffic, the service includes the rule in a list of analysis results. + public struct AnalysisResult: Swift.Equatable { + /// Provides analysis details for the identified rule. + public var analysisDetail: Swift.String? + /// The priority number of the stateless rules identified in the analysis. + public var identifiedRuleIds: [Swift.String]? + /// The types of rule configurations that Network Firewall analyzes your rule groups for. Network Firewall analyzes stateless rule groups for the following types of rule configurations: + /// + /// * STATELESS_RULE_FORWARDING_ASYMMETRICALLY Cause: One or more stateless rules with the action pass or forward are forwarding traffic asymmetrically. Specifically, the rule's set of source IP addresses or their associated port numbers, don't match the set of destination IP addresses or their associated port numbers. To mitigate: Make sure that there's an existing return path. For example, if the rule allows traffic from source 10.1.0.0/24 to destination 20.1.0.0/24, you should allow return traffic from source 20.1.0.0/24 to destination 10.1.0.0/24. + /// + /// * STATELESS_RULE_CONTAINS_TCP_FLAGS Cause: At least one stateless rule with the action pass orforward contains TCP flags that are inconsistent in the forward and return directions. To mitigate: Prevent asymmetric routing issues caused by TCP flags by following these actions: + /// + /// * Remove unnecessary TCP flag inspections from the rules. + /// + /// * If you need to inspect TCP flags, check that the rules correctly account for changes in TCP flags throughout the TCP connection cycle, for example SYN and ACK flags used in a 3-way TCP handshake. + public var identifiedType: NetworkFirewallClientTypes.IdentifiedType? + + public init( + analysisDetail: Swift.String? = nil, + identifiedRuleIds: [Swift.String]? = nil, + identifiedType: NetworkFirewallClientTypes.IdentifiedType? = nil + ) + { + self.analysisDetail = analysisDetail + self.identifiedRuleIds = identifiedRuleIds + self.identifiedType = identifiedType + } + } + +} + extension AssociateFirewallPolicyInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case firewallArn = "FirewallArn" @@ -657,6 +732,63 @@ extension NetworkFirewallClientTypes { } +extension NetworkFirewallClientTypes.CheckCertificateRevocationStatusActions: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case revokedStatusAction = "RevokedStatusAction" + case unknownStatusAction = "UnknownStatusAction" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let revokedStatusAction = self.revokedStatusAction { + try encodeContainer.encode(revokedStatusAction.rawValue, forKey: .revokedStatusAction) + } + if let unknownStatusAction = self.unknownStatusAction { + try encodeContainer.encode(unknownStatusAction.rawValue, forKey: .unknownStatusAction) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let revokedStatusActionDecoded = try containerValues.decodeIfPresent(NetworkFirewallClientTypes.RevocationCheckAction.self, forKey: .revokedStatusAction) + revokedStatusAction = revokedStatusActionDecoded + let unknownStatusActionDecoded = try containerValues.decodeIfPresent(NetworkFirewallClientTypes.RevocationCheckAction.self, forKey: .unknownStatusAction) + unknownStatusAction = unknownStatusActionDecoded + } +} + +extension NetworkFirewallClientTypes { + /// Defines the actions to take on the SSL/TLS connection if the certificate presented by the server in the connection has a revoked or unknown status. + public struct CheckCertificateRevocationStatusActions: Swift.Equatable { + /// Configures how Network Firewall processes traffic when it determines that the certificate presented by the server in the SSL/TLS connection has a revoked status. + /// + /// * PASS - Allow the connection to continue, and pass subsequent packets to the stateful engine for inspection. + /// + /// * DROP - Network Firewall closes the connection and drops subsequent packets for that connection. + /// + /// * REJECT - Network Firewall sends a TCP reject packet back to your client. The service closes the connection and drops subsequent packets for that connection. REJECT is available only for TCP traffic. + public var revokedStatusAction: NetworkFirewallClientTypes.RevocationCheckAction? + /// Configures how Network Firewall processes traffic when it determines that the certificate presented by the server in the SSL/TLS connection has an unknown status, or a status that cannot be determined for any other reason, including when the service is unable to connect to the OCSP and CRL endpoints for the certificate. + /// + /// * PASS - Allow the connection to continue, and pass subsequent packets to the stateful engine for inspection. + /// + /// * DROP - Network Firewall closes the connection and drops subsequent packets for that connection. + /// + /// * REJECT - Network Firewall sends a TCP reject packet back to your client. The service closes the connection and drops subsequent packets for that connection. REJECT is available only for TCP traffic. + public var unknownStatusAction: NetworkFirewallClientTypes.RevocationCheckAction? + + public init( + revokedStatusAction: NetworkFirewallClientTypes.RevocationCheckAction? = nil, + unknownStatusAction: NetworkFirewallClientTypes.RevocationCheckAction? = nil + ) + { + self.revokedStatusAction = revokedStatusAction + self.unknownStatusAction = unknownStatusAction + } + } + +} + extension NetworkFirewallClientTypes { public enum ConfigurationSyncState: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case capacityConstrained @@ -1131,6 +1263,7 @@ enum CreateFirewallPolicyOutputError: ClientRuntime.HttpResponseErrorBinding { extension CreateRuleGroupInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case analyzeRuleGroup = "AnalyzeRuleGroup" case capacity = "Capacity" case description = "Description" case dryRun = "DryRun" @@ -1145,6 +1278,9 @@ extension CreateRuleGroupInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let analyzeRuleGroup = self.analyzeRuleGroup { + try encodeContainer.encode(analyzeRuleGroup, forKey: .analyzeRuleGroup) + } if let capacity = self.capacity { try encodeContainer.encode(capacity, forKey: .capacity) } @@ -1188,6 +1324,8 @@ extension CreateRuleGroupInput: ClientRuntime.URLPathProvider { } public struct CreateRuleGroupInput: Swift.Equatable { + /// Indicates whether you want Network Firewall to analyze the stateless rules in the rule group for rule behavior such as asymmetric routing. If set to TRUE, Network Firewall runs the analysis and then creates the rule group for you. To run the stateless rule group analyzer without creating the rule group, set DryRun to TRUE. + public var analyzeRuleGroup: Swift.Bool? /// The maximum operating resources that this rule group can use. Rule group capacity is fixed at creation. When you update a rule group, you are limited to this capacity. When you reference a rule group from a firewall policy, Network Firewall reserves this capacity for the rule group. You can retrieve the capacity that would be required for a rule group before you create the rule group by calling [CreateRuleGroup] with DryRun set to TRUE. You can't change or exceed this capacity when you update the rule group, so leave room for your rule group to grow. Capacity for a stateless rule group For a stateless rule group, the capacity required is the sum of the capacity requirements of the individual rules that you expect to have in the rule group. To calculate the capacity requirement of a single rule, multiply the capacity requirement values of each of the rule's match settings: /// /// * A match setting with no criteria specified has a value of 1. @@ -1222,6 +1360,7 @@ public struct CreateRuleGroupInput: Swift.Equatable { public var type: NetworkFirewallClientTypes.RuleGroupType? public init( + analyzeRuleGroup: Swift.Bool? = nil, capacity: Swift.Int? = nil, description: Swift.String? = nil, dryRun: Swift.Bool? = nil, @@ -1234,6 +1373,7 @@ public struct CreateRuleGroupInput: Swift.Equatable { type: NetworkFirewallClientTypes.RuleGroupType? = nil ) { + self.analyzeRuleGroup = analyzeRuleGroup self.capacity = capacity self.description = description self.dryRun = dryRun @@ -1258,10 +1398,12 @@ struct CreateRuleGroupInputBody: Swift.Equatable { let dryRun: Swift.Bool? let encryptionConfiguration: NetworkFirewallClientTypes.EncryptionConfiguration? let sourceMetadata: NetworkFirewallClientTypes.SourceMetadata? + let analyzeRuleGroup: Swift.Bool? } extension CreateRuleGroupInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case analyzeRuleGroup = "AnalyzeRuleGroup" case capacity = "Capacity" case description = "Description" case dryRun = "DryRun" @@ -1305,6 +1447,8 @@ extension CreateRuleGroupInputBody: Swift.Decodable { encryptionConfiguration = encryptionConfigurationDecoded let sourceMetadataDecoded = try containerValues.decodeIfPresent(NetworkFirewallClientTypes.SourceMetadata.self, forKey: .sourceMetadata) sourceMetadata = sourceMetadataDecoded + let analyzeRuleGroupDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .analyzeRuleGroup) + analyzeRuleGroup = analyzeRuleGroupDecoded } } @@ -1420,7 +1564,7 @@ public struct CreateTLSInspectionConfigurationInput: Swift.Equatable { public var encryptionConfiguration: NetworkFirewallClientTypes.EncryptionConfiguration? /// The key:value pairs to associate with the resource. public var tags: [NetworkFirewallClientTypes.Tag]? - /// The object that defines a TLS inspection configuration. This, along with [TLSInspectionConfigurationResponse], define the TLS inspection configuration. You can retrieve all objects for a TLS inspection configuration by calling [DescribeTLSInspectionConfiguration]. Network Firewall uses a TLS inspection configuration to decrypt traffic. Network Firewall re-encrypts the traffic before sending it to its destination. To use a TLS inspection configuration, you add it to a new Network Firewall firewall policy, then you apply the firewall policy to a firewall. Network Firewall acts as a proxy service to decrypt and inspect inbound traffic. You can reference a TLS inspection configuration from more than one firewall policy, and you can use a firewall policy in more than one firewall. For more information about using TLS inspection configurations, see [Decrypting SSL/TLS traffic with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection.html) in the Network Firewall Developer Guide. + /// The object that defines a TLS inspection configuration. This, along with [TLSInspectionConfigurationResponse], define the TLS inspection configuration. You can retrieve all objects for a TLS inspection configuration by calling [DescribeTLSInspectionConfiguration]. Network Firewall uses a TLS inspection configuration to decrypt traffic. Network Firewall re-encrypts the traffic before sending it to its destination. To use a TLS inspection configuration, you add it to a new Network Firewall firewall policy, then you apply the firewall policy to a firewall. Network Firewall acts as a proxy service to decrypt and inspect the traffic traveling through your firewalls. You can reference a TLS inspection configuration from more than one firewall policy, and you can use a firewall policy in more than one firewall. For more information about using TLS inspection configurations, see [Inspecting SSL/TLS traffic with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection.html) in the Network Firewall Developer Guide. /// This member is required. public var tlsInspectionConfiguration: NetworkFirewallClientTypes.TLSInspectionConfiguration? /// The descriptive name of the TLS inspection configuration. You can't change the name of a TLS inspection configuration after you create it. @@ -2654,6 +2798,7 @@ enum DescribeResourcePolicyOutputError: ClientRuntime.HttpResponseErrorBinding { extension DescribeRuleGroupInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case analyzeRuleGroup = "AnalyzeRuleGroup" case ruleGroupArn = "RuleGroupArn" case ruleGroupName = "RuleGroupName" case type = "Type" @@ -2661,6 +2806,9 @@ extension DescribeRuleGroupInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let analyzeRuleGroup = self.analyzeRuleGroup { + try encodeContainer.encode(analyzeRuleGroup, forKey: .analyzeRuleGroup) + } if let ruleGroupArn = self.ruleGroupArn { try encodeContainer.encode(ruleGroupArn, forKey: .ruleGroupArn) } @@ -2680,6 +2828,8 @@ extension DescribeRuleGroupInput: ClientRuntime.URLPathProvider { } public struct DescribeRuleGroupInput: Swift.Equatable { + /// Indicates whether you want Network Firewall to analyze the stateless rules in the rule group for rule behavior such as asymmetric routing. If set to TRUE, Network Firewall runs the analysis. + public var analyzeRuleGroup: Swift.Bool? /// The Amazon Resource Name (ARN) of the rule group. You must specify the ARN or the name, and you can specify both. public var ruleGroupArn: Swift.String? /// The descriptive name of the rule group. You can't change the name of a rule group after you create it. You must specify the ARN or the name, and you can specify both. @@ -2688,11 +2838,13 @@ public struct DescribeRuleGroupInput: Swift.Equatable { public var type: NetworkFirewallClientTypes.RuleGroupType? public init( + analyzeRuleGroup: Swift.Bool? = nil, ruleGroupArn: Swift.String? = nil, ruleGroupName: Swift.String? = nil, type: NetworkFirewallClientTypes.RuleGroupType? = nil ) { + self.analyzeRuleGroup = analyzeRuleGroup self.ruleGroupArn = ruleGroupArn self.ruleGroupName = ruleGroupName self.type = type @@ -2703,10 +2855,12 @@ struct DescribeRuleGroupInputBody: Swift.Equatable { let ruleGroupName: Swift.String? let ruleGroupArn: Swift.String? let type: NetworkFirewallClientTypes.RuleGroupType? + let analyzeRuleGroup: Swift.Bool? } extension DescribeRuleGroupInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case analyzeRuleGroup = "AnalyzeRuleGroup" case ruleGroupArn = "RuleGroupArn" case ruleGroupName = "RuleGroupName" case type = "Type" @@ -2720,6 +2874,8 @@ extension DescribeRuleGroupInputBody: Swift.Decodable { ruleGroupArn = ruleGroupArnDecoded let typeDecoded = try containerValues.decodeIfPresent(NetworkFirewallClientTypes.RuleGroupType.self, forKey: .type) type = typeDecoded + let analyzeRuleGroupDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .analyzeRuleGroup) + analyzeRuleGroup = analyzeRuleGroupDecoded } } @@ -3062,7 +3218,7 @@ extension DescribeTLSInspectionConfigurationOutput: ClientRuntime.HttpResponseBi } public struct DescribeTLSInspectionConfigurationOutput: Swift.Equatable { - /// The object that defines a TLS inspection configuration. This, along with [TLSInspectionConfigurationResponse], define the TLS inspection configuration. You can retrieve all objects for a TLS inspection configuration by calling [DescribeTLSInspectionConfiguration]. Network Firewall uses a TLS inspection configuration to decrypt traffic. Network Firewall re-encrypts the traffic before sending it to its destination. To use a TLS inspection configuration, you add it to a new Network Firewall firewall policy, then you apply the firewall policy to a firewall. Network Firewall acts as a proxy service to decrypt and inspect inbound traffic. You can reference a TLS inspection configuration from more than one firewall policy, and you can use a firewall policy in more than one firewall. For more information about using TLS inspection configurations, see [Decrypting SSL/TLS traffic with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection.html) in the Network Firewall Developer Guide. + /// The object that defines a TLS inspection configuration. This, along with [TLSInspectionConfigurationResponse], define the TLS inspection configuration. You can retrieve all objects for a TLS inspection configuration by calling [DescribeTLSInspectionConfiguration]. Network Firewall uses a TLS inspection configuration to decrypt traffic. Network Firewall re-encrypts the traffic before sending it to its destination. To use a TLS inspection configuration, you add it to a new Network Firewall firewall policy, then you apply the firewall policy to a firewall. Network Firewall acts as a proxy service to decrypt and inspect the traffic traveling through your firewalls. You can reference a TLS inspection configuration from more than one firewall policy, and you can use a firewall policy in more than one firewall. For more information about using TLS inspection configurations, see [Inspecting SSL/TLS traffic with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection.html) in the Network Firewall Developer Guide. public var tlsInspectionConfiguration: NetworkFirewallClientTypes.TLSInspectionConfiguration? /// The high-level properties of a TLS inspection configuration. This, along with the [TLSInspectionConfiguration], define the TLS inspection configuration. You can retrieve all objects for a TLS inspection configuration by calling [DescribeTLSInspectionConfiguration]. /// This member is required. @@ -4451,6 +4607,38 @@ extension NetworkFirewallClientTypes { } +extension NetworkFirewallClientTypes { + public enum IdentifiedType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case statelessRuleContainsTcpFlags + case statelessRuleForwardingAsymmetrically + case sdkUnknown(Swift.String) + + public static var allCases: [IdentifiedType] { + return [ + .statelessRuleContainsTcpFlags, + .statelessRuleForwardingAsymmetrically, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .statelessRuleContainsTcpFlags: return "STATELESS_RULE_CONTAINS_TCP_FLAGS" + case .statelessRuleForwardingAsymmetrically: return "STATELESS_RULE_FORWARDING_ASYMMETRICALLY" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = IdentifiedType(rawValue: rawValue) ?? IdentifiedType.sdkUnknown(rawValue) + } + } +} + extension InsufficientCapacityException { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let data = try await httpResponse.body.readData(), @@ -4521,7 +4709,7 @@ extension InternalServerError { } } -/// Your request is valid, but Network Firewall couldn’t perform the operation because of a system problem. Retry your request. +/// Your request is valid, but Network Firewall couldn't perform the operation because of a system problem. Retry your request. public struct InternalServerError: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { public struct Properties { @@ -6599,12 +6787,14 @@ extension NetworkFirewallClientTypes { public enum ResourceStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case active case deleting + case error case sdkUnknown(Swift.String) public static var allCases: [ResourceStatus] { return [ .active, .deleting, + .error, .sdkUnknown("") ] } @@ -6616,6 +6806,7 @@ extension NetworkFirewallClientTypes { switch self { case .active: return "ACTIVE" case .deleting: return "DELETING" + case .error: return "ERROR" case let .sdkUnknown(s): return s } } @@ -6627,6 +6818,41 @@ extension NetworkFirewallClientTypes { } } +extension NetworkFirewallClientTypes { + public enum RevocationCheckAction: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case drop + case pass + case reject + case sdkUnknown(Swift.String) + + public static var allCases: [RevocationCheckAction] { + return [ + .drop, + .pass, + .reject, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .drop: return "DROP" + case .pass: return "PASS" + case .reject: return "REJECT" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = RevocationCheckAction(rawValue: rawValue) ?? RevocationCheckAction.sdkUnknown(rawValue) + } + } +} + extension NetworkFirewallClientTypes.RuleDefinition: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case actions = "Actions" @@ -6742,7 +6968,7 @@ extension NetworkFirewallClientTypes { /// The stateful rules or stateless rules for the rule group. /// This member is required. public var rulesSource: NetworkFirewallClientTypes.RulesSource? - /// Additional options governing how Network Firewall handles stateful rules. The policies where you use your stateful rule group must have stateful rule options settings that are compatible with these settings. + /// Additional options governing how Network Firewall handles stateful rules. The policies where you use your stateful rule group must have stateful rule options settings that are compatible with these settings. Some limitations apply; for more information, see [Strict evaluation order](https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-limitations-caveats.html) in the Network Firewall Developer Guide. public var statefulRuleOptions: NetworkFirewallClientTypes.StatefulRuleOptions? public init( @@ -6808,6 +7034,7 @@ extension NetworkFirewallClientTypes { extension NetworkFirewallClientTypes.RuleGroupResponse: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case analysisResults = "AnalysisResults" case capacity = "Capacity" case consumedCapacity = "ConsumedCapacity" case description = "Description" @@ -6826,6 +7053,12 @@ extension NetworkFirewallClientTypes.RuleGroupResponse: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let analysisResults = analysisResults { + var analysisResultsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .analysisResults) + for analysisresult0 in analysisResults { + try analysisResultsContainer.encode(analysisresult0) + } + } if let capacity = self.capacity { try encodeContainer.encode(capacity, forKey: .capacity) } @@ -6912,12 +7145,25 @@ extension NetworkFirewallClientTypes.RuleGroupResponse: Swift.Codable { snsTopic = snsTopicDecoded let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) lastModifiedTime = lastModifiedTimeDecoded + let analysisResultsContainer = try containerValues.decodeIfPresent([NetworkFirewallClientTypes.AnalysisResult?].self, forKey: .analysisResults) + var analysisResultsDecoded0:[NetworkFirewallClientTypes.AnalysisResult]? = nil + if let analysisResultsContainer = analysisResultsContainer { + analysisResultsDecoded0 = [NetworkFirewallClientTypes.AnalysisResult]() + for structure0 in analysisResultsContainer { + if let structure0 = structure0 { + analysisResultsDecoded0?.append(structure0) + } + } + } + analysisResults = analysisResultsDecoded0 } } extension NetworkFirewallClientTypes { /// The high-level properties of a rule group. This, along with the [RuleGroup], define the rule group. You can retrieve all objects for a rule group by calling [DescribeRuleGroup]. public struct RuleGroupResponse: Swift.Equatable { + /// The list of analysis results for AnalyzeRuleGroup. If you set AnalyzeRuleGroup to TRUE in [CreateRuleGroup], [UpdateRuleGroup], or [DescribeRuleGroup], Network Firewall analyzes the rule group and identifies the rules that might adversely effect your firewall's functionality. For example, if Network Firewall detects a rule that's routing traffic asymmetrically, which impacts the service's ability to properly process traffic, the service includes the rule in the list of analysis results. + public var analysisResults: [NetworkFirewallClientTypes.AnalysisResult]? /// The maximum operating resources that this rule group can use. Rule group capacity is fixed at creation. When you update a rule group, you are limited to this capacity. When you reference a rule group from a firewall policy, Network Firewall reserves this capacity for the rule group. You can retrieve the capacity that would be required for a rule group before you create the rule group by calling [CreateRuleGroup] with DryRun set to TRUE. public var capacity: Swift.Int? /// The number of capacity units currently consumed by the rule group rules. @@ -6951,6 +7197,7 @@ extension NetworkFirewallClientTypes { public var type: NetworkFirewallClientTypes.RuleGroupType? public init( + analysisResults: [NetworkFirewallClientTypes.AnalysisResult]? = nil, capacity: Swift.Int? = nil, consumedCapacity: Swift.Int? = nil, description: Swift.String? = nil, @@ -6967,6 +7214,7 @@ extension NetworkFirewallClientTypes { type: NetworkFirewallClientTypes.RuleGroupType? = nil ) { + self.analysisResults = analysisResults self.capacity = capacity self.consumedCapacity = consumedCapacity self.description = description @@ -7231,7 +7479,7 @@ extension NetworkFirewallClientTypes { public struct RulesSource: Swift.Equatable { /// Stateful inspection criteria for a domain list rule group. public var rulesSourceList: NetworkFirewallClientTypes.RulesSourceList? - /// Stateful inspection criteria, provided in Suricata compatible intrusion prevention system (IPS) rules. Suricata is an open-source network IPS that includes a standard rule-based language for network traffic inspection. These rules contain the inspection criteria and the action to take for traffic that matches the criteria, so this type of rule group doesn't have a separate action setting. + /// Stateful inspection criteria, provided in Suricata compatible rules. Suricata is an open-source threat detection framework that includes a standard rule-based language for network traffic inspection. These rules contain the inspection criteria and the action to take for traffic that matches the criteria, so this type of rule group doesn't have a separate action setting. You can't use the priority keyword if the RuleOrder option in [StatefulRuleOptions] is set to STRICT_ORDER. public var rulesString: Swift.String? /// An array of individual stateful rules inspection criteria to be used together in a stateful rule group. Use this option to specify simple Suricata rules with protocol, source and destination, ports, direction, and rule options. For information about the Suricata Rules format, see [Rules Format](https://suricata.readthedocs.io/en/suricata-6.0.9/rules/intro.html). public var statefulRules: [NetworkFirewallClientTypes.StatefulRule]? @@ -7360,9 +7608,9 @@ extension NetworkFirewallClientTypes.ServerCertificate: Swift.Codable { } extension NetworkFirewallClientTypes { - /// Any Certificate Manager Secure Sockets Layer/Transport Layer Security (SSL/TLS) server certificate that's associated with a [ServerCertificateConfiguration] used in a [TLSInspectionConfiguration]. You must request or import a SSL/TLS certificate into ACM for each domain Network Firewall needs to decrypt and inspect. Network Firewall uses the SSL/TLS certificates to decrypt specified inbound SSL/TLS traffic going to your firewall. For information about working with certificates in Certificate Manager, see [Request a public certificate ](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html) or [Importing certificates](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) in the Certificate Manager User Guide. + /// Any Certificate Manager (ACM) Secure Sockets Layer/Transport Layer Security (SSL/TLS) server certificate that's associated with a [ServerCertificateConfiguration]. Used in a [TLSInspectionConfiguration] for inspection of inbound traffic to your firewall. You must request or import a SSL/TLS certificate into ACM for each domain Network Firewall needs to decrypt and inspect. Network Firewall uses the SSL/TLS certificates to decrypt specified inbound SSL/TLS traffic going to your firewall. For information about working with certificates in Certificate Manager, see [Request a public certificate ](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html) or [Importing certificates](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) in the Certificate Manager User Guide. public struct ServerCertificate: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the Certificate Manager SSL/TLS server certificate. + /// The Amazon Resource Name (ARN) of the Certificate Manager SSL/TLS server certificate that's used for inbound SSL/TLS inspection. public var resourceArn: Swift.String? public init( @@ -7377,12 +7625,20 @@ extension NetworkFirewallClientTypes { extension NetworkFirewallClientTypes.ServerCertificateConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case certificateAuthorityArn = "CertificateAuthorityArn" + case checkCertificateRevocationStatus = "CheckCertificateRevocationStatus" case scopes = "Scopes" case serverCertificates = "ServerCertificates" } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let certificateAuthorityArn = self.certificateAuthorityArn { + try encodeContainer.encode(certificateAuthorityArn, forKey: .certificateAuthorityArn) + } + if let checkCertificateRevocationStatus = self.checkCertificateRevocationStatus { + try encodeContainer.encode(checkCertificateRevocationStatus, forKey: .checkCertificateRevocationStatus) + } if let scopes = scopes { var scopesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .scopes) for servercertificatescope0 in scopes { @@ -7421,22 +7677,41 @@ extension NetworkFirewallClientTypes.ServerCertificateConfiguration: Swift.Codab } } scopes = scopesDecoded0 + let certificateAuthorityArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .certificateAuthorityArn) + certificateAuthorityArn = certificateAuthorityArnDecoded + let checkCertificateRevocationStatusDecoded = try containerValues.decodeIfPresent(NetworkFirewallClientTypes.CheckCertificateRevocationStatusActions.self, forKey: .checkCertificateRevocationStatus) + checkCertificateRevocationStatus = checkCertificateRevocationStatusDecoded } } extension NetworkFirewallClientTypes { - /// Configures the associated Certificate Manager Secure Sockets Layer/Transport Layer Security (SSL/TLS) server certificates and scope settings Network Firewall uses to decrypt traffic in a [TLSInspectionConfiguration]. For information about working with SSL/TLS certificates for TLS inspection, see [ Requirements for using SSL/TLS server certficiates with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection-certificate-requirements.html) in the Network Firewall Developer Guide. If a server certificate that's associated with your [TLSInspectionConfiguration] is revoked, deleted, or expired it can result in client-side TLS errors. + /// Configures the Certificate Manager certificates and scope that Network Firewall uses to decrypt and re-encrypt traffic using a [TLSInspectionConfiguration]. You can configure ServerCertificates for inbound SSL/TLS inspection, a CertificateAuthorityArn for outbound SSL/TLS inspection, or both. For information about working with certificates for TLS inspection, see [ Using SSL/TLS server certficiates with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection-certificate-requirements.html) in the Network Firewall Developer Guide. If a server certificate that's associated with your [TLSInspectionConfiguration] is revoked, deleted, or expired it can result in client-side TLS errors. public struct ServerCertificateConfiguration: Swift.Equatable { - /// A list of a server certificate configuration's scopes. + /// The Amazon Resource Name (ARN) of the imported certificate authority (CA) certificate within Certificate Manager (ACM) to use for outbound SSL/TLS inspection. The following limitations apply: + /// + /// * You can use CA certificates that you imported into ACM, but you can't generate CA certificates with ACM. + /// + /// * You can't use certificates issued by Private Certificate Authority. + /// + /// + /// For more information about configuring certificates for outbound inspection, see [Using SSL/TLS certificates with certificates with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection-certificate-requirements.html) in the Network Firewall Developer Guide. For information about working with certificates in ACM, see [Importing certificates](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) in the Certificate Manager User Guide. + public var certificateAuthorityArn: Swift.String? + /// When enabled, Network Firewall checks if the server certificate presented by the server in the SSL/TLS connection has a revoked or unkown status. If the certificate has an unknown or revoked status, you must specify the actions that Network Firewall takes on outbound traffic. To check the certificate revocation status, you must also specify a CertificateAuthorityArn in [ServerCertificateConfiguration]. + public var checkCertificateRevocationStatus: NetworkFirewallClientTypes.CheckCertificateRevocationStatusActions? + /// A list of scopes. public var scopes: [NetworkFirewallClientTypes.ServerCertificateScope]? - /// The list of a server certificate configuration's Certificate Manager SSL/TLS certificates. + /// The list of server certificates to use for inbound SSL/TLS inspection. public var serverCertificates: [NetworkFirewallClientTypes.ServerCertificate]? public init( + certificateAuthorityArn: Swift.String? = nil, + checkCertificateRevocationStatus: NetworkFirewallClientTypes.CheckCertificateRevocationStatusActions? = nil, scopes: [NetworkFirewallClientTypes.ServerCertificateScope]? = nil, serverCertificates: [NetworkFirewallClientTypes.ServerCertificate]? = nil ) { + self.certificateAuthorityArn = certificateAuthorityArn + self.checkCertificateRevocationStatus = checkCertificateRevocationStatus self.scopes = scopes self.serverCertificates = serverCertificates } @@ -7690,7 +7965,7 @@ extension NetworkFirewallClientTypes.StatefulEngineOptions: Swift.Codable { extension NetworkFirewallClientTypes { /// Configuration settings for the handling of the stateful rule groups in a firewall policy. public struct StatefulEngineOptions: Swift.Equatable { - /// Indicates how to manage the order of stateful rule evaluation for the policy. DEFAULT_ACTION_ORDER is the default behavior. Stateful rules are provided to the rule engine as Suricata compatible strings, and Suricata evaluates them based on certain settings. For more information, see [Evaluation order for stateful rules](https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-rule-evaluation-order.html) in the Network Firewall Developer Guide. + /// Indicates how to manage the order of stateful rule evaluation for the policy. STRICT_ORDER is the default and recommended option. With STRICT_ORDER, provide your rules in the order that you want them to be evaluated. You can then choose one or more default actions for packets that don't match any rules. Choose STRICT_ORDER to have the stateful rules engine determine the evaluation order of your rules. The default action for this rule order is PASS, followed by DROP, REJECT, and ALERT actions. Stateful rules are provided to the rule engine as Suricata compatible strings, and Suricata evaluates them based on your settings. For more information, see [Evaluation order for stateful rules](https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-rule-evaluation-order.html) in the Network Firewall Developer Guide. public var ruleOrder: NetworkFirewallClientTypes.RuleOrder? /// Configures how Network Firewall processes traffic when a network connection breaks midstream. Network connections can break due to disruptions in external networks or within the firewall itself. /// @@ -7765,7 +8040,7 @@ extension NetworkFirewallClientTypes { /// /// * DROP - Blocks the packets from going to the intended destination and sends an alert log message, if alert logging is configured in the [Firewall][LoggingConfiguration]. /// - /// * ALERT - Permits the packets to go to the intended destination and sends an alert log message, if alert logging is configured in the [Firewall][LoggingConfiguration]. You can use this action to test a rule that you intend to use to drop traffic. You can enable the rule with ALERT action, verify in the logs that the rule is filtering as you want, then change the action to DROP. + /// * ALERT - Sends an alert log message, if alert logging is configured in the [Firewall][LoggingConfiguration]. You can use this action to test a rule that you intend to use to drop traffic. You can enable the rule with ALERT action, verify in the logs that the rule is filtering as you want, then change the action to DROP. /// This member is required. public var action: NetworkFirewallClientTypes.StatefulAction? /// The stateful inspection criteria for this rule, used to inspect traffic flows. @@ -8495,7 +8770,7 @@ extension NetworkFirewallClientTypes.TLSInspectionConfiguration: Swift.Codable { } extension NetworkFirewallClientTypes { - /// The object that defines a TLS inspection configuration. This, along with [TLSInspectionConfigurationResponse], define the TLS inspection configuration. You can retrieve all objects for a TLS inspection configuration by calling [DescribeTLSInspectionConfiguration]. Network Firewall uses a TLS inspection configuration to decrypt traffic. Network Firewall re-encrypts the traffic before sending it to its destination. To use a TLS inspection configuration, you add it to a new Network Firewall firewall policy, then you apply the firewall policy to a firewall. Network Firewall acts as a proxy service to decrypt and inspect inbound traffic. You can reference a TLS inspection configuration from more than one firewall policy, and you can use a firewall policy in more than one firewall. For more information about using TLS inspection configurations, see [Decrypting SSL/TLS traffic with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection.html) in the Network Firewall Developer Guide. + /// The object that defines a TLS inspection configuration. This, along with [TLSInspectionConfigurationResponse], define the TLS inspection configuration. You can retrieve all objects for a TLS inspection configuration by calling [DescribeTLSInspectionConfiguration]. Network Firewall uses a TLS inspection configuration to decrypt traffic. Network Firewall re-encrypts the traffic before sending it to its destination. To use a TLS inspection configuration, you add it to a new Network Firewall firewall policy, then you apply the firewall policy to a firewall. Network Firewall acts as a proxy service to decrypt and inspect the traffic traveling through your firewalls. You can reference a TLS inspection configuration from more than one firewall policy, and you can use a firewall policy in more than one firewall. For more information about using TLS inspection configurations, see [Inspecting SSL/TLS traffic with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection.html) in the Network Firewall Developer Guide. public struct TLSInspectionConfiguration: Swift.Equatable { /// Lists the server certificate configurations that are associated with the TLS configuration. public var serverCertificateConfigurations: [NetworkFirewallClientTypes.ServerCertificateConfiguration]? @@ -8557,6 +8832,7 @@ extension NetworkFirewallClientTypes { extension NetworkFirewallClientTypes.TLSInspectionConfigurationResponse: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case certificateAuthority = "CertificateAuthority" case certificates = "Certificates" case description = "Description" case encryptionConfiguration = "EncryptionConfiguration" @@ -8571,6 +8847,9 @@ extension NetworkFirewallClientTypes.TLSInspectionConfigurationResponse: Swift.C public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let certificateAuthority = self.certificateAuthority { + try encodeContainer.encode(certificateAuthority, forKey: .certificateAuthority) + } if let certificates = certificates { var certificatesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .certificates) for tlscertificatedata0 in certificates { @@ -8649,12 +8928,16 @@ extension NetworkFirewallClientTypes.TLSInspectionConfigurationResponse: Swift.C } } certificates = certificatesDecoded0 + let certificateAuthorityDecoded = try containerValues.decodeIfPresent(NetworkFirewallClientTypes.TlsCertificateData.self, forKey: .certificateAuthority) + certificateAuthority = certificateAuthorityDecoded } } extension NetworkFirewallClientTypes { /// The high-level properties of a TLS inspection configuration. This, along with the TLSInspectionConfiguration, define the TLS inspection configuration. You can retrieve all objects for a TLS inspection configuration by calling DescribeTLSInspectionConfiguration. public struct TLSInspectionConfigurationResponse: Swift.Equatable { + /// Contains metadata about an Certificate Manager certificate. + public var certificateAuthority: NetworkFirewallClientTypes.TlsCertificateData? /// A list of the certificates associated with the TLS inspection configuration. public var certificates: [NetworkFirewallClientTypes.TlsCertificateData]? /// A description of the TLS inspection configuration. @@ -8680,6 +8963,7 @@ extension NetworkFirewallClientTypes { public var tlsInspectionConfigurationStatus: NetworkFirewallClientTypes.ResourceStatus? public init( + certificateAuthority: NetworkFirewallClientTypes.TlsCertificateData? = nil, certificates: [NetworkFirewallClientTypes.TlsCertificateData]? = nil, description: Swift.String? = nil, encryptionConfiguration: NetworkFirewallClientTypes.EncryptionConfiguration? = nil, @@ -8692,6 +8976,7 @@ extension NetworkFirewallClientTypes { tlsInspectionConfigurationStatus: NetworkFirewallClientTypes.ResourceStatus? = nil ) { + self.certificateAuthority = certificateAuthority self.certificates = certificates self.description = description self.encryptionConfiguration = encryptionConfiguration @@ -10169,6 +10454,7 @@ enum UpdateLoggingConfigurationOutputError: ClientRuntime.HttpResponseErrorBindi extension UpdateRuleGroupInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case analyzeRuleGroup = "AnalyzeRuleGroup" case description = "Description" case dryRun = "DryRun" case encryptionConfiguration = "EncryptionConfiguration" @@ -10183,6 +10469,9 @@ extension UpdateRuleGroupInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let analyzeRuleGroup = self.analyzeRuleGroup { + try encodeContainer.encode(analyzeRuleGroup, forKey: .analyzeRuleGroup) + } if let description = self.description { try encodeContainer.encode(description, forKey: .description) } @@ -10223,6 +10512,8 @@ extension UpdateRuleGroupInput: ClientRuntime.URLPathProvider { } public struct UpdateRuleGroupInput: Swift.Equatable { + /// Indicates whether you want Network Firewall to analyze the stateless rules in the rule group for rule behavior such as asymmetric routing. If set to TRUE, Network Firewall runs the analysis and then updates the rule group for you. To run the stateless rule group analyzer without updating the rule group, set DryRun to TRUE. + public var analyzeRuleGroup: Swift.Bool? /// A description of the rule group. public var description: Swift.String? /// Indicates whether you want Network Firewall to just check the validity of the request, rather than run the request. If set to TRUE, Network Firewall checks whether the request can run successfully, but doesn't actually make the requested changes. The call returns the value that the request would return if you ran it with dry run set to FALSE, but doesn't make additions or changes to your resources. This option allows you to make sure that you have the required permissions to run the request and that your request parameters are valid. If set to FALSE, Network Firewall makes the requested changes to your resources. @@ -10246,6 +10537,7 @@ public struct UpdateRuleGroupInput: Swift.Equatable { public var updateToken: Swift.String? public init( + analyzeRuleGroup: Swift.Bool? = nil, description: Swift.String? = nil, dryRun: Swift.Bool? = nil, encryptionConfiguration: NetworkFirewallClientTypes.EncryptionConfiguration? = nil, @@ -10258,6 +10550,7 @@ public struct UpdateRuleGroupInput: Swift.Equatable { updateToken: Swift.String? = nil ) { + self.analyzeRuleGroup = analyzeRuleGroup self.description = description self.dryRun = dryRun self.encryptionConfiguration = encryptionConfiguration @@ -10282,10 +10575,12 @@ struct UpdateRuleGroupInputBody: Swift.Equatable { let dryRun: Swift.Bool? let encryptionConfiguration: NetworkFirewallClientTypes.EncryptionConfiguration? let sourceMetadata: NetworkFirewallClientTypes.SourceMetadata? + let analyzeRuleGroup: Swift.Bool? } extension UpdateRuleGroupInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case analyzeRuleGroup = "AnalyzeRuleGroup" case description = "Description" case dryRun = "DryRun" case encryptionConfiguration = "EncryptionConfiguration" @@ -10320,6 +10615,8 @@ extension UpdateRuleGroupInputBody: Swift.Decodable { encryptionConfiguration = encryptionConfigurationDecoded let sourceMetadataDecoded = try containerValues.decodeIfPresent(NetworkFirewallClientTypes.SourceMetadata.self, forKey: .sourceMetadata) sourceMetadata = sourceMetadataDecoded + let analyzeRuleGroupDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .analyzeRuleGroup) + analyzeRuleGroup = analyzeRuleGroupDecoded } } @@ -10604,7 +10901,7 @@ public struct UpdateTLSInspectionConfigurationInput: Swift.Equatable { public var description: Swift.String? /// A complex type that contains the Amazon Web Services KMS encryption configuration settings for your TLS inspection configuration. public var encryptionConfiguration: NetworkFirewallClientTypes.EncryptionConfiguration? - /// The object that defines a TLS inspection configuration. This, along with [TLSInspectionConfigurationResponse], define the TLS inspection configuration. You can retrieve all objects for a TLS inspection configuration by calling [DescribeTLSInspectionConfiguration]. Network Firewall uses a TLS inspection configuration to decrypt traffic. Network Firewall re-encrypts the traffic before sending it to its destination. To use a TLS inspection configuration, you add it to a new Network Firewall firewall policy, then you apply the firewall policy to a firewall. Network Firewall acts as a proxy service to decrypt and inspect inbound traffic. You can reference a TLS inspection configuration from more than one firewall policy, and you can use a firewall policy in more than one firewall. For more information about using TLS inspection configurations, see [Decrypting SSL/TLS traffic with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection.html) in the Network Firewall Developer Guide. + /// The object that defines a TLS inspection configuration. This, along with [TLSInspectionConfigurationResponse], define the TLS inspection configuration. You can retrieve all objects for a TLS inspection configuration by calling [DescribeTLSInspectionConfiguration]. Network Firewall uses a TLS inspection configuration to decrypt traffic. Network Firewall re-encrypts the traffic before sending it to its destination. To use a TLS inspection configuration, you add it to a new Network Firewall firewall policy, then you apply the firewall policy to a firewall. Network Firewall acts as a proxy service to decrypt and inspect the traffic traveling through your firewalls. You can reference a TLS inspection configuration from more than one firewall policy, and you can use a firewall policy in more than one firewall. For more information about using TLS inspection configurations, see [Inspecting SSL/TLS traffic with TLS inspection configurations](https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection.html) in the Network Firewall Developer Guide. /// This member is required. public var tlsInspectionConfiguration: NetworkFirewallClientTypes.TLSInspectionConfiguration? /// The Amazon Resource Name (ARN) of the TLS inspection configuration. diff --git a/Sources/Services/AWSOpenSearch/EndpointResolver.swift b/Sources/Services/AWSOpenSearch/EndpointResolver.swift index e5c3a48cb5a..fa07e803f5a 100644 --- a/Sources/Services/AWSOpenSearch/EndpointResolver.swift +++ b/Sources/Services/AWSOpenSearch/EndpointResolver.swift @@ -34,7 +34,7 @@ public protocol EndpointResolver { public struct DefaultEndpointResolver: EndpointResolver { private let engine: AWSClientRuntime.AWSEndpointsRuleEngine - private let ruleSet = "{\"version\":\"1.0\",\"parameters\":{\"Region\":{\"builtIn\":\"AWS::Region\",\"required\":false,\"documentation\":\"The AWS region used to dispatch the request.\",\"type\":\"String\"},\"UseDualStack\":{\"builtIn\":\"AWS::UseDualStack\",\"required\":true,\"default\":false,\"documentation\":\"When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.\",\"type\":\"Boolean\"},\"UseFIPS\":{\"builtIn\":\"AWS::UseFIPS\",\"required\":true,\"default\":false,\"documentation\":\"When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.\",\"type\":\"Boolean\"},\"Endpoint\":{\"builtIn\":\"SDK::Endpoint\",\"required\":false,\"documentation\":\"Override the endpoint used to send this request\",\"type\":\"String\"}},\"rules\":[{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Endpoint\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"error\":\"Invalid Configuration: FIPS and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"error\":\"Invalid Configuration: Dualstack and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[],\"endpoint\":{\"url\":{\"ref\":\"Endpoint\"},\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Region\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"aws.partition\",\"argv\":[{\"ref\":\"Region\"}],\"assign\":\"PartitionResult\"}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]}]},{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://es-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS and DualStack are enabled, but this partition does not support one or both\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]},true]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://es-fips.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS is enabled but this partition does not support FIPS\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://es.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"DualStack is enabled but this partition does not support DualStack\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[],\"endpoint\":{\"url\":\"https://es.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"Invalid Configuration: Missing Region\",\"type\":\"error\"}]}" + private let ruleSet = "{\"version\":\"1.0\",\"parameters\":{\"Region\":{\"builtIn\":\"AWS::Region\",\"required\":false,\"documentation\":\"The AWS region used to dispatch the request.\",\"type\":\"String\"},\"UseDualStack\":{\"builtIn\":\"AWS::UseDualStack\",\"required\":true,\"default\":false,\"documentation\":\"When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.\",\"type\":\"Boolean\"},\"UseFIPS\":{\"builtIn\":\"AWS::UseFIPS\",\"required\":true,\"default\":false,\"documentation\":\"When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.\",\"type\":\"Boolean\"},\"Endpoint\":{\"builtIn\":\"SDK::Endpoint\",\"required\":false,\"documentation\":\"Override the endpoint used to send this request\",\"type\":\"String\"}},\"rules\":[{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Endpoint\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"error\":\"Invalid Configuration: FIPS and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"error\":\"Invalid Configuration: Dualstack and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[],\"endpoint\":{\"url\":{\"ref\":\"Endpoint\"},\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Region\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"aws.partition\",\"argv\":[{\"ref\":\"Region\"}],\"assign\":\"PartitionResult\"}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]}]},{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://es-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS and DualStack are enabled, but this partition does not support one or both\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]},true]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://es-fips.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS is enabled but this partition does not support FIPS\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[\"aws\",{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]}]}],\"endpoint\":{\"url\":\"https://aos.{Region}.api.aws\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[\"aws-cn\",{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]}]}],\"endpoint\":{\"url\":\"https://aos.{Region}.api.amazonwebservices.com.cn\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[\"aws-us-gov\",{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]}]}],\"endpoint\":{\"url\":\"https://aos.{Region}.api.aws\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[],\"endpoint\":{\"url\":\"https://es.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"DualStack is enabled but this partition does not support DualStack\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[],\"endpoint\":{\"url\":\"https://es.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"Invalid Configuration: Missing Region\",\"type\":\"error\"}]}" public init() throws { engine = try AWSClientRuntime.AWSEndpointsRuleEngine(ruleSet: ruleSet) diff --git a/Sources/Services/AWSOpenSearch/OpenSearchClient.swift b/Sources/Services/AWSOpenSearch/OpenSearchClient.swift index 45918b6234b..e573d750e2d 100644 --- a/Sources/Services/AWSOpenSearch/OpenSearchClient.swift +++ b/Sources/Services/AWSOpenSearch/OpenSearchClient.swift @@ -1490,11 +1490,11 @@ extension OpenSearchClient: OpenSearchClientProtocol { return result } - /// Get the status of the maintenance action. + /// The status of the maintenance action. /// /// - Parameter GetDomainMaintenanceStatusInput : Container for the parameters to the GetDomainMaintenanceStatus operation. /// - /// - Returns: `GetDomainMaintenanceStatusOutput` : The result of a GetDomainMaintenanceStatus request. Contains information about the requested action. + /// - Returns: `GetDomainMaintenanceStatusOutput` : The result of a GetDomainMaintenanceStatus request that information about the requested action. /// /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// @@ -1673,11 +1673,11 @@ extension OpenSearchClient: OpenSearchClientProtocol { return result } - /// Get the list of the maintenance action. + /// A list of maintenance actions for the domain. /// /// - Parameter ListDomainMaintenancesInput : Container for the parameters to the ListDomainMaintenances operation. /// - /// - Returns: `ListDomainMaintenancesOutput` : The result of a ListDomainMaintenances request. Contains information about the requested actions. + /// - Returns: `ListDomainMaintenancesOutput` : The result of a ListDomainMaintenances request that contains information about the requested actions. /// /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// @@ -2354,11 +2354,11 @@ extension OpenSearchClient: OpenSearchClientProtocol { return result } - /// Starts the node maintenance (Node restart, Node reboot, Opensearch/Elasticsearch process restart, Dashboard/kibana restart) on the data node. + /// Starts the node maintenance process on the data node. These processes can include a node reboot, an Opensearch or Elasticsearch process restart, or a Dashboard or Kibana restart. /// /// - Parameter StartDomainMaintenanceInput : Container for the parameters to the StartDomainMaintenance operation. /// - /// - Returns: `StartDomainMaintenanceOutput` : The result of a StartDomainMaintenance request. Contains information about the requested action. + /// - Returns: `StartDomainMaintenanceOutput` : The result of a StartDomainMaintenance request that information about the requested action. /// /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// diff --git a/Sources/Services/AWSOpenSearch/OpenSearchClientProtocol.swift b/Sources/Services/AWSOpenSearch/OpenSearchClientProtocol.swift index 5ef89a5d5a6..a6f82bd4858 100644 --- a/Sources/Services/AWSOpenSearch/OpenSearchClientProtocol.swift +++ b/Sources/Services/AWSOpenSearch/OpenSearchClientProtocol.swift @@ -452,11 +452,11 @@ public protocol OpenSearchClientProtocol { /// - `ResourceNotFoundException` : An exception for accessing or deleting a resource that doesn't exist. /// - `ValidationException` : An exception for accessing or deleting a resource that doesn't exist. func getCompatibleVersions(input: GetCompatibleVersionsInput) async throws -> GetCompatibleVersionsOutput - /// Get the status of the maintenance action. + /// The status of the maintenance action. /// /// - Parameter GetDomainMaintenanceStatusInput : Container for the parameters to the GetDomainMaintenanceStatus operation. /// - /// - Returns: `GetDomainMaintenanceStatusOutput` : The result of a GetDomainMaintenanceStatus request. Contains information about the requested action. + /// - Returns: `GetDomainMaintenanceStatusOutput` : The result of a GetDomainMaintenanceStatus request that information about the requested action. /// /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// @@ -512,11 +512,11 @@ public protocol OpenSearchClientProtocol { /// - `ResourceNotFoundException` : An exception for accessing or deleting a resource that doesn't exist. /// - `ValidationException` : An exception for accessing or deleting a resource that doesn't exist. func getUpgradeStatus(input: GetUpgradeStatusInput) async throws -> GetUpgradeStatusOutput - /// Get the list of the maintenance action. + /// A list of maintenance actions for the domain. /// /// - Parameter ListDomainMaintenancesInput : Container for the parameters to the ListDomainMaintenances operation. /// - /// - Returns: `ListDomainMaintenancesOutput` : The result of a ListDomainMaintenances request. Contains information about the requested actions. + /// - Returns: `ListDomainMaintenancesOutput` : The result of a ListDomainMaintenances request that contains information about the requested actions. /// /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// @@ -723,11 +723,11 @@ public protocol OpenSearchClientProtocol { /// - `ResourceNotFoundException` : An exception for accessing or deleting a resource that doesn't exist. /// - `ValidationException` : An exception for accessing or deleting a resource that doesn't exist. func revokeVpcEndpointAccess(input: RevokeVpcEndpointAccessInput) async throws -> RevokeVpcEndpointAccessOutput - /// Starts the node maintenance (Node restart, Node reboot, Opensearch/Elasticsearch process restart, Dashboard/kibana restart) on the data node. + /// Starts the node maintenance process on the data node. These processes can include a node reboot, an Opensearch or Elasticsearch process restart, or a Dashboard or Kibana restart. /// /// - Parameter StartDomainMaintenanceInput : Container for the parameters to the StartDomainMaintenance operation. /// - /// - Returns: `StartDomainMaintenanceOutput` : The result of a StartDomainMaintenance request. Contains information about the requested action. + /// - Returns: `StartDomainMaintenanceOutput` : The result of a StartDomainMaintenance request that information about the requested action. /// /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// diff --git a/Sources/Services/AWSOpenSearch/models/Models.swift b/Sources/Services/AWSOpenSearch/models/Models.swift index d3b22464995..a36e3a22c88 100644 --- a/Sources/Services/AWSOpenSearch/models/Models.swift +++ b/Sources/Services/AWSOpenSearch/models/Models.swift @@ -2664,6 +2664,7 @@ extension CreateDomainInput: Swift.Encodable { case ebsOptions = "EBSOptions" case encryptionAtRestOptions = "EncryptionAtRestOptions" case engineVersion = "EngineVersion" + case ipAddressType = "IPAddressType" case logPublishingOptions = "LogPublishingOptions" case nodeToNodeEncryptionOptions = "NodeToNodeEncryptionOptions" case offPeakWindowOptions = "OffPeakWindowOptions" @@ -2711,6 +2712,9 @@ extension CreateDomainInput: Swift.Encodable { if let engineVersion = self.engineVersion { try encodeContainer.encode(engineVersion, forKey: .engineVersion) } + if let ipAddressType = self.ipAddressType { + try encodeContainer.encode(ipAddressType.rawValue, forKey: .ipAddressType) + } if let logPublishingOptions = logPublishingOptions { var logPublishingOptionsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .logPublishingOptions) for (dictKey0, logPublishingOptions0) in logPublishingOptions { @@ -2782,6 +2786,8 @@ public struct CreateDomainInput: Swift.Equatable { public var encryptionAtRestOptions: OpenSearchClientTypes.EncryptionAtRestOptions? /// String of format Elasticsearch_X.Y or OpenSearch_X.Y to specify the engine version for the OpenSearch Service domain. For example, OpenSearch_1.0 or Elasticsearch_7.9. For more information, see [Creating and managing Amazon OpenSearch Service domains](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains). public var engineVersion: Swift.String? + /// The type of IP addresses supported by the endpoint for the domain. + public var ipAddressType: OpenSearchClientTypes.IPAddressType? /// Key-value pairs to configure log publishing. public var logPublishingOptions: [Swift.String:OpenSearchClientTypes.LogPublishingOption]? /// Enables node-to-node encryption. @@ -2809,6 +2815,7 @@ public struct CreateDomainInput: Swift.Equatable { ebsOptions: OpenSearchClientTypes.EBSOptions? = nil, encryptionAtRestOptions: OpenSearchClientTypes.EncryptionAtRestOptions? = nil, engineVersion: Swift.String? = nil, + ipAddressType: OpenSearchClientTypes.IPAddressType? = nil, logPublishingOptions: [Swift.String:OpenSearchClientTypes.LogPublishingOption]? = nil, nodeToNodeEncryptionOptions: OpenSearchClientTypes.NodeToNodeEncryptionOptions? = nil, offPeakWindowOptions: OpenSearchClientTypes.OffPeakWindowOptions? = nil, @@ -2829,6 +2836,7 @@ public struct CreateDomainInput: Swift.Equatable { self.ebsOptions = ebsOptions self.encryptionAtRestOptions = encryptionAtRestOptions self.engineVersion = engineVersion + self.ipAddressType = ipAddressType self.logPublishingOptions = logPublishingOptions self.nodeToNodeEncryptionOptions = nodeToNodeEncryptionOptions self.offPeakWindowOptions = offPeakWindowOptions @@ -2845,6 +2853,7 @@ struct CreateDomainInputBody: Swift.Equatable { let clusterConfig: OpenSearchClientTypes.ClusterConfig? let ebsOptions: OpenSearchClientTypes.EBSOptions? let accessPolicies: Swift.String? + let ipAddressType: OpenSearchClientTypes.IPAddressType? let snapshotOptions: OpenSearchClientTypes.SnapshotOptions? let vpcOptions: OpenSearchClientTypes.VPCOptions? let cognitoOptions: OpenSearchClientTypes.CognitoOptions? @@ -2873,6 +2882,7 @@ extension CreateDomainInputBody: Swift.Decodable { case ebsOptions = "EBSOptions" case encryptionAtRestOptions = "EncryptionAtRestOptions" case engineVersion = "EngineVersion" + case ipAddressType = "IPAddressType" case logPublishingOptions = "LogPublishingOptions" case nodeToNodeEncryptionOptions = "NodeToNodeEncryptionOptions" case offPeakWindowOptions = "OffPeakWindowOptions" @@ -2894,6 +2904,8 @@ extension CreateDomainInputBody: Swift.Decodable { ebsOptions = ebsOptionsDecoded let accessPoliciesDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .accessPolicies) accessPolicies = accessPoliciesDecoded + let ipAddressTypeDecoded = try containerValues.decodeIfPresent(OpenSearchClientTypes.IPAddressType.self, forKey: .ipAddressType) + ipAddressType = ipAddressTypeDecoded let snapshotOptionsDecoded = try containerValues.decodeIfPresent(OpenSearchClientTypes.SnapshotOptions.self, forKey: .snapshotOptions) snapshotOptions = snapshotOptionsDecoded let vpcOptionsDecoded = try containerValues.decodeIfPresent(OpenSearchClientTypes.VPCOptions.self, forKey: .vpcOptions) @@ -6334,6 +6346,7 @@ extension OpenSearchClientTypes.DomainConfig: Swift.Codable { case ebsOptions = "EBSOptions" case encryptionAtRestOptions = "EncryptionAtRestOptions" case engineVersion = "EngineVersion" + case ipAddressType = "IPAddressType" case logPublishingOptions = "LogPublishingOptions" case nodeToNodeEncryptionOptions = "NodeToNodeEncryptionOptions" case offPeakWindowOptions = "OffPeakWindowOptions" @@ -6377,6 +6390,9 @@ extension OpenSearchClientTypes.DomainConfig: Swift.Codable { if let engineVersion = self.engineVersion { try encodeContainer.encode(engineVersion, forKey: .engineVersion) } + if let ipAddressType = self.ipAddressType { + try encodeContainer.encode(ipAddressType, forKey: .ipAddressType) + } if let logPublishingOptions = self.logPublishingOptions { try encodeContainer.encode(logPublishingOptions, forKey: .logPublishingOptions) } @@ -6407,6 +6423,8 @@ extension OpenSearchClientTypes.DomainConfig: Swift.Codable { ebsOptions = ebsOptionsDecoded let accessPoliciesDecoded = try containerValues.decodeIfPresent(OpenSearchClientTypes.AccessPoliciesStatus.self, forKey: .accessPolicies) accessPolicies = accessPoliciesDecoded + let ipAddressTypeDecoded = try containerValues.decodeIfPresent(OpenSearchClientTypes.IPAddressTypeStatus.self, forKey: .ipAddressType) + ipAddressType = ipAddressTypeDecoded let snapshotOptionsDecoded = try containerValues.decodeIfPresent(OpenSearchClientTypes.SnapshotOptionsStatus.self, forKey: .snapshotOptions) snapshotOptions = snapshotOptionsDecoded let vpcOptionsDecoded = try containerValues.decodeIfPresent(OpenSearchClientTypes.VPCDerivedInfoStatus.self, forKey: .vpcOptions) @@ -6461,6 +6479,8 @@ extension OpenSearchClientTypes { public var encryptionAtRestOptions: OpenSearchClientTypes.EncryptionAtRestOptionsStatus? /// The OpenSearch or Elasticsearch version that the domain is running. public var engineVersion: OpenSearchClientTypes.VersionStatus? + /// The type of IP addresses supported by the endpoint for the domain. + public var ipAddressType: OpenSearchClientTypes.IPAddressTypeStatus? /// Key-value pairs to configure log publishing. public var logPublishingOptions: OpenSearchClientTypes.LogPublishingOptionsStatus? /// Whether node-to-node encryption is enabled or disabled. @@ -6486,6 +6506,7 @@ extension OpenSearchClientTypes { ebsOptions: OpenSearchClientTypes.EBSOptionsStatus? = nil, encryptionAtRestOptions: OpenSearchClientTypes.EncryptionAtRestOptionsStatus? = nil, engineVersion: OpenSearchClientTypes.VersionStatus? = nil, + ipAddressType: OpenSearchClientTypes.IPAddressTypeStatus? = nil, logPublishingOptions: OpenSearchClientTypes.LogPublishingOptionsStatus? = nil, nodeToNodeEncryptionOptions: OpenSearchClientTypes.NodeToNodeEncryptionOptionsStatus? = nil, offPeakWindowOptions: OpenSearchClientTypes.OffPeakWindowOptionsStatus? = nil, @@ -6505,6 +6526,7 @@ extension OpenSearchClientTypes { self.ebsOptions = ebsOptions self.encryptionAtRestOptions = encryptionAtRestOptions self.engineVersion = engineVersion + self.ipAddressType = ipAddressType self.logPublishingOptions = logPublishingOptions self.nodeToNodeEncryptionOptions = nodeToNodeEncryptionOptions self.offPeakWindowOptions = offPeakWindowOptions @@ -6826,19 +6848,19 @@ extension OpenSearchClientTypes { public struct DomainMaintenanceDetails: Swift.Equatable { /// The name of the action. public var action: OpenSearchClientTypes.MaintenanceType? - /// Contains time at which action created. + /// The time at which the action was created. public var createdAt: ClientRuntime.Date? /// The name of the domain. public var domainName: Swift.String? - /// Id of the requested action. + /// The ID of the requested action. public var maintenanceId: Swift.String? - /// Id of the data node. + /// The ID of the data node. public var nodeId: Swift.String? /// The status of the action. public var status: OpenSearchClientTypes.MaintenanceStatus? - /// The status message of the action. + /// The status message for the action. public var statusMessage: Swift.String? - /// Contains time at which action updated. + /// The time at which the action was updated. public var updatedAt: ClientRuntime.Date? public init( @@ -7179,8 +7201,10 @@ extension OpenSearchClientTypes.DomainStatus: Swift.Codable { case ebsOptions = "EBSOptions" case encryptionAtRestOptions = "EncryptionAtRestOptions" case endpoint = "Endpoint" + case endpointV2 = "EndpointV2" case endpoints = "Endpoints" case engineVersion = "EngineVersion" + case ipAddressType = "IPAddressType" case logPublishingOptions = "LogPublishingOptions" case nodeToNodeEncryptionOptions = "NodeToNodeEncryptionOptions" case offPeakWindowOptions = "OffPeakWindowOptions" @@ -7245,6 +7269,9 @@ extension OpenSearchClientTypes.DomainStatus: Swift.Codable { if let endpoint = self.endpoint { try encodeContainer.encode(endpoint, forKey: .endpoint) } + if let endpointV2 = self.endpointV2 { + try encodeContainer.encode(endpointV2, forKey: .endpointV2) + } if let endpoints = endpoints { var endpointsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .endpoints) for (dictKey0, endpointsMap0) in endpoints { @@ -7254,6 +7281,9 @@ extension OpenSearchClientTypes.DomainStatus: Swift.Codable { if let engineVersion = self.engineVersion { try encodeContainer.encode(engineVersion, forKey: .engineVersion) } + if let ipAddressType = self.ipAddressType { + try encodeContainer.encode(ipAddressType.rawValue, forKey: .ipAddressType) + } if let logPublishingOptions = logPublishingOptions { var logPublishingOptionsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .logPublishingOptions) for (dictKey0, logPublishingOptions0) in logPublishingOptions { @@ -7300,6 +7330,8 @@ extension OpenSearchClientTypes.DomainStatus: Swift.Codable { deleted = deletedDecoded let endpointDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endpoint) endpoint = endpointDecoded + let endpointV2Decoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endpointV2) + endpointV2 = endpointV2Decoded let endpointsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .endpoints) var endpointsDecoded0: [Swift.String:Swift.String]? = nil if let endpointsContainer = endpointsContainer { @@ -7323,6 +7355,8 @@ extension OpenSearchClientTypes.DomainStatus: Swift.Codable { ebsOptions = ebsOptionsDecoded let accessPoliciesDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .accessPolicies) accessPolicies = accessPoliciesDecoded + let ipAddressTypeDecoded = try containerValues.decodeIfPresent(OpenSearchClientTypes.IPAddressType.self, forKey: .ipAddressType) + ipAddressType = ipAddressTypeDecoded let snapshotOptionsDecoded = try containerValues.decodeIfPresent(OpenSearchClientTypes.SnapshotOptions.self, forKey: .snapshotOptions) snapshotOptions = snapshotOptionsDecoded let vpcOptionsDecoded = try containerValues.decodeIfPresent(OpenSearchClientTypes.VPCDerivedInfo.self, forKey: .vpcOptions) @@ -7411,10 +7445,14 @@ extension OpenSearchClientTypes { public var encryptionAtRestOptions: OpenSearchClientTypes.EncryptionAtRestOptions? /// Domain-specific endpoint used to submit index, search, and data upload requests to the domain. public var endpoint: Swift.String? + /// The domain endpoint to which index and search requests are submitted. For example, search-imdb-movies-oopcnjfn6ugo.eu-west-1.es.amazonaws.com or doc-imdb-movies-oopcnjfn6u.eu-west-1.es.amazonaws.com. + public var endpointV2: Swift.String? /// The key-value pair that exists if the OpenSearch Service domain uses VPC endpoints.. Example key, value: 'vpc','vpc-endpoint-h2dsd34efgyghrtguk5gt6j2foh4.us-east-1.es.amazonaws.com'. public var endpoints: [Swift.String:Swift.String]? /// Version of OpenSearch or Elasticsearch that the domain is running, in the format Elasticsearch_X.Y or OpenSearch_X.Y. public var engineVersion: Swift.String? + /// The type of IP addresses supported by the endpoint for the domain. + public var ipAddressType: OpenSearchClientTypes.IPAddressType? /// Log publishing options for the domain. public var logPublishingOptions: [Swift.String:OpenSearchClientTypes.LogPublishingOption]? /// Whether node-to-node encryption is enabled or disabled. @@ -7451,8 +7489,10 @@ extension OpenSearchClientTypes { ebsOptions: OpenSearchClientTypes.EBSOptions? = nil, encryptionAtRestOptions: OpenSearchClientTypes.EncryptionAtRestOptions? = nil, endpoint: Swift.String? = nil, + endpointV2: Swift.String? = nil, endpoints: [Swift.String:Swift.String]? = nil, engineVersion: Swift.String? = nil, + ipAddressType: OpenSearchClientTypes.IPAddressType? = nil, logPublishingOptions: [Swift.String:OpenSearchClientTypes.LogPublishingOption]? = nil, nodeToNodeEncryptionOptions: OpenSearchClientTypes.NodeToNodeEncryptionOptions? = nil, offPeakWindowOptions: OpenSearchClientTypes.OffPeakWindowOptions? = nil, @@ -7480,8 +7520,10 @@ extension OpenSearchClientTypes { self.ebsOptions = ebsOptions self.encryptionAtRestOptions = encryptionAtRestOptions self.endpoint = endpoint + self.endpointV2 = endpointV2 self.endpoints = endpoints self.engineVersion = engineVersion + self.ipAddressType = ipAddressType self.logPublishingOptions = logPublishingOptions self.nodeToNodeEncryptionOptions = nodeToNodeEncryptionOptions self.offPeakWindowOptions = offPeakWindowOptions @@ -8247,7 +8289,7 @@ public struct GetDomainMaintenanceStatusInput: Swift.Equatable { /// The name of the domain. /// This member is required. public var domainName: Swift.String? - /// The request id of the maintenance action. + /// The request ID of the maintenance action. /// This member is required. public var maintenanceId: Swift.String? @@ -8292,19 +8334,19 @@ extension GetDomainMaintenanceStatusOutput: ClientRuntime.HttpResponseBinding { } } -/// The result of a GetDomainMaintenanceStatus request. Contains information about the requested action. +/// The result of a GetDomainMaintenanceStatus request that information about the requested action. public struct GetDomainMaintenanceStatusOutput: Swift.Equatable { - /// Contains action name. + /// The action name. public var action: OpenSearchClientTypes.MaintenanceType? - /// Contains time at which action created. + /// The time at which the action was created. public var createdAt: ClientRuntime.Date? - /// Contains node id of maintenance action. + /// The node ID of the maintenance action. public var nodeId: Swift.String? - /// Contains status of the maintenance action. + /// The status of the maintenance action. public var status: OpenSearchClientTypes.MaintenanceStatus? - /// Contains status message of the maintenance action. + /// The status message of the maintenance action. public var statusMessage: Swift.String? - /// Contains time at which action updated. + /// The time at which the action was updated. public var updatedAt: ClientRuntime.Date? public init( @@ -8758,6 +8800,85 @@ enum GetUpgradeStatusOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension OpenSearchClientTypes { + public enum IPAddressType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case dualstack + case ipv4 + case sdkUnknown(Swift.String) + + public static var allCases: [IPAddressType] { + return [ + .dualstack, + .ipv4, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .dualstack: return "dualstack" + case .ipv4: return "ipv4" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = IPAddressType(rawValue: rawValue) ?? IPAddressType.sdkUnknown(rawValue) + } + } +} + +extension OpenSearchClientTypes.IPAddressTypeStatus: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case options = "Options" + case status = "Status" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let options = self.options { + try encodeContainer.encode(options.rawValue, forKey: .options) + } + if let status = self.status { + try encodeContainer.encode(status, forKey: .status) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let optionsDecoded = try containerValues.decodeIfPresent(OpenSearchClientTypes.IPAddressType.self, forKey: .options) + options = optionsDecoded + let statusDecoded = try containerValues.decodeIfPresent(OpenSearchClientTypes.OptionStatus.self, forKey: .status) + status = statusDecoded + } +} + +extension OpenSearchClientTypes { + /// The IP address type status for the domain. + public struct IPAddressTypeStatus: Swift.Equatable { + /// The IP address options for the domain. + /// This member is required. + public var options: OpenSearchClientTypes.IPAddressType? + /// Provides the current status of an entity. + /// This member is required. + public var status: OpenSearchClientTypes.OptionStatus? + + public init( + options: OpenSearchClientTypes.IPAddressType? = nil, + status: OpenSearchClientTypes.OptionStatus? = nil + ) + { + self.options = options + self.status = status + } + } + +} + extension OpenSearchClientTypes.InboundConnection: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case connectionId = "ConnectionId" @@ -9499,7 +9620,7 @@ public struct ListDomainMaintenancesInput: Swift.Equatable { public var domainName: Swift.String? /// An optional parameter that specifies the maximum number of results to return. You can use nextToken to get the next page of results. public var maxResults: Swift.Int? - /// If your initial ListDomainMaintenances operation returns a nextToken, you can include the returned nextToken in subsequent ListDomainMaintenances operations, which returns results in the next page. + /// If your initial ListDomainMaintenances operation returns a nextToken, include the returned nextToken in subsequent ListDomainMaintenances operations, which returns results in the next page. public var nextToken: Swift.String? /// The status of the action. public var status: OpenSearchClientTypes.MaintenanceStatus? @@ -9543,9 +9664,9 @@ extension ListDomainMaintenancesOutput: ClientRuntime.HttpResponseBinding { } } -/// The result of a ListDomainMaintenances request. Contains information about the requested actions. +/// The result of a ListDomainMaintenances request that contains information about the requested actions. public struct ListDomainMaintenancesOutput: Swift.Equatable { - /// List of the submitted maintenance actions. + /// A list of the submitted maintenance actions. public var domainMaintenances: [OpenSearchClientTypes.DomainMaintenanceDetails]? /// When nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. public var nextToken: Swift.String? @@ -14470,7 +14591,7 @@ public struct StartDomainMaintenanceInput: Swift.Equatable { /// The name of the domain. /// This member is required. public var domainName: Swift.String? - /// Id of the data node. + /// The ID of the data node. public var nodeId: Swift.String? public init( @@ -14517,9 +14638,9 @@ extension StartDomainMaintenanceOutput: ClientRuntime.HttpResponseBinding { } } -/// The result of a StartDomainMaintenance request. Contains information about the requested action. +/// The result of a StartDomainMaintenance request that information about the requested action. public struct StartDomainMaintenanceOutput: Swift.Equatable { - /// Contains request id of requested action. + /// The request ID of requested action. public var maintenanceId: Swift.String? public init( @@ -14956,6 +15077,7 @@ extension UpdateDomainConfigInput: Swift.Encodable { case dryRunMode = "DryRunMode" case ebsOptions = "EBSOptions" case encryptionAtRestOptions = "EncryptionAtRestOptions" + case ipAddressType = "IPAddressType" case logPublishingOptions = "LogPublishingOptions" case nodeToNodeEncryptionOptions = "NodeToNodeEncryptionOptions" case offPeakWindowOptions = "OffPeakWindowOptions" @@ -15002,6 +15124,9 @@ extension UpdateDomainConfigInput: Swift.Encodable { if let encryptionAtRestOptions = self.encryptionAtRestOptions { try encodeContainer.encode(encryptionAtRestOptions, forKey: .encryptionAtRestOptions) } + if let ipAddressType = self.ipAddressType { + try encodeContainer.encode(ipAddressType.rawValue, forKey: .ipAddressType) + } if let logPublishingOptions = logPublishingOptions { var logPublishingOptionsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .logPublishingOptions) for (dictKey0, logPublishingOptions0) in logPublishingOptions { @@ -15075,6 +15200,8 @@ public struct UpdateDomainConfigInput: Swift.Equatable { public var ebsOptions: OpenSearchClientTypes.EBSOptions? /// Encryption at rest options for the domain. public var encryptionAtRestOptions: OpenSearchClientTypes.EncryptionAtRestOptions? + /// The type of IP addresses supported by the endpoint for the domain. + public var ipAddressType: OpenSearchClientTypes.IPAddressType? /// Options to publish OpenSearch logs to Amazon CloudWatch Logs. public var logPublishingOptions: [Swift.String:OpenSearchClientTypes.LogPublishingOption]? /// Node-to-node encryption options for the domain. @@ -15101,6 +15228,7 @@ public struct UpdateDomainConfigInput: Swift.Equatable { dryRunMode: OpenSearchClientTypes.DryRunMode? = nil, ebsOptions: OpenSearchClientTypes.EBSOptions? = nil, encryptionAtRestOptions: OpenSearchClientTypes.EncryptionAtRestOptions? = nil, + ipAddressType: OpenSearchClientTypes.IPAddressType? = nil, logPublishingOptions: [Swift.String:OpenSearchClientTypes.LogPublishingOption]? = nil, nodeToNodeEncryptionOptions: OpenSearchClientTypes.NodeToNodeEncryptionOptions? = nil, offPeakWindowOptions: OpenSearchClientTypes.OffPeakWindowOptions? = nil, @@ -15121,6 +15249,7 @@ public struct UpdateDomainConfigInput: Swift.Equatable { self.dryRunMode = dryRunMode self.ebsOptions = ebsOptions self.encryptionAtRestOptions = encryptionAtRestOptions + self.ipAddressType = ipAddressType self.logPublishingOptions = logPublishingOptions self.nodeToNodeEncryptionOptions = nodeToNodeEncryptionOptions self.offPeakWindowOptions = offPeakWindowOptions @@ -15138,6 +15267,7 @@ struct UpdateDomainConfigInputBody: Swift.Equatable { let cognitoOptions: OpenSearchClientTypes.CognitoOptions? let advancedOptions: [Swift.String:Swift.String]? let accessPolicies: Swift.String? + let ipAddressType: OpenSearchClientTypes.IPAddressType? let logPublishingOptions: [Swift.String:OpenSearchClientTypes.LogPublishingOption]? let encryptionAtRestOptions: OpenSearchClientTypes.EncryptionAtRestOptions? let domainEndpointOptions: OpenSearchClientTypes.DomainEndpointOptions? @@ -15163,6 +15293,7 @@ extension UpdateDomainConfigInputBody: Swift.Decodable { case dryRunMode = "DryRunMode" case ebsOptions = "EBSOptions" case encryptionAtRestOptions = "EncryptionAtRestOptions" + case ipAddressType = "IPAddressType" case logPublishingOptions = "LogPublishingOptions" case nodeToNodeEncryptionOptions = "NodeToNodeEncryptionOptions" case offPeakWindowOptions = "OffPeakWindowOptions" @@ -15196,6 +15327,8 @@ extension UpdateDomainConfigInputBody: Swift.Decodable { advancedOptions = advancedOptionsDecoded0 let accessPoliciesDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .accessPolicies) accessPolicies = accessPoliciesDecoded + let ipAddressTypeDecoded = try containerValues.decodeIfPresent(OpenSearchClientTypes.IPAddressType.self, forKey: .ipAddressType) + ipAddressType = ipAddressTypeDecoded let logPublishingOptionsContainer = try containerValues.decodeIfPresent([Swift.String: OpenSearchClientTypes.LogPublishingOption?].self, forKey: .logPublishingOptions) var logPublishingOptionsDecoded0: [Swift.String:OpenSearchClientTypes.LogPublishingOption]? = nil if let logPublishingOptionsContainer = logPublishingOptionsContainer { diff --git a/Sources/Services/AWSOpenSearchServerless/OpenSearchServerlessClient.swift b/Sources/Services/AWSOpenSearchServerless/OpenSearchServerlessClient.swift index 0adb71f3fd3..fd0457e50a5 100644 --- a/Sources/Services/AWSOpenSearchServerless/OpenSearchServerlessClient.swift +++ b/Sources/Services/AWSOpenSearchServerless/OpenSearchServerlessClient.swift @@ -113,6 +113,98 @@ extension OpenSearchServerlessClient: OpenSearchServerlessClientProtocol { return result } + /// Returns a list of successful and failed retrievals for the OpenSearch Serverless indexes. For more information, see [Viewing data lifecycle policies](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-lifecycle.html#serverless-lifecycle-list). + /// + /// - Parameter BatchGetEffectiveLifecyclePolicyInput : [no documentation found] + /// + /// - Returns: `BatchGetEffectiveLifecyclePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. + /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. + public func batchGetEffectiveLifecyclePolicy(input: BatchGetEffectiveLifecyclePolicyInput) async throws -> BatchGetEffectiveLifecyclePolicyOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "batchGetEffectiveLifecyclePolicy") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "aoss") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "batchGetEffectiveLifecyclePolicy") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "OpenSearchServerless.BatchGetEffectiveLifecyclePolicy")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "BatchGetEffectiveLifecyclePolicyRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.0")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + + /// Returns one or more configured OpenSearch Serverless lifecycle policies. For more information, see [Viewing data lifecycle policies](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-lifecycle.html#serverless-lifecycle-list). + /// + /// - Parameter BatchGetLifecyclePolicyInput : [no documentation found] + /// + /// - Returns: `BatchGetLifecyclePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. + /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. + public func batchGetLifecyclePolicy(input: BatchGetLifecyclePolicyInput) async throws -> BatchGetLifecyclePolicyOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "batchGetLifecyclePolicy") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "aoss") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "batchGetLifecyclePolicy") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "OpenSearchServerless.BatchGetLifecyclePolicy")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "BatchGetLifecyclePolicyRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.0")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Returns attributes for one or more VPC endpoints associated with the current account. For more information, see [Access Amazon OpenSearch Serverless using an interface endpoint](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html). /// /// - Parameter BatchGetVpcEndpointInput : [no documentation found] @@ -258,6 +350,55 @@ extension OpenSearchServerlessClient: OpenSearchServerlessClientProtocol { return result } + /// Creates a lifecyle policy to be applied to OpenSearch Serverless indexes. Lifecycle policies define the number of days or hours to retain the data on an OpenSearch Serverless index. For more information, see [Creating data lifecycle policies](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-lifecycle.html#serverless-lifecycle-create). + /// + /// - Parameter CreateLifecyclePolicyInput : [no documentation found] + /// + /// - Returns: `CreateLifecyclePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : When creating a resource, thrown when a resource with the same name already exists or is being created. When deleting a resource, thrown when the resource is not in the ACTIVE or FAILED state. + /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. + /// - `ServiceQuotaExceededException` : Thrown when you attempt to create more resources than the service allows based on service quotas. + /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. + public func createLifecyclePolicy(input: CreateLifecyclePolicyInput) async throws -> CreateLifecyclePolicyOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createLifecyclePolicy") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "aoss") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "createLifecyclePolicy") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.IdempotencyTokenMiddleware(keyPath: \.clientToken)) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "OpenSearchServerless.CreateLifecyclePolicy")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "CreateLifecyclePolicyRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.0")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Specifies a security configuration for OpenSearch Serverless. For more information, see [SAML authentication for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html). /// /// - Parameter CreateSecurityConfigInput : [no documentation found] @@ -503,6 +644,55 @@ extension OpenSearchServerlessClient: OpenSearchServerlessClientProtocol { return result } + /// Deletes an OpenSearch Serverless lifecycle policy. For more information, see [Deleting data lifecycle policies](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-lifecycle.html#serverless-lifecycle-delete). + /// + /// - Parameter DeleteLifecyclePolicyInput : [no documentation found] + /// + /// - Returns: `DeleteLifecyclePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : When creating a resource, thrown when a resource with the same name already exists or is being created. When deleting a resource, thrown when the resource is not in the ACTIVE or FAILED state. + /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. + /// - `ResourceNotFoundException` : Thrown when accessing or deleting a resource that does not exist. + /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. + public func deleteLifecyclePolicy(input: DeleteLifecyclePolicyInput) async throws -> DeleteLifecyclePolicyOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "deleteLifecyclePolicy") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "aoss") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deleteLifecyclePolicy") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.IdempotencyTokenMiddleware(keyPath: \.clientToken)) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "OpenSearchServerless.DeleteLifecyclePolicy")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "DeleteLifecyclePolicyRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.0")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Deletes a security configuration for OpenSearch Serverless. For more information, see [SAML authentication for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html). /// /// - Parameter DeleteSecurityConfigInput : [no documentation found] @@ -974,6 +1164,52 @@ extension OpenSearchServerlessClient: OpenSearchServerlessClientProtocol { return result } + /// Returns a list of OpenSearch Serverless lifecycle policies. For more information, see [Viewing data lifecycle policies](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-lifecycle.html#serverless-lifecycle-list). + /// + /// - Parameter ListLifecyclePoliciesInput : [no documentation found] + /// + /// - Returns: `ListLifecyclePoliciesOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. + /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. + public func listLifecyclePolicies(input: ListLifecyclePoliciesInput) async throws -> ListLifecyclePoliciesOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listLifecyclePolicies") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "aoss") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listLifecyclePolicies") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "OpenSearchServerless.ListLifecyclePolicies")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "ListLifecyclePoliciesRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.0")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Returns information about configured OpenSearch Serverless security configurations. For more information, see [SAML authentication for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html). /// /// - Parameter ListSecurityConfigsInput : [no documentation found] @@ -1399,6 +1635,56 @@ extension OpenSearchServerlessClient: OpenSearchServerlessClientProtocol { return result } + /// Updates an OpenSearch Serverless access policy. For more information, see [Updating data lifecycle policies](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-lifecycle.html#serverless-lifecycle-update). + /// + /// - Parameter UpdateLifecyclePolicyInput : [no documentation found] + /// + /// - Returns: `UpdateLifecyclePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : When creating a resource, thrown when a resource with the same name already exists or is being created. When deleting a resource, thrown when the resource is not in the ACTIVE or FAILED state. + /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. + /// - `ResourceNotFoundException` : Thrown when accessing or deleting a resource that does not exist. + /// - `ServiceQuotaExceededException` : Thrown when you attempt to create more resources than the service allows based on service quotas. + /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. + public func updateLifecyclePolicy(input: UpdateLifecyclePolicyInput) async throws -> UpdateLifecyclePolicyOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "updateLifecyclePolicy") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "aoss") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "updateLifecyclePolicy") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.IdempotencyTokenMiddleware(keyPath: \.clientToken)) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "OpenSearchServerless.UpdateLifecyclePolicy")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "UpdateLifecyclePolicyRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.0")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Updates a security configuration for OpenSearch Serverless. For more information, see [SAML authentication for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html). /// /// - Parameter UpdateSecurityConfigInput : [no documentation found] diff --git a/Sources/Services/AWSOpenSearchServerless/OpenSearchServerlessClientProtocol.swift b/Sources/Services/AWSOpenSearchServerless/OpenSearchServerlessClientProtocol.swift index 90135df1bbe..b1b10ba55c1 100644 --- a/Sources/Services/AWSOpenSearchServerless/OpenSearchServerlessClientProtocol.swift +++ b/Sources/Services/AWSOpenSearchServerless/OpenSearchServerlessClientProtocol.swift @@ -16,6 +16,30 @@ public protocol OpenSearchServerlessClientProtocol { /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. func batchGetCollection(input: BatchGetCollectionInput) async throws -> BatchGetCollectionOutput + /// Returns a list of successful and failed retrievals for the OpenSearch Serverless indexes. For more information, see [Viewing data lifecycle policies](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-lifecycle.html#serverless-lifecycle-list). + /// + /// - Parameter BatchGetEffectiveLifecyclePolicyInput : [no documentation found] + /// + /// - Returns: `BatchGetEffectiveLifecyclePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. + /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. + func batchGetEffectiveLifecyclePolicy(input: BatchGetEffectiveLifecyclePolicyInput) async throws -> BatchGetEffectiveLifecyclePolicyOutput + /// Returns one or more configured OpenSearch Serverless lifecycle policies. For more information, see [Viewing data lifecycle policies](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-lifecycle.html#serverless-lifecycle-list). + /// + /// - Parameter BatchGetLifecyclePolicyInput : [no documentation found] + /// + /// - Returns: `BatchGetLifecyclePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. + /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. + func batchGetLifecyclePolicy(input: BatchGetLifecyclePolicyInput) async throws -> BatchGetLifecyclePolicyOutput /// Returns attributes for one or more VPC endpoints associated with the current account. For more information, see [Access Amazon OpenSearch Serverless using an interface endpoint](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html). /// /// - Parameter BatchGetVpcEndpointInput : [no documentation found] @@ -57,6 +81,20 @@ public protocol OpenSearchServerlessClientProtocol { /// - `ServiceQuotaExceededException` : Thrown when you attempt to create more resources than the service allows based on service quotas. /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. func createCollection(input: CreateCollectionInput) async throws -> CreateCollectionOutput + /// Creates a lifecyle policy to be applied to OpenSearch Serverless indexes. Lifecycle policies define the number of days or hours to retain the data on an OpenSearch Serverless index. For more information, see [Creating data lifecycle policies](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-lifecycle.html#serverless-lifecycle-create). + /// + /// - Parameter CreateLifecyclePolicyInput : [no documentation found] + /// + /// - Returns: `CreateLifecyclePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : When creating a resource, thrown when a resource with the same name already exists or is being created. When deleting a resource, thrown when the resource is not in the ACTIVE or FAILED state. + /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. + /// - `ServiceQuotaExceededException` : Thrown when you attempt to create more resources than the service allows based on service quotas. + /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. + func createLifecyclePolicy(input: CreateLifecyclePolicyInput) async throws -> CreateLifecyclePolicyOutput /// Specifies a security configuration for OpenSearch Serverless. For more information, see [SAML authentication for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html). /// /// - Parameter CreateSecurityConfigInput : [no documentation found] @@ -127,6 +165,20 @@ public protocol OpenSearchServerlessClientProtocol { /// - `ResourceNotFoundException` : Thrown when accessing or deleting a resource that does not exist. /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. func deleteCollection(input: DeleteCollectionInput) async throws -> DeleteCollectionOutput + /// Deletes an OpenSearch Serverless lifecycle policy. For more information, see [Deleting data lifecycle policies](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-lifecycle.html#serverless-lifecycle-delete). + /// + /// - Parameter DeleteLifecyclePolicyInput : [no documentation found] + /// + /// - Returns: `DeleteLifecyclePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : When creating a resource, thrown when a resource with the same name already exists or is being created. When deleting a resource, thrown when the resource is not in the ACTIVE or FAILED state. + /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. + /// - `ResourceNotFoundException` : Thrown when accessing or deleting a resource that does not exist. + /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. + func deleteLifecyclePolicy(input: DeleteLifecyclePolicyInput) async throws -> DeleteLifecyclePolicyOutput /// Deletes a security configuration for OpenSearch Serverless. For more information, see [SAML authentication for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html). /// /// - Parameter DeleteSecurityConfigInput : [no documentation found] @@ -255,6 +307,18 @@ public protocol OpenSearchServerlessClientProtocol { /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. func listCollections(input: ListCollectionsInput) async throws -> ListCollectionsOutput + /// Returns a list of OpenSearch Serverless lifecycle policies. For more information, see [Viewing data lifecycle policies](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-lifecycle.html#serverless-lifecycle-list). + /// + /// - Parameter ListLifecyclePoliciesInput : [no documentation found] + /// + /// - Returns: `ListLifecyclePoliciesOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. + /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. + func listLifecyclePolicies(input: ListLifecyclePoliciesInput) async throws -> ListLifecyclePoliciesOutput /// Returns information about configured OpenSearch Serverless security configurations. For more information, see [SAML authentication for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html). /// /// - Parameter ListSecurityConfigsInput : [no documentation found] @@ -372,6 +436,21 @@ public protocol OpenSearchServerlessClientProtocol { /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. func updateCollection(input: UpdateCollectionInput) async throws -> UpdateCollectionOutput + /// Updates an OpenSearch Serverless access policy. For more information, see [Updating data lifecycle policies](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-lifecycle.html#serverless-lifecycle-update). + /// + /// - Parameter UpdateLifecyclePolicyInput : [no documentation found] + /// + /// - Returns: `UpdateLifecyclePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : When creating a resource, thrown when a resource with the same name already exists or is being created. When deleting a resource, thrown when the resource is not in the ACTIVE or FAILED state. + /// - `InternalServerException` : Thrown when an error internal to the service occurs while processing a request. + /// - `ResourceNotFoundException` : Thrown when accessing or deleting a resource that does not exist. + /// - `ServiceQuotaExceededException` : Thrown when you attempt to create more resources than the service allows based on service quotas. + /// - `ValidationException` : Thrown when the HTTP request contains invalid input or is missing required input. + func updateLifecyclePolicy(input: UpdateLifecyclePolicyInput) async throws -> UpdateLifecyclePolicyOutput /// Updates a security configuration for OpenSearch Serverless. For more information, see [SAML authentication for Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-saml.html). /// /// - Parameter UpdateSecurityConfigInput : [no documentation found] diff --git a/Sources/Services/AWSOpenSearchServerless/models/Models.swift b/Sources/Services/AWSOpenSearchServerless/models/Models.swift index c195d5cc73b..a6add622c94 100644 --- a/Sources/Services/AWSOpenSearchServerless/models/Models.swift +++ b/Sources/Services/AWSOpenSearchServerless/models/Models.swift @@ -194,7 +194,7 @@ extension OpenSearchServerlessClientTypes { public var name: Swift.String? /// The version of the policy. public var policyVersion: Swift.String? - /// The type of access policy. Currently the only available type is data. + /// The type of access policy. Currently, the only available type is data. public var type: OpenSearchServerlessClientTypes.AccessPolicyType? public init( @@ -445,6 +445,286 @@ enum BatchGetCollectionOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension BatchGetEffectiveLifecyclePolicyInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case resourceIdentifiers + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let resourceIdentifiers = resourceIdentifiers { + var resourceIdentifiersContainer = encodeContainer.nestedUnkeyedContainer(forKey: .resourceIdentifiers) + for lifecyclepolicyresourceidentifier0 in resourceIdentifiers { + try resourceIdentifiersContainer.encode(lifecyclepolicyresourceidentifier0) + } + } + } +} + +extension BatchGetEffectiveLifecyclePolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct BatchGetEffectiveLifecyclePolicyInput: Swift.Equatable { + /// The unique identifiers of policy types and resource names. + /// This member is required. + public var resourceIdentifiers: [OpenSearchServerlessClientTypes.LifecyclePolicyResourceIdentifier]? + + public init( + resourceIdentifiers: [OpenSearchServerlessClientTypes.LifecyclePolicyResourceIdentifier]? = nil + ) + { + self.resourceIdentifiers = resourceIdentifiers + } +} + +struct BatchGetEffectiveLifecyclePolicyInputBody: Swift.Equatable { + let resourceIdentifiers: [OpenSearchServerlessClientTypes.LifecyclePolicyResourceIdentifier]? +} + +extension BatchGetEffectiveLifecyclePolicyInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case resourceIdentifiers + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let resourceIdentifiersContainer = try containerValues.decodeIfPresent([OpenSearchServerlessClientTypes.LifecyclePolicyResourceIdentifier?].self, forKey: .resourceIdentifiers) + var resourceIdentifiersDecoded0:[OpenSearchServerlessClientTypes.LifecyclePolicyResourceIdentifier]? = nil + if let resourceIdentifiersContainer = resourceIdentifiersContainer { + resourceIdentifiersDecoded0 = [OpenSearchServerlessClientTypes.LifecyclePolicyResourceIdentifier]() + for structure0 in resourceIdentifiersContainer { + if let structure0 = structure0 { + resourceIdentifiersDecoded0?.append(structure0) + } + } + } + resourceIdentifiers = resourceIdentifiersDecoded0 + } +} + +extension BatchGetEffectiveLifecyclePolicyOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: BatchGetEffectiveLifecyclePolicyOutputBody = try responseDecoder.decode(responseBody: data) + self.effectiveLifecyclePolicyDetails = output.effectiveLifecyclePolicyDetails + self.effectiveLifecyclePolicyErrorDetails = output.effectiveLifecyclePolicyErrorDetails + } else { + self.effectiveLifecyclePolicyDetails = nil + self.effectiveLifecyclePolicyErrorDetails = nil + } + } +} + +public struct BatchGetEffectiveLifecyclePolicyOutput: Swift.Equatable { + /// A list of lifecycle policies applied to the OpenSearch Serverless indexes. + public var effectiveLifecyclePolicyDetails: [OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyDetail]? + /// A list of resources for which retrieval failed. + public var effectiveLifecyclePolicyErrorDetails: [OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyErrorDetail]? + + public init( + effectiveLifecyclePolicyDetails: [OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyDetail]? = nil, + effectiveLifecyclePolicyErrorDetails: [OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyErrorDetail]? = nil + ) + { + self.effectiveLifecyclePolicyDetails = effectiveLifecyclePolicyDetails + self.effectiveLifecyclePolicyErrorDetails = effectiveLifecyclePolicyErrorDetails + } +} + +struct BatchGetEffectiveLifecyclePolicyOutputBody: Swift.Equatable { + let effectiveLifecyclePolicyDetails: [OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyDetail]? + let effectiveLifecyclePolicyErrorDetails: [OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyErrorDetail]? +} + +extension BatchGetEffectiveLifecyclePolicyOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case effectiveLifecyclePolicyDetails + case effectiveLifecyclePolicyErrorDetails + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let effectiveLifecyclePolicyDetailsContainer = try containerValues.decodeIfPresent([OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyDetail?].self, forKey: .effectiveLifecyclePolicyDetails) + var effectiveLifecyclePolicyDetailsDecoded0:[OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyDetail]? = nil + if let effectiveLifecyclePolicyDetailsContainer = effectiveLifecyclePolicyDetailsContainer { + effectiveLifecyclePolicyDetailsDecoded0 = [OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyDetail]() + for structure0 in effectiveLifecyclePolicyDetailsContainer { + if let structure0 = structure0 { + effectiveLifecyclePolicyDetailsDecoded0?.append(structure0) + } + } + } + effectiveLifecyclePolicyDetails = effectiveLifecyclePolicyDetailsDecoded0 + let effectiveLifecyclePolicyErrorDetailsContainer = try containerValues.decodeIfPresent([OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyErrorDetail?].self, forKey: .effectiveLifecyclePolicyErrorDetails) + var effectiveLifecyclePolicyErrorDetailsDecoded0:[OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyErrorDetail]? = nil + if let effectiveLifecyclePolicyErrorDetailsContainer = effectiveLifecyclePolicyErrorDetailsContainer { + effectiveLifecyclePolicyErrorDetailsDecoded0 = [OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyErrorDetail]() + for structure0 in effectiveLifecyclePolicyErrorDetailsContainer { + if let structure0 = structure0 { + effectiveLifecyclePolicyErrorDetailsDecoded0?.append(structure0) + } + } + } + effectiveLifecyclePolicyErrorDetails = effectiveLifecyclePolicyErrorDetailsDecoded0 + } +} + +enum BatchGetEffectiveLifecyclePolicyOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension BatchGetLifecyclePolicyInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case identifiers + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let identifiers = identifiers { + var identifiersContainer = encodeContainer.nestedUnkeyedContainer(forKey: .identifiers) + for lifecyclepolicyidentifier0 in identifiers { + try identifiersContainer.encode(lifecyclepolicyidentifier0) + } + } + } +} + +extension BatchGetLifecyclePolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct BatchGetLifecyclePolicyInput: Swift.Equatable { + /// The unique identifiers of policy types and policy names. + /// This member is required. + public var identifiers: [OpenSearchServerlessClientTypes.LifecyclePolicyIdentifier]? + + public init( + identifiers: [OpenSearchServerlessClientTypes.LifecyclePolicyIdentifier]? = nil + ) + { + self.identifiers = identifiers + } +} + +struct BatchGetLifecyclePolicyInputBody: Swift.Equatable { + let identifiers: [OpenSearchServerlessClientTypes.LifecyclePolicyIdentifier]? +} + +extension BatchGetLifecyclePolicyInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case identifiers + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let identifiersContainer = try containerValues.decodeIfPresent([OpenSearchServerlessClientTypes.LifecyclePolicyIdentifier?].self, forKey: .identifiers) + var identifiersDecoded0:[OpenSearchServerlessClientTypes.LifecyclePolicyIdentifier]? = nil + if let identifiersContainer = identifiersContainer { + identifiersDecoded0 = [OpenSearchServerlessClientTypes.LifecyclePolicyIdentifier]() + for structure0 in identifiersContainer { + if let structure0 = structure0 { + identifiersDecoded0?.append(structure0) + } + } + } + identifiers = identifiersDecoded0 + } +} + +extension BatchGetLifecyclePolicyOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: BatchGetLifecyclePolicyOutputBody = try responseDecoder.decode(responseBody: data) + self.lifecyclePolicyDetails = output.lifecyclePolicyDetails + self.lifecyclePolicyErrorDetails = output.lifecyclePolicyErrorDetails + } else { + self.lifecyclePolicyDetails = nil + self.lifecyclePolicyErrorDetails = nil + } + } +} + +public struct BatchGetLifecyclePolicyOutput: Swift.Equatable { + /// A list of lifecycle policies matched to the input policy name and policy type. + public var lifecyclePolicyDetails: [OpenSearchServerlessClientTypes.LifecyclePolicyDetail]? + /// A list of lifecycle policy names and policy types for which retrieval failed. + public var lifecyclePolicyErrorDetails: [OpenSearchServerlessClientTypes.LifecyclePolicyErrorDetail]? + + public init( + lifecyclePolicyDetails: [OpenSearchServerlessClientTypes.LifecyclePolicyDetail]? = nil, + lifecyclePolicyErrorDetails: [OpenSearchServerlessClientTypes.LifecyclePolicyErrorDetail]? = nil + ) + { + self.lifecyclePolicyDetails = lifecyclePolicyDetails + self.lifecyclePolicyErrorDetails = lifecyclePolicyErrorDetails + } +} + +struct BatchGetLifecyclePolicyOutputBody: Swift.Equatable { + let lifecyclePolicyDetails: [OpenSearchServerlessClientTypes.LifecyclePolicyDetail]? + let lifecyclePolicyErrorDetails: [OpenSearchServerlessClientTypes.LifecyclePolicyErrorDetail]? +} + +extension BatchGetLifecyclePolicyOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case lifecyclePolicyDetails + case lifecyclePolicyErrorDetails + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let lifecyclePolicyDetailsContainer = try containerValues.decodeIfPresent([OpenSearchServerlessClientTypes.LifecyclePolicyDetail?].self, forKey: .lifecyclePolicyDetails) + var lifecyclePolicyDetailsDecoded0:[OpenSearchServerlessClientTypes.LifecyclePolicyDetail]? = nil + if let lifecyclePolicyDetailsContainer = lifecyclePolicyDetailsContainer { + lifecyclePolicyDetailsDecoded0 = [OpenSearchServerlessClientTypes.LifecyclePolicyDetail]() + for structure0 in lifecyclePolicyDetailsContainer { + if let structure0 = structure0 { + lifecyclePolicyDetailsDecoded0?.append(structure0) + } + } + } + lifecyclePolicyDetails = lifecyclePolicyDetailsDecoded0 + let lifecyclePolicyErrorDetailsContainer = try containerValues.decodeIfPresent([OpenSearchServerlessClientTypes.LifecyclePolicyErrorDetail?].self, forKey: .lifecyclePolicyErrorDetails) + var lifecyclePolicyErrorDetailsDecoded0:[OpenSearchServerlessClientTypes.LifecyclePolicyErrorDetail]? = nil + if let lifecyclePolicyErrorDetailsContainer = lifecyclePolicyErrorDetailsContainer { + lifecyclePolicyErrorDetailsDecoded0 = [OpenSearchServerlessClientTypes.LifecyclePolicyErrorDetail]() + for structure0 in lifecyclePolicyErrorDetailsContainer { + if let structure0 = structure0 { + lifecyclePolicyErrorDetailsDecoded0?.append(structure0) + } + } + } + lifecyclePolicyErrorDetails = lifecyclePolicyErrorDetailsDecoded0 + } +} + +enum BatchGetLifecyclePolicyOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension BatchGetVpcEndpointInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case ids @@ -856,7 +1136,7 @@ extension OpenSearchServerlessClientTypes.CollectionFilters: Swift.Codable { } extension OpenSearchServerlessClientTypes { - /// List of filter keys that you can use for LIST, UPDATE, and DELETE requests to OpenSearch Serverless collections. + /// A list of filter keys that you can use for LIST, UPDATE, and DELETE requests to OpenSearch Serverless collections. public struct CollectionFilters: Swift.Equatable { /// The name of the collection. public var name: Swift.String? @@ -1505,12 +1785,12 @@ enum CreateCollectionOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension CreateSecurityConfigInput: Swift.Encodable { +extension CreateLifecyclePolicyInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken case description case name - case samlOptions + case policy case type } @@ -1525,8 +1805,8 @@ extension CreateSecurityConfigInput: Swift.Encodable { if let name = self.name { try encodeContainer.encode(name, forKey: .name) } - if let samlOptions = self.samlOptions { - try encodeContainer.encode(samlOptions, forKey: .samlOptions) + if let policy = self.policy { + try encodeContainer.encode(policy, forKey: .policy) } if let type = self.type { try encodeContainer.encode(type.rawValue, forKey: .type) @@ -1534,115 +1814,116 @@ extension CreateSecurityConfigInput: Swift.Encodable { } } -extension CreateSecurityConfigInput: ClientRuntime.URLPathProvider { +extension CreateLifecyclePolicyInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { return "/" } } -public struct CreateSecurityConfigInput: Swift.Equatable { - /// Unique, case-sensitive identifier to ensure idempotency of the request. +public struct CreateLifecyclePolicyInput: Swift.Equatable { + /// A unique, case-sensitive identifier to ensure idempotency of the request. public var clientToken: Swift.String? - /// A description of the security configuration. + /// A description of the lifecycle policy. public var description: Swift.String? - /// The name of the security configuration. + /// The name of the lifecycle policy. /// This member is required. public var name: Swift.String? - /// Describes SAML options in in the form of a key-value map. This field is required if you specify saml for the type parameter. - public var samlOptions: OpenSearchServerlessClientTypes.SamlConfigOptions? - /// The type of security configuration. + /// The JSON policy document to use as the content for the lifecycle policy. /// This member is required. - public var type: OpenSearchServerlessClientTypes.SecurityConfigType? + public var policy: Swift.String? + /// The type of lifecycle policy. + /// This member is required. + public var type: OpenSearchServerlessClientTypes.LifecyclePolicyType? public init( clientToken: Swift.String? = nil, description: Swift.String? = nil, name: Swift.String? = nil, - samlOptions: OpenSearchServerlessClientTypes.SamlConfigOptions? = nil, - type: OpenSearchServerlessClientTypes.SecurityConfigType? = nil + policy: Swift.String? = nil, + type: OpenSearchServerlessClientTypes.LifecyclePolicyType? = nil ) { self.clientToken = clientToken self.description = description self.name = name - self.samlOptions = samlOptions + self.policy = policy self.type = type } } -struct CreateSecurityConfigInputBody: Swift.Equatable { - let type: OpenSearchServerlessClientTypes.SecurityConfigType? +struct CreateLifecyclePolicyInputBody: Swift.Equatable { + let type: OpenSearchServerlessClientTypes.LifecyclePolicyType? let name: Swift.String? let description: Swift.String? - let samlOptions: OpenSearchServerlessClientTypes.SamlConfigOptions? + let policy: Swift.String? let clientToken: Swift.String? } -extension CreateSecurityConfigInputBody: Swift.Decodable { +extension CreateLifecyclePolicyInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken case description case name - case samlOptions + case policy case type } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.SecurityConfigType.self, forKey: .type) + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyType.self, forKey: .type) type = typeDecoded let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) name = nameDecoded let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) description = descriptionDecoded - let samlOptionsDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.SamlConfigOptions.self, forKey: .samlOptions) - samlOptions = samlOptionsDecoded + let policyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policy) + policy = policyDecoded let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) clientToken = clientTokenDecoded } } -extension CreateSecurityConfigOutput: ClientRuntime.HttpResponseBinding { +extension CreateLifecyclePolicyOutput: ClientRuntime.HttpResponseBinding { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { - let output: CreateSecurityConfigOutputBody = try responseDecoder.decode(responseBody: data) - self.securityConfigDetail = output.securityConfigDetail + let output: CreateLifecyclePolicyOutputBody = try responseDecoder.decode(responseBody: data) + self.lifecyclePolicyDetail = output.lifecyclePolicyDetail } else { - self.securityConfigDetail = nil + self.lifecyclePolicyDetail = nil } } } -public struct CreateSecurityConfigOutput: Swift.Equatable { - /// Details about the created security configuration. - public var securityConfigDetail: OpenSearchServerlessClientTypes.SecurityConfigDetail? +public struct CreateLifecyclePolicyOutput: Swift.Equatable { + /// Details about the created lifecycle policy. + public var lifecyclePolicyDetail: OpenSearchServerlessClientTypes.LifecyclePolicyDetail? public init( - securityConfigDetail: OpenSearchServerlessClientTypes.SecurityConfigDetail? = nil + lifecyclePolicyDetail: OpenSearchServerlessClientTypes.LifecyclePolicyDetail? = nil ) { - self.securityConfigDetail = securityConfigDetail + self.lifecyclePolicyDetail = lifecyclePolicyDetail } } -struct CreateSecurityConfigOutputBody: Swift.Equatable { - let securityConfigDetail: OpenSearchServerlessClientTypes.SecurityConfigDetail? +struct CreateLifecyclePolicyOutputBody: Swift.Equatable { + let lifecyclePolicyDetail: OpenSearchServerlessClientTypes.LifecyclePolicyDetail? } -extension CreateSecurityConfigOutputBody: Swift.Decodable { +extension CreateLifecyclePolicyOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case securityConfigDetail + case lifecyclePolicyDetail } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let securityConfigDetailDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.SecurityConfigDetail.self, forKey: .securityConfigDetail) - securityConfigDetail = securityConfigDetailDecoded + let lifecyclePolicyDetailDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyDetail.self, forKey: .lifecyclePolicyDetail) + lifecyclePolicyDetail = lifecyclePolicyDetailDecoded } } -enum CreateSecurityConfigOutputError: ClientRuntime.HttpResponseErrorBinding { +enum CreateLifecyclePolicyOutputError: ClientRuntime.HttpResponseErrorBinding { static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) let requestID = httpResponse.requestId @@ -1656,12 +1937,12 @@ enum CreateSecurityConfigOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension CreateSecurityPolicyInput: Swift.Encodable { +extension CreateSecurityConfigInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken case description case name - case policy + case samlOptions case type } @@ -1676,8 +1957,8 @@ extension CreateSecurityPolicyInput: Swift.Encodable { if let name = self.name { try encodeContainer.encode(name, forKey: .name) } - if let policy = self.policy { - try encodeContainer.encode(policy, forKey: .policy) + if let samlOptions = self.samlOptions { + try encodeContainer.encode(samlOptions, forKey: .samlOptions) } if let type = self.type { try encodeContainer.encode(type.rawValue, forKey: .type) @@ -1685,63 +1966,214 @@ extension CreateSecurityPolicyInput: Swift.Encodable { } } -extension CreateSecurityPolicyInput: ClientRuntime.URLPathProvider { +extension CreateSecurityConfigInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { return "/" } } -public struct CreateSecurityPolicyInput: Swift.Equatable { +public struct CreateSecurityConfigInput: Swift.Equatable { /// Unique, case-sensitive identifier to ensure idempotency of the request. public var clientToken: Swift.String? - /// A description of the policy. Typically used to store information about the permissions defined in the policy. + /// A description of the security configuration. public var description: Swift.String? - /// The name of the policy. + /// The name of the security configuration. /// This member is required. public var name: Swift.String? - /// The JSON policy document to use as the content for the new policy. - /// This member is required. - public var policy: Swift.String? - /// The type of security policy. + /// Describes SAML options in in the form of a key-value map. This field is required if you specify saml for the type parameter. + public var samlOptions: OpenSearchServerlessClientTypes.SamlConfigOptions? + /// The type of security configuration. /// This member is required. - public var type: OpenSearchServerlessClientTypes.SecurityPolicyType? + public var type: OpenSearchServerlessClientTypes.SecurityConfigType? public init( clientToken: Swift.String? = nil, description: Swift.String? = nil, name: Swift.String? = nil, - policy: Swift.String? = nil, - type: OpenSearchServerlessClientTypes.SecurityPolicyType? = nil + samlOptions: OpenSearchServerlessClientTypes.SamlConfigOptions? = nil, + type: OpenSearchServerlessClientTypes.SecurityConfigType? = nil ) { self.clientToken = clientToken self.description = description self.name = name - self.policy = policy + self.samlOptions = samlOptions self.type = type } } -struct CreateSecurityPolicyInputBody: Swift.Equatable { - let type: OpenSearchServerlessClientTypes.SecurityPolicyType? +struct CreateSecurityConfigInputBody: Swift.Equatable { + let type: OpenSearchServerlessClientTypes.SecurityConfigType? let name: Swift.String? let description: Swift.String? - let policy: Swift.String? + let samlOptions: OpenSearchServerlessClientTypes.SamlConfigOptions? let clientToken: Swift.String? } -extension CreateSecurityPolicyInputBody: Swift.Decodable { +extension CreateSecurityConfigInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken case description case name - case policy + case samlOptions case type } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.SecurityPolicyType.self, forKey: .type) + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.SecurityConfigType.self, forKey: .type) + type = typeDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let samlOptionsDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.SamlConfigOptions.self, forKey: .samlOptions) + samlOptions = samlOptionsDecoded + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + } +} + +extension CreateSecurityConfigOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: CreateSecurityConfigOutputBody = try responseDecoder.decode(responseBody: data) + self.securityConfigDetail = output.securityConfigDetail + } else { + self.securityConfigDetail = nil + } + } +} + +public struct CreateSecurityConfigOutput: Swift.Equatable { + /// Details about the created security configuration. + public var securityConfigDetail: OpenSearchServerlessClientTypes.SecurityConfigDetail? + + public init( + securityConfigDetail: OpenSearchServerlessClientTypes.SecurityConfigDetail? = nil + ) + { + self.securityConfigDetail = securityConfigDetail + } +} + +struct CreateSecurityConfigOutputBody: Swift.Equatable { + let securityConfigDetail: OpenSearchServerlessClientTypes.SecurityConfigDetail? +} + +extension CreateSecurityConfigOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case securityConfigDetail + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let securityConfigDetailDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.SecurityConfigDetail.self, forKey: .securityConfigDetail) + securityConfigDetail = securityConfigDetailDecoded + } +} + +enum CreateSecurityConfigOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceQuotaExceededException": return try await ServiceQuotaExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension CreateSecurityPolicyInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case description + case name + case policy + case type + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let policy = self.policy { + try encodeContainer.encode(policy, forKey: .policy) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + } +} + +extension CreateSecurityPolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct CreateSecurityPolicyInput: Swift.Equatable { + /// Unique, case-sensitive identifier to ensure idempotency of the request. + public var clientToken: Swift.String? + /// A description of the policy. Typically used to store information about the permissions defined in the policy. + public var description: Swift.String? + /// The name of the policy. + /// This member is required. + public var name: Swift.String? + /// The JSON policy document to use as the content for the new policy. + /// This member is required. + public var policy: Swift.String? + /// The type of security policy. + /// This member is required. + public var type: OpenSearchServerlessClientTypes.SecurityPolicyType? + + public init( + clientToken: Swift.String? = nil, + description: Swift.String? = nil, + name: Swift.String? = nil, + policy: Swift.String? = nil, + type: OpenSearchServerlessClientTypes.SecurityPolicyType? = nil + ) + { + self.clientToken = clientToken + self.description = description + self.name = name + self.policy = policy + self.type = type + } +} + +struct CreateSecurityPolicyInputBody: Swift.Equatable { + let type: OpenSearchServerlessClientTypes.SecurityPolicyType? + let name: Swift.String? + let description: Swift.String? + let policy: Swift.String? + let clientToken: Swift.String? +} + +extension CreateSecurityPolicyInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case description + case name + case policy + case type + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.SecurityPolicyType.self, forKey: .type) type = typeDecoded let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) name = nameDecoded @@ -2305,6 +2737,103 @@ enum DeleteCollectionOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DeleteLifecyclePolicyInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case name + case type + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + } +} + +extension DeleteLifecyclePolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct DeleteLifecyclePolicyInput: Swift.Equatable { + /// Unique, case-sensitive identifier to ensure idempotency of the request. + public var clientToken: Swift.String? + /// The name of the policy to delete. + /// This member is required. + public var name: Swift.String? + /// The type of lifecycle policy. + /// This member is required. + public var type: OpenSearchServerlessClientTypes.LifecyclePolicyType? + + public init( + clientToken: Swift.String? = nil, + name: Swift.String? = nil, + type: OpenSearchServerlessClientTypes.LifecyclePolicyType? = nil + ) + { + self.clientToken = clientToken + self.name = name + self.type = type + } +} + +struct DeleteLifecyclePolicyInputBody: Swift.Equatable { + let type: OpenSearchServerlessClientTypes.LifecyclePolicyType? + let name: Swift.String? + let clientToken: Swift.String? +} + +extension DeleteLifecyclePolicyInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case name + case type + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyType.self, forKey: .type) + type = typeDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + } +} + +extension DeleteLifecyclePolicyOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct DeleteLifecyclePolicyOutput: Swift.Equatable { + + public init() { } +} + +enum DeleteLifecyclePolicyOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension DeleteSecurityConfigInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken @@ -2655,34 +3184,184 @@ enum DeleteVpcEndpointOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension GetAccessPolicyInput: Swift.Encodable { +extension OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyDetail: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case name + case noMinRetentionPeriod + case policyName + case resource + case resourceType + case retentionPeriod case type } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let name = self.name { - try encodeContainer.encode(name, forKey: .name) + if let noMinRetentionPeriod = self.noMinRetentionPeriod { + try encodeContainer.encode(noMinRetentionPeriod, forKey: .noMinRetentionPeriod) + } + if let policyName = self.policyName { + try encodeContainer.encode(policyName, forKey: .policyName) + } + if let resource = self.resource { + try encodeContainer.encode(resource, forKey: .resource) + } + if let resourceType = self.resourceType { + try encodeContainer.encode(resourceType.rawValue, forKey: .resourceType) + } + if let retentionPeriod = self.retentionPeriod { + try encodeContainer.encode(retentionPeriod, forKey: .retentionPeriod) } if let type = self.type { try encodeContainer.encode(type.rawValue, forKey: .type) } } -} -extension GetAccessPolicyInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - return "/" + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyType.self, forKey: .type) + type = typeDecoded + let resourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resource) + resource = resourceDecoded + let policyNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policyName) + policyName = policyNameDecoded + let resourceTypeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.ResourceType.self, forKey: .resourceType) + resourceType = resourceTypeDecoded + let retentionPeriodDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .retentionPeriod) + retentionPeriod = retentionPeriodDecoded + let noMinRetentionPeriodDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .noMinRetentionPeriod) + noMinRetentionPeriod = noMinRetentionPeriodDecoded } } -public struct GetAccessPolicyInput: Swift.Equatable { +extension OpenSearchServerlessClientTypes { + /// Error information for an OpenSearch Serverless request. + public struct EffectiveLifecyclePolicyDetail: Swift.Equatable { + /// The minimum number of index retention days set. That is an optional param that will return as true if the minimum number of days or hours is not set to a index resource. + public var noMinRetentionPeriod: Swift.Bool? + /// The name of the lifecycle policy. + public var policyName: Swift.String? + /// The name of the OpenSearch Serverless index resource. + public var resource: Swift.String? + /// The type of OpenSearch Serverless resource. Currently, the only supported resource is index. + public var resourceType: OpenSearchServerlessClientTypes.ResourceType? + /// The minimum number of index retention in days or hours. This is an optional parameter that will return only if it’s set. + public var retentionPeriod: Swift.String? + /// The type of lifecycle policy. + public var type: OpenSearchServerlessClientTypes.LifecyclePolicyType? + + public init( + noMinRetentionPeriod: Swift.Bool? = nil, + policyName: Swift.String? = nil, + resource: Swift.String? = nil, + resourceType: OpenSearchServerlessClientTypes.ResourceType? = nil, + retentionPeriod: Swift.String? = nil, + type: OpenSearchServerlessClientTypes.LifecyclePolicyType? = nil + ) + { + self.noMinRetentionPeriod = noMinRetentionPeriod + self.policyName = policyName + self.resource = resource + self.resourceType = resourceType + self.retentionPeriod = retentionPeriod + self.type = type + } + } + +} + +extension OpenSearchServerlessClientTypes.EffectiveLifecyclePolicyErrorDetail: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case errorCode + case errorMessage + case resource + case type + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let errorCode = self.errorCode { + try encodeContainer.encode(errorCode, forKey: .errorCode) + } + if let errorMessage = self.errorMessage { + try encodeContainer.encode(errorMessage, forKey: .errorMessage) + } + if let resource = self.resource { + try encodeContainer.encode(resource, forKey: .resource) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyType.self, forKey: .type) + type = typeDecoded + let resourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resource) + resource = resourceDecoded + let errorMessageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorMessage) + errorMessage = errorMessageDecoded + let errorCodeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorCode) + errorCode = errorCodeDecoded + } +} + +extension OpenSearchServerlessClientTypes { + /// Error information for an OpenSearch Serverless request. + public struct EffectiveLifecyclePolicyErrorDetail: Swift.Equatable { + /// The error code for the request. + public var errorCode: Swift.String? + /// A description of the error. For example, The specified Index resource is not found. + public var errorMessage: Swift.String? + /// The name of OpenSearch Serverless index resource. + public var resource: Swift.String? + /// The type of lifecycle policy. + public var type: OpenSearchServerlessClientTypes.LifecyclePolicyType? + + public init( + errorCode: Swift.String? = nil, + errorMessage: Swift.String? = nil, + resource: Swift.String? = nil, + type: OpenSearchServerlessClientTypes.LifecyclePolicyType? = nil + ) + { + self.errorCode = errorCode + self.errorMessage = errorMessage + self.resource = resource + self.type = type + } + } + +} + +extension GetAccessPolicyInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case name + case type + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + } +} + +extension GetAccessPolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct GetAccessPolicyInput: Swift.Equatable { /// The name of the access policy. /// This member is required. public var name: Swift.String? - /// Tye type of policy. Currently the only supported value is data. + /// Tye type of policy. Currently, the only supported value is data. /// This member is required. public var type: OpenSearchServerlessClientTypes.AccessPolicyType? @@ -2883,11 +3562,13 @@ extension GetPoliciesStatsOutput: ClientRuntime.HttpResponseBinding { let responseDecoder = decoder { let output: GetPoliciesStatsOutputBody = try responseDecoder.decode(responseBody: data) self.accessPolicyStats = output.accessPolicyStats + self.lifecyclePolicyStats = output.lifecyclePolicyStats self.securityConfigStats = output.securityConfigStats self.securityPolicyStats = output.securityPolicyStats self.totalPolicyCount = output.totalPolicyCount } else { self.accessPolicyStats = nil + self.lifecyclePolicyStats = nil self.securityConfigStats = nil self.securityPolicyStats = nil self.totalPolicyCount = nil @@ -2898,6 +3579,8 @@ extension GetPoliciesStatsOutput: ClientRuntime.HttpResponseBinding { public struct GetPoliciesStatsOutput: Swift.Equatable { /// Information about the data access policies in your account. public var accessPolicyStats: OpenSearchServerlessClientTypes.AccessPolicyStats? + /// Information about the lifecycle policies in your account. + public var lifecyclePolicyStats: OpenSearchServerlessClientTypes.LifecyclePolicyStats? /// Information about the security configurations in your account. public var securityConfigStats: OpenSearchServerlessClientTypes.SecurityConfigStats? /// Information about the security policies in your account. @@ -2907,12 +3590,14 @@ public struct GetPoliciesStatsOutput: Swift.Equatable { public init( accessPolicyStats: OpenSearchServerlessClientTypes.AccessPolicyStats? = nil, + lifecyclePolicyStats: OpenSearchServerlessClientTypes.LifecyclePolicyStats? = nil, securityConfigStats: OpenSearchServerlessClientTypes.SecurityConfigStats? = nil, securityPolicyStats: OpenSearchServerlessClientTypes.SecurityPolicyStats? = nil, totalPolicyCount: Swift.Int? = nil ) { self.accessPolicyStats = accessPolicyStats + self.lifecyclePolicyStats = lifecyclePolicyStats self.securityConfigStats = securityConfigStats self.securityPolicyStats = securityPolicyStats self.totalPolicyCount = totalPolicyCount @@ -2923,12 +3608,14 @@ struct GetPoliciesStatsOutputBody: Swift.Equatable { let accessPolicyStats: OpenSearchServerlessClientTypes.AccessPolicyStats? let securityPolicyStats: OpenSearchServerlessClientTypes.SecurityPolicyStats? let securityConfigStats: OpenSearchServerlessClientTypes.SecurityConfigStats? + let lifecyclePolicyStats: OpenSearchServerlessClientTypes.LifecyclePolicyStats? let totalPolicyCount: Swift.Int? } extension GetPoliciesStatsOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case accessPolicyStats = "AccessPolicyStats" + case lifecyclePolicyStats = "LifecyclePolicyStats" case securityConfigStats = "SecurityConfigStats" case securityPolicyStats = "SecurityPolicyStats" case totalPolicyCount = "TotalPolicyCount" @@ -2942,6 +3629,8 @@ extension GetPoliciesStatsOutputBody: Swift.Decodable { securityPolicyStats = securityPolicyStatsDecoded let securityConfigStatsDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.SecurityConfigStats.self, forKey: .securityConfigStats) securityConfigStats = securityConfigStatsDecoded + let lifecyclePolicyStatsDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyStats.self, forKey: .lifecyclePolicyStats) + lifecyclePolicyStats = lifecyclePolicyStatsDecoded let totalPolicyCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .totalPolicyCount) totalPolicyCount = totalPolicyCountDecoded } @@ -3228,162 +3917,708 @@ extension InternalServerExceptionBody: Swift.Decodable { } } -extension ListAccessPoliciesInput: Swift.Encodable { +extension OpenSearchServerlessClientTypes.LifecyclePolicyDetail: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case maxResults - case nextToken - case resource + case createdDate + case description + case lastModifiedDate + case name + case policy + case policyVersion case type } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let maxResults = self.maxResults { - try encodeContainer.encode(maxResults, forKey: .maxResults) + if let createdDate = self.createdDate { + try encodeContainer.encode(createdDate, forKey: .createdDate) } - if let nextToken = self.nextToken { - try encodeContainer.encode(nextToken, forKey: .nextToken) + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) } - if let resource = resource { - var resourceContainer = encodeContainer.nestedUnkeyedContainer(forKey: .resource) - for resource0 in resource { - try resourceContainer.encode(resource0) - } + if let lastModifiedDate = self.lastModifiedDate { + try encodeContainer.encode(lastModifiedDate, forKey: .lastModifiedDate) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let policy = self.policy { + try encodeContainer.encode(policy, forKey: .policy) + } + if let policyVersion = self.policyVersion { + try encodeContainer.encode(policyVersion, forKey: .policyVersion) } if let type = self.type { try encodeContainer.encode(type.rawValue, forKey: .type) } } -} -extension ListAccessPoliciesInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - return "/" + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyType.self, forKey: .type) + type = typeDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let policyVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policyVersion) + policyVersion = policyVersionDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let policyDecoded = try containerValues.decodeIfPresent(ClientRuntime.Document.self, forKey: .policy) + policy = policyDecoded + let createdDateDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .createdDate) + createdDate = createdDateDecoded + let lastModifiedDateDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .lastModifiedDate) + lastModifiedDate = lastModifiedDateDecoded } } -public struct ListAccessPoliciesInput: Swift.Equatable { - /// An optional parameter that specifies the maximum number of results to return. You can use nextToken to get the next page of results. The default is 20. - public var maxResults: Swift.Int? - /// If your initial ListAccessPolicies operation returns a nextToken, you can include the returned nextToken in subsequent ListAccessPolicies operations, which returns results in the next page. - public var nextToken: Swift.String? - /// Resource filters (can be collections or indexes) that policies can apply to. - public var resource: [Swift.String]? - /// The type of access policy. - /// This member is required. - public var type: OpenSearchServerlessClientTypes.AccessPolicyType? +extension OpenSearchServerlessClientTypes { + /// Details about an OpenSearch Serverless lifecycle policy. + public struct LifecyclePolicyDetail: Swift.Equatable { + /// The date the lifecycle policy was created. + public var createdDate: Swift.Int? + /// The description of the lifecycle policy. + public var description: Swift.String? + /// The timestamp of when the lifecycle policy was last modified. + public var lastModifiedDate: Swift.Int? + /// The name of the lifecycle policy. + public var name: Swift.String? + /// The JSON policy document without any whitespaces. + public var policy: ClientRuntime.Document? + /// The version of the lifecycle policy. + public var policyVersion: Swift.String? + /// The type of lifecycle policy. + public var type: OpenSearchServerlessClientTypes.LifecyclePolicyType? - public init( - maxResults: Swift.Int? = nil, - nextToken: Swift.String? = nil, - resource: [Swift.String]? = nil, - type: OpenSearchServerlessClientTypes.AccessPolicyType? = nil - ) - { - self.maxResults = maxResults - self.nextToken = nextToken - self.resource = resource - self.type = type + public init( + createdDate: Swift.Int? = nil, + description: Swift.String? = nil, + lastModifiedDate: Swift.Int? = nil, + name: Swift.String? = nil, + policy: ClientRuntime.Document? = nil, + policyVersion: Swift.String? = nil, + type: OpenSearchServerlessClientTypes.LifecyclePolicyType? = nil + ) + { + self.createdDate = createdDate + self.description = description + self.lastModifiedDate = lastModifiedDate + self.name = name + self.policy = policy + self.policyVersion = policyVersion + self.type = type + } } -} -struct ListAccessPoliciesInputBody: Swift.Equatable { - let type: OpenSearchServerlessClientTypes.AccessPolicyType? - let resource: [Swift.String]? - let nextToken: Swift.String? - let maxResults: Swift.Int? } -extension ListAccessPoliciesInputBody: Swift.Decodable { +extension OpenSearchServerlessClientTypes.LifecyclePolicyErrorDetail: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case maxResults - case nextToken - case resource + case errorCode + case errorMessage + case name case type } + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let errorCode = self.errorCode { + try encodeContainer.encode(errorCode, forKey: .errorCode) + } + if let errorMessage = self.errorMessage { + try encodeContainer.encode(errorMessage, forKey: .errorMessage) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + } + public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.AccessPolicyType.self, forKey: .type) + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyType.self, forKey: .type) type = typeDecoded - let resourceContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .resource) - var resourceDecoded0:[Swift.String]? = nil - if let resourceContainer = resourceContainer { - resourceDecoded0 = [Swift.String]() - for string0 in resourceContainer { - if let string0 = string0 { - resourceDecoded0?.append(string0) - } - } + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let errorMessageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorMessage) + errorMessage = errorMessageDecoded + let errorCodeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorCode) + errorCode = errorCodeDecoded + } +} + +extension OpenSearchServerlessClientTypes { + /// Error information for an OpenSearch Serverless request. + public struct LifecyclePolicyErrorDetail: Swift.Equatable { + /// The error code for the request. For example, NOT_FOUND. + public var errorCode: Swift.String? + /// A description of the error. For example, The specified Lifecycle Policy is not found. + public var errorMessage: Swift.String? + /// The name of the lifecycle policy. + public var name: Swift.String? + /// The type of lifecycle policy. + public var type: OpenSearchServerlessClientTypes.LifecyclePolicyType? + + public init( + errorCode: Swift.String? = nil, + errorMessage: Swift.String? = nil, + name: Swift.String? = nil, + type: OpenSearchServerlessClientTypes.LifecyclePolicyType? = nil + ) + { + self.errorCode = errorCode + self.errorMessage = errorMessage + self.name = name + self.type = type } - resource = resourceDecoded0 - let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) - nextToken = nextTokenDecoded - let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) - maxResults = maxResultsDecoded } + } -extension ListAccessPoliciesOutput: ClientRuntime.HttpResponseBinding { +extension OpenSearchServerlessClientTypes.LifecyclePolicyIdentifier: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case name + case type + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyType.self, forKey: .type) + type = typeDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + } +} + +extension OpenSearchServerlessClientTypes { + /// The unique identifiers of policy types and policy names. + public struct LifecyclePolicyIdentifier: Swift.Equatable { + /// The name of the lifecycle policy. + /// This member is required. + public var name: Swift.String? + /// The type of lifecycle policy. + /// This member is required. + public var type: OpenSearchServerlessClientTypes.LifecyclePolicyType? + + public init( + name: Swift.String? = nil, + type: OpenSearchServerlessClientTypes.LifecyclePolicyType? = nil + ) + { + self.name = name + self.type = type + } + } + +} + +extension OpenSearchServerlessClientTypes.LifecyclePolicyResourceIdentifier: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case resource + case type + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let resource = self.resource { + try encodeContainer.encode(resource, forKey: .resource) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyType.self, forKey: .type) + type = typeDecoded + let resourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resource) + resource = resourceDecoded + } +} + +extension OpenSearchServerlessClientTypes { + /// The unique identifiers of policy types and resource names. + public struct LifecyclePolicyResourceIdentifier: Swift.Equatable { + /// The name of the OpenSearch Serverless ilndex resource. + /// This member is required. + public var resource: Swift.String? + /// The type of lifecycle policy. + /// This member is required. + public var type: OpenSearchServerlessClientTypes.LifecyclePolicyType? + + public init( + resource: Swift.String? = nil, + type: OpenSearchServerlessClientTypes.LifecyclePolicyType? = nil + ) + { + self.resource = resource + self.type = type + } + } + +} + +extension OpenSearchServerlessClientTypes.LifecyclePolicyStats: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case retentionPolicyCount = "RetentionPolicyCount" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let retentionPolicyCount = self.retentionPolicyCount { + try encodeContainer.encode(retentionPolicyCount, forKey: .retentionPolicyCount) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let retentionPolicyCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .retentionPolicyCount) + retentionPolicyCount = retentionPolicyCountDecoded + } +} + +extension OpenSearchServerlessClientTypes { + /// Statistics for an OpenSearch Serverless lifecycle policy. + public struct LifecyclePolicyStats: Swift.Equatable { + /// The number of retention lifecycle policies in the current account. + public var retentionPolicyCount: Swift.Int? + + public init( + retentionPolicyCount: Swift.Int? = nil + ) + { + self.retentionPolicyCount = retentionPolicyCount + } + } + +} + +extension OpenSearchServerlessClientTypes.LifecyclePolicySummary: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case createdDate + case description + case lastModifiedDate + case name + case policyVersion + case type + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let createdDate = self.createdDate { + try encodeContainer.encode(createdDate, forKey: .createdDate) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let lastModifiedDate = self.lastModifiedDate { + try encodeContainer.encode(lastModifiedDate, forKey: .lastModifiedDate) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let policyVersion = self.policyVersion { + try encodeContainer.encode(policyVersion, forKey: .policyVersion) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyType.self, forKey: .type) + type = typeDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let policyVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policyVersion) + policyVersion = policyVersionDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let createdDateDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .createdDate) + createdDate = createdDateDecoded + let lastModifiedDateDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .lastModifiedDate) + lastModifiedDate = lastModifiedDateDecoded + } +} + +extension OpenSearchServerlessClientTypes { + /// A summary of the lifecycle policy. + public struct LifecyclePolicySummary: Swift.Equatable { + /// The Epoch time when the lifecycle policy was created. + public var createdDate: Swift.Int? + /// The description of the lifecycle policy. + public var description: Swift.String? + /// The date and time when the lifecycle policy was last modified. + public var lastModifiedDate: Swift.Int? + /// The name of the lifecycle policy. + public var name: Swift.String? + /// The version of the lifecycle policy. + public var policyVersion: Swift.String? + /// The type of lifecycle policy. + public var type: OpenSearchServerlessClientTypes.LifecyclePolicyType? + + public init( + createdDate: Swift.Int? = nil, + description: Swift.String? = nil, + lastModifiedDate: Swift.Int? = nil, + name: Swift.String? = nil, + policyVersion: Swift.String? = nil, + type: OpenSearchServerlessClientTypes.LifecyclePolicyType? = nil + ) + { + self.createdDate = createdDate + self.description = description + self.lastModifiedDate = lastModifiedDate + self.name = name + self.policyVersion = policyVersion + self.type = type + } + } + +} + +extension OpenSearchServerlessClientTypes { + public enum LifecyclePolicyType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + /// retention policy type + case retention + case sdkUnknown(Swift.String) + + public static var allCases: [LifecyclePolicyType] { + return [ + .retention, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .retention: return "retention" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = LifecyclePolicyType(rawValue: rawValue) ?? LifecyclePolicyType.sdkUnknown(rawValue) + } + } +} + +extension ListAccessPoliciesInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults + case nextToken + case resource + case type + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let maxResults = self.maxResults { + try encodeContainer.encode(maxResults, forKey: .maxResults) + } + if let nextToken = self.nextToken { + try encodeContainer.encode(nextToken, forKey: .nextToken) + } + if let resource = resource { + var resourceContainer = encodeContainer.nestedUnkeyedContainer(forKey: .resource) + for resource0 in resource { + try resourceContainer.encode(resource0) + } + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + } +} + +extension ListAccessPoliciesInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct ListAccessPoliciesInput: Swift.Equatable { + /// An optional parameter that specifies the maximum number of results to return. You can use nextToken to get the next page of results. The default is 20. + public var maxResults: Swift.Int? + /// If your initial ListAccessPolicies operation returns a nextToken, you can include the returned nextToken in subsequent ListAccessPolicies operations, which returns results in the next page. + public var nextToken: Swift.String? + /// Resource filters (can be collections or indexes) that policies can apply to. + public var resource: [Swift.String]? + /// The type of access policy. + /// This member is required. + public var type: OpenSearchServerlessClientTypes.AccessPolicyType? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil, + resource: [Swift.String]? = nil, + type: OpenSearchServerlessClientTypes.AccessPolicyType? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + self.resource = resource + self.type = type + } +} + +struct ListAccessPoliciesInputBody: Swift.Equatable { + let type: OpenSearchServerlessClientTypes.AccessPolicyType? + let resource: [Swift.String]? + let nextToken: Swift.String? + let maxResults: Swift.Int? +} + +extension ListAccessPoliciesInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults + case nextToken + case resource + case type + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.AccessPolicyType.self, forKey: .type) + type = typeDecoded + let resourceContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .resource) + var resourceDecoded0:[Swift.String]? = nil + if let resourceContainer = resourceContainer { + resourceDecoded0 = [Swift.String]() + for string0 in resourceContainer { + if let string0 = string0 { + resourceDecoded0?.append(string0) + } + } + } + resource = resourceDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) + maxResults = maxResultsDecoded + } +} + +extension ListAccessPoliciesOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ListAccessPoliciesOutputBody = try responseDecoder.decode(responseBody: data) + self.accessPolicySummaries = output.accessPolicySummaries + self.nextToken = output.nextToken + } else { + self.accessPolicySummaries = nil + self.nextToken = nil + } + } +} + +public struct ListAccessPoliciesOutput: Swift.Equatable { + /// Details about the requested access policies. + public var accessPolicySummaries: [OpenSearchServerlessClientTypes.AccessPolicySummary]? + /// When nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. + public var nextToken: Swift.String? + + public init( + accessPolicySummaries: [OpenSearchServerlessClientTypes.AccessPolicySummary]? = nil, + nextToken: Swift.String? = nil + ) + { + self.accessPolicySummaries = accessPolicySummaries + self.nextToken = nextToken + } +} + +struct ListAccessPoliciesOutputBody: Swift.Equatable { + let accessPolicySummaries: [OpenSearchServerlessClientTypes.AccessPolicySummary]? + let nextToken: Swift.String? +} + +extension ListAccessPoliciesOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accessPolicySummaries + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let accessPolicySummariesContainer = try containerValues.decodeIfPresent([OpenSearchServerlessClientTypes.AccessPolicySummary?].self, forKey: .accessPolicySummaries) + var accessPolicySummariesDecoded0:[OpenSearchServerlessClientTypes.AccessPolicySummary]? = nil + if let accessPolicySummariesContainer = accessPolicySummariesContainer { + accessPolicySummariesDecoded0 = [OpenSearchServerlessClientTypes.AccessPolicySummary]() + for structure0 in accessPolicySummariesContainer { + if let structure0 = structure0 { + accessPolicySummariesDecoded0?.append(structure0) + } + } + } + accessPolicySummaries = accessPolicySummariesDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListAccessPoliciesOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + +extension ListCollectionsInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case collectionFilters + case maxResults + case nextToken + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let collectionFilters = self.collectionFilters { + try encodeContainer.encode(collectionFilters, forKey: .collectionFilters) + } + if let maxResults = self.maxResults { + try encodeContainer.encode(maxResults, forKey: .maxResults) + } + if let nextToken = self.nextToken { + try encodeContainer.encode(nextToken, forKey: .nextToken) + } + } +} + +extension ListCollectionsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct ListCollectionsInput: Swift.Equatable { + /// A list of filter names and values that you can use for requests. + public var collectionFilters: OpenSearchServerlessClientTypes.CollectionFilters? + /// The maximum number of results to return. Default is 20. You can use nextToken to get the next page of results. + public var maxResults: Swift.Int? + /// If your initial ListCollections operation returns a nextToken, you can include the returned nextToken in subsequent ListCollections operations, which returns results in the next page. + public var nextToken: Swift.String? + + public init( + collectionFilters: OpenSearchServerlessClientTypes.CollectionFilters? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.collectionFilters = collectionFilters + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListCollectionsInputBody: Swift.Equatable { + let collectionFilters: OpenSearchServerlessClientTypes.CollectionFilters? + let nextToken: Swift.String? + let maxResults: Swift.Int? +} + +extension ListCollectionsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case collectionFilters + case maxResults + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let collectionFiltersDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.CollectionFilters.self, forKey: .collectionFilters) + collectionFilters = collectionFiltersDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) + maxResults = maxResultsDecoded + } +} + +extension ListCollectionsOutput: ClientRuntime.HttpResponseBinding { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { - let output: ListAccessPoliciesOutputBody = try responseDecoder.decode(responseBody: data) - self.accessPolicySummaries = output.accessPolicySummaries + let output: ListCollectionsOutputBody = try responseDecoder.decode(responseBody: data) + self.collectionSummaries = output.collectionSummaries self.nextToken = output.nextToken } else { - self.accessPolicySummaries = nil + self.collectionSummaries = nil self.nextToken = nil } } } -public struct ListAccessPoliciesOutput: Swift.Equatable { - /// Details about the requested access policies. - public var accessPolicySummaries: [OpenSearchServerlessClientTypes.AccessPolicySummary]? +public struct ListCollectionsOutput: Swift.Equatable { + /// Details about each collection. + public var collectionSummaries: [OpenSearchServerlessClientTypes.CollectionSummary]? /// When nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. public var nextToken: Swift.String? public init( - accessPolicySummaries: [OpenSearchServerlessClientTypes.AccessPolicySummary]? = nil, + collectionSummaries: [OpenSearchServerlessClientTypes.CollectionSummary]? = nil, nextToken: Swift.String? = nil ) { - self.accessPolicySummaries = accessPolicySummaries + self.collectionSummaries = collectionSummaries self.nextToken = nextToken } } -struct ListAccessPoliciesOutputBody: Swift.Equatable { - let accessPolicySummaries: [OpenSearchServerlessClientTypes.AccessPolicySummary]? +struct ListCollectionsOutputBody: Swift.Equatable { + let collectionSummaries: [OpenSearchServerlessClientTypes.CollectionSummary]? let nextToken: Swift.String? } -extension ListAccessPoliciesOutputBody: Swift.Decodable { +extension ListCollectionsOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case accessPolicySummaries + case collectionSummaries case nextToken } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let accessPolicySummariesContainer = try containerValues.decodeIfPresent([OpenSearchServerlessClientTypes.AccessPolicySummary?].self, forKey: .accessPolicySummaries) - var accessPolicySummariesDecoded0:[OpenSearchServerlessClientTypes.AccessPolicySummary]? = nil - if let accessPolicySummariesContainer = accessPolicySummariesContainer { - accessPolicySummariesDecoded0 = [OpenSearchServerlessClientTypes.AccessPolicySummary]() - for structure0 in accessPolicySummariesContainer { + let collectionSummariesContainer = try containerValues.decodeIfPresent([OpenSearchServerlessClientTypes.CollectionSummary?].self, forKey: .collectionSummaries) + var collectionSummariesDecoded0:[OpenSearchServerlessClientTypes.CollectionSummary]? = nil + if let collectionSummariesContainer = collectionSummariesContainer { + collectionSummariesDecoded0 = [OpenSearchServerlessClientTypes.CollectionSummary]() + for structure0 in collectionSummariesContainer { if let structure0 = structure0 { - accessPolicySummariesDecoded0?.append(structure0) + collectionSummariesDecoded0?.append(structure0) } } } - accessPolicySummaries = accessPolicySummariesDecoded0 + collectionSummaries = collectionSummariesDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded } } -enum ListAccessPoliciesOutputError: ClientRuntime.HttpResponseErrorBinding { +enum ListCollectionsOutputError: ClientRuntime.HttpResponseErrorBinding { static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) let requestID = httpResponse.requestId @@ -3395,70 +4630,95 @@ enum ListAccessPoliciesOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension ListCollectionsInput: Swift.Encodable { +extension ListLifecyclePoliciesInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case collectionFilters case maxResults case nextToken + case resources + case type } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let collectionFilters = self.collectionFilters { - try encodeContainer.encode(collectionFilters, forKey: .collectionFilters) - } if let maxResults = self.maxResults { try encodeContainer.encode(maxResults, forKey: .maxResults) } if let nextToken = self.nextToken { try encodeContainer.encode(nextToken, forKey: .nextToken) } + if let resources = resources { + var resourcesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .resources) + for lifecycleresource0 in resources { + try resourcesContainer.encode(lifecycleresource0) + } + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } } } -extension ListCollectionsInput: ClientRuntime.URLPathProvider { +extension ListLifecyclePoliciesInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { return "/" } } -public struct ListCollectionsInput: Swift.Equatable { - /// List of filter names and values that you can use for requests. - public var collectionFilters: OpenSearchServerlessClientTypes.CollectionFilters? - /// The maximum number of results to return. Default is 20. You can use nextToken to get the next page of results. +public struct ListLifecyclePoliciesInput: Swift.Equatable { + /// An optional parameter that specifies the maximum number of results to return. You can use use nextToken to get the next page of results. The default is 10. public var maxResults: Swift.Int? - /// If your initial ListCollections operation returns a nextToken, you can include the returned nextToken in subsequent ListCollections operations, which returns results in the next page. + /// If your initial ListLifecyclePolicies operation returns a nextToken, you can include the returned nextToken in subsequent ListLifecyclePolicies operations, which returns results in the next page. public var nextToken: Swift.String? + /// Resource filters that policies can apply to. Currently, the only supported resource type is index. + public var resources: [Swift.String]? + /// The type of lifecycle policy. + /// This member is required. + public var type: OpenSearchServerlessClientTypes.LifecyclePolicyType? public init( - collectionFilters: OpenSearchServerlessClientTypes.CollectionFilters? = nil, maxResults: Swift.Int? = nil, - nextToken: Swift.String? = nil + nextToken: Swift.String? = nil, + resources: [Swift.String]? = nil, + type: OpenSearchServerlessClientTypes.LifecyclePolicyType? = nil ) { - self.collectionFilters = collectionFilters self.maxResults = maxResults self.nextToken = nextToken + self.resources = resources + self.type = type } } -struct ListCollectionsInputBody: Swift.Equatable { - let collectionFilters: OpenSearchServerlessClientTypes.CollectionFilters? +struct ListLifecyclePoliciesInputBody: Swift.Equatable { + let type: OpenSearchServerlessClientTypes.LifecyclePolicyType? + let resources: [Swift.String]? let nextToken: Swift.String? let maxResults: Swift.Int? } -extension ListCollectionsInputBody: Swift.Decodable { +extension ListLifecyclePoliciesInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case collectionFilters case maxResults case nextToken + case resources + case type } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let collectionFiltersDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.CollectionFilters.self, forKey: .collectionFilters) - collectionFilters = collectionFiltersDecoded + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyType.self, forKey: .type) + type = typeDecoded + let resourcesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .resources) + var resourcesDecoded0:[Swift.String]? = nil + if let resourcesContainer = resourcesContainer { + resourcesDecoded0 = [Swift.String]() + for string0 in resourcesContainer { + if let string0 = string0 { + resourcesDecoded0?.append(string0) + } + } + } + resources = resourcesDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) @@ -3466,66 +4726,66 @@ extension ListCollectionsInputBody: Swift.Decodable { } } -extension ListCollectionsOutput: ClientRuntime.HttpResponseBinding { +extension ListLifecyclePoliciesOutput: ClientRuntime.HttpResponseBinding { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { - let output: ListCollectionsOutputBody = try responseDecoder.decode(responseBody: data) - self.collectionSummaries = output.collectionSummaries + let output: ListLifecyclePoliciesOutputBody = try responseDecoder.decode(responseBody: data) + self.lifecyclePolicySummaries = output.lifecyclePolicySummaries self.nextToken = output.nextToken } else { - self.collectionSummaries = nil + self.lifecyclePolicySummaries = nil self.nextToken = nil } } } -public struct ListCollectionsOutput: Swift.Equatable { - /// Details about each collection. - public var collectionSummaries: [OpenSearchServerlessClientTypes.CollectionSummary]? +public struct ListLifecyclePoliciesOutput: Swift.Equatable { + /// Details about the requested lifecycle policies. + public var lifecyclePolicySummaries: [OpenSearchServerlessClientTypes.LifecyclePolicySummary]? /// When nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. public var nextToken: Swift.String? public init( - collectionSummaries: [OpenSearchServerlessClientTypes.CollectionSummary]? = nil, + lifecyclePolicySummaries: [OpenSearchServerlessClientTypes.LifecyclePolicySummary]? = nil, nextToken: Swift.String? = nil ) { - self.collectionSummaries = collectionSummaries + self.lifecyclePolicySummaries = lifecyclePolicySummaries self.nextToken = nextToken } } -struct ListCollectionsOutputBody: Swift.Equatable { - let collectionSummaries: [OpenSearchServerlessClientTypes.CollectionSummary]? +struct ListLifecyclePoliciesOutputBody: Swift.Equatable { + let lifecyclePolicySummaries: [OpenSearchServerlessClientTypes.LifecyclePolicySummary]? let nextToken: Swift.String? } -extension ListCollectionsOutputBody: Swift.Decodable { +extension ListLifecyclePoliciesOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case collectionSummaries + case lifecyclePolicySummaries case nextToken } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let collectionSummariesContainer = try containerValues.decodeIfPresent([OpenSearchServerlessClientTypes.CollectionSummary?].self, forKey: .collectionSummaries) - var collectionSummariesDecoded0:[OpenSearchServerlessClientTypes.CollectionSummary]? = nil - if let collectionSummariesContainer = collectionSummariesContainer { - collectionSummariesDecoded0 = [OpenSearchServerlessClientTypes.CollectionSummary]() - for structure0 in collectionSummariesContainer { + let lifecyclePolicySummariesContainer = try containerValues.decodeIfPresent([OpenSearchServerlessClientTypes.LifecyclePolicySummary?].self, forKey: .lifecyclePolicySummaries) + var lifecyclePolicySummariesDecoded0:[OpenSearchServerlessClientTypes.LifecyclePolicySummary]? = nil + if let lifecyclePolicySummariesContainer = lifecyclePolicySummariesContainer { + lifecyclePolicySummariesDecoded0 = [OpenSearchServerlessClientTypes.LifecyclePolicySummary]() + for structure0 in lifecyclePolicySummariesContainer { if let structure0 = structure0 { - collectionSummariesDecoded0?.append(structure0) + lifecyclePolicySummariesDecoded0?.append(structure0) } } } - collectionSummaries = collectionSummariesDecoded0 + lifecyclePolicySummaries = lifecyclePolicySummariesDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded } } -enum ListCollectionsOutputError: ClientRuntime.HttpResponseErrorBinding { +enum ListLifecyclePoliciesOutputError: ClientRuntime.HttpResponseErrorBinding { static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) let requestID = httpResponse.requestId @@ -4211,6 +5471,36 @@ extension ResourceNotFoundExceptionBody: Swift.Decodable { } } +extension OpenSearchServerlessClientTypes { + public enum ResourceType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + /// index resource type + case index + case sdkUnknown(Swift.String) + + public static var allCases: [ResourceType] { + return [ + .index, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .index: return "index" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = ResourceType(rawValue: rawValue) ?? ResourceType.sdkUnknown(rawValue) + } + } +} + extension OpenSearchServerlessClientTypes.SamlConfigOptions: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case groupAttribute @@ -5614,6 +6904,171 @@ enum UpdateCollectionOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension UpdateLifecyclePolicyInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case description + case name + case policy + case policyVersion + case type + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let policy = self.policy { + try encodeContainer.encode(policy, forKey: .policy) + } + if let policyVersion = self.policyVersion { + try encodeContainer.encode(policyVersion, forKey: .policyVersion) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + } +} + +extension UpdateLifecyclePolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct UpdateLifecyclePolicyInput: Swift.Equatable { + /// A unique, case-sensitive identifier to ensure idempotency of the request. + public var clientToken: Swift.String? + /// A description of the lifecycle policy. + public var description: Swift.String? + /// The name of the policy. + /// This member is required. + public var name: Swift.String? + /// The JSON policy document to use as the content for the lifecycle policy. + public var policy: Swift.String? + /// The version of the policy being updated. + /// This member is required. + public var policyVersion: Swift.String? + /// The type of lifecycle policy. + /// This member is required. + public var type: OpenSearchServerlessClientTypes.LifecyclePolicyType? + + public init( + clientToken: Swift.String? = nil, + description: Swift.String? = nil, + name: Swift.String? = nil, + policy: Swift.String? = nil, + policyVersion: Swift.String? = nil, + type: OpenSearchServerlessClientTypes.LifecyclePolicyType? = nil + ) + { + self.clientToken = clientToken + self.description = description + self.name = name + self.policy = policy + self.policyVersion = policyVersion + self.type = type + } +} + +struct UpdateLifecyclePolicyInputBody: Swift.Equatable { + let type: OpenSearchServerlessClientTypes.LifecyclePolicyType? + let name: Swift.String? + let policyVersion: Swift.String? + let description: Swift.String? + let policy: Swift.String? + let clientToken: Swift.String? +} + +extension UpdateLifecyclePolicyInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case description + case name + case policy + case policyVersion + case type + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyType.self, forKey: .type) + type = typeDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let policyVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policyVersion) + policyVersion = policyVersionDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let policyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policy) + policy = policyDecoded + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + } +} + +extension UpdateLifecyclePolicyOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: UpdateLifecyclePolicyOutputBody = try responseDecoder.decode(responseBody: data) + self.lifecyclePolicyDetail = output.lifecyclePolicyDetail + } else { + self.lifecyclePolicyDetail = nil + } + } +} + +public struct UpdateLifecyclePolicyOutput: Swift.Equatable { + /// Details about the updated lifecycle policy. + public var lifecyclePolicyDetail: OpenSearchServerlessClientTypes.LifecyclePolicyDetail? + + public init( + lifecyclePolicyDetail: OpenSearchServerlessClientTypes.LifecyclePolicyDetail? = nil + ) + { + self.lifecyclePolicyDetail = lifecyclePolicyDetail + } +} + +struct UpdateLifecyclePolicyOutputBody: Swift.Equatable { + let lifecyclePolicyDetail: OpenSearchServerlessClientTypes.LifecyclePolicyDetail? +} + +extension UpdateLifecyclePolicyOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case lifecyclePolicyDetail + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let lifecyclePolicyDetailDecoded = try containerValues.decodeIfPresent(OpenSearchServerlessClientTypes.LifecyclePolicyDetail.self, forKey: .lifecyclePolicyDetail) + lifecyclePolicyDetail = lifecyclePolicyDetailDecoded + } +} + +enum UpdateLifecyclePolicyOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceQuotaExceededException": return try await ServiceQuotaExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension UpdateSecurityConfigInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken diff --git a/Sources/Services/AWSPinpoint/models/Models.swift b/Sources/Services/AWSPinpoint/models/Models.swift index 156f318252d..6db01c86da6 100644 --- a/Sources/Services/AWSPinpoint/models/Models.swift +++ b/Sources/Services/AWSPinpoint/models/Models.swift @@ -8777,7 +8777,7 @@ public struct DeleteEndpointInput: Swift.Equatable { /// The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console. /// This member is required. public var applicationId: Swift.String? - /// The unique identifier for the endpoint. + /// The case insensitive unique identifier for the endpoint. The identifier can't contain $, { or }. /// This member is required. public var endpointId: Swift.String? @@ -15858,7 +15858,7 @@ public struct GetEndpointInput: Swift.Equatable { /// The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console. /// This member is required. public var applicationId: Swift.String? - /// The unique identifier for the endpoint. + /// The case insensitive unique identifier for the endpoint. The identifier can't contain $, { or }. /// This member is required. public var endpointId: Swift.String? @@ -31479,7 +31479,7 @@ public struct UpdateEndpointInput: Swift.Equatable { /// The unique identifier for the application. This identifier is displayed as the Project ID on the Amazon Pinpoint console. /// This member is required. public var applicationId: Swift.String? - /// The unique identifier for the endpoint. + /// The case insensitive unique identifier for the endpoint. The identifier can't contain $, { or }. /// This member is required. public var endpointId: Swift.String? /// Specifies the channel type and other settings for an endpoint. diff --git a/Sources/Services/AWSPolly/models/Models.swift b/Sources/Services/AWSPolly/models/Models.swift index 55624d1254a..5cbad203a59 100644 --- a/Sources/Services/AWSPolly/models/Models.swift +++ b/Sources/Services/AWSPolly/models/Models.swift @@ -3396,6 +3396,7 @@ extension PollyClientTypes { case conchita case cristiano case daniel + case danielle case dora case elin case emma @@ -3405,6 +3406,7 @@ extension PollyClientTypes { case gabrielle case geraint case giorgio + case gregory case gwyneth case hala case hannah @@ -3493,6 +3495,7 @@ extension PollyClientTypes { .conchita, .cristiano, .daniel, + .danielle, .dora, .elin, .emma, @@ -3502,6 +3505,7 @@ extension PollyClientTypes { .gabrielle, .geraint, .giorgio, + .gregory, .gwyneth, .hala, .hannah, @@ -3595,6 +3599,7 @@ extension PollyClientTypes { case .conchita: return "Conchita" case .cristiano: return "Cristiano" case .daniel: return "Daniel" + case .danielle: return "Danielle" case .dora: return "Dora" case .elin: return "Elin" case .emma: return "Emma" @@ -3604,6 +3609,7 @@ extension PollyClientTypes { case .gabrielle: return "Gabrielle" case .geraint: return "Geraint" case .giorgio: return "Giorgio" + case .gregory: return "Gregory" case .gwyneth: return "Gwyneth" case .hala: return "Hala" case .hannah: return "Hannah" diff --git a/Sources/Services/AWSQuickSight/models/Models.swift b/Sources/Services/AWSQuickSight/models/Models.swift index 427b4ed87df..084613ef56b 100644 --- a/Sources/Services/AWSQuickSight/models/Models.swift +++ b/Sources/Services/AWSQuickSight/models/Models.swift @@ -611,6 +611,7 @@ extension QuickSightClientTypes.Analysis: Swift.Codable { case errors = "Errors" case lastUpdatedTime = "LastUpdatedTime" case name = "Name" + case options = "Options" case sheets = "Sheets" case status = "Status" case themeArn = "ThemeArn" @@ -645,6 +646,9 @@ extension QuickSightClientTypes.Analysis: Swift.Codable { if let name = self.name { try encodeContainer.encode(name, forKey: .name) } + if let options = self.options { + try encodeContainer.encode(options, forKey: .options) + } if let sheets = sheets { var sheetsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .sheets) for sheet0 in sheets { @@ -708,6 +712,8 @@ extension QuickSightClientTypes.Analysis: Swift.Codable { } } sheets = sheetsDecoded0 + let optionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.AssetOptions.self, forKey: .options) + options = optionsDecoded } } @@ -728,6 +734,8 @@ extension QuickSightClientTypes { public var lastUpdatedTime: ClientRuntime.Date? /// The descriptive name of the analysis. public var name: Swift.String? + /// An array of analysis level configurations. + public var options: QuickSightClientTypes.AssetOptions? /// A list of the associated sheets with the unique identifier and name of each sheet. public var sheets: [QuickSightClientTypes.Sheet]? /// Status associated with the analysis. @@ -743,6 +751,7 @@ extension QuickSightClientTypes { errors: [QuickSightClientTypes.AnalysisError]? = nil, lastUpdatedTime: ClientRuntime.Date? = nil, name: Swift.String? = nil, + options: QuickSightClientTypes.AssetOptions? = nil, sheets: [QuickSightClientTypes.Sheet]? = nil, status: QuickSightClientTypes.ResourceStatus? = nil, themeArn: Swift.String? = nil @@ -755,6 +764,7 @@ extension QuickSightClientTypes { self.errors = errors self.lastUpdatedTime = lastUpdatedTime self.name = name + self.options = options self.sheets = sheets self.status = status self.themeArn = themeArn @@ -806,6 +816,7 @@ extension QuickSightClientTypes.AnalysisDefinition: Swift.Codable { case columnConfigurations = "ColumnConfigurations" case dataSetIdentifierDeclarations = "DataSetIdentifierDeclarations" case filterGroups = "FilterGroups" + case options = "Options" case parameterDeclarations = "ParameterDeclarations" case sheets = "Sheets" } @@ -839,6 +850,9 @@ extension QuickSightClientTypes.AnalysisDefinition: Swift.Codable { try filterGroupsContainer.encode(filtergroup0) } } + if let options = self.options { + try encodeContainer.encode(options, forKey: .options) + } if let parameterDeclarations = parameterDeclarations { var parameterDeclarationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .parameterDeclarations) for parameterdeclaration0 in parameterDeclarations { @@ -923,6 +937,8 @@ extension QuickSightClientTypes.AnalysisDefinition: Swift.Codable { columnConfigurations = columnConfigurationsDecoded0 let analysisDefaultsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.AnalysisDefaults.self, forKey: .analysisDefaults) analysisDefaults = analysisDefaultsDecoded + let optionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.AssetOptions.self, forKey: .options) + options = optionsDecoded } } @@ -940,6 +956,8 @@ extension QuickSightClientTypes { public var dataSetIdentifierDeclarations: [QuickSightClientTypes.DataSetIdentifierDeclaration]? /// Filter definitions for an analysis. For more information, see [Filtering Data in Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html) in the Amazon QuickSight User Guide. public var filterGroups: [QuickSightClientTypes.FilterGroup]? + /// An array of option definitions for an analysis. + public var options: QuickSightClientTypes.AssetOptions? /// An array of parameter declarations for an analysis. Parameters are named variables that can transfer a value for use by an action or an object. For more information, see [Parameters in Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html) in the Amazon QuickSight User Guide. public var parameterDeclarations: [QuickSightClientTypes.ParameterDeclaration]? /// An array of sheet definitions for an analysis. Each SheetDefinition provides detailed information about a sheet within this analysis. @@ -951,6 +969,7 @@ extension QuickSightClientTypes { columnConfigurations: [QuickSightClientTypes.ColumnConfiguration]? = nil, dataSetIdentifierDeclarations: [QuickSightClientTypes.DataSetIdentifierDeclaration]? = nil, filterGroups: [QuickSightClientTypes.FilterGroup]? = nil, + options: QuickSightClientTypes.AssetOptions? = nil, parameterDeclarations: [QuickSightClientTypes.ParameterDeclaration]? = nil, sheets: [QuickSightClientTypes.SheetDefinition]? = nil ) @@ -960,6 +979,7 @@ extension QuickSightClientTypes { self.columnConfigurations = columnConfigurations self.dataSetIdentifierDeclarations = dataSetIdentifierDeclarations self.filterGroups = filterGroups + self.options = options self.parameterDeclarations = parameterDeclarations self.sheets = sheets } @@ -4089,6 +4109,51 @@ extension QuickSightClientTypes { } +extension QuickSightClientTypes.AssetOptions: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case timezone = "Timezone" + case weekStart = "WeekStart" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let timezone = self.timezone { + try encodeContainer.encode(timezone, forKey: .timezone) + } + if let weekStart = self.weekStart { + try encodeContainer.encode(weekStart.rawValue, forKey: .weekStart) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let timezoneDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .timezone) + timezone = timezoneDecoded + let weekStartDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.DayOfTheWeek.self, forKey: .weekStart) + weekStart = weekStartDecoded + } +} + +extension QuickSightClientTypes { + /// An array of analysis level configurations. + public struct AssetOptions: Swift.Equatable { + /// Determines the timezone for the analysis. + public var timezone: Swift.String? + /// Determines the week start day for an analysis. + public var weekStart: QuickSightClientTypes.DayOfTheWeek? + + public init( + timezone: Swift.String? = nil, + weekStart: QuickSightClientTypes.DayOfTheWeek? = nil + ) + { + self.timezone = timezone + self.weekStart = weekStart + } + } + +} + extension QuickSightClientTypes { public enum AssignmentStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case disabled @@ -6924,6 +6989,7 @@ extension QuickSightClientTypes.CastColumnTypeOperation: Swift.Codable { case columnName = "ColumnName" case format = "Format" case newColumnType = "NewColumnType" + case subType = "SubType" } public func encode(to encoder: Swift.Encoder) throws { @@ -6937,6 +7003,9 @@ extension QuickSightClientTypes.CastColumnTypeOperation: Swift.Codable { if let newColumnType = self.newColumnType { try encodeContainer.encode(newColumnType.rawValue, forKey: .newColumnType) } + if let subType = self.subType { + try encodeContainer.encode(subType.rawValue, forKey: .subType) + } } public init(from decoder: Swift.Decoder) throws { @@ -6945,6 +7014,8 @@ extension QuickSightClientTypes.CastColumnTypeOperation: Swift.Codable { columnName = columnNameDecoded let newColumnTypeDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.ColumnDataType.self, forKey: .newColumnType) newColumnType = newColumnTypeDecoded + let subTypeDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.ColumnDataSubType.self, forKey: .subType) + subType = subTypeDecoded let formatDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .format) format = formatDecoded } @@ -6961,16 +7032,20 @@ extension QuickSightClientTypes { /// New column data type. /// This member is required. public var newColumnType: QuickSightClientTypes.ColumnDataType? + /// The sub data type of the new column. Sub types are only available for decimal columns that are part of a SPICE dataset. + public var subType: QuickSightClientTypes.ColumnDataSubType? public init( columnName: Swift.String? = nil, format: Swift.String? = nil, - newColumnType: QuickSightClientTypes.ColumnDataType? = nil + newColumnType: QuickSightClientTypes.ColumnDataType? = nil, + subType: QuickSightClientTypes.ColumnDataSubType? = nil ) { self.columnName = columnName self.format = format self.newColumnType = newColumnType + self.subType = subType } } @@ -7945,6 +8020,38 @@ extension QuickSightClientTypes { } } +extension QuickSightClientTypes { + public enum ColumnDataSubType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case fixed + case float + case sdkUnknown(Swift.String) + + public static var allCases: [ColumnDataSubType] { + return [ + .fixed, + .float, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .fixed: return "FIXED" + case .float: return "FLOAT" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = ColumnDataSubType(rawValue: rawValue) ?? ColumnDataSubType.sdkUnknown(rawValue) + } + } +} + extension QuickSightClientTypes { public enum ColumnDataType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case datetime @@ -16971,6 +17078,7 @@ extension QuickSightClientTypes.DashboardVersion: Swift.Codable { case dataSetArns = "DataSetArns" case description = "Description" case errors = "Errors" + case options = "Options" case sheets = "Sheets" case sourceEntityArn = "SourceEntityArn" case status = "Status" @@ -17001,6 +17109,9 @@ extension QuickSightClientTypes.DashboardVersion: Swift.Codable { try errorsContainer.encode(dashboarderror0) } } + if let options = self.options { + try encodeContainer.encode(options, forKey: .options) + } if let sheets = sheets { var sheetsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .sheets) for sheet0 in sheets { @@ -17070,6 +17181,8 @@ extension QuickSightClientTypes.DashboardVersion: Swift.Codable { } } sheets = sheetsDecoded0 + let optionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.AssetOptions.self, forKey: .options) + options = optionsDecoded } } @@ -17086,6 +17199,8 @@ extension QuickSightClientTypes { public var description: Swift.String? /// Errors associated with this dashboard version. public var errors: [QuickSightClientTypes.DashboardError]? + /// An array of analysis level configurations. + public var options: QuickSightClientTypes.AssetOptions? /// A list of the associated sheets with the unique identifier and name of each sheet. public var sheets: [QuickSightClientTypes.Sheet]? /// Source entity ARN. @@ -17103,6 +17218,7 @@ extension QuickSightClientTypes { dataSetArns: [Swift.String]? = nil, description: Swift.String? = nil, errors: [QuickSightClientTypes.DashboardError]? = nil, + options: QuickSightClientTypes.AssetOptions? = nil, sheets: [QuickSightClientTypes.Sheet]? = nil, sourceEntityArn: Swift.String? = nil, status: QuickSightClientTypes.ResourceStatus? = nil, @@ -17115,6 +17231,7 @@ extension QuickSightClientTypes { self.dataSetArns = dataSetArns self.description = description self.errors = errors + self.options = options self.sheets = sheets self.sourceEntityArn = sourceEntityArn self.status = status @@ -17132,6 +17249,7 @@ extension QuickSightClientTypes.DashboardVersionDefinition: Swift.Codable { case columnConfigurations = "ColumnConfigurations" case dataSetIdentifierDeclarations = "DataSetIdentifierDeclarations" case filterGroups = "FilterGroups" + case options = "Options" case parameterDeclarations = "ParameterDeclarations" case sheets = "Sheets" } @@ -17165,6 +17283,9 @@ extension QuickSightClientTypes.DashboardVersionDefinition: Swift.Codable { try filterGroupsContainer.encode(filtergroup0) } } + if let options = self.options { + try encodeContainer.encode(options, forKey: .options) + } if let parameterDeclarations = parameterDeclarations { var parameterDeclarationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .parameterDeclarations) for parameterdeclaration0 in parameterDeclarations { @@ -17249,6 +17370,8 @@ extension QuickSightClientTypes.DashboardVersionDefinition: Swift.Codable { columnConfigurations = columnConfigurationsDecoded0 let analysisDefaultsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.AnalysisDefaults.self, forKey: .analysisDefaults) analysisDefaults = analysisDefaultsDecoded + let optionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.AssetOptions.self, forKey: .options) + options = optionsDecoded } } @@ -17266,6 +17389,8 @@ extension QuickSightClientTypes { public var dataSetIdentifierDeclarations: [QuickSightClientTypes.DataSetIdentifierDeclaration]? /// The filter definitions for a dashboard. For more information, see [Filtering Data in Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html) in the Amazon QuickSight User Guide. public var filterGroups: [QuickSightClientTypes.FilterGroup]? + /// An array of option definitions for a dashboard. + public var options: QuickSightClientTypes.AssetOptions? /// The parameter declarations for a dashboard. Parameters are named variables that can transfer a value for use by an action or an object. For more information, see [Parameters in Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html) in the Amazon QuickSight User Guide. public var parameterDeclarations: [QuickSightClientTypes.ParameterDeclaration]? /// An array of sheet definitions for a dashboard. @@ -17277,6 +17402,7 @@ extension QuickSightClientTypes { columnConfigurations: [QuickSightClientTypes.ColumnConfiguration]? = nil, dataSetIdentifierDeclarations: [QuickSightClientTypes.DataSetIdentifierDeclaration]? = nil, filterGroups: [QuickSightClientTypes.FilterGroup]? = nil, + options: QuickSightClientTypes.AssetOptions? = nil, parameterDeclarations: [QuickSightClientTypes.ParameterDeclaration]? = nil, sheets: [QuickSightClientTypes.SheetDefinition]? = nil ) @@ -17286,6 +17412,7 @@ extension QuickSightClientTypes { self.columnConfigurations = columnConfigurations self.dataSetIdentifierDeclarations = dataSetIdentifierDeclarations self.filterGroups = filterGroups + self.options = options self.parameterDeclarations = parameterDeclarations self.sheets = sheets } @@ -21311,6 +21438,53 @@ extension QuickSightClientTypes { } +extension QuickSightClientTypes { + public enum DayOfTheWeek: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case friday + case monday + case saturday + case sunday + case thursday + case tuesday + case wednesday + case sdkUnknown(Swift.String) + + public static var allCases: [DayOfTheWeek] { + return [ + .friday, + .monday, + .saturday, + .sunday, + .thursday, + .tuesday, + .wednesday, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .friday: return "FRIDAY" + case .monday: return "MONDAY" + case .saturday: return "SATURDAY" + case .sunday: return "SUNDAY" + case .thursday: return "THURSDAY" + case .tuesday: return "TUESDAY" + case .wednesday: return "WEDNESDAY" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = DayOfTheWeek(rawValue: rawValue) ?? DayOfTheWeek.sdkUnknown(rawValue) + } + } +} + extension QuickSightClientTypes { public enum DayOfWeek: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case friday @@ -41061,6 +41235,7 @@ extension QuickSightClientTypes { extension QuickSightClientTypes.InputColumn: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case name = "Name" + case subType = "SubType" case type = "Type" } @@ -41069,6 +41244,9 @@ extension QuickSightClientTypes.InputColumn: Swift.Codable { if let name = self.name { try encodeContainer.encode(name, forKey: .name) } + if let subType = self.subType { + try encodeContainer.encode(subType.rawValue, forKey: .subType) + } if let type = self.type { try encodeContainer.encode(type.rawValue, forKey: .type) } @@ -41080,6 +41258,8 @@ extension QuickSightClientTypes.InputColumn: Swift.Codable { name = nameDecoded let typeDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.InputColumnDataType.self, forKey: .type) type = typeDecoded + let subTypeDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.ColumnDataSubType.self, forKey: .subType) + subType = subTypeDecoded } } @@ -41089,16 +41269,20 @@ extension QuickSightClientTypes { /// The name of this column in the underlying data source. /// This member is required. public var name: Swift.String? + /// The sub data type of the column. Sub types are only available for decimal columns that are part of a SPICE dataset. + public var subType: QuickSightClientTypes.ColumnDataSubType? /// The data type of the column. /// This member is required. public var type: QuickSightClientTypes.InputColumnDataType? public init( name: Swift.String? = nil, + subType: QuickSightClientTypes.ColumnDataSubType? = nil, type: QuickSightClientTypes.InputColumnDataType? = nil ) { self.name = name + self.subType = subType self.type = type } } @@ -52072,6 +52256,7 @@ extension QuickSightClientTypes.OutputColumn: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case description = "Description" case name = "Name" + case subType = "SubType" case type = "Type" } @@ -52083,6 +52268,9 @@ extension QuickSightClientTypes.OutputColumn: Swift.Codable { if let name = self.name { try encodeContainer.encode(name, forKey: .name) } + if let subType = self.subType { + try encodeContainer.encode(subType.rawValue, forKey: .subType) + } if let type = self.type { try encodeContainer.encode(type.rawValue, forKey: .type) } @@ -52096,6 +52284,8 @@ extension QuickSightClientTypes.OutputColumn: Swift.Codable { description = descriptionDecoded let typeDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.ColumnDataType.self, forKey: .type) type = typeDecoded + let subTypeDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.ColumnDataSubType.self, forKey: .subType) + subType = subTypeDecoded } } @@ -52104,19 +52294,23 @@ extension QuickSightClientTypes { public struct OutputColumn: Swift.Equatable { /// A description for a column. public var description: Swift.String? - /// A display name for the dataset. + /// The display name of the column.. public var name: Swift.String? - /// The type. + /// The sub data type of the column. + public var subType: QuickSightClientTypes.ColumnDataSubType? + /// The data type of the column. public var type: QuickSightClientTypes.ColumnDataType? public init( description: Swift.String? = nil, name: Swift.String? = nil, + subType: QuickSightClientTypes.ColumnDataSubType? = nil, type: QuickSightClientTypes.ColumnDataType? = nil ) { self.description = description self.name = name + self.subType = subType self.type = type } } @@ -70144,6 +70338,7 @@ extension QuickSightClientTypes.TemplateVersion: Swift.Codable { case dataSetConfigurations = "DataSetConfigurations" case description = "Description" case errors = "Errors" + case options = "Options" case sheets = "Sheets" case sourceEntityArn = "SourceEntityArn" case status = "Status" @@ -70171,6 +70366,9 @@ extension QuickSightClientTypes.TemplateVersion: Swift.Codable { try errorsContainer.encode(templateerror0) } } + if let options = self.options { + try encodeContainer.encode(options, forKey: .options) + } if let sheets = sheets { var sheetsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .sheets) for sheet0 in sheets { @@ -70238,6 +70436,8 @@ extension QuickSightClientTypes.TemplateVersion: Swift.Codable { } } sheets = sheetsDecoded0 + let optionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.AssetOptions.self, forKey: .options) + options = optionsDecoded } } @@ -70252,6 +70452,8 @@ extension QuickSightClientTypes { public var description: Swift.String? /// Errors associated with this template version. public var errors: [QuickSightClientTypes.TemplateError]? + /// An array of analysis level configurations. + public var options: QuickSightClientTypes.AssetOptions? /// A list of the associated sheets with the unique identifier and name of each sheet. public var sheets: [QuickSightClientTypes.Sheet]? /// The Amazon Resource Name (ARN) of an analysis or template that was used to create this template. @@ -70282,6 +70484,7 @@ extension QuickSightClientTypes { dataSetConfigurations: [QuickSightClientTypes.DataSetConfiguration]? = nil, description: Swift.String? = nil, errors: [QuickSightClientTypes.TemplateError]? = nil, + options: QuickSightClientTypes.AssetOptions? = nil, sheets: [QuickSightClientTypes.Sheet]? = nil, sourceEntityArn: Swift.String? = nil, status: QuickSightClientTypes.ResourceStatus? = nil, @@ -70293,6 +70496,7 @@ extension QuickSightClientTypes { self.dataSetConfigurations = dataSetConfigurations self.description = description self.errors = errors + self.options = options self.sheets = sheets self.sourceEntityArn = sourceEntityArn self.status = status @@ -70310,6 +70514,7 @@ extension QuickSightClientTypes.TemplateVersionDefinition: Swift.Codable { case columnConfigurations = "ColumnConfigurations" case dataSetConfigurations = "DataSetConfigurations" case filterGroups = "FilterGroups" + case options = "Options" case parameterDeclarations = "ParameterDeclarations" case sheets = "Sheets" } @@ -70343,6 +70548,9 @@ extension QuickSightClientTypes.TemplateVersionDefinition: Swift.Codable { try filterGroupsContainer.encode(filtergroup0) } } + if let options = self.options { + try encodeContainer.encode(options, forKey: .options) + } if let parameterDeclarations = parameterDeclarations { var parameterDeclarationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .parameterDeclarations) for parameterdeclaration0 in parameterDeclarations { @@ -70427,6 +70635,8 @@ extension QuickSightClientTypes.TemplateVersionDefinition: Swift.Codable { columnConfigurations = columnConfigurationsDecoded0 let analysisDefaultsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.AnalysisDefaults.self, forKey: .analysisDefaults) analysisDefaults = analysisDefaultsDecoded + let optionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.AssetOptions.self, forKey: .options) + options = optionsDecoded } } @@ -70444,6 +70654,8 @@ extension QuickSightClientTypes { public var dataSetConfigurations: [QuickSightClientTypes.DataSetConfiguration]? /// Filter definitions for a template. For more information, see [Filtering Data](https://docs.aws.amazon.com/quicksight/latest/user/filtering-visual-data.html) in the Amazon QuickSight User Guide. public var filterGroups: [QuickSightClientTypes.FilterGroup]? + /// An array of option definitions for a template. + public var options: QuickSightClientTypes.AssetOptions? /// An array of parameter declarations for a template. Parameters are named variables that can transfer a value for use by an action or an object. For more information, see [Parameters in Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html) in the Amazon QuickSight User Guide. public var parameterDeclarations: [QuickSightClientTypes.ParameterDeclaration]? /// An array of sheet definitions for a template. @@ -70455,6 +70667,7 @@ extension QuickSightClientTypes { columnConfigurations: [QuickSightClientTypes.ColumnConfiguration]? = nil, dataSetConfigurations: [QuickSightClientTypes.DataSetConfiguration]? = nil, filterGroups: [QuickSightClientTypes.FilterGroup]? = nil, + options: QuickSightClientTypes.AssetOptions? = nil, parameterDeclarations: [QuickSightClientTypes.ParameterDeclaration]? = nil, sheets: [QuickSightClientTypes.SheetDefinition]? = nil ) @@ -70464,6 +70677,7 @@ extension QuickSightClientTypes { self.columnConfigurations = columnConfigurations self.dataSetConfigurations = dataSetConfigurations self.filterGroups = filterGroups + self.options = options self.parameterDeclarations = parameterDeclarations self.sheets = sheets } diff --git a/Sources/Services/AWSRDS/Paginators.swift b/Sources/Services/AWSRDS/Paginators.swift index 33cb506078f..c2565740d7b 100644 --- a/Sources/Services/AWSRDS/Paginators.swift +++ b/Sources/Services/AWSRDS/Paginators.swift @@ -903,6 +903,38 @@ extension PaginatorSequence where Input == DescribeGlobalClustersInput, Output = return try await self.asyncCompactMap { item in item.globalClusters } } } +extension RDSClient { + /// Paginate over `[DescribeIntegrationsOutput]` results. + /// + /// When this operation is called, an `AsyncSequence` is created. AsyncSequences are lazy so no service + /// calls are made until the sequence is iterated over. This also means there is no guarantee that the request is valid + /// until then. If there are errors in your request, you will see the failures only after you start iterating. + /// - Parameters: + /// - input: A `[DescribeIntegrationsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `DescribeIntegrationsOutput` + public func describeIntegrationsPaginated(input: DescribeIntegrationsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \DescribeIntegrationsInput.marker, outputKey: \DescribeIntegrationsOutput.marker, paginationFunction: self.describeIntegrations(input:)) + } +} + +extension DescribeIntegrationsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> DescribeIntegrationsInput { + return DescribeIntegrationsInput( + filters: self.filters, + integrationIdentifier: self.integrationIdentifier, + marker: token, + maxRecords: self.maxRecords + )} +} + +extension PaginatorSequence where Input == DescribeIntegrationsInput, Output == DescribeIntegrationsOutput { + /// This paginator transforms the `AsyncSequence` returned by `describeIntegrationsPaginated` + /// to access the nested member `[RDSClientTypes.Integration]` + /// - Returns: `[RDSClientTypes.Integration]` + public func integrations() async throws -> [RDSClientTypes.Integration] { + return try await self.asyncCompactMap { item in item.integrations } + } +} extension RDSClient { /// Paginate over `[DescribeOptionGroupOptionsOutput]` results. /// diff --git a/Sources/Services/AWSRDS/RDSClient.swift b/Sources/Services/AWSRDS/RDSClient.swift index 9b7c48d25c4..a1dd4e04a57 100644 --- a/Sources/Services/AWSRDS/RDSClient.swift +++ b/Sources/Services/AWSRDS/RDSClient.swift @@ -217,6 +217,7 @@ extension RDSClient: RDSClientProtocol { /// - `DBProxyNotFoundFault` : The specified proxy name doesn't correspond to a proxy owned by your Amazon Web Services account in the specified Amazon Web Services Region. /// - `DBProxyTargetGroupNotFoundFault` : The specified target group isn't available for a proxy owned by your Amazon Web Services account in the specified Amazon Web Services Region. /// - `DBSnapshotNotFoundFault` : DBSnapshotIdentifier doesn't refer to an existing DB snapshot. + /// - `IntegrationNotFoundFault` : The specified integration could not be found. public func addTagsToResource(input: AddTagsToResourceInput) async throws -> AddTagsToResourceOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1501,6 +1502,55 @@ extension RDSClient: RDSClientProtocol { return result } + /// Creates a zero-ETL integration with Amazon Redshift. For more information, see [Working with Amazon Aurora zero-ETL integrations with Amazon Redshift](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.html) in the Amazon Aurora User Guide. + /// + /// - Parameter CreateIntegrationInput : [no documentation found] + /// + /// - Returns: `CreateIntegrationOutput` : An Aurora zero-ETL integration with Amazon Redshift. For more information, see [Working with Amazon Aurora zero-ETL integrations with Amazon Redshift](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.html) in the Amazon Aurora User Guide. + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `DBClusterNotFoundFault` : DBClusterIdentifier doesn't refer to an existing DB cluster. + /// - `DBInstanceNotFoundFault` : DBInstanceIdentifier doesn't refer to an existing DB instance. + /// - `IntegrationAlreadyExistsFault` : The integration you are trying to create already exists. + /// - `IntegrationConflictOperationFault` : A conflicting conditional operation is currently in progress against this resource. Typically occurs when there are multiple requests being made to the same resource at the same time, and these requests conflict with each other. + /// - `IntegrationQuotaExceededFault` : You can't crate any more zero-ETL integrations because the quota has been reached. + /// - `KMSKeyNotAccessibleFault` : An error occurred accessing an Amazon Web Services KMS key. + public func createIntegration(input: CreateIntegrationInput) async throws -> CreateIntegrationOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createIntegration") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "rds") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "createIntegration") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "CreateIntegrationMessage")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Creates a new option group. You can create up to 20 option groups. This command doesn't apply to RDS Custom. /// /// - Parameter CreateOptionGroupInput : @@ -2346,6 +2396,52 @@ extension RDSClient: RDSClientProtocol { return result } + /// Deletes a zero-ETL integration with Amazon Redshift. For more information, see [Deleting Amazon Aurora zero-ETL integrations with Amazon Redshift](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.deleting.html) in the Amazon Aurora User Guide + /// + /// - Parameter DeleteIntegrationInput : [no documentation found] + /// + /// - Returns: `DeleteIntegrationOutput` : An Aurora zero-ETL integration with Amazon Redshift. For more information, see [Working with Amazon Aurora zero-ETL integrations with Amazon Redshift](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.html) in the Amazon Aurora User Guide. + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `IntegrationConflictOperationFault` : A conflicting conditional operation is currently in progress against this resource. Typically occurs when there are multiple requests being made to the same resource at the same time, and these requests conflict with each other. + /// - `IntegrationNotFoundFault` : The specified integration could not be found. + /// - `InvalidIntegrationStateFault` : The integration is in an invalid state and can't perform the requested operation. + public func deleteIntegration(input: DeleteIntegrationInput) async throws -> DeleteIntegrationOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "deleteIntegration") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "rds") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deleteIntegration") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "DeleteIntegrationMessage")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Deletes an existing option group. /// /// - Parameter DeleteOptionGroupInput : @@ -3823,6 +3919,50 @@ extension RDSClient: RDSClientProtocol { return result } + /// Describe one or more zero-ETL integration with Amazon Redshift. For more information, see [Viewing and monitoring Amazon Aurora zero-ETL integrations with Amazon Redshift](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.describingmonitoring.html) in the Amazon Aurora User Guide + /// + /// - Parameter DescribeIntegrationsInput : [no documentation found] + /// + /// - Returns: `DescribeIntegrationsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `IntegrationNotFoundFault` : The specified integration could not be found. + public func describeIntegrations(input: DescribeIntegrationsInput) async throws -> DescribeIntegrationsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "describeIntegrations") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "rds") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "describeIntegrations") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "DescribeIntegrationsMessage")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Describes all available options. /// /// - Parameter DescribeOptionGroupOptionsInput : @@ -4325,6 +4465,7 @@ extension RDSClient: RDSClientProtocol { /// - `DBProxyNotFoundFault` : The specified proxy name doesn't correspond to a proxy owned by your Amazon Web Services account in the specified Amazon Web Services Region. /// - `DBProxyTargetGroupNotFoundFault` : The specified target group isn't available for a proxy owned by your Amazon Web Services account in the specified Amazon Web Services Region. /// - `DBSnapshotNotFoundFault` : DBSnapshotIdentifier doesn't refer to an existing DB snapshot. + /// - `IntegrationNotFoundFault` : The specified integration could not be found. public func listTagsForResource(input: ListTagsForResourceInput) async throws -> ListTagsForResourceOutput { let context = ClientRuntime.HttpContextBuilder() @@ -5761,6 +5902,7 @@ extension RDSClient: RDSClientProtocol { /// - `DBProxyNotFoundFault` : The specified proxy name doesn't correspond to a proxy owned by your Amazon Web Services account in the specified Amazon Web Services Region. /// - `DBProxyTargetGroupNotFoundFault` : The specified target group isn't available for a proxy owned by your Amazon Web Services account in the specified Amazon Web Services Region. /// - `DBSnapshotNotFoundFault` : DBSnapshotIdentifier doesn't refer to an existing DB snapshot. + /// - `IntegrationNotFoundFault` : The specified integration could not be found. public func removeTagsFromResource(input: RemoveTagsFromResourceInput) async throws -> RemoveTagsFromResourceOutput { let context = ClientRuntime.HttpContextBuilder() diff --git a/Sources/Services/AWSRDS/RDSClientProtocol.swift b/Sources/Services/AWSRDS/RDSClientProtocol.swift index aa6d3ad9e3a..b697f1610ba 100644 --- a/Sources/Services/AWSRDS/RDSClientProtocol.swift +++ b/Sources/Services/AWSRDS/RDSClientProtocol.swift @@ -74,6 +74,7 @@ public protocol RDSClientProtocol { /// - `DBProxyNotFoundFault` : The specified proxy name doesn't correspond to a proxy owned by your Amazon Web Services account in the specified Amazon Web Services Region. /// - `DBProxyTargetGroupNotFoundFault` : The specified target group isn't available for a proxy owned by your Amazon Web Services account in the specified Amazon Web Services Region. /// - `DBSnapshotNotFoundFault` : DBSnapshotIdentifier doesn't refer to an existing DB snapshot. + /// - `IntegrationNotFoundFault` : The specified integration could not be found. func addTagsToResource(input: AddTagsToResourceInput) async throws -> AddTagsToResourceOutput /// Applies a pending maintenance action to a resource (for example, to a DB instance). /// @@ -500,6 +501,22 @@ public protocol RDSClientProtocol { /// - `GlobalClusterQuotaExceededFault` : The number of global database clusters for this account is already at the maximum allowed. /// - `InvalidDBClusterStateFault` : The requested operation can't be performed while the cluster is in this state. func createGlobalCluster(input: CreateGlobalClusterInput) async throws -> CreateGlobalClusterOutput + /// Creates a zero-ETL integration with Amazon Redshift. For more information, see [Working with Amazon Aurora zero-ETL integrations with Amazon Redshift](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.html) in the Amazon Aurora User Guide. + /// + /// - Parameter CreateIntegrationInput : [no documentation found] + /// + /// - Returns: `CreateIntegrationOutput` : An Aurora zero-ETL integration with Amazon Redshift. For more information, see [Working with Amazon Aurora zero-ETL integrations with Amazon Redshift](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.html) in the Amazon Aurora User Guide. + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `DBClusterNotFoundFault` : DBClusterIdentifier doesn't refer to an existing DB cluster. + /// - `DBInstanceNotFoundFault` : DBInstanceIdentifier doesn't refer to an existing DB instance. + /// - `IntegrationAlreadyExistsFault` : The integration you are trying to create already exists. + /// - `IntegrationConflictOperationFault` : A conflicting conditional operation is currently in progress against this resource. Typically occurs when there are multiple requests being made to the same resource at the same time, and these requests conflict with each other. + /// - `IntegrationQuotaExceededFault` : You can't crate any more zero-ETL integrations because the quota has been reached. + /// - `KMSKeyNotAccessibleFault` : An error occurred accessing an Amazon Web Services KMS key. + func createIntegration(input: CreateIntegrationInput) async throws -> CreateIntegrationOutput /// Creates a new option group. You can create up to 20 option groups. This command doesn't apply to RDS Custom. /// /// - Parameter CreateOptionGroupInput : @@ -751,6 +768,19 @@ public protocol RDSClientProtocol { /// - `GlobalClusterNotFoundFault` : The GlobalClusterIdentifier doesn't refer to an existing global database cluster. /// - `InvalidGlobalClusterStateFault` : The global cluster is in an invalid state and can't perform the requested operation. func deleteGlobalCluster(input: DeleteGlobalClusterInput) async throws -> DeleteGlobalClusterOutput + /// Deletes a zero-ETL integration with Amazon Redshift. For more information, see [Deleting Amazon Aurora zero-ETL integrations with Amazon Redshift](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.deleting.html) in the Amazon Aurora User Guide + /// + /// - Parameter DeleteIntegrationInput : [no documentation found] + /// + /// - Returns: `DeleteIntegrationOutput` : An Aurora zero-ETL integration with Amazon Redshift. For more information, see [Working with Amazon Aurora zero-ETL integrations with Amazon Redshift](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.html) in the Amazon Aurora User Guide. + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `IntegrationConflictOperationFault` : A conflicting conditional operation is currently in progress against this resource. Typically occurs when there are multiple requests being made to the same resource at the same time, and these requests conflict with each other. + /// - `IntegrationNotFoundFault` : The specified integration could not be found. + /// - `InvalidIntegrationStateFault` : The integration is in an invalid state and can't perform the requested operation. + func deleteIntegration(input: DeleteIntegrationInput) async throws -> DeleteIntegrationOutput /// Deletes an existing option group. /// /// - Parameter DeleteOptionGroupInput : @@ -1106,6 +1136,17 @@ public protocol RDSClientProtocol { /// __Possible Exceptions:__ /// - `GlobalClusterNotFoundFault` : The GlobalClusterIdentifier doesn't refer to an existing global database cluster. func describeGlobalClusters(input: DescribeGlobalClustersInput) async throws -> DescribeGlobalClustersOutput + /// Describe one or more zero-ETL integration with Amazon Redshift. For more information, see [Viewing and monitoring Amazon Aurora zero-ETL integrations with Amazon Redshift](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.describingmonitoring.html) in the Amazon Aurora User Guide + /// + /// - Parameter DescribeIntegrationsInput : [no documentation found] + /// + /// - Returns: `DescribeIntegrationsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `IntegrationNotFoundFault` : The specified integration could not be found. + func describeIntegrations(input: DescribeIntegrationsInput) async throws -> DescribeIntegrationsOutput /// Describes all available options. /// /// - Parameter DescribeOptionGroupOptionsInput : @@ -1245,6 +1286,7 @@ public protocol RDSClientProtocol { /// - `DBProxyNotFoundFault` : The specified proxy name doesn't correspond to a proxy owned by your Amazon Web Services account in the specified Amazon Web Services Region. /// - `DBProxyTargetGroupNotFoundFault` : The specified target group isn't available for a proxy owned by your Amazon Web Services account in the specified Amazon Web Services Region. /// - `DBSnapshotNotFoundFault` : DBSnapshotIdentifier doesn't refer to an existing DB snapshot. + /// - `IntegrationNotFoundFault` : The specified integration could not be found. func listTagsForResource(input: ListTagsForResourceInput) async throws -> ListTagsForResourceOutput /// Changes the audit policy state of a database activity stream to either locked (default) or unlocked. A locked policy is read-only, whereas an unlocked policy is read/write. If your activity stream is started and locked, you can unlock it, customize your audit policy, and then lock your activity stream. Restarting the activity stream isn't required. For more information, see [ Modifying a database activity stream](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/DBActivityStreams.Modifying.html) in the Amazon RDS User Guide. This operation is supported for RDS for Oracle and Microsoft SQL Server. /// @@ -1691,6 +1733,7 @@ public protocol RDSClientProtocol { /// - `DBProxyNotFoundFault` : The specified proxy name doesn't correspond to a proxy owned by your Amazon Web Services account in the specified Amazon Web Services Region. /// - `DBProxyTargetGroupNotFoundFault` : The specified target group isn't available for a proxy owned by your Amazon Web Services account in the specified Amazon Web Services Region. /// - `DBSnapshotNotFoundFault` : DBSnapshotIdentifier doesn't refer to an existing DB snapshot. + /// - `IntegrationNotFoundFault` : The specified integration could not be found. func removeTagsFromResource(input: RemoveTagsFromResourceInput) async throws -> RemoveTagsFromResourceOutput /// Modifies the parameters of a DB cluster parameter group to the default value. To reset specific parameters submit a list of the following: ParameterName and ApplyMethod. To reset the entire DB cluster parameter group, specify the DBClusterParameterGroupName and ResetAllParameters parameters. When resetting the entire group, dynamic parameters are updated immediately and static parameters are set to pending-reboot to take effect on the next DB instance restart or RebootDBInstance request. You must call RebootDBInstance for every DB instance in your DB cluster that you want the updated static parameter to apply to. For more information on Amazon Aurora DB clusters, see [ What is Amazon Aurora?](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html) in the Amazon Aurora User Guide. For more information on Multi-AZ DB clusters, see [ Multi-AZ DB cluster deployments](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html) in the Amazon RDS User Guide. /// diff --git a/Sources/Services/AWSRDS/models/Models.swift b/Sources/Services/AWSRDS/models/Models.swift index 71189013408..8a8eddd0eb1 100644 --- a/Sources/Services/AWSRDS/models/Models.swift +++ b/Sources/Services/AWSRDS/models/Models.swift @@ -619,6 +619,7 @@ enum AddTagsToResourceOutputError: ClientRuntime.HttpResponseErrorBinding { case "DBProxyNotFoundFault": return try await DBProxyNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "DBProxyTargetGroupNotFoundFault": return try await DBProxyTargetGroupNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "DBSnapshotNotFound": return try await DBSnapshotNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "IntegrationNotFoundFault": return try await IntegrationNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -2606,6 +2607,7 @@ extension RDSClientTypes.ClusterPendingModifiedValues: Swift.Codable { case iops = "Iops" case masterUserPassword = "MasterUserPassword" case pendingCloudwatchLogsExports = "PendingCloudwatchLogsExports" + case rdsCustomClusterConfiguration = "RdsCustomClusterConfiguration" case storageType = "StorageType" } @@ -2635,6 +2637,9 @@ extension RDSClientTypes.ClusterPendingModifiedValues: Swift.Codable { if let pendingCloudwatchLogsExports = pendingCloudwatchLogsExports { try container.encode(pendingCloudwatchLogsExports, forKey: ClientRuntime.Key("PendingCloudwatchLogsExports")) } + if let rdsCustomClusterConfiguration = rdsCustomClusterConfiguration { + try container.encode(rdsCustomClusterConfiguration, forKey: ClientRuntime.Key("RdsCustomClusterConfiguration")) + } if let storageType = storageType { try container.encode(storageType, forKey: ClientRuntime.Key("StorageType")) } @@ -2656,6 +2661,8 @@ extension RDSClientTypes.ClusterPendingModifiedValues: Swift.Codable { backupRetentionPeriod = backupRetentionPeriodDecoded let allocatedStorageDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .allocatedStorage) allocatedStorage = allocatedStorageDecoded + let rdsCustomClusterConfigurationDecoded = try containerValues.decodeIfPresent(RDSClientTypes.RdsCustomClusterConfiguration.self, forKey: .rdsCustomClusterConfiguration) + rdsCustomClusterConfiguration = rdsCustomClusterConfigurationDecoded let iopsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .iops) iops = iopsDecoded let storageTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .storageType) @@ -2682,6 +2689,8 @@ extension RDSClientTypes { public var masterUserPassword: Swift.String? /// A list of the log types whose configuration is still pending. In other words, these log types are in the process of being activated or deactivated. public var pendingCloudwatchLogsExports: RDSClientTypes.PendingCloudwatchLogsExports? + /// Reserved for future use. + public var rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? /// The storage type for the DB cluster. public var storageType: Swift.String? @@ -2694,6 +2703,7 @@ extension RDSClientTypes { iops: Swift.Int? = nil, masterUserPassword: Swift.String? = nil, pendingCloudwatchLogsExports: RDSClientTypes.PendingCloudwatchLogsExports? = nil, + rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? = nil, storageType: Swift.String? = nil ) { @@ -2705,6 +2715,7 @@ extension RDSClientTypes { self.iops = iops self.masterUserPassword = masterUserPassword self.pendingCloudwatchLogsExports = pendingCloudwatchLogsExports + self.rdsCustomClusterConfiguration = rdsCustomClusterConfiguration self.storageType = storageType } } @@ -4376,6 +4387,7 @@ extension CreateCustomDBEngineVersionOutput: ClientRuntime.HttpResponseBinding { self.supportsBabelfish = output.supportsBabelfish self.supportsCertificateRotationWithoutRestart = output.supportsCertificateRotationWithoutRestart self.supportsGlobalDatabases = output.supportsGlobalDatabases + self.supportsIntegrations = output.supportsIntegrations self.supportsLocalWriteForwarding = output.supportsLocalWriteForwarding self.supportsLogExportsToCloudwatchLogs = output.supportsLogExportsToCloudwatchLogs self.supportsParallelQuery = output.supportsParallelQuery @@ -4409,6 +4421,7 @@ extension CreateCustomDBEngineVersionOutput: ClientRuntime.HttpResponseBinding { self.supportsBabelfish = nil self.supportsCertificateRotationWithoutRestart = nil self.supportsGlobalDatabases = nil + self.supportsIntegrations = nil self.supportsLocalWriteForwarding = nil self.supportsLogExportsToCloudwatchLogs = nil self.supportsParallelQuery = nil @@ -4473,6 +4486,8 @@ public struct CreateCustomDBEngineVersionOutput: Swift.Equatable { public var supportsCertificateRotationWithoutRestart: Swift.Bool? /// Indicates whether you can use Aurora global databases with a specific DB engine version. public var supportsGlobalDatabases: Swift.Bool? + /// Indicates whether the DB engine version supports Aurora zero-ETL integrations with Amazon Redshift. + public var supportsIntegrations: Swift.Bool? /// Indicates whether the DB engine version supports forwarding write operations from reader DB instances to the writer DB instance in the DB cluster. By default, write operations aren't allowed on reader DB instances. Valid for: Aurora DB clusters only public var supportsLocalWriteForwarding: Swift.Bool? /// Indicates whether the engine version supports exporting the log types specified by ExportableLogTypes to CloudWatch Logs. @@ -4513,6 +4528,7 @@ public struct CreateCustomDBEngineVersionOutput: Swift.Equatable { supportsBabelfish: Swift.Bool? = nil, supportsCertificateRotationWithoutRestart: Swift.Bool? = nil, supportsGlobalDatabases: Swift.Bool? = nil, + supportsIntegrations: Swift.Bool? = nil, supportsLocalWriteForwarding: Swift.Bool? = nil, supportsLogExportsToCloudwatchLogs: Swift.Bool? = nil, supportsParallelQuery: Swift.Bool? = nil, @@ -4547,6 +4563,7 @@ public struct CreateCustomDBEngineVersionOutput: Swift.Equatable { self.supportsBabelfish = supportsBabelfish self.supportsCertificateRotationWithoutRestart = supportsCertificateRotationWithoutRestart self.supportsGlobalDatabases = supportsGlobalDatabases + self.supportsIntegrations = supportsIntegrations self.supportsLocalWriteForwarding = supportsLocalWriteForwarding self.supportsLogExportsToCloudwatchLogs = supportsLogExportsToCloudwatchLogs self.supportsParallelQuery = supportsParallelQuery @@ -4589,6 +4606,7 @@ struct CreateCustomDBEngineVersionOutputBody: Swift.Equatable { let supportsCertificateRotationWithoutRestart: Swift.Bool? let supportedCACertificateIdentifiers: [Swift.String]? let supportsLocalWriteForwarding: Swift.Bool? + let supportsIntegrations: Swift.Bool? } extension CreateCustomDBEngineVersionOutputBody: Swift.Decodable { @@ -4619,6 +4637,7 @@ extension CreateCustomDBEngineVersionOutputBody: Swift.Decodable { case supportsBabelfish = "SupportsBabelfish" case supportsCertificateRotationWithoutRestart = "SupportsCertificateRotationWithoutRestart" case supportsGlobalDatabases = "SupportsGlobalDatabases" + case supportsIntegrations = "SupportsIntegrations" case supportsLocalWriteForwarding = "SupportsLocalWriteForwarding" case supportsLogExportsToCloudwatchLogs = "SupportsLogExportsToCloudwatchLogs" case supportsParallelQuery = "SupportsParallelQuery" @@ -4847,6 +4866,8 @@ extension CreateCustomDBEngineVersionOutputBody: Swift.Decodable { } let supportsLocalWriteForwardingDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .supportsLocalWriteForwarding) supportsLocalWriteForwarding = supportsLocalWriteForwardingDecoded + let supportsIntegrationsDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .supportsIntegrations) + supportsIntegrations = supportsIntegrationsDecoded } } @@ -5387,6 +5408,9 @@ extension CreateDBClusterInput: Swift.Encodable { if let publiclyAccessible = publiclyAccessible { try container.encode(publiclyAccessible, forKey: ClientRuntime.Key("PubliclyAccessible")) } + if let rdsCustomClusterConfiguration = rdsCustomClusterConfiguration { + try container.encode(rdsCustomClusterConfiguration, forKey: ClientRuntime.Key("RdsCustomClusterConfiguration")) + } if let replicationSourceIdentifier = replicationSourceIdentifier { try container.encode(replicationSourceIdentifier, forKey: ClientRuntime.Key("ReplicationSourceIdentifier")) } @@ -5650,6 +5674,8 @@ public struct CreateDBClusterInput: Swift.Equatable { /// /// * If the subnets are part of a VPC that has an internet gateway attached to it, the DB cluster is public. public var publiclyAccessible: Swift.Bool? + /// Reserved for future use. + public var rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? /// The Amazon Resource Name (ARN) of the source DB instance or DB cluster if this DB cluster is created as a read replica. Valid for Cluster Type: Aurora DB clusters and Multi-AZ DB clusters public var replicationSourceIdentifier: Swift.String? /// For DB clusters in serverless DB engine mode, the scaling properties of the DB cluster. Valid for Cluster Type: Aurora DB clusters only @@ -5723,6 +5749,7 @@ public struct CreateDBClusterInput: Swift.Equatable { preferredBackupWindow: Swift.String? = nil, preferredMaintenanceWindow: Swift.String? = nil, publiclyAccessible: Swift.Bool? = nil, + rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? = nil, replicationSourceIdentifier: Swift.String? = nil, scalingConfiguration: RDSClientTypes.ScalingConfiguration? = nil, serverlessV2ScalingConfiguration: RDSClientTypes.ServerlessV2ScalingConfiguration? = nil, @@ -5775,6 +5802,7 @@ public struct CreateDBClusterInput: Swift.Equatable { self.preferredBackupWindow = preferredBackupWindow self.preferredMaintenanceWindow = preferredMaintenanceWindow self.publiclyAccessible = publiclyAccessible + self.rdsCustomClusterConfiguration = rdsCustomClusterConfiguration self.replicationSourceIdentifier = replicationSourceIdentifier self.scalingConfiguration = scalingConfiguration self.serverlessV2ScalingConfiguration = serverlessV2ScalingConfiguration @@ -5812,6 +5840,7 @@ struct CreateDBClusterInputBody: Swift.Equatable { let enableCloudwatchLogsExports: [Swift.String]? let engineMode: Swift.String? let scalingConfiguration: RDSClientTypes.ScalingConfiguration? + let rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? let deletionProtection: Swift.Bool? let globalClusterIdentifier: Swift.String? let enableHttpEndpoint: Swift.Bool? @@ -5883,6 +5912,7 @@ extension CreateDBClusterInputBody: Swift.Decodable { case preferredBackupWindow = "PreferredBackupWindow" case preferredMaintenanceWindow = "PreferredMaintenanceWindow" case publiclyAccessible = "PubliclyAccessible" + case rdsCustomClusterConfiguration = "RdsCustomClusterConfiguration" case replicationSourceIdentifier = "ReplicationSourceIdentifier" case scalingConfiguration = "ScalingConfiguration" case serverlessV2ScalingConfiguration = "ServerlessV2ScalingConfiguration" @@ -6014,6 +6044,8 @@ extension CreateDBClusterInputBody: Swift.Decodable { engineMode = engineModeDecoded let scalingConfigurationDecoded = try containerValues.decodeIfPresent(RDSClientTypes.ScalingConfiguration.self, forKey: .scalingConfiguration) scalingConfiguration = scalingConfigurationDecoded + let rdsCustomClusterConfigurationDecoded = try containerValues.decodeIfPresent(RDSClientTypes.RdsCustomClusterConfiguration.self, forKey: .rdsCustomClusterConfiguration) + rdsCustomClusterConfiguration = rdsCustomClusterConfigurationDecoded let deletionProtectionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtection) deletionProtection = deletionProtectionDecoded let globalClusterIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .globalClusterIdentifier) @@ -10285,6 +10317,359 @@ enum CreateGlobalClusterOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension CreateIntegrationInput: Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let additionalEncryptionContext = additionalEncryptionContext { + var additionalEncryptionContextContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("AdditionalEncryptionContext")) + for (index0, element0) in additionalEncryptionContext.sorted(by: { $0.key < $1.key }).enumerated() { + let stringKey0 = element0.key + let stringValue0 = element0.value + var entryContainer0 = additionalEncryptionContextContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("entry.\(index0.advanced(by: 1))")) + var keyContainer0 = entryContainer0.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("key")) + try keyContainer0.encode(stringKey0, forKey: ClientRuntime.Key("")) + var valueContainer0 = entryContainer0.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("value")) + try valueContainer0.encode(stringValue0, forKey: ClientRuntime.Key("")) + } + } + if let integrationName = integrationName { + try container.encode(integrationName, forKey: ClientRuntime.Key("IntegrationName")) + } + if let kmsKeyId = kmsKeyId { + try container.encode(kmsKeyId, forKey: ClientRuntime.Key("KMSKeyId")) + } + if let sourceArn = sourceArn { + try container.encode(sourceArn, forKey: ClientRuntime.Key("SourceArn")) + } + if let tags = tags { + if !tags.isEmpty { + var tagsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Tags")) + for (index0, tag0) in tags.enumerated() { + try tagsContainer.encode(tag0, forKey: ClientRuntime.Key("Tag.\(index0.advanced(by: 1))")) + } + } + else { + var tagsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Tags")) + try tagsContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let targetArn = targetArn { + try container.encode(targetArn, forKey: ClientRuntime.Key("TargetArn")) + } + try container.encode("CreateIntegration", forKey:ClientRuntime.Key("Action")) + try container.encode("2014-10-31", forKey:ClientRuntime.Key("Version")) + } +} + +extension CreateIntegrationInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct CreateIntegrationInput: Swift.Equatable { + /// An optional set of non-secret key–value pairs that contains additional contextual information about the data. For more information, see [Encryption context](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) in the Amazon Web Services Key Management Service Developer Guide. You can only include this parameter if you specify the KMSKeyId parameter. + public var additionalEncryptionContext: [Swift.String:Swift.String]? + /// The name of the integration. + /// This member is required. + public var integrationName: Swift.String? + /// The Amazon Web Services Key Management System (Amazon Web Services KMS) key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, Aurora uses a default Amazon Web Services owned key. + public var kmsKeyId: Swift.String? + /// The Amazon Resource Name (ARN) of the Aurora DB cluster to use as the source for replication. + /// This member is required. + public var sourceArn: Swift.String? + /// A list of tags. For more information, see [Tagging Amazon RDS Resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the Amazon RDS User Guide. + public var tags: [RDSClientTypes.Tag]? + /// The ARN of the Redshift data warehouse to use as the target for replication. + /// This member is required. + public var targetArn: Swift.String? + + public init( + additionalEncryptionContext: [Swift.String:Swift.String]? = nil, + integrationName: Swift.String? = nil, + kmsKeyId: Swift.String? = nil, + sourceArn: Swift.String? = nil, + tags: [RDSClientTypes.Tag]? = nil, + targetArn: Swift.String? = nil + ) + { + self.additionalEncryptionContext = additionalEncryptionContext + self.integrationName = integrationName + self.kmsKeyId = kmsKeyId + self.sourceArn = sourceArn + self.tags = tags + self.targetArn = targetArn + } +} + +struct CreateIntegrationInputBody: Swift.Equatable { + let sourceArn: Swift.String? + let targetArn: Swift.String? + let integrationName: Swift.String? + let kmsKeyId: Swift.String? + let additionalEncryptionContext: [Swift.String:Swift.String]? + let tags: [RDSClientTypes.Tag]? +} + +extension CreateIntegrationInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case additionalEncryptionContext = "AdditionalEncryptionContext" + case integrationName = "IntegrationName" + case kmsKeyId = "KMSKeyId" + case sourceArn = "SourceArn" + case tags = "Tags" + case targetArn = "TargetArn" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let sourceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceArn) + sourceArn = sourceArnDecoded + let targetArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .targetArn) + targetArn = targetArnDecoded + let integrationNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .integrationName) + integrationName = integrationNameDecoded + let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) + kmsKeyId = kmsKeyIdDecoded + if containerValues.contains(.additionalEncryptionContext) { + struct KeyVal0{struct key{}; struct value{}} + let additionalEncryptionContextWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: ClientRuntime.MapEntry.CodingKeys.self, forKey: .additionalEncryptionContext) + if let additionalEncryptionContextWrappedContainer = additionalEncryptionContextWrappedContainer { + let additionalEncryptionContextContainer = try additionalEncryptionContextWrappedContainer.decodeIfPresent([ClientRuntime.MapKeyValue].self, forKey: .entry) + var additionalEncryptionContextBuffer: [Swift.String:Swift.String]? = nil + if let additionalEncryptionContextContainer = additionalEncryptionContextContainer { + additionalEncryptionContextBuffer = [Swift.String:Swift.String]() + for stringContainer0 in additionalEncryptionContextContainer { + additionalEncryptionContextBuffer?[stringContainer0.key] = stringContainer0.value + } + } + additionalEncryptionContext = additionalEncryptionContextBuffer + } else { + additionalEncryptionContext = [:] + } + } else { + additionalEncryptionContext = nil + } + if containerValues.contains(.tags) { + struct KeyVal0{struct Tag{}} + let tagsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .tags) + if let tagsWrappedContainer = tagsWrappedContainer { + let tagsContainer = try tagsWrappedContainer.decodeIfPresent([RDSClientTypes.Tag].self, forKey: .member) + var tagsBuffer:[RDSClientTypes.Tag]? = nil + if let tagsContainer = tagsContainer { + tagsBuffer = [RDSClientTypes.Tag]() + for structureContainer0 in tagsContainer { + tagsBuffer?.append(structureContainer0) + } + } + tags = tagsBuffer + } else { + tags = [] + } + } else { + tags = nil + } + } +} + +extension CreateIntegrationOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: CreateIntegrationOutputBody = try responseDecoder.decode(responseBody: data) + self.additionalEncryptionContext = output.additionalEncryptionContext + self.createTime = output.createTime + self.errors = output.errors + self.integrationArn = output.integrationArn + self.integrationName = output.integrationName + self.kmsKeyId = output.kmsKeyId + self.sourceArn = output.sourceArn + self.status = output.status + self.tags = output.tags + self.targetArn = output.targetArn + } else { + self.additionalEncryptionContext = nil + self.createTime = nil + self.errors = nil + self.integrationArn = nil + self.integrationName = nil + self.kmsKeyId = nil + self.sourceArn = nil + self.status = nil + self.tags = nil + self.targetArn = nil + } + } +} + +/// An Aurora zero-ETL integration with Amazon Redshift. For more information, see [Working with Amazon Aurora zero-ETL integrations with Amazon Redshift](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.html) in the Amazon Aurora User Guide. +public struct CreateIntegrationOutput: Swift.Equatable { + /// The encryption context for the integration. For more information, see [Encryption context](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) in the Amazon Web Services Key Management Service Developer Guide. + public var additionalEncryptionContext: [Swift.String:Swift.String]? + /// The time when the integration was created, in Universal Coordinated Time (UTC). + public var createTime: ClientRuntime.Date? + /// Any errors associated with the integration. + public var errors: [RDSClientTypes.IntegrationError]? + /// The ARN of the integration. + public var integrationArn: Swift.String? + /// The name of the integration. + public var integrationName: Swift.String? + /// The Amazon Web Services Key Management System (Amazon Web Services KMS) key identifier for the key used to to encrypt the integration. + public var kmsKeyId: Swift.String? + /// The Amazon Resource Name (ARN) of the Aurora DB cluster used as the source for replication. + public var sourceArn: Swift.String? + /// The current status of the integration. + public var status: RDSClientTypes.IntegrationStatus? + /// A list of tags. For more information, see [Tagging Amazon RDS Resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the Amazon RDS User Guide. + public var tags: [RDSClientTypes.Tag]? + /// The ARN of the Redshift data warehouse used as the target for replication. + public var targetArn: Swift.String? + + public init( + additionalEncryptionContext: [Swift.String:Swift.String]? = nil, + createTime: ClientRuntime.Date? = nil, + errors: [RDSClientTypes.IntegrationError]? = nil, + integrationArn: Swift.String? = nil, + integrationName: Swift.String? = nil, + kmsKeyId: Swift.String? = nil, + sourceArn: Swift.String? = nil, + status: RDSClientTypes.IntegrationStatus? = nil, + tags: [RDSClientTypes.Tag]? = nil, + targetArn: Swift.String? = nil + ) + { + self.additionalEncryptionContext = additionalEncryptionContext + self.createTime = createTime + self.errors = errors + self.integrationArn = integrationArn + self.integrationName = integrationName + self.kmsKeyId = kmsKeyId + self.sourceArn = sourceArn + self.status = status + self.tags = tags + self.targetArn = targetArn + } +} + +struct CreateIntegrationOutputBody: Swift.Equatable { + let sourceArn: Swift.String? + let targetArn: Swift.String? + let integrationName: Swift.String? + let integrationArn: Swift.String? + let kmsKeyId: Swift.String? + let additionalEncryptionContext: [Swift.String:Swift.String]? + let status: RDSClientTypes.IntegrationStatus? + let tags: [RDSClientTypes.Tag]? + let createTime: ClientRuntime.Date? + let errors: [RDSClientTypes.IntegrationError]? +} + +extension CreateIntegrationOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case additionalEncryptionContext = "AdditionalEncryptionContext" + case createTime = "CreateTime" + case errors = "Errors" + case integrationArn = "IntegrationArn" + case integrationName = "IntegrationName" + case kmsKeyId = "KMSKeyId" + case sourceArn = "SourceArn" + case status = "Status" + case tags = "Tags" + case targetArn = "TargetArn" + } + + public init(from decoder: Swift.Decoder) throws { + let topLevelContainer = try decoder.container(keyedBy: ClientRuntime.Key.self) + let containerValues = try topLevelContainer.nestedContainer(keyedBy: CodingKeys.self, forKey: ClientRuntime.Key("CreateIntegrationResult")) + let sourceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceArn) + sourceArn = sourceArnDecoded + let targetArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .targetArn) + targetArn = targetArnDecoded + let integrationNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .integrationName) + integrationName = integrationNameDecoded + let integrationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .integrationArn) + integrationArn = integrationArnDecoded + let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) + kmsKeyId = kmsKeyIdDecoded + if containerValues.contains(.additionalEncryptionContext) { + struct KeyVal0{struct key{}; struct value{}} + let additionalEncryptionContextWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: ClientRuntime.MapEntry.CodingKeys.self, forKey: .additionalEncryptionContext) + if let additionalEncryptionContextWrappedContainer = additionalEncryptionContextWrappedContainer { + let additionalEncryptionContextContainer = try additionalEncryptionContextWrappedContainer.decodeIfPresent([ClientRuntime.MapKeyValue].self, forKey: .entry) + var additionalEncryptionContextBuffer: [Swift.String:Swift.String]? = nil + if let additionalEncryptionContextContainer = additionalEncryptionContextContainer { + additionalEncryptionContextBuffer = [Swift.String:Swift.String]() + for stringContainer0 in additionalEncryptionContextContainer { + additionalEncryptionContextBuffer?[stringContainer0.key] = stringContainer0.value + } + } + additionalEncryptionContext = additionalEncryptionContextBuffer + } else { + additionalEncryptionContext = [:] + } + } else { + additionalEncryptionContext = nil + } + let statusDecoded = try containerValues.decodeIfPresent(RDSClientTypes.IntegrationStatus.self, forKey: .status) + status = statusDecoded + if containerValues.contains(.tags) { + struct KeyVal0{struct Tag{}} + let tagsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .tags) + if let tagsWrappedContainer = tagsWrappedContainer { + let tagsContainer = try tagsWrappedContainer.decodeIfPresent([RDSClientTypes.Tag].self, forKey: .member) + var tagsBuffer:[RDSClientTypes.Tag]? = nil + if let tagsContainer = tagsContainer { + tagsBuffer = [RDSClientTypes.Tag]() + for structureContainer0 in tagsContainer { + tagsBuffer?.append(structureContainer0) + } + } + tags = tagsBuffer + } else { + tags = [] + } + } else { + tags = nil + } + let createTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .createTime) + createTime = createTimeDecoded + if containerValues.contains(.errors) { + struct KeyVal0{struct IntegrationError{}} + let errorsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .errors) + if let errorsWrappedContainer = errorsWrappedContainer { + let errorsContainer = try errorsWrappedContainer.decodeIfPresent([RDSClientTypes.IntegrationError].self, forKey: .member) + var errorsBuffer:[RDSClientTypes.IntegrationError]? = nil + if let errorsContainer = errorsContainer { + errorsBuffer = [RDSClientTypes.IntegrationError]() + for structureContainer0 in errorsContainer { + errorsBuffer?.append(structureContainer0) + } + } + errors = errorsBuffer + } else { + errors = [] + } + } else { + errors = nil + } + } +} + +enum CreateIntegrationOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restXMLError = try await AWSClientRuntime.RestXMLError(httpResponse: httpResponse) + switch restXMLError.errorCode { + case "DBClusterNotFoundFault": return try await DBClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "DBInstanceNotFound": return try await DBInstanceNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "IntegrationAlreadyExistsFault": return try await IntegrationAlreadyExistsFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "IntegrationConflictOperationFault": return try await IntegrationConflictOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "IntegrationQuotaExceededFault": return try await IntegrationQuotaExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "KMSKeyNotAccessibleFault": return try await KMSKeyNotAccessibleFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) + } + } +} + extension CreateOptionGroupInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -10850,6 +11235,7 @@ extension RDSClientTypes.DBCluster: Swift.Codable { case preferredBackupWindow = "PreferredBackupWindow" case preferredMaintenanceWindow = "PreferredMaintenanceWindow" case publiclyAccessible = "PubliclyAccessible" + case rdsCustomClusterConfiguration = "RdsCustomClusterConfiguration" case readReplicaIdentifiers = "ReadReplicaIdentifiers" case readerEndpoint = "ReaderEndpoint" case replicationSourceIdentifier = "ReplicationSourceIdentifier" @@ -11119,6 +11505,9 @@ extension RDSClientTypes.DBCluster: Swift.Codable { if let publiclyAccessible = publiclyAccessible { try container.encode(publiclyAccessible, forKey: ClientRuntime.Key("PubliclyAccessible")) } + if let rdsCustomClusterConfiguration = rdsCustomClusterConfiguration { + try container.encode(rdsCustomClusterConfiguration, forKey: ClientRuntime.Key("RdsCustomClusterConfiguration")) + } if let readReplicaIdentifiers = readReplicaIdentifiers { if !readReplicaIdentifiers.isEmpty { var readReplicaIdentifiersContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("ReadReplicaIdentifiers")) @@ -11404,6 +11793,8 @@ extension RDSClientTypes.DBCluster: Swift.Codable { engineMode = engineModeDecoded let scalingConfigurationInfoDecoded = try containerValues.decodeIfPresent(RDSClientTypes.ScalingConfigurationInfo.self, forKey: .scalingConfigurationInfo) scalingConfigurationInfo = scalingConfigurationInfoDecoded + let rdsCustomClusterConfigurationDecoded = try containerValues.decodeIfPresent(RDSClientTypes.RdsCustomClusterConfiguration.self, forKey: .rdsCustomClusterConfiguration) + rdsCustomClusterConfiguration = rdsCustomClusterConfigurationDecoded let deletionProtectionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtection) deletionProtection = deletionProtectionDecoded let httpEndpointEnabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .httpEndpointEnabled) @@ -11641,6 +12032,8 @@ extension RDSClientTypes { public var preferredMaintenanceWindow: Swift.String? /// Indicates whether the DB cluster is publicly accessible. When the DB cluster is publicly accessible, its Domain Name System (DNS) endpoint resolves to the private IP address from within the DB cluster's virtual private cloud (VPC). It resolves to the public IP address from outside of the DB cluster's VPC. Access to the DB cluster is ultimately controlled by the security group it uses. That public access isn't permitted if the security group assigned to the DB cluster doesn't permit it. When the DB cluster isn't publicly accessible, it is an internal DB cluster with a DNS name that resolves to a private IP address. For more information, see [CreateDBCluster]. This setting is only for non-Aurora Multi-AZ DB clusters. public var publiclyAccessible: Swift.Bool? + /// Reserved for future use. + public var rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? /// Contains one or more identifiers of the read replicas associated with this DB cluster. public var readReplicaIdentifiers: [Swift.String]? /// The reader endpoint for the DB cluster. The reader endpoint for a DB cluster load-balances connections across the Aurora Replicas that are available in a DB cluster. As clients request new connections to the reader endpoint, Aurora distributes the connection requests among the Aurora Replicas in the DB cluster. This functionality can help balance your read workload across multiple Aurora Replicas in your DB cluster. If a failover occurs, and the Aurora Replica that you are connected to is promoted to be the primary instance, your connection is dropped. To continue sending your read workload to other Aurora Replicas in the cluster, you can then reconnect to the reader endpoint. @@ -11727,6 +12120,7 @@ extension RDSClientTypes { preferredBackupWindow: Swift.String? = nil, preferredMaintenanceWindow: Swift.String? = nil, publiclyAccessible: Swift.Bool? = nil, + rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? = nil, readReplicaIdentifiers: [Swift.String]? = nil, readerEndpoint: Swift.String? = nil, replicationSourceIdentifier: Swift.String? = nil, @@ -11803,6 +12197,7 @@ extension RDSClientTypes { self.preferredBackupWindow = preferredBackupWindow self.preferredMaintenanceWindow = preferredMaintenanceWindow self.publiclyAccessible = publiclyAccessible + self.rdsCustomClusterConfiguration = rdsCustomClusterConfiguration self.readReplicaIdentifiers = readReplicaIdentifiers self.readerEndpoint = readerEndpoint self.replicationSourceIdentifier = replicationSourceIdentifier @@ -13941,6 +14336,7 @@ extension RDSClientTypes.DBEngineVersion: Swift.Codable { case supportsBabelfish = "SupportsBabelfish" case supportsCertificateRotationWithoutRestart = "SupportsCertificateRotationWithoutRestart" case supportsGlobalDatabases = "SupportsGlobalDatabases" + case supportsIntegrations = "SupportsIntegrations" case supportsLocalWriteForwarding = "SupportsLocalWriteForwarding" case supportsLogExportsToCloudwatchLogs = "SupportsLogExportsToCloudwatchLogs" case supportsParallelQuery = "SupportsParallelQuery" @@ -14092,6 +14488,9 @@ extension RDSClientTypes.DBEngineVersion: Swift.Codable { if let supportsGlobalDatabases = supportsGlobalDatabases { try container.encode(supportsGlobalDatabases, forKey: ClientRuntime.Key("SupportsGlobalDatabases")) } + if let supportsIntegrations = supportsIntegrations { + try container.encode(supportsIntegrations, forKey: ClientRuntime.Key("SupportsIntegrations")) + } if let supportsLocalWriteForwarding = supportsLocalWriteForwarding { try container.encode(supportsLocalWriteForwarding, forKey: ClientRuntime.Key("SupportsLocalWriteForwarding")) } @@ -14349,6 +14748,8 @@ extension RDSClientTypes.DBEngineVersion: Swift.Codable { } let supportsLocalWriteForwardingDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .supportsLocalWriteForwarding) supportsLocalWriteForwarding = supportsLocalWriteForwardingDecoded + let supportsIntegrationsDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .supportsIntegrations) + supportsIntegrations = supportsIntegrationsDecoded } } @@ -14407,6 +14808,8 @@ extension RDSClientTypes { public var supportsCertificateRotationWithoutRestart: Swift.Bool? /// Indicates whether you can use Aurora global databases with a specific DB engine version. public var supportsGlobalDatabases: Swift.Bool? + /// Indicates whether the DB engine version supports Aurora zero-ETL integrations with Amazon Redshift. + public var supportsIntegrations: Swift.Bool? /// Indicates whether the DB engine version supports forwarding write operations from reader DB instances to the writer DB instance in the DB cluster. By default, write operations aren't allowed on reader DB instances. Valid for: Aurora DB clusters only public var supportsLocalWriteForwarding: Swift.Bool? /// Indicates whether the engine version supports exporting the log types specified by ExportableLogTypes to CloudWatch Logs. @@ -14447,6 +14850,7 @@ extension RDSClientTypes { supportsBabelfish: Swift.Bool? = nil, supportsCertificateRotationWithoutRestart: Swift.Bool? = nil, supportsGlobalDatabases: Swift.Bool? = nil, + supportsIntegrations: Swift.Bool? = nil, supportsLocalWriteForwarding: Swift.Bool? = nil, supportsLogExportsToCloudwatchLogs: Swift.Bool? = nil, supportsParallelQuery: Swift.Bool? = nil, @@ -14481,6 +14885,7 @@ extension RDSClientTypes { self.supportsBabelfish = supportsBabelfish self.supportsCertificateRotationWithoutRestart = supportsCertificateRotationWithoutRestart self.supportsGlobalDatabases = supportsGlobalDatabases + self.supportsIntegrations = supportsIntegrations self.supportsLocalWriteForwarding = supportsLocalWriteForwarding self.supportsLogExportsToCloudwatchLogs = supportsLogExportsToCloudwatchLogs self.supportsParallelQuery = supportsParallelQuery @@ -20037,6 +20442,7 @@ extension DeleteCustomDBEngineVersionOutput: ClientRuntime.HttpResponseBinding { self.supportsBabelfish = output.supportsBabelfish self.supportsCertificateRotationWithoutRestart = output.supportsCertificateRotationWithoutRestart self.supportsGlobalDatabases = output.supportsGlobalDatabases + self.supportsIntegrations = output.supportsIntegrations self.supportsLocalWriteForwarding = output.supportsLocalWriteForwarding self.supportsLogExportsToCloudwatchLogs = output.supportsLogExportsToCloudwatchLogs self.supportsParallelQuery = output.supportsParallelQuery @@ -20070,6 +20476,7 @@ extension DeleteCustomDBEngineVersionOutput: ClientRuntime.HttpResponseBinding { self.supportsBabelfish = nil self.supportsCertificateRotationWithoutRestart = nil self.supportsGlobalDatabases = nil + self.supportsIntegrations = nil self.supportsLocalWriteForwarding = nil self.supportsLogExportsToCloudwatchLogs = nil self.supportsParallelQuery = nil @@ -20134,6 +20541,8 @@ public struct DeleteCustomDBEngineVersionOutput: Swift.Equatable { public var supportsCertificateRotationWithoutRestart: Swift.Bool? /// Indicates whether you can use Aurora global databases with a specific DB engine version. public var supportsGlobalDatabases: Swift.Bool? + /// Indicates whether the DB engine version supports Aurora zero-ETL integrations with Amazon Redshift. + public var supportsIntegrations: Swift.Bool? /// Indicates whether the DB engine version supports forwarding write operations from reader DB instances to the writer DB instance in the DB cluster. By default, write operations aren't allowed on reader DB instances. Valid for: Aurora DB clusters only public var supportsLocalWriteForwarding: Swift.Bool? /// Indicates whether the engine version supports exporting the log types specified by ExportableLogTypes to CloudWatch Logs. @@ -20174,6 +20583,7 @@ public struct DeleteCustomDBEngineVersionOutput: Swift.Equatable { supportsBabelfish: Swift.Bool? = nil, supportsCertificateRotationWithoutRestart: Swift.Bool? = nil, supportsGlobalDatabases: Swift.Bool? = nil, + supportsIntegrations: Swift.Bool? = nil, supportsLocalWriteForwarding: Swift.Bool? = nil, supportsLogExportsToCloudwatchLogs: Swift.Bool? = nil, supportsParallelQuery: Swift.Bool? = nil, @@ -20208,6 +20618,7 @@ public struct DeleteCustomDBEngineVersionOutput: Swift.Equatable { self.supportsBabelfish = supportsBabelfish self.supportsCertificateRotationWithoutRestart = supportsCertificateRotationWithoutRestart self.supportsGlobalDatabases = supportsGlobalDatabases + self.supportsIntegrations = supportsIntegrations self.supportsLocalWriteForwarding = supportsLocalWriteForwarding self.supportsLogExportsToCloudwatchLogs = supportsLogExportsToCloudwatchLogs self.supportsParallelQuery = supportsParallelQuery @@ -20250,6 +20661,7 @@ struct DeleteCustomDBEngineVersionOutputBody: Swift.Equatable { let supportsCertificateRotationWithoutRestart: Swift.Bool? let supportedCACertificateIdentifiers: [Swift.String]? let supportsLocalWriteForwarding: Swift.Bool? + let supportsIntegrations: Swift.Bool? } extension DeleteCustomDBEngineVersionOutputBody: Swift.Decodable { @@ -20280,6 +20692,7 @@ extension DeleteCustomDBEngineVersionOutputBody: Swift.Decodable { case supportsBabelfish = "SupportsBabelfish" case supportsCertificateRotationWithoutRestart = "SupportsCertificateRotationWithoutRestart" case supportsGlobalDatabases = "SupportsGlobalDatabases" + case supportsIntegrations = "SupportsIntegrations" case supportsLocalWriteForwarding = "SupportsLocalWriteForwarding" case supportsLogExportsToCloudwatchLogs = "SupportsLogExportsToCloudwatchLogs" case supportsParallelQuery = "SupportsParallelQuery" @@ -20508,6 +20921,8 @@ extension DeleteCustomDBEngineVersionOutputBody: Swift.Decodable { } let supportsLocalWriteForwardingDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .supportsLocalWriteForwarding) supportsLocalWriteForwarding = supportsLocalWriteForwardingDecoded + let supportsIntegrationsDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .supportsIntegrations) + supportsIntegrations = supportsIntegrationsDecoded } } @@ -22138,6 +22553,247 @@ enum DeleteGlobalClusterOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DeleteIntegrationInput: Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let integrationIdentifier = integrationIdentifier { + try container.encode(integrationIdentifier, forKey: ClientRuntime.Key("IntegrationIdentifier")) + } + try container.encode("DeleteIntegration", forKey:ClientRuntime.Key("Action")) + try container.encode("2014-10-31", forKey:ClientRuntime.Key("Version")) + } +} + +extension DeleteIntegrationInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct DeleteIntegrationInput: Swift.Equatable { + /// The unique identifier of the integration. + /// This member is required. + public var integrationIdentifier: Swift.String? + + public init( + integrationIdentifier: Swift.String? = nil + ) + { + self.integrationIdentifier = integrationIdentifier + } +} + +struct DeleteIntegrationInputBody: Swift.Equatable { + let integrationIdentifier: Swift.String? +} + +extension DeleteIntegrationInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case integrationIdentifier = "IntegrationIdentifier" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let integrationIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .integrationIdentifier) + integrationIdentifier = integrationIdentifierDecoded + } +} + +extension DeleteIntegrationOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: DeleteIntegrationOutputBody = try responseDecoder.decode(responseBody: data) + self.additionalEncryptionContext = output.additionalEncryptionContext + self.createTime = output.createTime + self.errors = output.errors + self.integrationArn = output.integrationArn + self.integrationName = output.integrationName + self.kmsKeyId = output.kmsKeyId + self.sourceArn = output.sourceArn + self.status = output.status + self.tags = output.tags + self.targetArn = output.targetArn + } else { + self.additionalEncryptionContext = nil + self.createTime = nil + self.errors = nil + self.integrationArn = nil + self.integrationName = nil + self.kmsKeyId = nil + self.sourceArn = nil + self.status = nil + self.tags = nil + self.targetArn = nil + } + } +} + +/// An Aurora zero-ETL integration with Amazon Redshift. For more information, see [Working with Amazon Aurora zero-ETL integrations with Amazon Redshift](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.html) in the Amazon Aurora User Guide. +public struct DeleteIntegrationOutput: Swift.Equatable { + /// The encryption context for the integration. For more information, see [Encryption context](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) in the Amazon Web Services Key Management Service Developer Guide. + public var additionalEncryptionContext: [Swift.String:Swift.String]? + /// The time when the integration was created, in Universal Coordinated Time (UTC). + public var createTime: ClientRuntime.Date? + /// Any errors associated with the integration. + public var errors: [RDSClientTypes.IntegrationError]? + /// The ARN of the integration. + public var integrationArn: Swift.String? + /// The name of the integration. + public var integrationName: Swift.String? + /// The Amazon Web Services Key Management System (Amazon Web Services KMS) key identifier for the key used to to encrypt the integration. + public var kmsKeyId: Swift.String? + /// The Amazon Resource Name (ARN) of the Aurora DB cluster used as the source for replication. + public var sourceArn: Swift.String? + /// The current status of the integration. + public var status: RDSClientTypes.IntegrationStatus? + /// A list of tags. For more information, see [Tagging Amazon RDS Resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the Amazon RDS User Guide. + public var tags: [RDSClientTypes.Tag]? + /// The ARN of the Redshift data warehouse used as the target for replication. + public var targetArn: Swift.String? + + public init( + additionalEncryptionContext: [Swift.String:Swift.String]? = nil, + createTime: ClientRuntime.Date? = nil, + errors: [RDSClientTypes.IntegrationError]? = nil, + integrationArn: Swift.String? = nil, + integrationName: Swift.String? = nil, + kmsKeyId: Swift.String? = nil, + sourceArn: Swift.String? = nil, + status: RDSClientTypes.IntegrationStatus? = nil, + tags: [RDSClientTypes.Tag]? = nil, + targetArn: Swift.String? = nil + ) + { + self.additionalEncryptionContext = additionalEncryptionContext + self.createTime = createTime + self.errors = errors + self.integrationArn = integrationArn + self.integrationName = integrationName + self.kmsKeyId = kmsKeyId + self.sourceArn = sourceArn + self.status = status + self.tags = tags + self.targetArn = targetArn + } +} + +struct DeleteIntegrationOutputBody: Swift.Equatable { + let sourceArn: Swift.String? + let targetArn: Swift.String? + let integrationName: Swift.String? + let integrationArn: Swift.String? + let kmsKeyId: Swift.String? + let additionalEncryptionContext: [Swift.String:Swift.String]? + let status: RDSClientTypes.IntegrationStatus? + let tags: [RDSClientTypes.Tag]? + let createTime: ClientRuntime.Date? + let errors: [RDSClientTypes.IntegrationError]? +} + +extension DeleteIntegrationOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case additionalEncryptionContext = "AdditionalEncryptionContext" + case createTime = "CreateTime" + case errors = "Errors" + case integrationArn = "IntegrationArn" + case integrationName = "IntegrationName" + case kmsKeyId = "KMSKeyId" + case sourceArn = "SourceArn" + case status = "Status" + case tags = "Tags" + case targetArn = "TargetArn" + } + + public init(from decoder: Swift.Decoder) throws { + let topLevelContainer = try decoder.container(keyedBy: ClientRuntime.Key.self) + let containerValues = try topLevelContainer.nestedContainer(keyedBy: CodingKeys.self, forKey: ClientRuntime.Key("DeleteIntegrationResult")) + let sourceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceArn) + sourceArn = sourceArnDecoded + let targetArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .targetArn) + targetArn = targetArnDecoded + let integrationNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .integrationName) + integrationName = integrationNameDecoded + let integrationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .integrationArn) + integrationArn = integrationArnDecoded + let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) + kmsKeyId = kmsKeyIdDecoded + if containerValues.contains(.additionalEncryptionContext) { + struct KeyVal0{struct key{}; struct value{}} + let additionalEncryptionContextWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: ClientRuntime.MapEntry.CodingKeys.self, forKey: .additionalEncryptionContext) + if let additionalEncryptionContextWrappedContainer = additionalEncryptionContextWrappedContainer { + let additionalEncryptionContextContainer = try additionalEncryptionContextWrappedContainer.decodeIfPresent([ClientRuntime.MapKeyValue].self, forKey: .entry) + var additionalEncryptionContextBuffer: [Swift.String:Swift.String]? = nil + if let additionalEncryptionContextContainer = additionalEncryptionContextContainer { + additionalEncryptionContextBuffer = [Swift.String:Swift.String]() + for stringContainer0 in additionalEncryptionContextContainer { + additionalEncryptionContextBuffer?[stringContainer0.key] = stringContainer0.value + } + } + additionalEncryptionContext = additionalEncryptionContextBuffer + } else { + additionalEncryptionContext = [:] + } + } else { + additionalEncryptionContext = nil + } + let statusDecoded = try containerValues.decodeIfPresent(RDSClientTypes.IntegrationStatus.self, forKey: .status) + status = statusDecoded + if containerValues.contains(.tags) { + struct KeyVal0{struct Tag{}} + let tagsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .tags) + if let tagsWrappedContainer = tagsWrappedContainer { + let tagsContainer = try tagsWrappedContainer.decodeIfPresent([RDSClientTypes.Tag].self, forKey: .member) + var tagsBuffer:[RDSClientTypes.Tag]? = nil + if let tagsContainer = tagsContainer { + tagsBuffer = [RDSClientTypes.Tag]() + for structureContainer0 in tagsContainer { + tagsBuffer?.append(structureContainer0) + } + } + tags = tagsBuffer + } else { + tags = [] + } + } else { + tags = nil + } + let createTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .createTime) + createTime = createTimeDecoded + if containerValues.contains(.errors) { + struct KeyVal0{struct IntegrationError{}} + let errorsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .errors) + if let errorsWrappedContainer = errorsWrappedContainer { + let errorsContainer = try errorsWrappedContainer.decodeIfPresent([RDSClientTypes.IntegrationError].self, forKey: .member) + var errorsBuffer:[RDSClientTypes.IntegrationError]? = nil + if let errorsContainer = errorsContainer { + errorsBuffer = [RDSClientTypes.IntegrationError]() + for structureContainer0 in errorsContainer { + errorsBuffer?.append(structureContainer0) + } + } + errors = errorsBuffer + } else { + errors = [] + } + } else { + errors = nil + } + } +} + +enum DeleteIntegrationOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restXMLError = try await AWSClientRuntime.RestXMLError(httpResponse: httpResponse) + switch restXMLError.errorCode { + case "IntegrationConflictOperationFault": return try await IntegrationConflictOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "IntegrationNotFoundFault": return try await IntegrationNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "InvalidIntegrationStateFault": return try await InvalidIntegrationStateFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) + } + } +} + extension DeleteOptionGroupInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -28740,6 +29396,188 @@ enum DescribeGlobalClustersOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DescribeIntegrationsInput: Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let filters = filters { + if !filters.isEmpty { + var filtersContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Filters")) + for (index0, filter0) in filters.enumerated() { + try filtersContainer.encode(filter0, forKey: ClientRuntime.Key("Filter.\(index0.advanced(by: 1))")) + } + } + else { + var filtersContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Filters")) + try filtersContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let integrationIdentifier = integrationIdentifier { + try container.encode(integrationIdentifier, forKey: ClientRuntime.Key("IntegrationIdentifier")) + } + if let marker = marker { + try container.encode(marker, forKey: ClientRuntime.Key("Marker")) + } + if let maxRecords = maxRecords { + try container.encode(maxRecords, forKey: ClientRuntime.Key("MaxRecords")) + } + try container.encode("DescribeIntegrations", forKey:ClientRuntime.Key("Action")) + try container.encode("2014-10-31", forKey:ClientRuntime.Key("Version")) + } +} + +extension DescribeIntegrationsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct DescribeIntegrationsInput: Swift.Equatable { + /// A filter that specifies one or more resources to return. + public var filters: [RDSClientTypes.Filter]? + /// The unique identifier of the integration. + public var integrationIdentifier: Swift.String? + /// An optional pagination token provided by a previous DescribeIntegrations request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords. + public var marker: Swift.String? + /// The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that you can retrieve the remaining results. Default: 100 Constraints: Minimum 20, maximum 100. + public var maxRecords: Swift.Int? + + public init( + filters: [RDSClientTypes.Filter]? = nil, + integrationIdentifier: Swift.String? = nil, + marker: Swift.String? = nil, + maxRecords: Swift.Int? = nil + ) + { + self.filters = filters + self.integrationIdentifier = integrationIdentifier + self.marker = marker + self.maxRecords = maxRecords + } +} + +struct DescribeIntegrationsInputBody: Swift.Equatable { + let integrationIdentifier: Swift.String? + let filters: [RDSClientTypes.Filter]? + let maxRecords: Swift.Int? + let marker: Swift.String? +} + +extension DescribeIntegrationsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case filters = "Filters" + case integrationIdentifier = "IntegrationIdentifier" + case marker = "Marker" + case maxRecords = "MaxRecords" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let integrationIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .integrationIdentifier) + integrationIdentifier = integrationIdentifierDecoded + if containerValues.contains(.filters) { + struct KeyVal0{struct Filter{}} + let filtersWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .filters) + if let filtersWrappedContainer = filtersWrappedContainer { + let filtersContainer = try filtersWrappedContainer.decodeIfPresent([RDSClientTypes.Filter].self, forKey: .member) + var filtersBuffer:[RDSClientTypes.Filter]? = nil + if let filtersContainer = filtersContainer { + filtersBuffer = [RDSClientTypes.Filter]() + for structureContainer0 in filtersContainer { + filtersBuffer?.append(structureContainer0) + } + } + filters = filtersBuffer + } else { + filters = [] + } + } else { + filters = nil + } + let maxRecordsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxRecords) + maxRecords = maxRecordsDecoded + let markerDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .marker) + marker = markerDecoded + } +} + +extension DescribeIntegrationsOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: DescribeIntegrationsOutputBody = try responseDecoder.decode(responseBody: data) + self.integrations = output.integrations + self.marker = output.marker + } else { + self.integrations = nil + self.marker = nil + } + } +} + +public struct DescribeIntegrationsOutput: Swift.Equatable { + /// A list of integrations. + public var integrations: [RDSClientTypes.Integration]? + /// A pagination token that can be used in a later DescribeIntegrations request. + public var marker: Swift.String? + + public init( + integrations: [RDSClientTypes.Integration]? = nil, + marker: Swift.String? = nil + ) + { + self.integrations = integrations + self.marker = marker + } +} + +struct DescribeIntegrationsOutputBody: Swift.Equatable { + let marker: Swift.String? + let integrations: [RDSClientTypes.Integration]? +} + +extension DescribeIntegrationsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case integrations = "Integrations" + case marker = "Marker" + } + + public init(from decoder: Swift.Decoder) throws { + let topLevelContainer = try decoder.container(keyedBy: ClientRuntime.Key.self) + let containerValues = try topLevelContainer.nestedContainer(keyedBy: CodingKeys.self, forKey: ClientRuntime.Key("DescribeIntegrationsResult")) + let markerDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .marker) + marker = markerDecoded + if containerValues.contains(.integrations) { + struct KeyVal0{struct Integration{}} + let integrationsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .integrations) + if let integrationsWrappedContainer = integrationsWrappedContainer { + let integrationsContainer = try integrationsWrappedContainer.decodeIfPresent([RDSClientTypes.Integration].self, forKey: .member) + var integrationsBuffer:[RDSClientTypes.Integration]? = nil + if let integrationsContainer = integrationsContainer { + integrationsBuffer = [RDSClientTypes.Integration]() + for structureContainer0 in integrationsContainer { + integrationsBuffer?.append(structureContainer0) + } + } + integrations = integrationsBuffer + } else { + integrations = [] + } + } else { + integrations = nil + } + } +} + +enum DescribeIntegrationsOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restXMLError = try await AWSClientRuntime.RestXMLError(httpResponse: httpResponse) + switch restXMLError.errorCode { + case "IntegrationNotFoundFault": return try await IntegrationNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) + } + } +} + extension DescribeOptionGroupOptionsInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -33253,6 +34091,518 @@ extension InsufficientStorageClusterCapacityFaultBody: Swift.Decodable { } } +extension RDSClientTypes.Integration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case additionalEncryptionContext = "AdditionalEncryptionContext" + case createTime = "CreateTime" + case errors = "Errors" + case integrationArn = "IntegrationArn" + case integrationName = "IntegrationName" + case kmsKeyId = "KMSKeyId" + case sourceArn = "SourceArn" + case status = "Status" + case tags = "Tags" + case targetArn = "TargetArn" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let additionalEncryptionContext = additionalEncryptionContext { + var additionalEncryptionContextContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("AdditionalEncryptionContext")) + for (index0, element0) in additionalEncryptionContext.sorted(by: { $0.key < $1.key }).enumerated() { + let stringKey0 = element0.key + let stringValue0 = element0.value + var entryContainer0 = additionalEncryptionContextContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("entry.\(index0.advanced(by: 1))")) + var keyContainer0 = entryContainer0.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("key")) + try keyContainer0.encode(stringKey0, forKey: ClientRuntime.Key("")) + var valueContainer0 = entryContainer0.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("value")) + try valueContainer0.encode(stringValue0, forKey: ClientRuntime.Key("")) + } + } + if let createTime = createTime { + try container.encodeTimestamp(createTime, format: .dateTime, forKey: ClientRuntime.Key("CreateTime")) + } + if let errors = errors { + if !errors.isEmpty { + var errorsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Errors")) + for (index0, integrationerror0) in errors.enumerated() { + try errorsContainer.encode(integrationerror0, forKey: ClientRuntime.Key("IntegrationError.\(index0.advanced(by: 1))")) + } + } + else { + var errorsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Errors")) + try errorsContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let integrationArn = integrationArn { + try container.encode(integrationArn, forKey: ClientRuntime.Key("IntegrationArn")) + } + if let integrationName = integrationName { + try container.encode(integrationName, forKey: ClientRuntime.Key("IntegrationName")) + } + if let kmsKeyId = kmsKeyId { + try container.encode(kmsKeyId, forKey: ClientRuntime.Key("KMSKeyId")) + } + if let sourceArn = sourceArn { + try container.encode(sourceArn, forKey: ClientRuntime.Key("SourceArn")) + } + if let status = status { + try container.encode(status, forKey: ClientRuntime.Key("Status")) + } + if let tags = tags { + if !tags.isEmpty { + var tagsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Tags")) + for (index0, tag0) in tags.enumerated() { + try tagsContainer.encode(tag0, forKey: ClientRuntime.Key("Tag.\(index0.advanced(by: 1))")) + } + } + else { + var tagsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Tags")) + try tagsContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let targetArn = targetArn { + try container.encode(targetArn, forKey: ClientRuntime.Key("TargetArn")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let sourceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceArn) + sourceArn = sourceArnDecoded + let targetArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .targetArn) + targetArn = targetArnDecoded + let integrationNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .integrationName) + integrationName = integrationNameDecoded + let integrationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .integrationArn) + integrationArn = integrationArnDecoded + let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) + kmsKeyId = kmsKeyIdDecoded + if containerValues.contains(.additionalEncryptionContext) { + struct KeyVal0{struct key{}; struct value{}} + let additionalEncryptionContextWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: ClientRuntime.MapEntry.CodingKeys.self, forKey: .additionalEncryptionContext) + if let additionalEncryptionContextWrappedContainer = additionalEncryptionContextWrappedContainer { + let additionalEncryptionContextContainer = try additionalEncryptionContextWrappedContainer.decodeIfPresent([ClientRuntime.MapKeyValue].self, forKey: .entry) + var additionalEncryptionContextBuffer: [Swift.String:Swift.String]? = nil + if let additionalEncryptionContextContainer = additionalEncryptionContextContainer { + additionalEncryptionContextBuffer = [Swift.String:Swift.String]() + for stringContainer0 in additionalEncryptionContextContainer { + additionalEncryptionContextBuffer?[stringContainer0.key] = stringContainer0.value + } + } + additionalEncryptionContext = additionalEncryptionContextBuffer + } else { + additionalEncryptionContext = [:] + } + } else { + additionalEncryptionContext = nil + } + let statusDecoded = try containerValues.decodeIfPresent(RDSClientTypes.IntegrationStatus.self, forKey: .status) + status = statusDecoded + if containerValues.contains(.tags) { + struct KeyVal0{struct Tag{}} + let tagsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .tags) + if let tagsWrappedContainer = tagsWrappedContainer { + let tagsContainer = try tagsWrappedContainer.decodeIfPresent([RDSClientTypes.Tag].self, forKey: .member) + var tagsBuffer:[RDSClientTypes.Tag]? = nil + if let tagsContainer = tagsContainer { + tagsBuffer = [RDSClientTypes.Tag]() + for structureContainer0 in tagsContainer { + tagsBuffer?.append(structureContainer0) + } + } + tags = tagsBuffer + } else { + tags = [] + } + } else { + tags = nil + } + let createTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .createTime) + createTime = createTimeDecoded + if containerValues.contains(.errors) { + struct KeyVal0{struct IntegrationError{}} + let errorsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .errors) + if let errorsWrappedContainer = errorsWrappedContainer { + let errorsContainer = try errorsWrappedContainer.decodeIfPresent([RDSClientTypes.IntegrationError].self, forKey: .member) + var errorsBuffer:[RDSClientTypes.IntegrationError]? = nil + if let errorsContainer = errorsContainer { + errorsBuffer = [RDSClientTypes.IntegrationError]() + for structureContainer0 in errorsContainer { + errorsBuffer?.append(structureContainer0) + } + } + errors = errorsBuffer + } else { + errors = [] + } + } else { + errors = nil + } + } +} + +extension RDSClientTypes { + /// An Aurora zero-ETL integration with Amazon Redshift. For more information, see [Working with Amazon Aurora zero-ETL integrations with Amazon Redshift](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.html) in the Amazon Aurora User Guide. + public struct Integration: Swift.Equatable { + /// The encryption context for the integration. For more information, see [Encryption context](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) in the Amazon Web Services Key Management Service Developer Guide. + public var additionalEncryptionContext: [Swift.String:Swift.String]? + /// The time when the integration was created, in Universal Coordinated Time (UTC). + public var createTime: ClientRuntime.Date? + /// Any errors associated with the integration. + public var errors: [RDSClientTypes.IntegrationError]? + /// The ARN of the integration. + public var integrationArn: Swift.String? + /// The name of the integration. + public var integrationName: Swift.String? + /// The Amazon Web Services Key Management System (Amazon Web Services KMS) key identifier for the key used to to encrypt the integration. + public var kmsKeyId: Swift.String? + /// The Amazon Resource Name (ARN) of the Aurora DB cluster used as the source for replication. + public var sourceArn: Swift.String? + /// The current status of the integration. + public var status: RDSClientTypes.IntegrationStatus? + /// A list of tags. For more information, see [Tagging Amazon RDS Resources](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Tagging.html) in the Amazon RDS User Guide. + public var tags: [RDSClientTypes.Tag]? + /// The ARN of the Redshift data warehouse used as the target for replication. + public var targetArn: Swift.String? + + public init( + additionalEncryptionContext: [Swift.String:Swift.String]? = nil, + createTime: ClientRuntime.Date? = nil, + errors: [RDSClientTypes.IntegrationError]? = nil, + integrationArn: Swift.String? = nil, + integrationName: Swift.String? = nil, + kmsKeyId: Swift.String? = nil, + sourceArn: Swift.String? = nil, + status: RDSClientTypes.IntegrationStatus? = nil, + tags: [RDSClientTypes.Tag]? = nil, + targetArn: Swift.String? = nil + ) + { + self.additionalEncryptionContext = additionalEncryptionContext + self.createTime = createTime + self.errors = errors + self.integrationArn = integrationArn + self.integrationName = integrationName + self.kmsKeyId = kmsKeyId + self.sourceArn = sourceArn + self.status = status + self.tags = tags + self.targetArn = targetArn + } + } + +} + +extension IntegrationAlreadyExistsFault { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { + let output: AWSClientRuntime.ErrorResponseContainer = try responseDecoder.decode(responseBody: data) + self.properties.message = output.error.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// The integration you are trying to create already exists. +public struct IntegrationAlreadyExistsFault: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "IntegrationAlreadyExistsFault" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct IntegrationAlreadyExistsFaultBody: Swift.Equatable { + let message: Swift.String? +} + +extension IntegrationAlreadyExistsFaultBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + +extension IntegrationConflictOperationFault { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { + let output: AWSClientRuntime.ErrorResponseContainer = try responseDecoder.decode(responseBody: data) + self.properties.message = output.error.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// A conflicting conditional operation is currently in progress against this resource. Typically occurs when there are multiple requests being made to the same resource at the same time, and these requests conflict with each other. +public struct IntegrationConflictOperationFault: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "IntegrationConflictOperationFault" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct IntegrationConflictOperationFaultBody: Swift.Equatable { + let message: Swift.String? +} + +extension IntegrationConflictOperationFaultBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + +extension RDSClientTypes.IntegrationError: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case errorCode = "ErrorCode" + case errorMessage = "ErrorMessage" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let errorCode = errorCode { + try container.encode(errorCode, forKey: ClientRuntime.Key("ErrorCode")) + } + if let errorMessage = errorMessage { + try container.encode(errorMessage, forKey: ClientRuntime.Key("ErrorMessage")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let errorCodeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorCode) + errorCode = errorCodeDecoded + let errorMessageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorMessage) + errorMessage = errorMessageDecoded + } +} + +extension RDSClientTypes { + /// An error associated with a zero-ETL integration with Amazon Redshift. + public struct IntegrationError: Swift.Equatable { + /// The error code associated with the integration. + /// This member is required. + public var errorCode: Swift.String? + /// A message explaining the error. + public var errorMessage: Swift.String? + + public init( + errorCode: Swift.String? = nil, + errorMessage: Swift.String? = nil + ) + { + self.errorCode = errorCode + self.errorMessage = errorMessage + } + } + +} + +extension IntegrationNotFoundFault { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { + let output: AWSClientRuntime.ErrorResponseContainer = try responseDecoder.decode(responseBody: data) + self.properties.message = output.error.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// The specified integration could not be found. +public struct IntegrationNotFoundFault: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "IntegrationNotFoundFault" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct IntegrationNotFoundFaultBody: Swift.Equatable { + let message: Swift.String? +} + +extension IntegrationNotFoundFaultBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + +extension IntegrationQuotaExceededFault { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { + let output: AWSClientRuntime.ErrorResponseContainer = try responseDecoder.decode(responseBody: data) + self.properties.message = output.error.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// You can't crate any more zero-ETL integrations because the quota has been reached. +public struct IntegrationQuotaExceededFault: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "IntegrationQuotaExceededFault" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct IntegrationQuotaExceededFaultBody: Swift.Equatable { + let message: Swift.String? +} + +extension IntegrationQuotaExceededFaultBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + +extension RDSClientTypes { + public enum IntegrationStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case active + case creating + case deleting + case failed + case modifying + case needsAttention + case syncing + case sdkUnknown(Swift.String) + + public static var allCases: [IntegrationStatus] { + return [ + .active, + .creating, + .deleting, + .failed, + .modifying, + .needsAttention, + .syncing, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .active: return "active" + case .creating: return "creating" + case .deleting: return "deleting" + case .failed: return "failed" + case .modifying: return "modifying" + case .needsAttention: return "needs_attention" + case .syncing: return "syncing" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = IntegrationStatus(rawValue: rawValue) ?? IntegrationStatus.sdkUnknown(rawValue) + } + } +} + extension InvalidBlueGreenDeploymentStateFault { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { @@ -34441,6 +35791,60 @@ extension InvalidGlobalClusterStateFaultBody: Swift.Decodable { } } +extension InvalidIntegrationStateFault { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { + let output: AWSClientRuntime.ErrorResponseContainer = try responseDecoder.decode(responseBody: data) + self.properties.message = output.error.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// The integration is in an invalid state and can't perform the requested operation. +public struct InvalidIntegrationStateFault: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "InvalidIntegrationStateFault" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct InvalidIntegrationStateFaultBody: Swift.Equatable { + let message: Swift.String? +} + +extension InvalidIntegrationStateFaultBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + extension InvalidOptionGroupStateFault { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { @@ -34918,6 +36322,7 @@ enum ListTagsForResourceOutputError: ClientRuntime.HttpResponseErrorBinding { case "DBProxyNotFoundFault": return try await DBProxyNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "DBProxyTargetGroupNotFoundFault": return try await DBProxyTargetGroupNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "DBSnapshotNotFound": return try await DBSnapshotNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "IntegrationNotFoundFault": return try await IntegrationNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -35627,6 +37032,7 @@ extension ModifyCustomDBEngineVersionOutput: ClientRuntime.HttpResponseBinding { self.supportsBabelfish = output.supportsBabelfish self.supportsCertificateRotationWithoutRestart = output.supportsCertificateRotationWithoutRestart self.supportsGlobalDatabases = output.supportsGlobalDatabases + self.supportsIntegrations = output.supportsIntegrations self.supportsLocalWriteForwarding = output.supportsLocalWriteForwarding self.supportsLogExportsToCloudwatchLogs = output.supportsLogExportsToCloudwatchLogs self.supportsParallelQuery = output.supportsParallelQuery @@ -35660,6 +37066,7 @@ extension ModifyCustomDBEngineVersionOutput: ClientRuntime.HttpResponseBinding { self.supportsBabelfish = nil self.supportsCertificateRotationWithoutRestart = nil self.supportsGlobalDatabases = nil + self.supportsIntegrations = nil self.supportsLocalWriteForwarding = nil self.supportsLogExportsToCloudwatchLogs = nil self.supportsParallelQuery = nil @@ -35724,6 +37131,8 @@ public struct ModifyCustomDBEngineVersionOutput: Swift.Equatable { public var supportsCertificateRotationWithoutRestart: Swift.Bool? /// Indicates whether you can use Aurora global databases with a specific DB engine version. public var supportsGlobalDatabases: Swift.Bool? + /// Indicates whether the DB engine version supports Aurora zero-ETL integrations with Amazon Redshift. + public var supportsIntegrations: Swift.Bool? /// Indicates whether the DB engine version supports forwarding write operations from reader DB instances to the writer DB instance in the DB cluster. By default, write operations aren't allowed on reader DB instances. Valid for: Aurora DB clusters only public var supportsLocalWriteForwarding: Swift.Bool? /// Indicates whether the engine version supports exporting the log types specified by ExportableLogTypes to CloudWatch Logs. @@ -35764,6 +37173,7 @@ public struct ModifyCustomDBEngineVersionOutput: Swift.Equatable { supportsBabelfish: Swift.Bool? = nil, supportsCertificateRotationWithoutRestart: Swift.Bool? = nil, supportsGlobalDatabases: Swift.Bool? = nil, + supportsIntegrations: Swift.Bool? = nil, supportsLocalWriteForwarding: Swift.Bool? = nil, supportsLogExportsToCloudwatchLogs: Swift.Bool? = nil, supportsParallelQuery: Swift.Bool? = nil, @@ -35798,6 +37208,7 @@ public struct ModifyCustomDBEngineVersionOutput: Swift.Equatable { self.supportsBabelfish = supportsBabelfish self.supportsCertificateRotationWithoutRestart = supportsCertificateRotationWithoutRestart self.supportsGlobalDatabases = supportsGlobalDatabases + self.supportsIntegrations = supportsIntegrations self.supportsLocalWriteForwarding = supportsLocalWriteForwarding self.supportsLogExportsToCloudwatchLogs = supportsLogExportsToCloudwatchLogs self.supportsParallelQuery = supportsParallelQuery @@ -35840,6 +37251,7 @@ struct ModifyCustomDBEngineVersionOutputBody: Swift.Equatable { let supportsCertificateRotationWithoutRestart: Swift.Bool? let supportedCACertificateIdentifiers: [Swift.String]? let supportsLocalWriteForwarding: Swift.Bool? + let supportsIntegrations: Swift.Bool? } extension ModifyCustomDBEngineVersionOutputBody: Swift.Decodable { @@ -35870,6 +37282,7 @@ extension ModifyCustomDBEngineVersionOutputBody: Swift.Decodable { case supportsBabelfish = "SupportsBabelfish" case supportsCertificateRotationWithoutRestart = "SupportsCertificateRotationWithoutRestart" case supportsGlobalDatabases = "SupportsGlobalDatabases" + case supportsIntegrations = "SupportsIntegrations" case supportsLocalWriteForwarding = "SupportsLocalWriteForwarding" case supportsLogExportsToCloudwatchLogs = "SupportsLogExportsToCloudwatchLogs" case supportsParallelQuery = "SupportsParallelQuery" @@ -36098,6 +37511,8 @@ extension ModifyCustomDBEngineVersionOutputBody: Swift.Decodable { } let supportsLocalWriteForwardingDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .supportsLocalWriteForwarding) supportsLocalWriteForwarding = supportsLocalWriteForwardingDecoded + let supportsIntegrationsDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .supportsIntegrations) + supportsIntegrations = supportsIntegrationsDecoded } } @@ -43296,6 +44711,51 @@ extension RDSClientTypes { } +extension RDSClientTypes.RdsCustomClusterConfiguration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case interconnectSubnetId = "InterconnectSubnetId" + case transitGatewayMulticastDomainId = "TransitGatewayMulticastDomainId" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let interconnectSubnetId = interconnectSubnetId { + try container.encode(interconnectSubnetId, forKey: ClientRuntime.Key("InterconnectSubnetId")) + } + if let transitGatewayMulticastDomainId = transitGatewayMulticastDomainId { + try container.encode(transitGatewayMulticastDomainId, forKey: ClientRuntime.Key("TransitGatewayMulticastDomainId")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let interconnectSubnetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .interconnectSubnetId) + interconnectSubnetId = interconnectSubnetIdDecoded + let transitGatewayMulticastDomainIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .transitGatewayMulticastDomainId) + transitGatewayMulticastDomainId = transitGatewayMulticastDomainIdDecoded + } +} + +extension RDSClientTypes { + /// Reserved for future use. + public struct RdsCustomClusterConfiguration: Swift.Equatable { + /// Reserved for future use. + public var interconnectSubnetId: Swift.String? + /// Reserved for future use. + public var transitGatewayMulticastDomainId: Swift.String? + + public init( + interconnectSubnetId: Swift.String? = nil, + transitGatewayMulticastDomainId: Swift.String? = nil + ) + { + self.interconnectSubnetId = interconnectSubnetId + self.transitGatewayMulticastDomainId = transitGatewayMulticastDomainId + } + } + +} + extension RebootDBClusterInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -44269,6 +45729,7 @@ enum RemoveTagsFromResourceOutputError: ClientRuntime.HttpResponseErrorBinding { case "DBProxyNotFoundFault": return try await DBProxyNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "DBProxyTargetGroupNotFoundFault": return try await DBProxyTargetGroupNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "DBSnapshotNotFound": return try await DBSnapshotNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "IntegrationNotFoundFault": return try await IntegrationNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -46051,6 +47512,9 @@ extension RestoreDBClusterFromSnapshotInput: Swift.Encodable { if let publiclyAccessible = publiclyAccessible { try container.encode(publiclyAccessible, forKey: ClientRuntime.Key("PubliclyAccessible")) } + if let rdsCustomClusterConfiguration = rdsCustomClusterConfiguration { + try container.encode(rdsCustomClusterConfiguration, forKey: ClientRuntime.Key("RdsCustomClusterConfiguration")) + } if let scalingConfiguration = scalingConfiguration { try container.encode(scalingConfiguration, forKey: ClientRuntime.Key("ScalingConfiguration")) } @@ -46199,6 +47663,8 @@ public struct RestoreDBClusterFromSnapshotInput: Swift.Equatable { /// /// Valid for: Aurora DB clusters and Multi-AZ DB clusters public var publiclyAccessible: Swift.Bool? + /// Reserved for future use. + public var rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? /// For DB clusters in serverless DB engine mode, the scaling properties of the DB cluster. Valid for: Aurora DB clusters only public var scalingConfiguration: RDSClientTypes.ScalingConfiguration? /// Contains the scaling configuration of an Aurora Serverless v2 DB cluster. For more information, see [Using Amazon Aurora Serverless v2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) in the Amazon Aurora User Guide. @@ -46241,6 +47707,7 @@ public struct RestoreDBClusterFromSnapshotInput: Swift.Equatable { optionGroupName: Swift.String? = nil, port: Swift.Int? = nil, publiclyAccessible: Swift.Bool? = nil, + rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? = nil, scalingConfiguration: RDSClientTypes.ScalingConfiguration? = nil, serverlessV2ScalingConfiguration: RDSClientTypes.ServerlessV2ScalingConfiguration? = nil, snapshotIdentifier: Swift.String? = nil, @@ -46271,6 +47738,7 @@ public struct RestoreDBClusterFromSnapshotInput: Swift.Equatable { self.optionGroupName = optionGroupName self.port = port self.publiclyAccessible = publiclyAccessible + self.rdsCustomClusterConfiguration = rdsCustomClusterConfiguration self.scalingConfiguration = scalingConfiguration self.serverlessV2ScalingConfiguration = serverlessV2ScalingConfiguration self.snapshotIdentifier = snapshotIdentifier @@ -46309,6 +47777,7 @@ struct RestoreDBClusterFromSnapshotInputBody: Swift.Equatable { let publiclyAccessible: Swift.Bool? let serverlessV2ScalingConfiguration: RDSClientTypes.ServerlessV2ScalingConfiguration? let networkType: Swift.String? + let rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? } extension RestoreDBClusterFromSnapshotInputBody: Swift.Decodable { @@ -46335,6 +47804,7 @@ extension RestoreDBClusterFromSnapshotInputBody: Swift.Decodable { case optionGroupName = "OptionGroupName" case port = "Port" case publiclyAccessible = "PubliclyAccessible" + case rdsCustomClusterConfiguration = "RdsCustomClusterConfiguration" case scalingConfiguration = "ScalingConfiguration" case serverlessV2ScalingConfiguration = "ServerlessV2ScalingConfiguration" case snapshotIdentifier = "SnapshotIdentifier" @@ -46469,6 +47939,8 @@ extension RestoreDBClusterFromSnapshotInputBody: Swift.Decodable { serverlessV2ScalingConfiguration = serverlessV2ScalingConfigurationDecoded let networkTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .networkType) networkType = networkTypeDecoded + let rdsCustomClusterConfigurationDecoded = try containerValues.decodeIfPresent(RDSClientTypes.RdsCustomClusterConfiguration.self, forKey: .rdsCustomClusterConfiguration) + rdsCustomClusterConfiguration = rdsCustomClusterConfigurationDecoded } } @@ -46607,6 +48079,9 @@ extension RestoreDBClusterToPointInTimeInput: Swift.Encodable { if let publiclyAccessible = publiclyAccessible { try container.encode(publiclyAccessible, forKey: ClientRuntime.Key("PubliclyAccessible")) } + if let rdsCustomClusterConfiguration = rdsCustomClusterConfiguration { + try container.encode(rdsCustomClusterConfiguration, forKey: ClientRuntime.Key("RdsCustomClusterConfiguration")) + } if let restoreToTime = restoreToTime { try container.encodeTimestamp(restoreToTime, format: .dateTime, forKey: ClientRuntime.Key("RestoreToTime")) } @@ -46758,6 +48233,8 @@ public struct RestoreDBClusterToPointInTimeInput: Swift.Equatable { /// /// Valid for: Multi-AZ DB clusters only public var publiclyAccessible: Swift.Bool? + /// Reserved for future use. + public var rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? /// The date and time to restore the DB cluster to. Valid Values: Value must be a time in Universal Coordinated Time (UTC) format Constraints: /// /// * Must be before the latest restorable time for the DB instance @@ -46821,6 +48298,7 @@ public struct RestoreDBClusterToPointInTimeInput: Swift.Equatable { optionGroupName: Swift.String? = nil, port: Swift.Int? = nil, publiclyAccessible: Swift.Bool? = nil, + rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? = nil, restoreToTime: ClientRuntime.Date? = nil, restoreType: Swift.String? = nil, scalingConfiguration: RDSClientTypes.ScalingConfiguration? = nil, @@ -46851,6 +48329,7 @@ public struct RestoreDBClusterToPointInTimeInput: Swift.Equatable { self.optionGroupName = optionGroupName self.port = port self.publiclyAccessible = publiclyAccessible + self.rdsCustomClusterConfiguration = rdsCustomClusterConfiguration self.restoreToTime = restoreToTime self.restoreType = restoreType self.scalingConfiguration = scalingConfiguration @@ -46893,6 +48372,7 @@ struct RestoreDBClusterToPointInTimeInputBody: Swift.Equatable { let serverlessV2ScalingConfiguration: RDSClientTypes.ServerlessV2ScalingConfiguration? let networkType: Swift.String? let sourceDbClusterResourceId: Swift.String? + let rdsCustomClusterConfiguration: RDSClientTypes.RdsCustomClusterConfiguration? } extension RestoreDBClusterToPointInTimeInputBody: Swift.Decodable { @@ -46915,6 +48395,7 @@ extension RestoreDBClusterToPointInTimeInputBody: Swift.Decodable { case optionGroupName = "OptionGroupName" case port = "Port" case publiclyAccessible = "PubliclyAccessible" + case rdsCustomClusterConfiguration = "RdsCustomClusterConfiguration" case restoreToTime = "RestoreToTime" case restoreType = "RestoreType" case scalingConfiguration = "ScalingConfiguration" @@ -47036,6 +48517,8 @@ extension RestoreDBClusterToPointInTimeInputBody: Swift.Decodable { networkType = networkTypeDecoded let sourceDbClusterResourceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceDbClusterResourceId) sourceDbClusterResourceId = sourceDbClusterResourceIdDecoded + let rdsCustomClusterConfigurationDecoded = try containerValues.decodeIfPresent(RDSClientTypes.RdsCustomClusterConfiguration.self, forKey: .rdsCustomClusterConfiguration) + rdsCustomClusterConfiguration = rdsCustomClusterConfigurationDecoded } } @@ -53092,6 +54575,7 @@ extension RDSClientTypes.UpgradeTarget: Swift.Codable { case supportedEngineModes = "SupportedEngineModes" case supportsBabelfish = "SupportsBabelfish" case supportsGlobalDatabases = "SupportsGlobalDatabases" + case supportsIntegrations = "SupportsIntegrations" case supportsLocalWriteForwarding = "SupportsLocalWriteForwarding" case supportsParallelQuery = "SupportsParallelQuery" } @@ -53131,6 +54615,9 @@ extension RDSClientTypes.UpgradeTarget: Swift.Codable { if let supportsGlobalDatabases = supportsGlobalDatabases { try container.encode(supportsGlobalDatabases, forKey: ClientRuntime.Key("SupportsGlobalDatabases")) } + if let supportsIntegrations = supportsIntegrations { + try container.encode(supportsIntegrations, forKey: ClientRuntime.Key("SupportsIntegrations")) + } if let supportsLocalWriteForwarding = supportsLocalWriteForwarding { try container.encode(supportsLocalWriteForwarding, forKey: ClientRuntime.Key("SupportsLocalWriteForwarding")) } @@ -53178,6 +54665,8 @@ extension RDSClientTypes.UpgradeTarget: Swift.Codable { supportsBabelfish = supportsBabelfishDecoded let supportsLocalWriteForwardingDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .supportsLocalWriteForwarding) supportsLocalWriteForwarding = supportsLocalWriteForwardingDecoded + let supportsIntegrationsDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .supportsIntegrations) + supportsIntegrations = supportsIntegrationsDecoded } } @@ -53200,6 +54689,8 @@ extension RDSClientTypes { public var supportsBabelfish: Swift.Bool? /// Indicates whether you can use Aurora global databases with the target engine version. public var supportsGlobalDatabases: Swift.Bool? + /// Indicates whether the DB engine version supports Aurora zero-ETL integrations with Amazon Redshift. + public var supportsIntegrations: Swift.Bool? /// Indicates whether the target engine version supports forwarding write operations from reader DB instances to the writer DB instance in the DB cluster. By default, write operations aren't allowed on reader DB instances. Valid for: Aurora DB clusters only public var supportsLocalWriteForwarding: Swift.Bool? /// Indicates whether you can use Aurora parallel query with the target engine version. @@ -53214,6 +54705,7 @@ extension RDSClientTypes { supportedEngineModes: [Swift.String]? = nil, supportsBabelfish: Swift.Bool? = nil, supportsGlobalDatabases: Swift.Bool? = nil, + supportsIntegrations: Swift.Bool? = nil, supportsLocalWriteForwarding: Swift.Bool? = nil, supportsParallelQuery: Swift.Bool? = nil ) @@ -53226,6 +54718,7 @@ extension RDSClientTypes { self.supportedEngineModes = supportedEngineModes self.supportsBabelfish = supportsBabelfish self.supportsGlobalDatabases = supportsGlobalDatabases + self.supportsIntegrations = supportsIntegrations self.supportsLocalWriteForwarding = supportsLocalWriteForwarding self.supportsParallelQuery = supportsParallelQuery } diff --git a/Sources/Services/AWSRedshift/Paginators.swift b/Sources/Services/AWSRedshift/Paginators.swift index aa29b90f64b..64145058913 100644 --- a/Sources/Services/AWSRedshift/Paginators.swift +++ b/Sources/Services/AWSRedshift/Paginators.swift @@ -660,6 +660,38 @@ extension PaginatorSequence where Input == DescribeHsmConfigurationsInput, Outpu return try await self.asyncCompactMap { item in item.hsmConfigurations } } } +extension RedshiftClient { + /// Paginate over `[DescribeInboundIntegrationsOutput]` results. + /// + /// When this operation is called, an `AsyncSequence` is created. AsyncSequences are lazy so no service + /// calls are made until the sequence is iterated over. This also means there is no guarantee that the request is valid + /// until then. If there are errors in your request, you will see the failures only after you start iterating. + /// - Parameters: + /// - input: A `[DescribeInboundIntegrationsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `DescribeInboundIntegrationsOutput` + public func describeInboundIntegrationsPaginated(input: DescribeInboundIntegrationsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \DescribeInboundIntegrationsInput.marker, outputKey: \DescribeInboundIntegrationsOutput.marker, paginationFunction: self.describeInboundIntegrations(input:)) + } +} + +extension DescribeInboundIntegrationsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> DescribeInboundIntegrationsInput { + return DescribeInboundIntegrationsInput( + integrationArn: self.integrationArn, + marker: token, + maxRecords: self.maxRecords, + targetArn: self.targetArn + )} +} + +extension PaginatorSequence where Input == DescribeInboundIntegrationsInput, Output == DescribeInboundIntegrationsOutput { + /// This paginator transforms the `AsyncSequence` returned by `describeInboundIntegrationsPaginated` + /// to access the nested member `[RedshiftClientTypes.InboundIntegration]` + /// - Returns: `[RedshiftClientTypes.InboundIntegration]` + public func inboundIntegrations() async throws -> [RedshiftClientTypes.InboundIntegration] { + return try await self.asyncCompactMap { item in item.inboundIntegrations } + } +} extension RedshiftClient { /// Paginate over `[DescribeNodeConfigurationOptionsOutput]` results. /// diff --git a/Sources/Services/AWSRedshift/RedshiftClient.swift b/Sources/Services/AWSRedshift/RedshiftClient.swift index dffb351e29e..4116873689b 100644 --- a/Sources/Services/AWSRedshift/RedshiftClient.swift +++ b/Sources/Services/AWSRedshift/RedshiftClient.swift @@ -125,6 +125,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `PartnerNotFoundFault` : The name of the partner was not found. /// - `UnauthorizedPartnerIntegrationFault` : The partner integration is not authorized. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func addPartner(input: AddPartnerInput) async throws -> AddPartnerOutput { let context = ClientRuntime.HttpContextBuilder() @@ -539,6 +540,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `ClusterSnapshotAlreadyExistsFault` : The value specified as a snapshot identifier is already used by an existing snapshot. /// - `ClusterSnapshotNotFoundFault` : The snapshot identifier does not refer to an existing cluster snapshot. /// - `ClusterSnapshotQuotaExceededFault` : The request would result in the user exceeding the allowed number of cluster snapshots. @@ -649,12 +651,14 @@ extension RedshiftClient: RedshiftClientProtocol { /// - `InvalidSubnet` : The requested subnet is not valid, or not all of the subnets are in the same VPC. /// - `InvalidTagFault` : The tag is invalid. /// - `InvalidVPCNetworkStateFault` : The cluster subnet group does not cover all Availability Zones. + /// - `Ipv6CidrBlockNotFoundFault` : There are no subnets in your VPC with associated IPv6 CIDR blocks. To use dual-stack mode, associate an IPv6 CIDR block with each subnet in your VPC. /// - `LimitExceededFault` : The encryption key has exceeded its grant limit in Amazon Web Services KMS. /// - `NumberOfNodesPerClusterLimitExceededFault` : The operation would exceed the number of nodes allowed for a cluster. /// - `NumberOfNodesQuotaExceededFault` : The operation would exceed the number of nodes allotted to the account. For information about increasing your quota, go to [Limits in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) in the Amazon Redshift Cluster Management Guide. /// - `SnapshotScheduleNotFoundFault` : We could not find the specified snapshot schedule. /// - `TagLimitExceededFault` : You have exceeded the number of tags allowed. /// - `UnauthorizedOperation` : Your account is not authorized to perform the requested operation. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func createCluster(input: CreateClusterInput) async throws -> CreateClusterOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1140,12 +1144,14 @@ extension RedshiftClient: RedshiftClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `InvalidScheduledActionFault` : The scheduled action is not valid. /// - `InvalidScheduleFault` : The schedule you submitted isn't valid. /// - `ScheduledActionAlreadyExistsFault` : The scheduled action already exists. /// - `ScheduledActionQuotaExceededFault` : The quota for scheduled actions exceeded. /// - `ScheduledActionTypeUnsupportedFault` : The action type specified for a scheduled action is not supported. /// - `UnauthorizedOperation` : Your account is not authorized to perform the requested operation. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func createScheduledAction(input: CreateScheduledActionInput) async throws -> CreateScheduledActionOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1934,6 +1940,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `PartnerNotFoundFault` : The name of the partner was not found. /// - `UnauthorizedPartnerIntegrationFault` : The partner integration is not authorized. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func deletePartner(input: DeletePartnerInput) async throws -> DeletePartnerOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1968,6 +1975,51 @@ extension RedshiftClient: RedshiftClientProtocol { return result } + /// Deletes the resource policy for a specified resource. + /// + /// - Parameter DeleteResourcePolicyInput : [no documentation found] + /// + /// - Returns: `DeleteResourcePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ResourceNotFoundFault` : The resource could not be found. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. + public func deleteResourcePolicy(input: DeleteResourcePolicyInput) async throws -> DeleteResourcePolicyOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "deleteResourcePolicy") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "redshift") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deleteResourcePolicy") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "DeleteResourcePolicyMessage")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Deletes a scheduled action. /// /// - Parameter DeleteScheduledActionInput : [no documentation found] @@ -3197,6 +3249,52 @@ extension RedshiftClient: RedshiftClientProtocol { return result } + /// Returns a list of inbound integrations. + /// + /// - Parameter DescribeInboundIntegrationsInput : [no documentation found] + /// + /// - Returns: `DescribeInboundIntegrationsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `IntegrationNotFoundFault` : The integration can't be found. + /// - `InvalidNamespaceFault` : The namespace isn't valid because the namespace doesn't exist. Provide a valid namespace. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. + public func describeInboundIntegrations(input: DescribeInboundIntegrationsInput) async throws -> DescribeInboundIntegrationsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "describeInboundIntegrations") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "redshift") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "describeInboundIntegrations") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "DescribeInboundIntegrationsMessage")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Describes whether information, such as queries and connection attempts, is being logged for the specified Amazon Redshift cluster. /// /// - Parameter DescribeLoggingStatusInput : @@ -3207,6 +3305,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// /// __Possible Exceptions:__ /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func describeLoggingStatus(input: DescribeLoggingStatusInput) async throws -> DescribeLoggingStatusOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3339,6 +3438,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// __Possible Exceptions:__ /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `UnauthorizedPartnerIntegrationFault` : The partner integration is not authorized. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func describePartners(input: DescribePartnersInput) async throws -> DescribePartnersOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3521,6 +3621,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// __Possible Exceptions:__ /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `ResizeNotFoundFault` : A resize operation for the specified cluster is not found. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func describeResize(input: DescribeResizeInput) async throws -> DescribeResizeOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3886,6 +3987,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// __Possible Exceptions:__ /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func disableLogging(input: DisableLoggingInput) async throws -> DisableLoggingOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3933,6 +4035,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. /// - `SnapshotCopyAlreadyDisabledFault` : The cluster already has cross-region snapshot copy disabled. /// - `UnauthorizedOperation` : Your account is not authorized to perform the requested operation. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func disableSnapshotCopy(input: DisableSnapshotCopyInput) async throws -> DisableSnapshotCopyOutput { let context = ClientRuntime.HttpContextBuilder() @@ -4027,6 +4130,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. /// - `InvalidS3BucketNameFault` : The S3 bucket name is invalid. For more information about naming rules, go to [Bucket Restrictions and Limitations](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html) in the Amazon Simple Storage Service (S3) Developer Guide. /// - `InvalidS3KeyPrefixFault` : The string specified for the logging S3 key prefix does not comply with the documented constraints. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func enableLogging(input: EnableLoggingInput) async throws -> EnableLoggingOutput { let context = ClientRuntime.HttpContextBuilder() @@ -4115,6 +4219,53 @@ extension RedshiftClient: RedshiftClientProtocol { return result } + /// Fails over the primary compute unit of the specified Multi-AZ cluster to another Availability Zone. + /// + /// - Parameter FailoverPrimaryComputeInput : [no documentation found] + /// + /// - Returns: `FailoverPrimaryComputeOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. + /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. + /// - `UnauthorizedOperation` : Your account is not authorized to perform the requested operation. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. + public func failoverPrimaryCompute(input: FailoverPrimaryComputeInput) async throws -> FailoverPrimaryComputeOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "failoverPrimaryCompute") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "redshift") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "failoverPrimaryCompute") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "FailoverPrimaryComputeInputMessage")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Returns a database user name and temporary password with temporary authorization to log on to an Amazon Redshift database. The action returns the database user name prefixed with IAM: if AutoCreate is False or IAMA: if AutoCreate is True. You can optionally specify one or more database user groups that the user will join at log on. By default, the temporary credentials expire in 900 seconds. You can optionally specify a duration between 900 seconds (15 minutes) and 3600 seconds (60 minutes). For more information, see [Using IAM Authentication to Generate Database User Credentials](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-user-credentials.html) in the Amazon Redshift Cluster Management Guide. The Identity and Access Management (IAM) user or role that runs GetClusterCredentials must have an IAM policy attached that allows access to all necessary actions and resources. For more information about permissions, see [Resource Policies for GetClusterCredentials](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#redshift-policy-resources.getclustercredentials-resources) in the Amazon Redshift Cluster Management Guide. If the DbGroups parameter is specified, the IAM policy must allow the redshift:JoinGroup action with access to the listed dbgroups. In addition, if the AutoCreate parameter is set to True, then the policy must include the redshift:CreateClusterUser permission. If the DbName parameter is specified, the IAM policy must allow access to the resource dbname for the specified database name. /// /// - Parameter GetClusterCredentialsInput : The request parameters to get cluster credentials. @@ -4305,6 +4456,52 @@ extension RedshiftClient: RedshiftClientProtocol { return result } + /// Get the resource policy for a specified resource. + /// + /// - Parameter GetResourcePolicyInput : [no documentation found] + /// + /// - Returns: `GetResourcePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidPolicyFault` : The resource policy isn't valid. + /// - `ResourceNotFoundFault` : The resource could not be found. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. + public func getResourcePolicy(input: GetResourcePolicyInput) async throws -> GetResourcePolicyOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "getResourcePolicy") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "redshift") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "getResourcePolicy") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "GetResourcePolicyMessage")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// This operation is retired. Calling this operation does not change AQUA configuration. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator). /// /// - Parameter ModifyAquaConfigurationInput : [no documentation found] @@ -4420,6 +4617,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// - `InvalidClusterTrackFault` : The provided cluster track name is not valid. /// - `InvalidElasticIpFault` : The Elastic IP (EIP) is invalid or cannot be found. /// - `InvalidRetentionPeriodFault` : The retention period specified is either in the past or is not a valid value. The value must be either -1 or an integer between 1 and 3,653. + /// - `Ipv6CidrBlockNotFoundFault` : There are no subnets in your VPC with associated IPv6 CIDR blocks. To use dual-stack mode, associate an IPv6 CIDR block with each subnet in your VPC. /// - `LimitExceededFault` : The encryption key has exceeded its grant limit in Amazon Web Services KMS. /// - `NumberOfNodesPerClusterLimitExceededFault` : The operation would exceed the number of nodes allowed for a cluster. /// - `NumberOfNodesQuotaExceededFault` : The operation would exceed the number of nodes allotted to the account. For information about increasing your quota, go to [Limits in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) in the Amazon Redshift Cluster Management Guide. @@ -4473,6 +4671,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `ClusterOnLatestRevisionFault` : Cluster is already on the latest database revision. /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func modifyClusterDbRevision(input: ModifyClusterDbRevisionInput) async throws -> ModifyClusterDbRevisionOutput { let context = ClientRuntime.HttpContextBuilder() @@ -4939,11 +5138,13 @@ extension RedshiftClient: RedshiftClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `InvalidScheduledActionFault` : The scheduled action is not valid. /// - `InvalidScheduleFault` : The schedule you submitted isn't valid. /// - `ScheduledActionNotFoundFault` : The scheduled action cannot be found. /// - `ScheduledActionTypeUnsupportedFault` : The action type specified for a scheduled action is not supported. /// - `UnauthorizedOperation` : Your account is not authorized to perform the requested operation. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func modifyScheduledAction(input: ModifyScheduledActionInput) async throws -> ModifyScheduledActionOutput { let context = ClientRuntime.HttpContextBuilder() @@ -5129,6 +5330,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// __Possible Exceptions:__ /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func pauseCluster(input: PauseClusterInput) async throws -> PauseClusterOutput { let context = ClientRuntime.HttpContextBuilder() @@ -5210,6 +5412,53 @@ extension RedshiftClient: RedshiftClientProtocol { return result } + /// Updates the resource policy for a specified resource. + /// + /// - Parameter PutResourcePolicyInput : [no documentation found] + /// + /// - Returns: `PutResourcePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictPolicyUpdateFault` : There is a conflict while updating the resource policy. + /// - `InvalidPolicyFault` : The resource policy isn't valid. + /// - `ResourceNotFoundFault` : The resource could not be found. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. + public func putResourcePolicy(input: PutResourcePolicyInput) async throws -> PutResourcePolicyOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "putResourcePolicy") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "redshift") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "putResourcePolicy") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "PutResourcePolicyMessage")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Reboots a cluster. This action is taken as soon as possible. It results in a momentary outage to the cluster, during which the cluster status is set to rebooting. A cluster event is created when the reboot is completed. Any pending cluster modifications (see [ModifyCluster]) are applied at this reboot. For more information about managing clusters, go to [Amazon Redshift Clusters](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html) in the Amazon Redshift Cluster Management Guide. /// /// - Parameter RebootClusterInput : @@ -5457,6 +5706,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// - `InvalidSubnet` : The requested subnet is not valid, or not all of the subnets are in the same VPC. /// - `InvalidTagFault` : The tag is invalid. /// - `InvalidVPCNetworkStateFault` : The cluster subnet group does not cover all Availability Zones. + /// - `Ipv6CidrBlockNotFoundFault` : There are no subnets in your VPC with associated IPv6 CIDR blocks. To use dual-stack mode, associate an IPv6 CIDR block with each subnet in your VPC. /// - `LimitExceededFault` : The encryption key has exceeded its grant limit in Amazon Web Services KMS. /// - `NumberOfNodesPerClusterLimitExceededFault` : The operation would exceed the number of nodes allowed for a cluster. /// - `NumberOfNodesQuotaExceededFault` : The operation would exceed the number of nodes allotted to the account. For information about increasing your quota, go to [Limits in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) in the Amazon Redshift Cluster Management Guide. @@ -5564,6 +5814,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `InsufficientClusterCapacityFault` : The number of nodes specified exceeds the allotted capacity of the cluster. /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func resumeCluster(input: ResumeClusterInput) async throws -> ResumeClusterOutput { let context = ClientRuntime.HttpContextBuilder() @@ -5753,6 +6004,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `DependentServiceRequestThrottlingFault` : The request cannot be completed because a dependent service is throttling requests made by Amazon Redshift on your behalf. Wait and retry the request. /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func rotateEncryptionKey(input: RotateEncryptionKeyInput) async throws -> RotateEncryptionKeyOutput { let context = ClientRuntime.HttpContextBuilder() @@ -5799,6 +6051,7 @@ extension RedshiftClient: RedshiftClientProtocol { /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `PartnerNotFoundFault` : The name of the partner was not found. /// - `UnauthorizedPartnerIntegrationFault` : The partner integration is not authorized. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. public func updatePartnerStatus(input: UpdatePartnerStatusInput) async throws -> UpdatePartnerStatusOutput { let context = ClientRuntime.HttpContextBuilder() diff --git a/Sources/Services/AWSRedshift/RedshiftClientProtocol.swift b/Sources/Services/AWSRedshift/RedshiftClientProtocol.swift index 27bdc406a37..14ebef93e1b 100644 --- a/Sources/Services/AWSRedshift/RedshiftClientProtocol.swift +++ b/Sources/Services/AWSRedshift/RedshiftClientProtocol.swift @@ -33,6 +33,7 @@ public protocol RedshiftClientProtocol { /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `PartnerNotFoundFault` : The name of the partner was not found. /// - `UnauthorizedPartnerIntegrationFault` : The partner integration is not authorized. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func addPartner(input: AddPartnerInput) async throws -> AddPartnerOutput /// From a datashare consumer account, associates a datashare with the account (AssociateEntireAccount) or the specified namespace (ConsumerArn). If you make this association, the consumer can consume the datashare. /// @@ -150,6 +151,7 @@ public protocol RedshiftClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `ClusterSnapshotAlreadyExistsFault` : The value specified as a snapshot identifier is already used by an existing snapshot. /// - `ClusterSnapshotNotFoundFault` : The snapshot identifier does not refer to an existing cluster snapshot. /// - `ClusterSnapshotQuotaExceededFault` : The request would result in the user exceeding the allowed number of cluster snapshots. @@ -194,12 +196,14 @@ public protocol RedshiftClientProtocol { /// - `InvalidSubnet` : The requested subnet is not valid, or not all of the subnets are in the same VPC. /// - `InvalidTagFault` : The tag is invalid. /// - `InvalidVPCNetworkStateFault` : The cluster subnet group does not cover all Availability Zones. + /// - `Ipv6CidrBlockNotFoundFault` : There are no subnets in your VPC with associated IPv6 CIDR blocks. To use dual-stack mode, associate an IPv6 CIDR block with each subnet in your VPC. /// - `LimitExceededFault` : The encryption key has exceeded its grant limit in Amazon Web Services KMS. /// - `NumberOfNodesPerClusterLimitExceededFault` : The operation would exceed the number of nodes allowed for a cluster. /// - `NumberOfNodesQuotaExceededFault` : The operation would exceed the number of nodes allotted to the account. For information about increasing your quota, go to [Limits in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) in the Amazon Redshift Cluster Management Guide. /// - `SnapshotScheduleNotFoundFault` : We could not find the specified snapshot schedule. /// - `TagLimitExceededFault` : You have exceeded the number of tags allowed. /// - `UnauthorizedOperation` : Your account is not authorized to perform the requested operation. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func createCluster(input: CreateClusterInput) async throws -> CreateClusterOutput /// Creates an Amazon Redshift parameter group. Creating parameter groups is independent of creating clusters. You can associate a cluster with a parameter group when you create the cluster. You can also associate an existing cluster with a parameter group after the cluster is created by using [ModifyCluster]. Parameters in the parameter group define specific behavior that applies to the databases you create on the cluster. For more information about parameters and parameter groups, go to [Amazon Redshift Parameter Groups](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html) in the Amazon Redshift Cluster Management Guide. /// @@ -355,12 +359,14 @@ public protocol RedshiftClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `InvalidScheduledActionFault` : The scheduled action is not valid. /// - `InvalidScheduleFault` : The schedule you submitted isn't valid. /// - `ScheduledActionAlreadyExistsFault` : The scheduled action already exists. /// - `ScheduledActionQuotaExceededFault` : The quota for scheduled actions exceeded. /// - `ScheduledActionTypeUnsupportedFault` : The action type specified for a scheduled action is not supported. /// - `UnauthorizedOperation` : Your account is not authorized to perform the requested operation. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func createScheduledAction(input: CreateScheduledActionInput) async throws -> CreateScheduledActionOutput /// Creates a snapshot copy grant that permits Amazon Redshift to use an encrypted symmetric key from Key Management Service (KMS) to encrypt copied snapshots in a destination region. For more information about managing snapshot copy grants, go to [Amazon Redshift Database Encryption](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-db-encryption.html) in the Amazon Redshift Cluster Management Guide. /// @@ -588,7 +594,20 @@ public protocol RedshiftClientProtocol { /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `PartnerNotFoundFault` : The name of the partner was not found. /// - `UnauthorizedPartnerIntegrationFault` : The partner integration is not authorized. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func deletePartner(input: DeletePartnerInput) async throws -> DeletePartnerOutput + /// Deletes the resource policy for a specified resource. + /// + /// - Parameter DeleteResourcePolicyInput : [no documentation found] + /// + /// - Returns: `DeleteResourcePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ResourceNotFoundFault` : The resource could not be found. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. + func deleteResourcePolicy(input: DeleteResourcePolicyInput) async throws -> DeleteResourcePolicyOutput /// Deletes a scheduled action. /// /// - Parameter DeleteScheduledActionInput : [no documentation found] @@ -894,6 +913,19 @@ public protocol RedshiftClientProtocol { /// - `HsmConfigurationNotFoundFault` : There is no Amazon Redshift HSM configuration with the specified identifier. /// - `InvalidTagFault` : The tag is invalid. func describeHsmConfigurations(input: DescribeHsmConfigurationsInput) async throws -> DescribeHsmConfigurationsOutput + /// Returns a list of inbound integrations. + /// + /// - Parameter DescribeInboundIntegrationsInput : [no documentation found] + /// + /// - Returns: `DescribeInboundIntegrationsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `IntegrationNotFoundFault` : The integration can't be found. + /// - `InvalidNamespaceFault` : The namespace isn't valid because the namespace doesn't exist. Provide a valid namespace. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. + func describeInboundIntegrations(input: DescribeInboundIntegrationsInput) async throws -> DescribeInboundIntegrationsOutput /// Describes whether information, such as queries and connection attempts, is being logged for the specified Amazon Redshift cluster. /// /// - Parameter DescribeLoggingStatusInput : @@ -904,6 +936,7 @@ public protocol RedshiftClientProtocol { /// /// __Possible Exceptions:__ /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func describeLoggingStatus(input: DescribeLoggingStatusInput) async throws -> DescribeLoggingStatusOutput /// Returns properties of possible node configurations such as node type, number of nodes, and disk usage for the specified action type. /// @@ -937,6 +970,7 @@ public protocol RedshiftClientProtocol { /// __Possible Exceptions:__ /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `UnauthorizedPartnerIntegrationFault` : The partner integration is not authorized. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func describePartners(input: DescribePartnersInput) async throws -> DescribePartnersOutput /// Returns exchange status details and associated metadata for a reserved-node exchange. Statuses include such values as in progress and requested. /// @@ -987,6 +1021,7 @@ public protocol RedshiftClientProtocol { /// __Possible Exceptions:__ /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `ResizeNotFoundFault` : A resize operation for the specified cluster is not found. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func describeResize(input: DescribeResizeInput) async throws -> DescribeResizeOutput /// Describes properties of scheduled actions. /// @@ -1088,6 +1123,7 @@ public protocol RedshiftClientProtocol { /// __Possible Exceptions:__ /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func disableLogging(input: DisableLoggingInput) async throws -> DisableLoggingOutput /// Disables the automatic copying of snapshots from one region to another region for a specified cluster. If your cluster and its snapshots are encrypted using an encrypted symmetric key from Key Management Service, use [DeleteSnapshotCopyGrant] to delete the grant that grants Amazon Redshift permission to the key in the destination region. /// @@ -1102,6 +1138,7 @@ public protocol RedshiftClientProtocol { /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. /// - `SnapshotCopyAlreadyDisabledFault` : The cluster already has cross-region snapshot copy disabled. /// - `UnauthorizedOperation` : Your account is not authorized to perform the requested operation. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func disableSnapshotCopy(input: DisableSnapshotCopyInput) async throws -> DisableSnapshotCopyOutput /// From a datashare consumer account, remove association for the specified datashare. /// @@ -1130,6 +1167,7 @@ public protocol RedshiftClientProtocol { /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. /// - `InvalidS3BucketNameFault` : The S3 bucket name is invalid. For more information about naming rules, go to [Bucket Restrictions and Limitations](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html) in the Amazon Simple Storage Service (S3) Developer Guide. /// - `InvalidS3KeyPrefixFault` : The string specified for the logging S3 key prefix does not comply with the documented constraints. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func enableLogging(input: EnableLoggingInput) async throws -> EnableLoggingOutput /// Enables the automatic copy of snapshots from one region to another region for a specified cluster. /// @@ -1152,6 +1190,20 @@ public protocol RedshiftClientProtocol { /// - `UnauthorizedOperation` : Your account is not authorized to perform the requested operation. /// - `UnknownSnapshotCopyRegionFault` : The specified region is incorrect or does not exist. func enableSnapshotCopy(input: EnableSnapshotCopyInput) async throws -> EnableSnapshotCopyOutput + /// Fails over the primary compute unit of the specified Multi-AZ cluster to another Availability Zone. + /// + /// - Parameter FailoverPrimaryComputeInput : [no documentation found] + /// + /// - Returns: `FailoverPrimaryComputeOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. + /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. + /// - `UnauthorizedOperation` : Your account is not authorized to perform the requested operation. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. + func failoverPrimaryCompute(input: FailoverPrimaryComputeInput) async throws -> FailoverPrimaryComputeOutput /// Returns a database user name and temporary password with temporary authorization to log on to an Amazon Redshift database. The action returns the database user name prefixed with IAM: if AutoCreate is False or IAMA: if AutoCreate is True. You can optionally specify one or more database user groups that the user will join at log on. By default, the temporary credentials expire in 900 seconds. You can optionally specify a duration between 900 seconds (15 minutes) and 3600 seconds (60 minutes). For more information, see [Using IAM Authentication to Generate Database User Credentials](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-user-credentials.html) in the Amazon Redshift Cluster Management Guide. The Identity and Access Management (IAM) user or role that runs GetClusterCredentials must have an IAM policy attached that allows access to all necessary actions and resources. For more information about permissions, see [Resource Policies for GetClusterCredentials](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#redshift-policy-resources.getclustercredentials-resources) in the Amazon Redshift Cluster Management Guide. If the DbGroups parameter is specified, the IAM policy must allow the redshift:JoinGroup action with access to the listed dbgroups. In addition, if the AutoCreate parameter is set to True, then the policy must include the redshift:CreateClusterUser permission. If the DbName parameter is specified, the IAM policy must allow access to the resource dbname for the specified database name. /// /// - Parameter GetClusterCredentialsInput : The request parameters to get cluster credentials. @@ -1210,6 +1262,19 @@ public protocol RedshiftClientProtocol { /// - `ReservedNodeOfferingNotFoundFault` : Specified offering does not exist. /// - `UnsupportedOperationFault` : The requested operation isn't supported. func getReservedNodeExchangeOfferings(input: GetReservedNodeExchangeOfferingsInput) async throws -> GetReservedNodeExchangeOfferingsOutput + /// Get the resource policy for a specified resource. + /// + /// - Parameter GetResourcePolicyInput : [no documentation found] + /// + /// - Returns: `GetResourcePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidPolicyFault` : The resource policy isn't valid. + /// - `ResourceNotFoundFault` : The resource could not be found. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. + func getResourcePolicy(input: GetResourcePolicyInput) async throws -> GetResourcePolicyOutput /// This operation is retired. Calling this operation does not change AQUA configuration. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator). /// /// - Parameter ModifyAquaConfigurationInput : [no documentation found] @@ -1259,6 +1324,7 @@ public protocol RedshiftClientProtocol { /// - `InvalidClusterTrackFault` : The provided cluster track name is not valid. /// - `InvalidElasticIpFault` : The Elastic IP (EIP) is invalid or cannot be found. /// - `InvalidRetentionPeriodFault` : The retention period specified is either in the past or is not a valid value. The value must be either -1 or an integer between 1 and 3,653. + /// - `Ipv6CidrBlockNotFoundFault` : There are no subnets in your VPC with associated IPv6 CIDR blocks. To use dual-stack mode, associate an IPv6 CIDR block with each subnet in your VPC. /// - `LimitExceededFault` : The encryption key has exceeded its grant limit in Amazon Web Services KMS. /// - `NumberOfNodesPerClusterLimitExceededFault` : The operation would exceed the number of nodes allowed for a cluster. /// - `NumberOfNodesQuotaExceededFault` : The operation would exceed the number of nodes allotted to the account. For information about increasing your quota, go to [Limits in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) in the Amazon Redshift Cluster Management Guide. @@ -1279,6 +1345,7 @@ public protocol RedshiftClientProtocol { /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `ClusterOnLatestRevisionFault` : Cluster is already on the latest database revision. /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func modifyClusterDbRevision(input: ModifyClusterDbRevisionInput) async throws -> ModifyClusterDbRevisionOutput /// Modifies the list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services. The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to [Quotas and limits](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) in the Amazon Redshift Cluster Management Guide. /// @@ -1415,11 +1482,13 @@ public protocol RedshiftClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `InvalidScheduledActionFault` : The scheduled action is not valid. /// - `InvalidScheduleFault` : The schedule you submitted isn't valid. /// - `ScheduledActionNotFoundFault` : The scheduled action cannot be found. /// - `ScheduledActionTypeUnsupportedFault` : The action type specified for a scheduled action is not supported. /// - `UnauthorizedOperation` : Your account is not authorized to perform the requested operation. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func modifyScheduledAction(input: ModifyScheduledActionInput) async throws -> ModifyScheduledActionOutput /// Modifies the number of days to retain snapshots in the destination Amazon Web Services Region after they are copied from the source Amazon Web Services Region. By default, this operation only changes the retention period of copied automated snapshots. The retention periods for both new and existing copied automated snapshots are updated with the new retention period. You can set the manual option to change only the retention periods of copied manual snapshots. If you set this option, only newly copied manual snapshots have the new retention period. /// @@ -1473,6 +1542,7 @@ public protocol RedshiftClientProtocol { /// __Possible Exceptions:__ /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func pauseCluster(input: PauseClusterInput) async throws -> PauseClusterOutput /// Allows you to purchase reserved nodes. Amazon Redshift offers a predefined set of reserved node offerings. You can purchase one or more of the offerings. You can call the [DescribeReservedNodeOfferings] API to obtain the available reserved node offerings. You can call this API by providing a specific reserved node offering and the number of nodes you want to reserve. For more information about reserved node offerings, go to [Purchasing Reserved Nodes](https://docs.aws.amazon.com/redshift/latest/mgmt/purchase-reserved-node-instance.html) in the Amazon Redshift Cluster Management Guide. /// @@ -1488,6 +1558,20 @@ public protocol RedshiftClientProtocol { /// - `ReservedNodeQuotaExceededFault` : Request would exceed the user's compute node quota. For information about increasing your quota, go to [Limits in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) in the Amazon Redshift Cluster Management Guide. /// - `UnsupportedOperationFault` : The requested operation isn't supported. func purchaseReservedNodeOffering(input: PurchaseReservedNodeOfferingInput) async throws -> PurchaseReservedNodeOfferingOutput + /// Updates the resource policy for a specified resource. + /// + /// - Parameter PutResourcePolicyInput : [no documentation found] + /// + /// - Returns: `PutResourcePolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictPolicyUpdateFault` : There is a conflict while updating the resource policy. + /// - `InvalidPolicyFault` : The resource policy isn't valid. + /// - `ResourceNotFoundFault` : The resource could not be found. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. + func putResourcePolicy(input: PutResourcePolicyInput) async throws -> PutResourcePolicyOutput /// Reboots a cluster. This action is taken as soon as possible. It results in a momentary outage to the cluster, during which the cluster status is set to rebooting. A cluster event is created when the reboot is completed. Any pending cluster modifications (see [ModifyCluster]) are applied at this reboot. For more information about managing clusters, go to [Amazon Redshift Clusters](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html) in the Amazon Redshift Cluster Management Guide. /// /// - Parameter RebootClusterInput : @@ -1603,6 +1687,7 @@ public protocol RedshiftClientProtocol { /// - `InvalidSubnet` : The requested subnet is not valid, or not all of the subnets are in the same VPC. /// - `InvalidTagFault` : The tag is invalid. /// - `InvalidVPCNetworkStateFault` : The cluster subnet group does not cover all Availability Zones. + /// - `Ipv6CidrBlockNotFoundFault` : There are no subnets in your VPC with associated IPv6 CIDR blocks. To use dual-stack mode, associate an IPv6 CIDR block with each subnet in your VPC. /// - `LimitExceededFault` : The encryption key has exceeded its grant limit in Amazon Web Services KMS. /// - `NumberOfNodesPerClusterLimitExceededFault` : The operation would exceed the number of nodes allowed for a cluster. /// - `NumberOfNodesQuotaExceededFault` : The operation would exceed the number of nodes allotted to the account. For information about increasing your quota, go to [Limits in Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) in the Amazon Redshift Cluster Management Guide. @@ -1644,6 +1729,7 @@ public protocol RedshiftClientProtocol { /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `InsufficientClusterCapacityFault` : The number of nodes specified exceeds the allotted capacity of the cluster. /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func resumeCluster(input: ResumeClusterInput) async throws -> ResumeClusterOutput /// Revokes an ingress rule in an Amazon Redshift security group for a previously authorized IP range or Amazon EC2 security group. To add an ingress rule, see [AuthorizeClusterSecurityGroupIngress]. For information about managing security groups, go to [Amazon Redshift Cluster Security Groups](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-security-groups.html) in the Amazon Redshift Cluster Management Guide. /// @@ -1701,6 +1787,7 @@ public protocol RedshiftClientProtocol { /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `DependentServiceRequestThrottlingFault` : The request cannot be completed because a dependent service is throttling requests made by Amazon Redshift on your behalf. Wait and retry the request. /// - `InvalidClusterStateFault` : The specified cluster is not in the available state. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func rotateEncryptionKey(input: RotateEncryptionKeyInput) async throws -> RotateEncryptionKeyOutput /// Updates the status of a partner integration. /// @@ -1714,6 +1801,7 @@ public protocol RedshiftClientProtocol { /// - `ClusterNotFoundFault` : The ClusterIdentifier parameter does not refer to an existing cluster. /// - `PartnerNotFoundFault` : The name of the partner was not found. /// - `UnauthorizedPartnerIntegrationFault` : The partner integration is not authorized. + /// - `UnsupportedOperationFault` : The requested operation isn't supported. func updatePartnerStatus(input: UpdatePartnerStatusInput) async throws -> UpdatePartnerStatusOutput } diff --git a/Sources/Services/AWSRedshift/models/Models.swift b/Sources/Services/AWSRedshift/models/Models.swift index 4050be56f1f..d889874e84a 100644 --- a/Sources/Services/AWSRedshift/models/Models.swift +++ b/Sources/Services/AWSRedshift/models/Models.swift @@ -516,6 +516,7 @@ enum AddPartnerOutputError: ClientRuntime.HttpResponseErrorBinding { case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "PartnerNotFound": return try await PartnerNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "UnauthorizedPartnerIntegration": return try await UnauthorizedPartnerIntegrationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -2999,6 +3000,7 @@ extension RedshiftClientTypes.Cluster: Swift.Codable { case expectedNextSnapshotScheduleTimeStatus = "ExpectedNextSnapshotScheduleTimeStatus" case hsmStatus = "HsmStatus" case iamRoles = "IamRoles" + case ipAddressType = "IpAddressType" case kmsKeyId = "KmsKeyId" case maintenanceTrackName = "MaintenanceTrackName" case manualSnapshotRetentionPeriod = "ManualSnapshotRetentionPeriod" @@ -3006,6 +3008,8 @@ extension RedshiftClientTypes.Cluster: Swift.Codable { case masterPasswordSecretKmsKeyId = "MasterPasswordSecretKmsKeyId" case masterUsername = "MasterUsername" case modifyStatus = "ModifyStatus" + case multiAZ = "MultiAZ" + case multiAZSecondary = "MultiAZSecondary" case nextMaintenanceWindowStartTime = "NextMaintenanceWindowStartTime" case nodeType = "NodeType" case numberOfNodes = "NumberOfNodes" @@ -3173,6 +3177,9 @@ extension RedshiftClientTypes.Cluster: Swift.Codable { try iamRolesContainer.encode("", forKey: ClientRuntime.Key("")) } } + if let ipAddressType = ipAddressType { + try container.encode(ipAddressType, forKey: ClientRuntime.Key("IpAddressType")) + } if let kmsKeyId = kmsKeyId { try container.encode(kmsKeyId, forKey: ClientRuntime.Key("KmsKeyId")) } @@ -3194,6 +3201,12 @@ extension RedshiftClientTypes.Cluster: Swift.Codable { if let modifyStatus = modifyStatus { try container.encode(modifyStatus, forKey: ClientRuntime.Key("ModifyStatus")) } + if let multiAZ = multiAZ { + try container.encode(multiAZ, forKey: ClientRuntime.Key("MultiAZ")) + } + if let multiAZSecondary = multiAZSecondary { + try container.encode(multiAZSecondary, forKey: ClientRuntime.Key("MultiAZSecondary")) + } if let nextMaintenanceWindowStartTime = nextMaintenanceWindowStartTime { try container.encodeTimestamp(nextMaintenanceWindowStartTime, format: .dateTime, forKey: ClientRuntime.Key("NextMaintenanceWindowStartTime")) } @@ -3523,6 +3536,12 @@ extension RedshiftClientTypes.Cluster: Swift.Codable { masterPasswordSecretArn = masterPasswordSecretArnDecoded let masterPasswordSecretKmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .masterPasswordSecretKmsKeyId) masterPasswordSecretKmsKeyId = masterPasswordSecretKmsKeyIdDecoded + let ipAddressTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ipAddressType) + ipAddressType = ipAddressTypeDecoded + let multiAZDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .multiAZ) + multiAZ = multiAZDecoded + let multiAZSecondaryDecoded = try containerValues.decodeIfPresent(RedshiftClientTypes.SecondaryClusterInfo.self, forKey: .multiAZSecondary) + multiAZSecondary = multiAZSecondaryDecoded } } @@ -3651,6 +3670,8 @@ extension RedshiftClientTypes { public var hsmStatus: RedshiftClientTypes.HsmStatus? /// A list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services. public var iamRoles: [RedshiftClientTypes.ClusterIamRole]? + /// The IP address type for the cluster. Possible values are ipv4 and dualstack. + public var ipAddressType: Swift.String? /// The Key Management Service (KMS) key ID of the encryption key used to encrypt data in the cluster. public var kmsKeyId: Swift.String? /// The name of the maintenance track for the cluster. @@ -3665,6 +3686,10 @@ extension RedshiftClientTypes { public var masterUsername: Swift.String? /// The status of a modify operation, if any, initiated for the cluster. public var modifyStatus: Swift.String? + /// A boolean value that, if true, indicates that the cluster is deployed in two Availability Zones. + public var multiAZ: Swift.String? + /// The secondary compute unit of a cluster, if Multi-AZ deployment is turned on. + public var multiAZSecondary: RedshiftClientTypes.SecondaryClusterInfo? /// The date and time in UTC when system maintenance can begin. public var nextMaintenanceWindowStartTime: ClientRuntime.Date? /// The node type for the nodes in the cluster. @@ -3737,6 +3762,7 @@ extension RedshiftClientTypes { expectedNextSnapshotScheduleTimeStatus: Swift.String? = nil, hsmStatus: RedshiftClientTypes.HsmStatus? = nil, iamRoles: [RedshiftClientTypes.ClusterIamRole]? = nil, + ipAddressType: Swift.String? = nil, kmsKeyId: Swift.String? = nil, maintenanceTrackName: Swift.String? = nil, manualSnapshotRetentionPeriod: Swift.Int? = nil, @@ -3744,6 +3770,8 @@ extension RedshiftClientTypes { masterPasswordSecretKmsKeyId: Swift.String? = nil, masterUsername: Swift.String? = nil, modifyStatus: Swift.String? = nil, + multiAZ: Swift.String? = nil, + multiAZSecondary: RedshiftClientTypes.SecondaryClusterInfo? = nil, nextMaintenanceWindowStartTime: ClientRuntime.Date? = nil, nodeType: Swift.String? = nil, numberOfNodes: Swift.Int? = nil, @@ -3796,6 +3824,7 @@ extension RedshiftClientTypes { self.expectedNextSnapshotScheduleTimeStatus = expectedNextSnapshotScheduleTimeStatus self.hsmStatus = hsmStatus self.iamRoles = iamRoles + self.ipAddressType = ipAddressType self.kmsKeyId = kmsKeyId self.maintenanceTrackName = maintenanceTrackName self.manualSnapshotRetentionPeriod = manualSnapshotRetentionPeriod @@ -3803,6 +3832,8 @@ extension RedshiftClientTypes { self.masterPasswordSecretKmsKeyId = masterPasswordSecretKmsKeyId self.masterUsername = masterUsername self.modifyStatus = modifyStatus + self.multiAZ = multiAZ + self.multiAZSecondary = multiAZSecondary self.nextMaintenanceWindowStartTime = nextMaintenanceWindowStartTime self.nodeType = nodeType self.numberOfNodes = numberOfNodes @@ -5278,6 +5309,7 @@ extension RedshiftClientTypes.ClusterSubnetGroup: Swift.Codable { case description = "Description" case subnetGroupStatus = "SubnetGroupStatus" case subnets = "Subnets" + case supportedClusterIpAddressTypes = "SupportedClusterIpAddressTypes" case tags = "Tags" case vpcId = "VpcId" } @@ -5305,6 +5337,18 @@ extension RedshiftClientTypes.ClusterSubnetGroup: Swift.Codable { try subnetsContainer.encode("", forKey: ClientRuntime.Key("")) } } + if let supportedClusterIpAddressTypes = supportedClusterIpAddressTypes { + if !supportedClusterIpAddressTypes.isEmpty { + var supportedClusterIpAddressTypesContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("SupportedClusterIpAddressTypes")) + for (index0, string0) in supportedClusterIpAddressTypes.enumerated() { + try supportedClusterIpAddressTypesContainer.encode(string0, forKey: ClientRuntime.Key("item.\(index0.advanced(by: 1))")) + } + } + else { + var supportedClusterIpAddressTypesContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("SupportedClusterIpAddressTypes")) + try supportedClusterIpAddressTypesContainer.encode("", forKey: ClientRuntime.Key("")) + } + } if let tags = tags { if !tags.isEmpty { var tagsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Tags")) @@ -5370,6 +5414,25 @@ extension RedshiftClientTypes.ClusterSubnetGroup: Swift.Codable { } else { tags = nil } + if containerValues.contains(.supportedClusterIpAddressTypes) { + struct KeyVal0{struct item{}} + let supportedClusterIpAddressTypesWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .supportedClusterIpAddressTypes) + if let supportedClusterIpAddressTypesWrappedContainer = supportedClusterIpAddressTypesWrappedContainer { + let supportedClusterIpAddressTypesContainer = try supportedClusterIpAddressTypesWrappedContainer.decodeIfPresent([Swift.String].self, forKey: .member) + var supportedClusterIpAddressTypesBuffer:[Swift.String]? = nil + if let supportedClusterIpAddressTypesContainer = supportedClusterIpAddressTypesContainer { + supportedClusterIpAddressTypesBuffer = [Swift.String]() + for stringContainer0 in supportedClusterIpAddressTypesContainer { + supportedClusterIpAddressTypesBuffer?.append(stringContainer0) + } + } + supportedClusterIpAddressTypes = supportedClusterIpAddressTypesBuffer + } else { + supportedClusterIpAddressTypes = [] + } + } else { + supportedClusterIpAddressTypes = nil + } } } @@ -5384,6 +5447,8 @@ extension RedshiftClientTypes { public var subnetGroupStatus: Swift.String? /// A list of the VPC [Subnet] elements. public var subnets: [RedshiftClientTypes.Subnet]? + /// The IP address types supported by this cluster subnet group. Possible values are ipv4 and dualstack. + public var supportedClusterIpAddressTypes: [Swift.String]? /// The list of tags for the cluster subnet group. public var tags: [RedshiftClientTypes.Tag]? /// The VPC ID of the cluster subnet group. @@ -5394,6 +5459,7 @@ extension RedshiftClientTypes { description: Swift.String? = nil, subnetGroupStatus: Swift.String? = nil, subnets: [RedshiftClientTypes.Subnet]? = nil, + supportedClusterIpAddressTypes: [Swift.String]? = nil, tags: [RedshiftClientTypes.Tag]? = nil, vpcId: Swift.String? = nil ) @@ -5402,6 +5468,7 @@ extension RedshiftClientTypes { self.description = description self.subnetGroupStatus = subnetGroupStatus self.subnets = subnets + self.supportedClusterIpAddressTypes = supportedClusterIpAddressTypes self.tags = tags self.vpcId = vpcId } @@ -5680,6 +5747,60 @@ extension RedshiftClientTypes { } +extension ConflictPolicyUpdateFault { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { + let output: AWSClientRuntime.ErrorResponseContainer = try responseDecoder.decode(responseBody: data) + self.properties.message = output.error.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// There is a conflict while updating the resource policy. +public struct ConflictPolicyUpdateFault: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ConflictPolicyUpdateFault" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct ConflictPolicyUpdateFaultBody: Swift.Equatable { + let message: Swift.String? +} + +extension ConflictPolicyUpdateFaultBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + extension CopyClusterSnapshotInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -5820,6 +5941,7 @@ enum CopyClusterSnapshotOutputError: ClientRuntime.HttpResponseErrorBinding { static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { let restXMLError = try await AWSClientRuntime.RestXMLError(httpResponse: httpResponse) switch restXMLError.errorCode { + case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "ClusterSnapshotAlreadyExists": return try await ClusterSnapshotAlreadyExistsFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "ClusterSnapshotNotFound": return try await ClusterSnapshotNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "ClusterSnapshotQuotaExceeded": return try await ClusterSnapshotQuotaExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) @@ -6007,7 +6129,7 @@ enum CreateAuthenticationProfileOutputError: ClientRuntime.HttpResponseErrorBind extension CreateClusterInput: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "CreateClusterInput(additionalInfo: \(Swift.String(describing: additionalInfo)), allowVersionUpgrade: \(Swift.String(describing: allowVersionUpgrade)), aquaConfigurationStatus: \(Swift.String(describing: aquaConfigurationStatus)), automatedSnapshotRetentionPeriod: \(Swift.String(describing: automatedSnapshotRetentionPeriod)), availabilityZone: \(Swift.String(describing: availabilityZone)), availabilityZoneRelocation: \(Swift.String(describing: availabilityZoneRelocation)), clusterIdentifier: \(Swift.String(describing: clusterIdentifier)), clusterParameterGroupName: \(Swift.String(describing: clusterParameterGroupName)), clusterSecurityGroups: \(Swift.String(describing: clusterSecurityGroups)), clusterSubnetGroupName: \(Swift.String(describing: clusterSubnetGroupName)), clusterType: \(Swift.String(describing: clusterType)), clusterVersion: \(Swift.String(describing: clusterVersion)), dbName: \(Swift.String(describing: dbName)), defaultIamRoleArn: \(Swift.String(describing: defaultIamRoleArn)), elasticIp: \(Swift.String(describing: elasticIp)), encrypted: \(Swift.String(describing: encrypted)), enhancedVpcRouting: \(Swift.String(describing: enhancedVpcRouting)), hsmClientCertificateIdentifier: \(Swift.String(describing: hsmClientCertificateIdentifier)), hsmConfigurationIdentifier: \(Swift.String(describing: hsmConfigurationIdentifier)), iamRoles: \(Swift.String(describing: iamRoles)), kmsKeyId: \(Swift.String(describing: kmsKeyId)), loadSampleData: \(Swift.String(describing: loadSampleData)), maintenanceTrackName: \(Swift.String(describing: maintenanceTrackName)), manageMasterPassword: \(Swift.String(describing: manageMasterPassword)), manualSnapshotRetentionPeriod: \(Swift.String(describing: manualSnapshotRetentionPeriod)), masterPasswordSecretKmsKeyId: \(Swift.String(describing: masterPasswordSecretKmsKeyId)), masterUsername: \(Swift.String(describing: masterUsername)), nodeType: \(Swift.String(describing: nodeType)), numberOfNodes: \(Swift.String(describing: numberOfNodes)), port: \(Swift.String(describing: port)), preferredMaintenanceWindow: \(Swift.String(describing: preferredMaintenanceWindow)), publiclyAccessible: \(Swift.String(describing: publiclyAccessible)), snapshotScheduleIdentifier: \(Swift.String(describing: snapshotScheduleIdentifier)), tags: \(Swift.String(describing: tags)), vpcSecurityGroupIds: \(Swift.String(describing: vpcSecurityGroupIds)), masterUserPassword: \"CONTENT_REDACTED\")"} + "CreateClusterInput(additionalInfo: \(Swift.String(describing: additionalInfo)), allowVersionUpgrade: \(Swift.String(describing: allowVersionUpgrade)), aquaConfigurationStatus: \(Swift.String(describing: aquaConfigurationStatus)), automatedSnapshotRetentionPeriod: \(Swift.String(describing: automatedSnapshotRetentionPeriod)), availabilityZone: \(Swift.String(describing: availabilityZone)), availabilityZoneRelocation: \(Swift.String(describing: availabilityZoneRelocation)), clusterIdentifier: \(Swift.String(describing: clusterIdentifier)), clusterParameterGroupName: \(Swift.String(describing: clusterParameterGroupName)), clusterSecurityGroups: \(Swift.String(describing: clusterSecurityGroups)), clusterSubnetGroupName: \(Swift.String(describing: clusterSubnetGroupName)), clusterType: \(Swift.String(describing: clusterType)), clusterVersion: \(Swift.String(describing: clusterVersion)), dbName: \(Swift.String(describing: dbName)), defaultIamRoleArn: \(Swift.String(describing: defaultIamRoleArn)), elasticIp: \(Swift.String(describing: elasticIp)), encrypted: \(Swift.String(describing: encrypted)), enhancedVpcRouting: \(Swift.String(describing: enhancedVpcRouting)), hsmClientCertificateIdentifier: \(Swift.String(describing: hsmClientCertificateIdentifier)), hsmConfigurationIdentifier: \(Swift.String(describing: hsmConfigurationIdentifier)), iamRoles: \(Swift.String(describing: iamRoles)), ipAddressType: \(Swift.String(describing: ipAddressType)), kmsKeyId: \(Swift.String(describing: kmsKeyId)), loadSampleData: \(Swift.String(describing: loadSampleData)), maintenanceTrackName: \(Swift.String(describing: maintenanceTrackName)), manageMasterPassword: \(Swift.String(describing: manageMasterPassword)), manualSnapshotRetentionPeriod: \(Swift.String(describing: manualSnapshotRetentionPeriod)), masterPasswordSecretKmsKeyId: \(Swift.String(describing: masterPasswordSecretKmsKeyId)), masterUsername: \(Swift.String(describing: masterUsername)), multiAZ: \(Swift.String(describing: multiAZ)), nodeType: \(Swift.String(describing: nodeType)), numberOfNodes: \(Swift.String(describing: numberOfNodes)), port: \(Swift.String(describing: port)), preferredMaintenanceWindow: \(Swift.String(describing: preferredMaintenanceWindow)), publiclyAccessible: \(Swift.String(describing: publiclyAccessible)), snapshotScheduleIdentifier: \(Swift.String(describing: snapshotScheduleIdentifier)), tags: \(Swift.String(describing: tags)), vpcSecurityGroupIds: \(Swift.String(describing: vpcSecurityGroupIds)), masterUserPassword: \"CONTENT_REDACTED\")"} } extension CreateClusterInput: Swift.Encodable { @@ -6091,6 +6213,9 @@ extension CreateClusterInput: Swift.Encodable { try iamRolesContainer.encode("", forKey: ClientRuntime.Key("")) } } + if let ipAddressType = ipAddressType { + try container.encode(ipAddressType, forKey: ClientRuntime.Key("IpAddressType")) + } if let kmsKeyId = kmsKeyId { try container.encode(kmsKeyId, forKey: ClientRuntime.Key("KmsKeyId")) } @@ -6115,6 +6240,9 @@ extension CreateClusterInput: Swift.Encodable { if let masterUsername = masterUsername { try container.encode(masterUsername, forKey: ClientRuntime.Key("MasterUsername")) } + if let multiAZ = multiAZ { + try container.encode(multiAZ, forKey: ClientRuntime.Key("MultiAZ")) + } if let nodeType = nodeType { try container.encode(nodeType, forKey: ClientRuntime.Key("NodeType")) } @@ -6243,6 +6371,8 @@ public struct CreateClusterInput: Swift.Equatable { public var hsmConfigurationIdentifier: Swift.String? /// A list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services. You must supply the IAM roles in their Amazon Resource Name (ARN) format. The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to [Quotas and limits](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) in the Amazon Redshift Cluster Management Guide. public var iamRoles: [Swift.String]? + /// The IP address types that the cluster supports. Possible values are ipv4 and dualstack. + public var ipAddressType: Swift.String? /// The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster. public var kmsKeyId: Swift.String? /// A flag that specifies whether to load sample data once the cluster is created. @@ -6280,6 +6410,8 @@ public struct CreateClusterInput: Swift.Equatable { /// * Cannot be a reserved word. A list of reserved words can be found in [Reserved Words](https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html) in the Amazon Redshift Database Developer Guide. /// This member is required. public var masterUsername: Swift.String? + /// If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ). + public var multiAZ: Swift.Bool? /// The node type to be provisioned for the cluster. For information about node types, go to [ Working with Clusters](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes) in the Amazon Redshift Cluster Management Guide. Valid Values: ds2.xlarge | ds2.8xlarge | dc1.large | dc1.8xlarge | dc2.large | dc2.8xlarge | ra3.xlplus | ra3.4xlarge | ra3.16xlarge /// This member is required. public var nodeType: Swift.String? @@ -6319,6 +6451,7 @@ public struct CreateClusterInput: Swift.Equatable { hsmClientCertificateIdentifier: Swift.String? = nil, hsmConfigurationIdentifier: Swift.String? = nil, iamRoles: [Swift.String]? = nil, + ipAddressType: Swift.String? = nil, kmsKeyId: Swift.String? = nil, loadSampleData: Swift.String? = nil, maintenanceTrackName: Swift.String? = nil, @@ -6327,6 +6460,7 @@ public struct CreateClusterInput: Swift.Equatable { masterPasswordSecretKmsKeyId: Swift.String? = nil, masterUserPassword: Swift.String? = nil, masterUsername: Swift.String? = nil, + multiAZ: Swift.Bool? = nil, nodeType: Swift.String? = nil, numberOfNodes: Swift.Int? = nil, port: Swift.Int? = nil, @@ -6357,6 +6491,7 @@ public struct CreateClusterInput: Swift.Equatable { self.hsmClientCertificateIdentifier = hsmClientCertificateIdentifier self.hsmConfigurationIdentifier = hsmConfigurationIdentifier self.iamRoles = iamRoles + self.ipAddressType = ipAddressType self.kmsKeyId = kmsKeyId self.loadSampleData = loadSampleData self.maintenanceTrackName = maintenanceTrackName @@ -6365,6 +6500,7 @@ public struct CreateClusterInput: Swift.Equatable { self.masterPasswordSecretKmsKeyId = masterPasswordSecretKmsKeyId self.masterUserPassword = masterUserPassword self.masterUsername = masterUsername + self.multiAZ = multiAZ self.nodeType = nodeType self.numberOfNodes = numberOfNodes self.port = port @@ -6413,6 +6549,8 @@ struct CreateClusterInputBody: Swift.Equatable { let loadSampleData: Swift.String? let manageMasterPassword: Swift.Bool? let masterPasswordSecretKmsKeyId: Swift.String? + let ipAddressType: Swift.String? + let multiAZ: Swift.Bool? } extension CreateClusterInputBody: Swift.Decodable { @@ -6437,6 +6575,7 @@ extension CreateClusterInputBody: Swift.Decodable { case hsmClientCertificateIdentifier = "HsmClientCertificateIdentifier" case hsmConfigurationIdentifier = "HsmConfigurationIdentifier" case iamRoles = "IamRoles" + case ipAddressType = "IpAddressType" case kmsKeyId = "KmsKeyId" case loadSampleData = "LoadSampleData" case maintenanceTrackName = "MaintenanceTrackName" @@ -6445,6 +6584,7 @@ extension CreateClusterInputBody: Swift.Decodable { case masterPasswordSecretKmsKeyId = "MasterPasswordSecretKmsKeyId" case masterUserPassword = "MasterUserPassword" case masterUsername = "MasterUsername" + case multiAZ = "MultiAZ" case nodeType = "NodeType" case numberOfNodes = "NumberOfNodes" case port = "Port" @@ -6597,6 +6737,10 @@ extension CreateClusterInputBody: Swift.Decodable { manageMasterPassword = manageMasterPasswordDecoded let masterPasswordSecretKmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .masterPasswordSecretKmsKeyId) masterPasswordSecretKmsKeyId = masterPasswordSecretKmsKeyIdDecoded + let ipAddressTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ipAddressType) + ipAddressType = ipAddressTypeDecoded + let multiAZDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .multiAZ) + multiAZ = multiAZDecoded } } @@ -6661,12 +6805,14 @@ enum CreateClusterOutputError: ClientRuntime.HttpResponseErrorBinding { case "InvalidSubnet": return try await InvalidSubnet(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidTagFault": return try await InvalidTagFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidVPCNetworkStateFault": return try await InvalidVPCNetworkStateFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "Ipv6CidrBlockNotFoundFault": return try await Ipv6CidrBlockNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "LimitExceededFault": return try await LimitExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "NumberOfNodesPerClusterLimitExceeded": return try await NumberOfNodesPerClusterLimitExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "NumberOfNodesQuotaExceeded": return try await NumberOfNodesQuotaExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "SnapshotScheduleNotFound": return try await SnapshotScheduleNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "TagLimitExceededFault": return try await TagLimitExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "UnauthorizedOperation": return try await UnauthorizedOperation(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -8695,12 +8841,14 @@ enum CreateScheduledActionOutputError: ClientRuntime.HttpResponseErrorBinding { static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { let restXMLError = try await AWSClientRuntime.RestXMLError(httpResponse: httpResponse) switch restXMLError.errorCode { + case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidScheduledAction": return try await InvalidScheduledActionFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidSchedule": return try await InvalidScheduleFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "ScheduledActionAlreadyExists": return try await ScheduledActionAlreadyExistsFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "ScheduledActionQuotaExceeded": return try await ScheduledActionQuotaExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "ScheduledActionTypeUnsupported": return try await ScheduledActionTypeUnsupportedFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "UnauthorizedOperation": return try await UnauthorizedOperation(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -11624,6 +11772,74 @@ enum DeletePartnerOutputError: ClientRuntime.HttpResponseErrorBinding { case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "PartnerNotFound": return try await PartnerNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "UnauthorizedPartnerIntegration": return try await UnauthorizedPartnerIntegrationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) + } + } +} + +extension DeleteResourcePolicyInput: Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let resourceArn = resourceArn { + try container.encode(resourceArn, forKey: ClientRuntime.Key("ResourceArn")) + } + try container.encode("DeleteResourcePolicy", forKey:ClientRuntime.Key("Action")) + try container.encode("2012-12-01", forKey:ClientRuntime.Key("Version")) + } +} + +extension DeleteResourcePolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct DeleteResourcePolicyInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the resource of which its resource policy is deleted. + /// This member is required. + public var resourceArn: Swift.String? + + public init( + resourceArn: Swift.String? = nil + ) + { + self.resourceArn = resourceArn + } +} + +struct DeleteResourcePolicyInputBody: Swift.Equatable { + let resourceArn: Swift.String? +} + +extension DeleteResourcePolicyInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case resourceArn = "ResourceArn" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let resourceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceArn) + resourceArn = resourceArnDecoded + } +} + +extension DeleteResourcePolicyOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct DeleteResourcePolicyOutput: Swift.Equatable { + + public init() { } +} + +enum DeleteResourcePolicyOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restXMLError = try await AWSClientRuntime.RestXMLError(httpResponse: httpResponse) + switch restXMLError.errorCode { + case "ResourceNotFoundFault": return try await ResourceNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -16279,6 +16495,164 @@ enum DescribeHsmConfigurationsOutputError: ClientRuntime.HttpResponseErrorBindin } } +extension DescribeInboundIntegrationsInput: Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let integrationArn = integrationArn { + try container.encode(integrationArn, forKey: ClientRuntime.Key("IntegrationArn")) + } + if let marker = marker { + try container.encode(marker, forKey: ClientRuntime.Key("Marker")) + } + if let maxRecords = maxRecords { + try container.encode(maxRecords, forKey: ClientRuntime.Key("MaxRecords")) + } + if let targetArn = targetArn { + try container.encode(targetArn, forKey: ClientRuntime.Key("TargetArn")) + } + try container.encode("DescribeInboundIntegrations", forKey:ClientRuntime.Key("Action")) + try container.encode("2012-12-01", forKey:ClientRuntime.Key("Version")) + } +} + +extension DescribeInboundIntegrationsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct DescribeInboundIntegrationsInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the inbound integration. + public var integrationArn: Swift.String? + /// An optional parameter that specifies the starting point to return a set of response records. When the results of a [DescribeInboundIntegrations] request exceed the value specified in MaxRecords, Amazon Web Services returns a value in the Marker field of the response. You can retrieve the next set of response records by providing the returned marker value in the Marker parameter and retrying the request. + public var marker: Swift.String? + /// The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified MaxRecords value, a value is returned in a marker field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. Default: 100 Constraints: minimum 20, maximum 100. + public var maxRecords: Swift.Int? + /// The Amazon Resource Name (ARN) of the target of an inbound integration. + public var targetArn: Swift.String? + + public init( + integrationArn: Swift.String? = nil, + marker: Swift.String? = nil, + maxRecords: Swift.Int? = nil, + targetArn: Swift.String? = nil + ) + { + self.integrationArn = integrationArn + self.marker = marker + self.maxRecords = maxRecords + self.targetArn = targetArn + } +} + +struct DescribeInboundIntegrationsInputBody: Swift.Equatable { + let integrationArn: Swift.String? + let targetArn: Swift.String? + let maxRecords: Swift.Int? + let marker: Swift.String? +} + +extension DescribeInboundIntegrationsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case integrationArn = "IntegrationArn" + case marker = "Marker" + case maxRecords = "MaxRecords" + case targetArn = "TargetArn" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let integrationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .integrationArn) + integrationArn = integrationArnDecoded + let targetArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .targetArn) + targetArn = targetArnDecoded + let maxRecordsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxRecords) + maxRecords = maxRecordsDecoded + let markerDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .marker) + marker = markerDecoded + } +} + +extension DescribeInboundIntegrationsOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: DescribeInboundIntegrationsOutputBody = try responseDecoder.decode(responseBody: data) + self.inboundIntegrations = output.inboundIntegrations + self.marker = output.marker + } else { + self.inboundIntegrations = nil + self.marker = nil + } + } +} + +public struct DescribeInboundIntegrationsOutput: Swift.Equatable { + /// A list of [InboundIntegration] instances. + public var inboundIntegrations: [RedshiftClientTypes.InboundIntegration]? + /// A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the Marker parameter and retrying the command. If the Marker field is empty, all response records have been retrieved for the request. + public var marker: Swift.String? + + public init( + inboundIntegrations: [RedshiftClientTypes.InboundIntegration]? = nil, + marker: Swift.String? = nil + ) + { + self.inboundIntegrations = inboundIntegrations + self.marker = marker + } +} + +struct DescribeInboundIntegrationsOutputBody: Swift.Equatable { + let marker: Swift.String? + let inboundIntegrations: [RedshiftClientTypes.InboundIntegration]? +} + +extension DescribeInboundIntegrationsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case inboundIntegrations = "InboundIntegrations" + case marker = "Marker" + } + + public init(from decoder: Swift.Decoder) throws { + let topLevelContainer = try decoder.container(keyedBy: ClientRuntime.Key.self) + let containerValues = try topLevelContainer.nestedContainer(keyedBy: CodingKeys.self, forKey: ClientRuntime.Key("DescribeInboundIntegrationsResult")) + let markerDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .marker) + marker = markerDecoded + if containerValues.contains(.inboundIntegrations) { + struct KeyVal0{struct InboundIntegration{}} + let inboundIntegrationsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .inboundIntegrations) + if let inboundIntegrationsWrappedContainer = inboundIntegrationsWrappedContainer { + let inboundIntegrationsContainer = try inboundIntegrationsWrappedContainer.decodeIfPresent([RedshiftClientTypes.InboundIntegration].self, forKey: .member) + var inboundIntegrationsBuffer:[RedshiftClientTypes.InboundIntegration]? = nil + if let inboundIntegrationsContainer = inboundIntegrationsContainer { + inboundIntegrationsBuffer = [RedshiftClientTypes.InboundIntegration]() + for structureContainer0 in inboundIntegrationsContainer { + inboundIntegrationsBuffer?.append(structureContainer0) + } + } + inboundIntegrations = inboundIntegrationsBuffer + } else { + inboundIntegrations = [] + } + } else { + inboundIntegrations = nil + } + } +} + +enum DescribeInboundIntegrationsOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restXMLError = try await AWSClientRuntime.RestXMLError(httpResponse: httpResponse) + switch restXMLError.errorCode { + case "IntegrationNotFoundFault": return try await IntegrationNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "InvalidNamespaceFault": return try await InvalidNamespaceFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) + } + } +} + extension DescribeLoggingStatusInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -16460,6 +16834,7 @@ enum DescribeLoggingStatusOutputError: ClientRuntime.HttpResponseErrorBinding { let restXMLError = try await AWSClientRuntime.RestXMLError(httpResponse: httpResponse) switch restXMLError.errorCode { case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -16997,6 +17372,7 @@ enum DescribePartnersOutputError: ClientRuntime.HttpResponseErrorBinding { switch restXMLError.errorCode { case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "UnauthorizedPartnerIntegration": return try await UnauthorizedPartnerIntegrationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -17753,6 +18129,7 @@ enum DescribeResizeOutputError: ClientRuntime.HttpResponseErrorBinding { switch restXMLError.errorCode { case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "ResizeNotFound": return try await ResizeNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -19354,6 +19731,7 @@ enum DisableLoggingOutputError: ClientRuntime.HttpResponseErrorBinding { switch restXMLError.errorCode { case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidClusterState": return try await InvalidClusterStateFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -19455,6 +19833,7 @@ enum DisableSnapshotCopyOutputError: ClientRuntime.HttpResponseErrorBinding { case "InvalidClusterState": return try await InvalidClusterStateFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "SnapshotCopyAlreadyDisabledFault": return try await SnapshotCopyAlreadyDisabledFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "UnauthorizedOperation": return try await UnauthorizedOperation(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -20058,6 +20437,7 @@ enum EnableLoggingOutputError: ClientRuntime.HttpResponseErrorBinding { case "InvalidClusterState": return try await InvalidClusterStateFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidS3BucketNameFault": return try await InvalidS3BucketNameFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidS3KeyPrefixFault": return try await InvalidS3KeyPrefixFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -21521,6 +21901,106 @@ extension EventSubscriptionQuotaExceededFaultBody: Swift.Decodable { } } +extension FailoverPrimaryComputeInput: Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let clusterIdentifier = clusterIdentifier { + try container.encode(clusterIdentifier, forKey: ClientRuntime.Key("ClusterIdentifier")) + } + try container.encode("FailoverPrimaryCompute", forKey:ClientRuntime.Key("Action")) + try container.encode("2012-12-01", forKey:ClientRuntime.Key("Version")) + } +} + +extension FailoverPrimaryComputeInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct FailoverPrimaryComputeInput: Swift.Equatable { + /// The unique identifier of the cluster for which the primary compute unit will be failed over to another Availability Zone. + /// This member is required. + public var clusterIdentifier: Swift.String? + + public init( + clusterIdentifier: Swift.String? = nil + ) + { + self.clusterIdentifier = clusterIdentifier + } +} + +struct FailoverPrimaryComputeInputBody: Swift.Equatable { + let clusterIdentifier: Swift.String? +} + +extension FailoverPrimaryComputeInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clusterIdentifier = "ClusterIdentifier" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let clusterIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clusterIdentifier) + clusterIdentifier = clusterIdentifierDecoded + } +} + +extension FailoverPrimaryComputeOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: FailoverPrimaryComputeOutputBody = try responseDecoder.decode(responseBody: data) + self.cluster = output.cluster + } else { + self.cluster = nil + } + } +} + +public struct FailoverPrimaryComputeOutput: Swift.Equatable { + /// Describes a cluster. + public var cluster: RedshiftClientTypes.Cluster? + + public init( + cluster: RedshiftClientTypes.Cluster? = nil + ) + { + self.cluster = cluster + } +} + +struct FailoverPrimaryComputeOutputBody: Swift.Equatable { + let cluster: RedshiftClientTypes.Cluster? +} + +extension FailoverPrimaryComputeOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case cluster = "Cluster" + } + + public init(from decoder: Swift.Decoder) throws { + let topLevelContainer = try decoder.container(keyedBy: ClientRuntime.Key.self) + let containerValues = try topLevelContainer.nestedContainer(keyedBy: CodingKeys.self, forKey: ClientRuntime.Key("FailoverPrimaryComputeResult")) + let clusterDecoded = try containerValues.decodeIfPresent(RedshiftClientTypes.Cluster.self, forKey: .cluster) + cluster = clusterDecoded + } +} + +enum FailoverPrimaryComputeOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restXMLError = try await AWSClientRuntime.RestXMLError(httpResponse: httpResponse) + switch restXMLError.errorCode { + case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "InvalidClusterState": return try await InvalidClusterStateFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnauthorizedOperation": return try await UnauthorizedOperation(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) + } + } +} + extension GetClusterCredentialsInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -22260,6 +22740,105 @@ enum GetReservedNodeExchangeOfferingsOutputError: ClientRuntime.HttpResponseErro } } +extension GetResourcePolicyInput: Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let resourceArn = resourceArn { + try container.encode(resourceArn, forKey: ClientRuntime.Key("ResourceArn")) + } + try container.encode("GetResourcePolicy", forKey:ClientRuntime.Key("Action")) + try container.encode("2012-12-01", forKey:ClientRuntime.Key("Version")) + } +} + +extension GetResourcePolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct GetResourcePolicyInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the resource of which its resource policy is fetched. + /// This member is required. + public var resourceArn: Swift.String? + + public init( + resourceArn: Swift.String? = nil + ) + { + self.resourceArn = resourceArn + } +} + +struct GetResourcePolicyInputBody: Swift.Equatable { + let resourceArn: Swift.String? +} + +extension GetResourcePolicyInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case resourceArn = "ResourceArn" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let resourceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceArn) + resourceArn = resourceArnDecoded + } +} + +extension GetResourcePolicyOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: GetResourcePolicyOutputBody = try responseDecoder.decode(responseBody: data) + self.resourcePolicy = output.resourcePolicy + } else { + self.resourcePolicy = nil + } + } +} + +public struct GetResourcePolicyOutput: Swift.Equatable { + /// The content of the resource policy. + public var resourcePolicy: RedshiftClientTypes.ResourcePolicy? + + public init( + resourcePolicy: RedshiftClientTypes.ResourcePolicy? = nil + ) + { + self.resourcePolicy = resourcePolicy + } +} + +struct GetResourcePolicyOutputBody: Swift.Equatable { + let resourcePolicy: RedshiftClientTypes.ResourcePolicy? +} + +extension GetResourcePolicyOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case resourcePolicy = "ResourcePolicy" + } + + public init(from decoder: Swift.Decoder) throws { + let topLevelContainer = try decoder.container(keyedBy: ClientRuntime.Key.self) + let containerValues = try topLevelContainer.nestedContainer(keyedBy: CodingKeys.self, forKey: ClientRuntime.Key("GetResourcePolicyResult")) + let resourcePolicyDecoded = try containerValues.decodeIfPresent(RedshiftClientTypes.ResourcePolicy.self, forKey: .resourcePolicy) + resourcePolicy = resourcePolicyDecoded + } +} + +enum GetResourcePolicyOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restXMLError = try await AWSClientRuntime.RestXMLError(httpResponse: httpResponse) + switch restXMLError.errorCode { + case "InvalidPolicyFault": return try await InvalidPolicyFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "ResourceNotFoundFault": return try await ResourceNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) + } + } +} + extension RedshiftClientTypes.HsmClientCertificate: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case hsmClientCertificateIdentifier = "HsmClientCertificateIdentifier" @@ -22956,6 +23535,117 @@ extension InProgressTableRestoreQuotaExceededFaultBody: Swift.Decodable { } } +extension RedshiftClientTypes.InboundIntegration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case createTime = "CreateTime" + case errors = "Errors" + case integrationArn = "IntegrationArn" + case sourceArn = "SourceArn" + case status = "Status" + case targetArn = "TargetArn" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let createTime = createTime { + try container.encodeTimestamp(createTime, format: .dateTime, forKey: ClientRuntime.Key("CreateTime")) + } + if let errors = errors { + if !errors.isEmpty { + var errorsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Errors")) + for (index0, integrationerror0) in errors.enumerated() { + try errorsContainer.encode(integrationerror0, forKey: ClientRuntime.Key("IntegrationError.\(index0.advanced(by: 1))")) + } + } + else { + var errorsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Errors")) + try errorsContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let integrationArn = integrationArn { + try container.encode(integrationArn, forKey: ClientRuntime.Key("IntegrationArn")) + } + if let sourceArn = sourceArn { + try container.encode(sourceArn, forKey: ClientRuntime.Key("SourceArn")) + } + if let status = status { + try container.encode(status, forKey: ClientRuntime.Key("Status")) + } + if let targetArn = targetArn { + try container.encode(targetArn, forKey: ClientRuntime.Key("TargetArn")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let integrationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .integrationArn) + integrationArn = integrationArnDecoded + let sourceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceArn) + sourceArn = sourceArnDecoded + let targetArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .targetArn) + targetArn = targetArnDecoded + let statusDecoded = try containerValues.decodeIfPresent(RedshiftClientTypes.ZeroETLIntegrationStatus.self, forKey: .status) + status = statusDecoded + if containerValues.contains(.errors) { + struct KeyVal0{struct IntegrationError{}} + let errorsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .errors) + if let errorsWrappedContainer = errorsWrappedContainer { + let errorsContainer = try errorsWrappedContainer.decodeIfPresent([RedshiftClientTypes.IntegrationError].self, forKey: .member) + var errorsBuffer:[RedshiftClientTypes.IntegrationError]? = nil + if let errorsContainer = errorsContainer { + errorsBuffer = [RedshiftClientTypes.IntegrationError]() + for structureContainer0 in errorsContainer { + errorsBuffer?.append(structureContainer0) + } + } + errors = errorsBuffer + } else { + errors = [] + } + } else { + errors = nil + } + let createTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .createTime) + createTime = createTimeDecoded + } +} + +extension RedshiftClientTypes { + /// The content of an inbound integration. + public struct InboundIntegration: Swift.Equatable { + /// The creation time of an inbound integration. + public var createTime: ClientRuntime.Date? + /// The outstanding errors of an inbound integration. Each item is an "IntegrationError". This is null if there is no error. + public var errors: [RedshiftClientTypes.IntegrationError]? + /// The Amazon Resource Name (ARN) of an inbound integration. + public var integrationArn: Swift.String? + /// The Amazon Resource Name (ARN) of the source of an inbound integration. + public var sourceArn: Swift.String? + /// The status of an inbound integration. + public var status: RedshiftClientTypes.ZeroETLIntegrationStatus? + /// The Amazon Resource Name (ARN) of the target of an inbound integration. + public var targetArn: Swift.String? + + public init( + createTime: ClientRuntime.Date? = nil, + errors: [RedshiftClientTypes.IntegrationError]? = nil, + integrationArn: Swift.String? = nil, + sourceArn: Swift.String? = nil, + status: RedshiftClientTypes.ZeroETLIntegrationStatus? = nil, + targetArn: Swift.String? = nil + ) + { + self.createTime = createTime + self.errors = errors + self.integrationArn = integrationArn + self.sourceArn = sourceArn + self.status = status + self.targetArn = targetArn + } + } + +} + extension IncompatibleOrderableOptions { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { @@ -23118,6 +23808,106 @@ extension InsufficientS3BucketPolicyFaultBody: Swift.Decodable { } } +extension RedshiftClientTypes.IntegrationError: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case errorCode = "ErrorCode" + case errorMessage = "ErrorMessage" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let errorCode = errorCode { + try container.encode(errorCode, forKey: ClientRuntime.Key("ErrorCode")) + } + if let errorMessage = errorMessage { + try container.encode(errorMessage, forKey: ClientRuntime.Key("ErrorMessage")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let errorCodeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorCode) + errorCode = errorCodeDecoded + let errorMessageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorMessage) + errorMessage = errorMessageDecoded + } +} + +extension RedshiftClientTypes { + /// The error of an inbound integration. + public struct IntegrationError: Swift.Equatable { + /// The error code of an inbound integration error. + /// This member is required. + public var errorCode: Swift.String? + /// The error message of an inbound integration error. + public var errorMessage: Swift.String? + + public init( + errorCode: Swift.String? = nil, + errorMessage: Swift.String? = nil + ) + { + self.errorCode = errorCode + self.errorMessage = errorMessage + } + } + +} + +extension IntegrationNotFoundFault { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { + let output: AWSClientRuntime.ErrorResponseContainer = try responseDecoder.decode(responseBody: data) + self.properties.message = output.error.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// The integration can't be found. +public struct IntegrationNotFoundFault: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "IntegrationNotFoundFault" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct IntegrationNotFoundFaultBody: Swift.Equatable { + let message: Swift.String? +} + +extension IntegrationNotFoundFaultBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + extension InvalidAuthenticationProfileRequestFault { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { @@ -23982,6 +24772,60 @@ extension InvalidNamespaceFaultBody: Swift.Decodable { } } +extension InvalidPolicyFault { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { + let output: AWSClientRuntime.ErrorResponseContainer = try responseDecoder.decode(responseBody: data) + self.properties.message = output.error.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// The resource policy isn't valid. +public struct InvalidPolicyFault: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "InvalidPolicyFault" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct InvalidPolicyFaultBody: Swift.Equatable { + let message: Swift.String? +} + +extension InvalidPolicyFaultBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + extension InvalidReservedNodeStateFault { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { @@ -24738,6 +25582,60 @@ extension InvalidVPCNetworkStateFaultBody: Swift.Decodable { } } +extension Ipv6CidrBlockNotFoundFault { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { + let output: AWSClientRuntime.ErrorResponseContainer = try responseDecoder.decode(responseBody: data) + self.properties.message = output.error.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// There are no subnets in your VPC with associated IPv6 CIDR blocks. To use dual-stack mode, associate an IPv6 CIDR block with each subnet in your VPC. +public struct Ipv6CidrBlockNotFoundFault: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "Ipv6CidrBlockNotFoundFault" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct Ipv6CidrBlockNotFoundFaultBody: Swift.Equatable { + let message: Swift.String? +} + +extension Ipv6CidrBlockNotFoundFaultBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + extension LimitExceededFault { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { @@ -25274,6 +26172,7 @@ enum ModifyClusterDbRevisionOutputError: ClientRuntime.HttpResponseErrorBinding case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "ClusterOnLatestRevision": return try await ClusterOnLatestRevisionFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidClusterState": return try await InvalidClusterStateFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -25465,7 +26364,7 @@ enum ModifyClusterIamRolesOutputError: ClientRuntime.HttpResponseErrorBinding { extension ModifyClusterInput: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "ModifyClusterInput(allowVersionUpgrade: \(Swift.String(describing: allowVersionUpgrade)), automatedSnapshotRetentionPeriod: \(Swift.String(describing: automatedSnapshotRetentionPeriod)), availabilityZone: \(Swift.String(describing: availabilityZone)), availabilityZoneRelocation: \(Swift.String(describing: availabilityZoneRelocation)), clusterIdentifier: \(Swift.String(describing: clusterIdentifier)), clusterParameterGroupName: \(Swift.String(describing: clusterParameterGroupName)), clusterSecurityGroups: \(Swift.String(describing: clusterSecurityGroups)), clusterType: \(Swift.String(describing: clusterType)), clusterVersion: \(Swift.String(describing: clusterVersion)), elasticIp: \(Swift.String(describing: elasticIp)), encrypted: \(Swift.String(describing: encrypted)), enhancedVpcRouting: \(Swift.String(describing: enhancedVpcRouting)), hsmClientCertificateIdentifier: \(Swift.String(describing: hsmClientCertificateIdentifier)), hsmConfigurationIdentifier: \(Swift.String(describing: hsmConfigurationIdentifier)), kmsKeyId: \(Swift.String(describing: kmsKeyId)), maintenanceTrackName: \(Swift.String(describing: maintenanceTrackName)), manageMasterPassword: \(Swift.String(describing: manageMasterPassword)), manualSnapshotRetentionPeriod: \(Swift.String(describing: manualSnapshotRetentionPeriod)), masterPasswordSecretKmsKeyId: \(Swift.String(describing: masterPasswordSecretKmsKeyId)), newClusterIdentifier: \(Swift.String(describing: newClusterIdentifier)), nodeType: \(Swift.String(describing: nodeType)), numberOfNodes: \(Swift.String(describing: numberOfNodes)), port: \(Swift.String(describing: port)), preferredMaintenanceWindow: \(Swift.String(describing: preferredMaintenanceWindow)), publiclyAccessible: \(Swift.String(describing: publiclyAccessible)), vpcSecurityGroupIds: \(Swift.String(describing: vpcSecurityGroupIds)), masterUserPassword: \"CONTENT_REDACTED\")"} + "ModifyClusterInput(allowVersionUpgrade: \(Swift.String(describing: allowVersionUpgrade)), automatedSnapshotRetentionPeriod: \(Swift.String(describing: automatedSnapshotRetentionPeriod)), availabilityZone: \(Swift.String(describing: availabilityZone)), availabilityZoneRelocation: \(Swift.String(describing: availabilityZoneRelocation)), clusterIdentifier: \(Swift.String(describing: clusterIdentifier)), clusterParameterGroupName: \(Swift.String(describing: clusterParameterGroupName)), clusterSecurityGroups: \(Swift.String(describing: clusterSecurityGroups)), clusterType: \(Swift.String(describing: clusterType)), clusterVersion: \(Swift.String(describing: clusterVersion)), elasticIp: \(Swift.String(describing: elasticIp)), encrypted: \(Swift.String(describing: encrypted)), enhancedVpcRouting: \(Swift.String(describing: enhancedVpcRouting)), hsmClientCertificateIdentifier: \(Swift.String(describing: hsmClientCertificateIdentifier)), hsmConfigurationIdentifier: \(Swift.String(describing: hsmConfigurationIdentifier)), ipAddressType: \(Swift.String(describing: ipAddressType)), kmsKeyId: \(Swift.String(describing: kmsKeyId)), maintenanceTrackName: \(Swift.String(describing: maintenanceTrackName)), manageMasterPassword: \(Swift.String(describing: manageMasterPassword)), manualSnapshotRetentionPeriod: \(Swift.String(describing: manualSnapshotRetentionPeriod)), masterPasswordSecretKmsKeyId: \(Swift.String(describing: masterPasswordSecretKmsKeyId)), multiAZ: \(Swift.String(describing: multiAZ)), newClusterIdentifier: \(Swift.String(describing: newClusterIdentifier)), nodeType: \(Swift.String(describing: nodeType)), numberOfNodes: \(Swift.String(describing: numberOfNodes)), port: \(Swift.String(describing: port)), preferredMaintenanceWindow: \(Swift.String(describing: preferredMaintenanceWindow)), publiclyAccessible: \(Swift.String(describing: publiclyAccessible)), vpcSecurityGroupIds: \(Swift.String(describing: vpcSecurityGroupIds)), masterUserPassword: \"CONTENT_REDACTED\")"} } extension ModifyClusterInput: Swift.Encodable { @@ -25522,6 +26421,9 @@ extension ModifyClusterInput: Swift.Encodable { if let hsmConfigurationIdentifier = hsmConfigurationIdentifier { try container.encode(hsmConfigurationIdentifier, forKey: ClientRuntime.Key("HsmConfigurationIdentifier")) } + if let ipAddressType = ipAddressType { + try container.encode(ipAddressType, forKey: ClientRuntime.Key("IpAddressType")) + } if let kmsKeyId = kmsKeyId { try container.encode(kmsKeyId, forKey: ClientRuntime.Key("KmsKeyId")) } @@ -25540,6 +26442,9 @@ extension ModifyClusterInput: Swift.Encodable { if let masterUserPassword = masterUserPassword { try container.encode(masterUserPassword, forKey: ClientRuntime.Key("MasterUserPassword")) } + if let multiAZ = multiAZ { + try container.encode(multiAZ, forKey: ClientRuntime.Key("MultiAZ")) + } if let newClusterIdentifier = newClusterIdentifier { try container.encode(newClusterIdentifier, forKey: ClientRuntime.Key("NewClusterIdentifier")) } @@ -25618,6 +26523,8 @@ public struct ModifyClusterInput: Swift.Equatable { public var hsmClientCertificateIdentifier: Swift.String? /// Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM. public var hsmConfigurationIdentifier: Swift.String? + /// The IP address types that the cluster supports. Possible values are ipv4 and dualstack. + public var ipAddressType: Swift.String? /// The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster. public var kmsKeyId: Swift.String? /// The name for the maintenance track that you want to assign for the cluster. This name change is asynchronous. The new track name stays in the PendingModifiedValues for the cluster until the next maintenance window. When the maintenance track changes, the cluster is switched to the latest cluster release available for the maintenance track. At this point, the maintenance track name is applied. @@ -25640,6 +26547,8 @@ public struct ModifyClusterInput: Swift.Equatable { /// /// * Can be any printable ASCII character (ASCII code 33-126) except ' (single quote), " (double quote), \, /, or @. public var masterUserPassword: Swift.String? + /// If true and the cluster is currently only deployed in a single Availability Zone, the cluster will be modified to be deployed in two Availability Zones. + public var multiAZ: Swift.Bool? /// The new identifier for the cluster. Constraints: /// /// * Must contain from 1 to 63 alphanumeric characters or hyphens. @@ -25683,12 +26592,14 @@ public struct ModifyClusterInput: Swift.Equatable { enhancedVpcRouting: Swift.Bool? = nil, hsmClientCertificateIdentifier: Swift.String? = nil, hsmConfigurationIdentifier: Swift.String? = nil, + ipAddressType: Swift.String? = nil, kmsKeyId: Swift.String? = nil, maintenanceTrackName: Swift.String? = nil, manageMasterPassword: Swift.Bool? = nil, manualSnapshotRetentionPeriod: Swift.Int? = nil, masterPasswordSecretKmsKeyId: Swift.String? = nil, masterUserPassword: Swift.String? = nil, + multiAZ: Swift.Bool? = nil, newClusterIdentifier: Swift.String? = nil, nodeType: Swift.String? = nil, numberOfNodes: Swift.Int? = nil, @@ -25712,12 +26623,14 @@ public struct ModifyClusterInput: Swift.Equatable { self.enhancedVpcRouting = enhancedVpcRouting self.hsmClientCertificateIdentifier = hsmClientCertificateIdentifier self.hsmConfigurationIdentifier = hsmConfigurationIdentifier + self.ipAddressType = ipAddressType self.kmsKeyId = kmsKeyId self.maintenanceTrackName = maintenanceTrackName self.manageMasterPassword = manageMasterPassword self.manualSnapshotRetentionPeriod = manualSnapshotRetentionPeriod self.masterPasswordSecretKmsKeyId = masterPasswordSecretKmsKeyId self.masterUserPassword = masterUserPassword + self.multiAZ = multiAZ self.newClusterIdentifier = newClusterIdentifier self.nodeType = nodeType self.numberOfNodes = numberOfNodes @@ -25756,6 +26669,8 @@ struct ModifyClusterInputBody: Swift.Equatable { let port: Swift.Int? let manageMasterPassword: Swift.Bool? let masterPasswordSecretKmsKeyId: Swift.String? + let ipAddressType: Swift.String? + let multiAZ: Swift.Bool? } extension ModifyClusterInputBody: Swift.Decodable { @@ -25774,12 +26689,14 @@ extension ModifyClusterInputBody: Swift.Decodable { case enhancedVpcRouting = "EnhancedVpcRouting" case hsmClientCertificateIdentifier = "HsmClientCertificateIdentifier" case hsmConfigurationIdentifier = "HsmConfigurationIdentifier" + case ipAddressType = "IpAddressType" case kmsKeyId = "KmsKeyId" case maintenanceTrackName = "MaintenanceTrackName" case manageMasterPassword = "ManageMasterPassword" case manualSnapshotRetentionPeriod = "ManualSnapshotRetentionPeriod" case masterPasswordSecretKmsKeyId = "MasterPasswordSecretKmsKeyId" case masterUserPassword = "MasterUserPassword" + case multiAZ = "MultiAZ" case newClusterIdentifier = "NewClusterIdentifier" case nodeType = "NodeType" case numberOfNodes = "NumberOfNodes" @@ -25879,6 +26796,10 @@ extension ModifyClusterInputBody: Swift.Decodable { manageMasterPassword = manageMasterPasswordDecoded let masterPasswordSecretKmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .masterPasswordSecretKmsKeyId) masterPasswordSecretKmsKeyId = masterPasswordSecretKmsKeyIdDecoded + let ipAddressTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ipAddressType) + ipAddressType = ipAddressTypeDecoded + let multiAZDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .multiAZ) + multiAZ = multiAZDecoded } } @@ -26094,6 +27015,7 @@ enum ModifyClusterOutputError: ClientRuntime.HttpResponseErrorBinding { case "InvalidClusterTrack": return try await InvalidClusterTrackFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidElasticIpFault": return try await InvalidElasticIpFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidRetentionPeriodFault": return try await InvalidRetentionPeriodFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "Ipv6CidrBlockNotFoundFault": return try await Ipv6CidrBlockNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "LimitExceededFault": return try await LimitExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "NumberOfNodesPerClusterLimitExceeded": return try await NumberOfNodesPerClusterLimitExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "NumberOfNodesQuotaExceeded": return try await NumberOfNodesQuotaExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) @@ -27505,11 +28427,13 @@ enum ModifyScheduledActionOutputError: ClientRuntime.HttpResponseErrorBinding { static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { let restXMLError = try await AWSClientRuntime.RestXMLError(httpResponse: httpResponse) switch restXMLError.errorCode { + case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidScheduledAction": return try await InvalidScheduledActionFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidSchedule": return try await InvalidScheduleFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "ScheduledActionNotFound": return try await ScheduledActionNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "ScheduledActionTypeUnsupported": return try await ScheduledActionTypeUnsupportedFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "UnauthorizedOperation": return try await UnauthorizedOperation(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -28124,6 +29048,7 @@ enum ModifyUsageLimitOutputError: ClientRuntime.HttpResponseErrorBinding { extension RedshiftClientTypes.NetworkInterface: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case availabilityZone = "AvailabilityZone" + case ipv6Address = "Ipv6Address" case networkInterfaceId = "NetworkInterfaceId" case privateIpAddress = "PrivateIpAddress" case subnetId = "SubnetId" @@ -28134,6 +29059,9 @@ extension RedshiftClientTypes.NetworkInterface: Swift.Codable { if let availabilityZone = availabilityZone { try container.encode(availabilityZone, forKey: ClientRuntime.Key("AvailabilityZone")) } + if let ipv6Address = ipv6Address { + try container.encode(ipv6Address, forKey: ClientRuntime.Key("Ipv6Address")) + } if let networkInterfaceId = networkInterfaceId { try container.encode(networkInterfaceId, forKey: ClientRuntime.Key("NetworkInterfaceId")) } @@ -28155,6 +29083,8 @@ extension RedshiftClientTypes.NetworkInterface: Swift.Codable { privateIpAddress = privateIpAddressDecoded let availabilityZoneDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZone) availabilityZone = availabilityZoneDecoded + let ipv6AddressDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ipv6Address) + ipv6Address = ipv6AddressDecoded } } @@ -28163,6 +29093,8 @@ extension RedshiftClientTypes { public struct NetworkInterface: Swift.Equatable { /// The Availability Zone. public var availabilityZone: Swift.String? + /// The IPv6 address of the network interface within the subnet. + public var ipv6Address: Swift.String? /// The network interface identifier. public var networkInterfaceId: Swift.String? /// The IPv4 address of the network interface within the subnet. @@ -28172,12 +29104,14 @@ extension RedshiftClientTypes { public init( availabilityZone: Swift.String? = nil, + ipv6Address: Swift.String? = nil, networkInterfaceId: Swift.String? = nil, privateIpAddress: Swift.String? = nil, subnetId: Swift.String? = nil ) { self.availabilityZone = availabilityZone + self.ipv6Address = ipv6Address self.networkInterfaceId = networkInterfaceId self.privateIpAddress = privateIpAddress self.subnetId = subnetId @@ -29070,6 +30004,7 @@ enum PauseClusterOutputError: ClientRuntime.HttpResponseErrorBinding { switch restXMLError.errorCode { case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidClusterState": return try await InvalidClusterStateFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -29327,6 +30262,118 @@ enum PurchaseReservedNodeOfferingOutputError: ClientRuntime.HttpResponseErrorBin } } +extension PutResourcePolicyInput: Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let policy = policy { + try container.encode(policy, forKey: ClientRuntime.Key("Policy")) + } + if let resourceArn = resourceArn { + try container.encode(resourceArn, forKey: ClientRuntime.Key("ResourceArn")) + } + try container.encode("PutResourcePolicy", forKey:ClientRuntime.Key("Action")) + try container.encode("2012-12-01", forKey:ClientRuntime.Key("Version")) + } +} + +extension PutResourcePolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct PutResourcePolicyInput: Swift.Equatable { + /// The content of the resource policy being updated. + /// This member is required. + public var policy: Swift.String? + /// The Amazon Resource Name (ARN) of the resource of which its resource policy is updated. + /// This member is required. + public var resourceArn: Swift.String? + + public init( + policy: Swift.String? = nil, + resourceArn: Swift.String? = nil + ) + { + self.policy = policy + self.resourceArn = resourceArn + } +} + +struct PutResourcePolicyInputBody: Swift.Equatable { + let resourceArn: Swift.String? + let policy: Swift.String? +} + +extension PutResourcePolicyInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case policy = "Policy" + case resourceArn = "ResourceArn" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let resourceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceArn) + resourceArn = resourceArnDecoded + let policyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policy) + policy = policyDecoded + } +} + +extension PutResourcePolicyOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: PutResourcePolicyOutputBody = try responseDecoder.decode(responseBody: data) + self.resourcePolicy = output.resourcePolicy + } else { + self.resourcePolicy = nil + } + } +} + +public struct PutResourcePolicyOutput: Swift.Equatable { + /// The content of the updated resource policy. + public var resourcePolicy: RedshiftClientTypes.ResourcePolicy? + + public init( + resourcePolicy: RedshiftClientTypes.ResourcePolicy? = nil + ) + { + self.resourcePolicy = resourcePolicy + } +} + +struct PutResourcePolicyOutputBody: Swift.Equatable { + let resourcePolicy: RedshiftClientTypes.ResourcePolicy? +} + +extension PutResourcePolicyOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case resourcePolicy = "ResourcePolicy" + } + + public init(from decoder: Swift.Decoder) throws { + let topLevelContainer = try decoder.container(keyedBy: ClientRuntime.Key.self) + let containerValues = try topLevelContainer.nestedContainer(keyedBy: CodingKeys.self, forKey: ClientRuntime.Key("PutResourcePolicyResult")) + let resourcePolicyDecoded = try containerValues.decodeIfPresent(RedshiftClientTypes.ResourcePolicy.self, forKey: .resourcePolicy) + resourcePolicy = resourcePolicyDecoded + } +} + +enum PutResourcePolicyOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restXMLError = try await AWSClientRuntime.RestXMLError(httpResponse: httpResponse) + switch restXMLError.errorCode { + case "ConflictPolicyUpdateFault": return try await ConflictPolicyUpdateFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "InvalidPolicyFault": return try await InvalidPolicyFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "ResourceNotFoundFault": return try await ResourceNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) + } + } +} + extension RebootClusterInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -31144,6 +32191,51 @@ extension ResourceNotFoundFaultBody: Swift.Decodable { } } +extension RedshiftClientTypes.ResourcePolicy: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case policy = "Policy" + case resourceArn = "ResourceArn" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let policy = policy { + try container.encode(policy, forKey: ClientRuntime.Key("Policy")) + } + if let resourceArn = resourceArn { + try container.encode(resourceArn, forKey: ClientRuntime.Key("ResourceArn")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let resourceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceArn) + resourceArn = resourceArnDecoded + let policyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policy) + policy = policyDecoded + } +} + +extension RedshiftClientTypes { + /// The policy that is attached to a resource. + public struct ResourcePolicy: Swift.Equatable { + /// The content of a resource policy. + public var policy: Swift.String? + /// The resources that a policy is attached to. + public var resourceArn: Swift.String? + + public init( + policy: Swift.String? = nil, + resourceArn: Swift.String? = nil + ) + { + self.policy = policy + self.resourceArn = resourceArn + } + } + +} + extension RestoreFromClusterSnapshotInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -31216,6 +32308,9 @@ extension RestoreFromClusterSnapshotInput: Swift.Encodable { try iamRolesContainer.encode("", forKey: ClientRuntime.Key("")) } } + if let ipAddressType = ipAddressType { + try container.encode(ipAddressType, forKey: ClientRuntime.Key("IpAddressType")) + } if let kmsKeyId = kmsKeyId { try container.encode(kmsKeyId, forKey: ClientRuntime.Key("KmsKeyId")) } @@ -31231,6 +32326,9 @@ extension RestoreFromClusterSnapshotInput: Swift.Encodable { if let masterPasswordSecretKmsKeyId = masterPasswordSecretKmsKeyId { try container.encode(masterPasswordSecretKmsKeyId, forKey: ClientRuntime.Key("MasterPasswordSecretKmsKeyId")) } + if let multiAZ = multiAZ { + try container.encode(multiAZ, forKey: ClientRuntime.Key("MultiAZ")) + } if let nodeType = nodeType { try container.encode(nodeType, forKey: ClientRuntime.Key("NodeType")) } @@ -31343,6 +32441,8 @@ public struct RestoreFromClusterSnapshotInput: Swift.Equatable { public var hsmConfigurationIdentifier: Swift.String? /// A list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services. You must supply the IAM roles in their Amazon Resource Name (ARN) format. The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to [Quotas and limits](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html) in the Amazon Redshift Cluster Management Guide. public var iamRoles: [Swift.String]? + /// The IP address type for the cluster. Possible values are ipv4 and dualstack. + public var ipAddressType: Swift.String? /// The Key Management Service (KMS) key ID of the encryption key that encrypts data in the cluster restored from a shared snapshot. You can also provide the key ID when you restore from an unencrypted snapshot to an encrypted cluster in the same account. Additionally, you can specify a new KMS key ID when you restore from an encrypted snapshot in the same account in order to change it. In that case, the restored cluster is encrypted with the new KMS key ID. public var kmsKeyId: Swift.String? /// The name of the maintenance track for the restored cluster. When you take a snapshot, the snapshot inherits the MaintenanceTrack value from the cluster. The snapshot might be on a different track than the cluster that was the source for the snapshot. For example, suppose that you take a snapshot of a cluster that is on the current track and then change the cluster to be on the trailing track. In this case, the snapshot and the source cluster are on different tracks. @@ -31353,6 +32453,8 @@ public struct RestoreFromClusterSnapshotInput: Swift.Equatable { public var manualSnapshotRetentionPeriod: Swift.Int? /// The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if ManageMasterPassword is true. public var masterPasswordSecretKmsKeyId: Swift.String? + /// If true, the snapshot will be restored to a cluster deployed in two Availability Zones. + public var multiAZ: Swift.Bool? /// The node type that the restored cluster will be provisioned with. Default: The node type of the cluster from which the snapshot was taken. You can modify this if you are using any DS node type. In that case, you can choose to restore into another DS node type of the same size. For example, you can restore ds1.8xlarge into ds2.8xlarge, or ds1.xlarge into ds2.xlarge. If you have a DC instance type, you must restore into that same instance type and size. In other words, you can only restore a dc1.large instance type into another dc1.large instance type or dc2.large instance type. You can't restore dc1.8xlarge to dc2.8xlarge. First restore to a dc1.8xlarge cluster, then resize to a dc2.8large cluster. For more information about node types, see [ About Clusters and Nodes](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-about-clusters-and-nodes) in the Amazon Redshift Cluster Management Guide. public var nodeType: Swift.String? /// The number of nodes specified when provisioning the restored cluster. @@ -31398,11 +32500,13 @@ public struct RestoreFromClusterSnapshotInput: Swift.Equatable { hsmClientCertificateIdentifier: Swift.String? = nil, hsmConfigurationIdentifier: Swift.String? = nil, iamRoles: [Swift.String]? = nil, + ipAddressType: Swift.String? = nil, kmsKeyId: Swift.String? = nil, maintenanceTrackName: Swift.String? = nil, manageMasterPassword: Swift.Bool? = nil, manualSnapshotRetentionPeriod: Swift.Int? = nil, masterPasswordSecretKmsKeyId: Swift.String? = nil, + multiAZ: Swift.Bool? = nil, nodeType: Swift.String? = nil, numberOfNodes: Swift.Int? = nil, ownerAccount: Swift.String? = nil, @@ -31435,11 +32539,13 @@ public struct RestoreFromClusterSnapshotInput: Swift.Equatable { self.hsmClientCertificateIdentifier = hsmClientCertificateIdentifier self.hsmConfigurationIdentifier = hsmConfigurationIdentifier self.iamRoles = iamRoles + self.ipAddressType = ipAddressType self.kmsKeyId = kmsKeyId self.maintenanceTrackName = maintenanceTrackName self.manageMasterPassword = manageMasterPassword self.manualSnapshotRetentionPeriod = manualSnapshotRetentionPeriod self.masterPasswordSecretKmsKeyId = masterPasswordSecretKmsKeyId + self.multiAZ = multiAZ self.nodeType = nodeType self.numberOfNodes = numberOfNodes self.ownerAccount = ownerAccount @@ -31492,6 +32598,8 @@ struct RestoreFromClusterSnapshotInputBody: Swift.Equatable { let encrypted: Swift.Bool? let manageMasterPassword: Swift.Bool? let masterPasswordSecretKmsKeyId: Swift.String? + let ipAddressType: Swift.String? + let multiAZ: Swift.Bool? } extension RestoreFromClusterSnapshotInputBody: Swift.Decodable { @@ -31513,11 +32621,13 @@ extension RestoreFromClusterSnapshotInputBody: Swift.Decodable { case hsmClientCertificateIdentifier = "HsmClientCertificateIdentifier" case hsmConfigurationIdentifier = "HsmConfigurationIdentifier" case iamRoles = "IamRoles" + case ipAddressType = "IpAddressType" case kmsKeyId = "KmsKeyId" case maintenanceTrackName = "MaintenanceTrackName" case manageMasterPassword = "ManageMasterPassword" case manualSnapshotRetentionPeriod = "ManualSnapshotRetentionPeriod" case masterPasswordSecretKmsKeyId = "MasterPasswordSecretKmsKeyId" + case multiAZ = "MultiAZ" case nodeType = "NodeType" case numberOfNodes = "NumberOfNodes" case ownerAccount = "OwnerAccount" @@ -31656,6 +32766,10 @@ extension RestoreFromClusterSnapshotInputBody: Swift.Decodable { manageMasterPassword = manageMasterPasswordDecoded let masterPasswordSecretKmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .masterPasswordSecretKmsKeyId) masterPasswordSecretKmsKeyId = masterPasswordSecretKmsKeyIdDecoded + let ipAddressTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ipAddressType) + ipAddressType = ipAddressTypeDecoded + let multiAZDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .multiAZ) + multiAZ = multiAZDecoded } } @@ -31725,6 +32839,7 @@ enum RestoreFromClusterSnapshotOutputError: ClientRuntime.HttpResponseErrorBindi case "InvalidSubnet": return try await InvalidSubnet(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidTagFault": return try await InvalidTagFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidVPCNetworkStateFault": return try await InvalidVPCNetworkStateFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "Ipv6CidrBlockNotFoundFault": return try await Ipv6CidrBlockNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "LimitExceededFault": return try await LimitExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "NumberOfNodesPerClusterLimitExceeded": return try await NumberOfNodesPerClusterLimitExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "NumberOfNodesQuotaExceeded": return try await NumberOfNodesQuotaExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) @@ -32153,6 +33268,7 @@ enum ResumeClusterOutputError: ClientRuntime.HttpResponseErrorBinding { case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InsufficientClusterCapacity": return try await InsufficientClusterCapacityFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidClusterState": return try await InvalidClusterStateFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -32834,6 +33950,7 @@ enum RotateEncryptionKeyOutputError: ClientRuntime.HttpResponseErrorBinding { case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "DependentServiceRequestThrottlingFault": return try await DependentServiceRequestThrottlingFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidClusterState": return try await InvalidClusterStateFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -33674,6 +34791,77 @@ extension RedshiftClientTypes { } } +extension RedshiftClientTypes.SecondaryClusterInfo: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case availabilityZone = "AvailabilityZone" + case clusterNodes = "ClusterNodes" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let availabilityZone = availabilityZone { + try container.encode(availabilityZone, forKey: ClientRuntime.Key("AvailabilityZone")) + } + if let clusterNodes = clusterNodes { + if !clusterNodes.isEmpty { + var clusterNodesContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("ClusterNodes")) + for (index0, clusternode0) in clusterNodes.enumerated() { + try clusterNodesContainer.encode(clusternode0, forKey: ClientRuntime.Key("member.\(index0.advanced(by: 1))")) + } + } + else { + var clusterNodesContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("ClusterNodes")) + try clusterNodesContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let availabilityZoneDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZone) + availabilityZone = availabilityZoneDecoded + if containerValues.contains(.clusterNodes) { + struct KeyVal0{struct member{}} + let clusterNodesWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .clusterNodes) + if let clusterNodesWrappedContainer = clusterNodesWrappedContainer { + let clusterNodesContainer = try clusterNodesWrappedContainer.decodeIfPresent([RedshiftClientTypes.ClusterNode].self, forKey: .member) + var clusterNodesBuffer:[RedshiftClientTypes.ClusterNode]? = nil + if let clusterNodesContainer = clusterNodesContainer { + clusterNodesBuffer = [RedshiftClientTypes.ClusterNode]() + for structureContainer0 in clusterNodesContainer { + clusterNodesBuffer?.append(structureContainer0) + } + } + clusterNodes = clusterNodesBuffer + } else { + clusterNodes = [] + } + } else { + clusterNodes = nil + } + } +} + +extension RedshiftClientTypes { + /// The AvailabilityZone and ClusterNodes information of the secondary compute unit. + public struct SecondaryClusterInfo: Swift.Equatable { + /// The name of the Availability Zone in which the secondary compute unit of the cluster is located. + public var availabilityZone: Swift.String? + /// The nodes in the secondary compute unit. + public var clusterNodes: [RedshiftClientTypes.ClusterNode]? + + public init( + availabilityZone: Swift.String? = nil, + clusterNodes: [RedshiftClientTypes.ClusterNode]? = nil + ) + { + self.availabilityZone = availabilityZone + self.clusterNodes = clusterNodes + } + } + +} + extension RedshiftClientTypes.Snapshot: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case accountsWithRestoreAccess = "AccountsWithRestoreAccess" @@ -36607,6 +37795,7 @@ enum UpdatePartnerStatusOutputError: ClientRuntime.HttpResponseErrorBinding { case "ClusterNotFound": return try await ClusterNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "PartnerNotFound": return try await PartnerNotFoundFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "UnauthorizedPartnerIntegration": return try await UnauthorizedPartnerIntegrationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "UnsupportedOperation": return try await UnsupportedOperationFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -37200,3 +38389,50 @@ extension RedshiftClientTypes { } } + +extension RedshiftClientTypes { + public enum ZeroETLIntegrationStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case active + case creating + case deleting + case failed + case modifying + case needsAttention + case syncing + case sdkUnknown(Swift.String) + + public static var allCases: [ZeroETLIntegrationStatus] { + return [ + .active, + .creating, + .deleting, + .failed, + .modifying, + .needsAttention, + .syncing, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .active: return "active" + case .creating: return "creating" + case .deleting: return "deleting" + case .failed: return "failed" + case .modifying: return "modifying" + case .needsAttention: return "needs_attention" + case .syncing: return "syncing" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = ZeroETLIntegrationStatus(rawValue: rawValue) ?? ZeroETLIntegrationStatus.sdkUnknown(rawValue) + } + } +} diff --git a/Sources/Services/AWSRedshiftServerless/Paginators.swift b/Sources/Services/AWSRedshiftServerless/Paginators.swift index 0f79619f2fc..007e70677d2 100644 --- a/Sources/Services/AWSRedshiftServerless/Paginators.swift +++ b/Sources/Services/AWSRedshiftServerless/Paginators.swift @@ -1,5 +1,36 @@ // Code generated by smithy-swift-codegen. DO NOT EDIT! +import ClientRuntime +extension RedshiftServerlessClient { + /// Paginate over `[ListCustomDomainAssociationsOutput]` results. + /// + /// When this operation is called, an `AsyncSequence` is created. AsyncSequences are lazy so no service + /// calls are made until the sequence is iterated over. This also means there is no guarantee that the request is valid + /// until then. If there are errors in your request, you will see the failures only after you start iterating. + /// - Parameters: + /// - input: A `[ListCustomDomainAssociationsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListCustomDomainAssociationsOutput` + public func listCustomDomainAssociationsPaginated(input: ListCustomDomainAssociationsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \ListCustomDomainAssociationsInput.nextToken, outputKey: \ListCustomDomainAssociationsOutput.nextToken, paginationFunction: self.listCustomDomainAssociations(input:)) + } +} +extension ListCustomDomainAssociationsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListCustomDomainAssociationsInput { + return ListCustomDomainAssociationsInput( + customDomainCertificateArn: self.customDomainCertificateArn, + customDomainName: self.customDomainName, + maxResults: self.maxResults, + nextToken: token + )} +} +extension PaginatorSequence where Input == ListCustomDomainAssociationsInput, Output == ListCustomDomainAssociationsOutput { + /// This paginator transforms the `AsyncSequence` returned by `listCustomDomainAssociationsPaginated` + /// to access the nested member `[RedshiftServerlessClientTypes.Association]` + /// - Returns: `[RedshiftServerlessClientTypes.Association]` + public func associations() async throws -> [RedshiftServerlessClientTypes.Association] { + return try await self.asyncCompactMap { item in item.associations } + } +} diff --git a/Sources/Services/AWSRedshiftServerless/RedshiftServerlessClient.swift b/Sources/Services/AWSRedshiftServerless/RedshiftServerlessClient.swift index 6459d696d3d..d62297bb836 100644 --- a/Sources/Services/AWSRedshiftServerless/RedshiftServerlessClient.swift +++ b/Sources/Services/AWSRedshiftServerless/RedshiftServerlessClient.swift @@ -117,6 +117,56 @@ extension RedshiftServerlessClient: RedshiftServerlessClientProtocol { return result } + /// Creates a custom domain association for Amazon Redshift Serverless. + /// + /// - Parameter CreateCustomDomainAssociationInput : [no documentation found] + /// + /// - Returns: `CreateCustomDomainAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `ConflictException` : The submitted action has conflicts. + /// - `InternalServerException` : The request processing has failed because of an unknown error, exception or failure. + /// - `ResourceNotFoundException` : The resource could not be found. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. + public func createCustomDomainAssociation(input: CreateCustomDomainAssociationInput) async throws -> CreateCustomDomainAssociationOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createCustomDomainAssociation") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "redshift-serverless") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "createCustomDomainAssociation") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "RedshiftServerless.CreateCustomDomainAssociation")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "CreateCustomDomainAssociationRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Creates an Amazon Redshift Serverless managed VPC endpoint. /// /// - Parameter CreateEndpointAccessInput : [no documentation found] @@ -364,6 +414,56 @@ extension RedshiftServerlessClient: RedshiftServerlessClientProtocol { return result } + /// Deletes a custom domain association for Amazon Redshift Serverless. + /// + /// - Parameter DeleteCustomDomainAssociationInput : [no documentation found] + /// + /// - Returns: `DeleteCustomDomainAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `ConflictException` : The submitted action has conflicts. + /// - `InternalServerException` : The request processing has failed because of an unknown error, exception or failure. + /// - `ResourceNotFoundException` : The resource could not be found. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. + public func deleteCustomDomainAssociation(input: DeleteCustomDomainAssociationInput) async throws -> DeleteCustomDomainAssociationOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "deleteCustomDomainAssociation") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "redshift-serverless") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deleteCustomDomainAssociation") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "RedshiftServerless.DeleteCustomDomainAssociation")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "DeleteCustomDomainAssociationRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Deletes an Amazon Redshift Serverless managed VPC endpoint. /// /// - Parameter DeleteEndpointAccessInput : [no documentation found] @@ -698,6 +798,56 @@ extension RedshiftServerlessClient: RedshiftServerlessClientProtocol { return result } + /// Gets information about a specific custom domain association. + /// + /// - Parameter GetCustomDomainAssociationInput : [no documentation found] + /// + /// - Returns: `GetCustomDomainAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `ConflictException` : The submitted action has conflicts. + /// - `InternalServerException` : The request processing has failed because of an unknown error, exception or failure. + /// - `ResourceNotFoundException` : The resource could not be found. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. + public func getCustomDomainAssociation(input: GetCustomDomainAssociationInput) async throws -> GetCustomDomainAssociationOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "getCustomDomainAssociation") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "redshift-serverless") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "getCustomDomainAssociation") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "RedshiftServerless.GetCustomDomainAssociation")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "GetCustomDomainAssociationRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Returns information, such as the name, about a VPC endpoint. /// /// - Parameter GetEndpointAccessInput : [no documentation found] @@ -1076,6 +1226,55 @@ extension RedshiftServerlessClient: RedshiftServerlessClientProtocol { return result } + /// Lists custom domain associations for Amazon Redshift Serverless. + /// + /// - Parameter ListCustomDomainAssociationsInput : [no documentation found] + /// + /// - Returns: `ListCustomDomainAssociationsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `InternalServerException` : The request processing has failed because of an unknown error, exception or failure. + /// - `InvalidPaginationException` : The provided pagination token is invalid. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. + public func listCustomDomainAssociations(input: ListCustomDomainAssociationsInput) async throws -> ListCustomDomainAssociationsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listCustomDomainAssociations") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "redshift-serverless") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listCustomDomainAssociations") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "RedshiftServerless.ListCustomDomainAssociations")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "ListCustomDomainAssociationsRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Returns an array of EndpointAccess objects and relevant information. /// /// - Parameter ListEndpointAccessInput : [no documentation found] @@ -1744,6 +1943,56 @@ extension RedshiftServerlessClient: RedshiftServerlessClientProtocol { return result } + /// Updates an Amazon Redshift Serverless certificate associated with a custom domain. + /// + /// - Parameter UpdateCustomDomainAssociationInput : [no documentation found] + /// + /// - Returns: `UpdateCustomDomainAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `ConflictException` : The submitted action has conflicts. + /// - `InternalServerException` : The request processing has failed because of an unknown error, exception or failure. + /// - `ResourceNotFoundException` : The resource could not be found. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. + public func updateCustomDomainAssociation(input: UpdateCustomDomainAssociationInput) async throws -> UpdateCustomDomainAssociationOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "updateCustomDomainAssociation") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "redshift-serverless") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "updateCustomDomainAssociation") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + operation.buildStep.intercept(position: .before, middleware: EndpointResolverMiddleware(endpointResolver: config.serviceSpecific.endpointResolver, endpointParams: endpointParams)) + operation.buildStep.intercept(position: .before, middleware: AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + operation.serializeStep.intercept(position: .before, middleware: AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "RedshiftServerless.UpdateCustomDomainAssociation")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.SerializableBodyMiddleware(xmlName: "UpdateCustomDomainAssociationRequest")) + operation.serializeStep.intercept(position: .after, middleware: ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + operation.finalizeStep.intercept(position: .before, middleware: ClientRuntime.ContentLengthMiddleware()) + operation.finalizeStep.intercept(position: .after, middleware: ClientRuntime.RetryMiddleware(options: config.retryStrategyOptions)) + let sigv4Config = AWSClientRuntime.SigV4Config(unsignedBody: false, signingAlgorithm: .sigv4) + operation.finalizeStep.intercept(position: .before, middleware: AWSClientRuntime.SigV4Middleware(config: sigv4Config)) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.DeserializeMiddleware()) + operation.deserializeStep.intercept(position: .after, middleware: ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + let result = try await operation.handleMiddleware(context: context, input: input, next: client.getHandler()) + return result + } + /// Updates an Amazon Redshift Serverless managed endpoint. /// /// - Parameter UpdateEndpointAccessInput : [no documentation found] diff --git a/Sources/Services/AWSRedshiftServerless/RedshiftServerlessClientProtocol.swift b/Sources/Services/AWSRedshiftServerless/RedshiftServerlessClientProtocol.swift index b8d198aa905..14ce47967c8 100644 --- a/Sources/Services/AWSRedshiftServerless/RedshiftServerlessClientProtocol.swift +++ b/Sources/Services/AWSRedshiftServerless/RedshiftServerlessClientProtocol.swift @@ -20,6 +20,22 @@ public protocol RedshiftServerlessClientProtocol { /// - `TooManyTagsException` : The request exceeded the number of tags allowed for a resource. /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. func convertRecoveryPointToSnapshot(input: ConvertRecoveryPointToSnapshotInput) async throws -> ConvertRecoveryPointToSnapshotOutput + /// Creates a custom domain association for Amazon Redshift Serverless. + /// + /// - Parameter CreateCustomDomainAssociationInput : [no documentation found] + /// + /// - Returns: `CreateCustomDomainAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `ConflictException` : The submitted action has conflicts. + /// - `InternalServerException` : The request processing has failed because of an unknown error, exception or failure. + /// - `ResourceNotFoundException` : The resource could not be found. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. + func createCustomDomainAssociation(input: CreateCustomDomainAssociationInput) async throws -> CreateCustomDomainAssociationOutput /// Creates an Amazon Redshift Serverless managed VPC endpoint. /// /// - Parameter CreateEndpointAccessInput : [no documentation found] @@ -97,6 +113,22 @@ public protocol RedshiftServerlessClientProtocol { /// - `TooManyTagsException` : The request exceeded the number of tags allowed for a resource. /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. func createWorkgroup(input: CreateWorkgroupInput) async throws -> CreateWorkgroupOutput + /// Deletes a custom domain association for Amazon Redshift Serverless. + /// + /// - Parameter DeleteCustomDomainAssociationInput : [no documentation found] + /// + /// - Returns: `DeleteCustomDomainAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `ConflictException` : The submitted action has conflicts. + /// - `InternalServerException` : The request processing has failed because of an unknown error, exception or failure. + /// - `ResourceNotFoundException` : The resource could not be found. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. + func deleteCustomDomainAssociation(input: DeleteCustomDomainAssociationInput) async throws -> DeleteCustomDomainAssociationOutput /// Deletes an Amazon Redshift Serverless managed VPC endpoint. /// /// - Parameter DeleteEndpointAccessInput : [no documentation found] @@ -193,6 +225,22 @@ public protocol RedshiftServerlessClientProtocol { /// - `ResourceNotFoundException` : The resource could not be found. /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. func getCredentials(input: GetCredentialsInput) async throws -> GetCredentialsOutput + /// Gets information about a specific custom domain association. + /// + /// - Parameter GetCustomDomainAssociationInput : [no documentation found] + /// + /// - Returns: `GetCustomDomainAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `ConflictException` : The submitted action has conflicts. + /// - `InternalServerException` : The request processing has failed because of an unknown error, exception or failure. + /// - `ResourceNotFoundException` : The resource could not be found. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. + func getCustomDomainAssociation(input: GetCustomDomainAssociationInput) async throws -> GetCustomDomainAssociationOutput /// Returns information, such as the name, about a VPC endpoint. /// /// - Parameter GetEndpointAccessInput : [no documentation found] @@ -299,6 +347,21 @@ public protocol RedshiftServerlessClientProtocol { /// - `ResourceNotFoundException` : The resource could not be found. /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. func getWorkgroup(input: GetWorkgroupInput) async throws -> GetWorkgroupOutput + /// Lists custom domain associations for Amazon Redshift Serverless. + /// + /// - Parameter ListCustomDomainAssociationsInput : [no documentation found] + /// + /// - Returns: `ListCustomDomainAssociationsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `InternalServerException` : The request processing has failed because of an unknown error, exception or failure. + /// - `InvalidPaginationException` : The provided pagination token is invalid. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. + func listCustomDomainAssociations(input: ListCustomDomainAssociationsInput) async throws -> ListCustomDomainAssociationsOutput /// Returns an array of EndpointAccess objects and relevant information. /// /// - Parameter ListEndpointAccessInput : [no documentation found] @@ -491,6 +554,22 @@ public protocol RedshiftServerlessClientProtocol { /// - `ThrottlingException` : The request was denied due to request throttling. /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. func untagResource(input: UntagResourceInput) async throws -> UntagResourceOutput + /// Updates an Amazon Redshift Serverless certificate associated with a custom domain. + /// + /// - Parameter UpdateCustomDomainAssociationInput : [no documentation found] + /// + /// - Returns: `UpdateCustomDomainAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `ConflictException` : The submitted action has conflicts. + /// - `InternalServerException` : The request processing has failed because of an unknown error, exception or failure. + /// - `ResourceNotFoundException` : The resource could not be found. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input failed to satisfy the constraints specified by an AWS service. + func updateCustomDomainAssociation(input: UpdateCustomDomainAssociationInput) async throws -> UpdateCustomDomainAssociationOutput /// Updates an Amazon Redshift Serverless managed endpoint. /// /// - Parameter UpdateEndpointAccessInput : [no documentation found] diff --git a/Sources/Services/AWSRedshiftServerless/models/Models.swift b/Sources/Services/AWSRedshiftServerless/models/Models.swift index 20f06c7d937..2c57e33f6d1 100644 --- a/Sources/Services/AWSRedshiftServerless/models/Models.swift +++ b/Sources/Services/AWSRedshiftServerless/models/Models.swift @@ -66,6 +66,71 @@ extension AccessDeniedExceptionBody: Swift.Decodable { } } +extension RedshiftServerlessClientTypes.Association: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainCertificateArn + case customDomainCertificateExpiryTime + case customDomainName + case workgroupName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let customDomainCertificateArn = self.customDomainCertificateArn { + try encodeContainer.encode(customDomainCertificateArn, forKey: .customDomainCertificateArn) + } + if let customDomainCertificateExpiryTime = self.customDomainCertificateExpiryTime { + try encodeContainer.encodeTimestamp(customDomainCertificateExpiryTime, format: .dateTime, forKey: .customDomainCertificateExpiryTime) + } + if let customDomainName = self.customDomainName { + try encodeContainer.encode(customDomainName, forKey: .customDomainName) + } + if let workgroupName = self.workgroupName { + try encodeContainer.encode(workgroupName, forKey: .workgroupName) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let customDomainCertificateArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainCertificateArn) + customDomainCertificateArn = customDomainCertificateArnDecoded + let customDomainCertificateExpiryTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .customDomainCertificateExpiryTime) + customDomainCertificateExpiryTime = customDomainCertificateExpiryTimeDecoded + let customDomainNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainName) + customDomainName = customDomainNameDecoded + let workgroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workgroupName) + workgroupName = workgroupNameDecoded + } +} + +extension RedshiftServerlessClientTypes { + /// An object that represents the custom domain name association. + public struct Association: Swift.Equatable { + /// The custom domain name’s certificate Amazon resource name (ARN). + public var customDomainCertificateArn: Swift.String? + /// The expiration time for the certificate. + public var customDomainCertificateExpiryTime: ClientRuntime.Date? + /// The custom domain name associated with the workgroup. + public var customDomainName: Swift.String? + /// The name of the workgroup associated with the database. + public var workgroupName: Swift.String? + + public init( + customDomainCertificateArn: Swift.String? = nil, + customDomainCertificateExpiryTime: ClientRuntime.Date? = nil, + customDomainName: Swift.String? = nil, + workgroupName: Swift.String? = nil + ) + { + self.customDomainCertificateArn = customDomainCertificateArn + self.customDomainCertificateExpiryTime = customDomainCertificateExpiryTime + self.customDomainName = customDomainName + self.workgroupName = workgroupName + } + } + +} + extension RedshiftServerlessClientTypes.ConfigParameter: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case parameterKey @@ -320,6 +385,166 @@ enum ConvertRecoveryPointToSnapshotOutputError: ClientRuntime.HttpResponseErrorB } } +extension CreateCustomDomainAssociationInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainCertificateArn + case customDomainName + case workgroupName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let customDomainCertificateArn = self.customDomainCertificateArn { + try encodeContainer.encode(customDomainCertificateArn, forKey: .customDomainCertificateArn) + } + if let customDomainName = self.customDomainName { + try encodeContainer.encode(customDomainName, forKey: .customDomainName) + } + if let workgroupName = self.workgroupName { + try encodeContainer.encode(workgroupName, forKey: .workgroupName) + } + } +} + +extension CreateCustomDomainAssociationInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct CreateCustomDomainAssociationInput: Swift.Equatable { + /// The custom domain name’s certificate Amazon resource name (ARN). + /// This member is required. + public var customDomainCertificateArn: Swift.String? + /// The custom domain name to associate with the workgroup. + /// This member is required. + public var customDomainName: Swift.String? + /// The name of the workgroup associated with the database. + /// This member is required. + public var workgroupName: Swift.String? + + public init( + customDomainCertificateArn: Swift.String? = nil, + customDomainName: Swift.String? = nil, + workgroupName: Swift.String? = nil + ) + { + self.customDomainCertificateArn = customDomainCertificateArn + self.customDomainName = customDomainName + self.workgroupName = workgroupName + } +} + +struct CreateCustomDomainAssociationInputBody: Swift.Equatable { + let workgroupName: Swift.String? + let customDomainName: Swift.String? + let customDomainCertificateArn: Swift.String? +} + +extension CreateCustomDomainAssociationInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainCertificateArn + case customDomainName + case workgroupName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workgroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workgroupName) + workgroupName = workgroupNameDecoded + let customDomainNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainName) + customDomainName = customDomainNameDecoded + let customDomainCertificateArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainCertificateArn) + customDomainCertificateArn = customDomainCertificateArnDecoded + } +} + +extension CreateCustomDomainAssociationOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: CreateCustomDomainAssociationOutputBody = try responseDecoder.decode(responseBody: data) + self.customDomainCertificateArn = output.customDomainCertificateArn + self.customDomainCertificateExpiryTime = output.customDomainCertificateExpiryTime + self.customDomainName = output.customDomainName + self.workgroupName = output.workgroupName + } else { + self.customDomainCertificateArn = nil + self.customDomainCertificateExpiryTime = nil + self.customDomainName = nil + self.workgroupName = nil + } + } +} + +public struct CreateCustomDomainAssociationOutput: Swift.Equatable { + /// The custom domain name’s certificate Amazon resource name (ARN). + public var customDomainCertificateArn: Swift.String? + /// The expiration time for the certificate. + public var customDomainCertificateExpiryTime: ClientRuntime.Date? + /// The custom domain name to associate with the workgroup. + public var customDomainName: Swift.String? + /// The name of the workgroup associated with the database. + public var workgroupName: Swift.String? + + public init( + customDomainCertificateArn: Swift.String? = nil, + customDomainCertificateExpiryTime: ClientRuntime.Date? = nil, + customDomainName: Swift.String? = nil, + workgroupName: Swift.String? = nil + ) + { + self.customDomainCertificateArn = customDomainCertificateArn + self.customDomainCertificateExpiryTime = customDomainCertificateExpiryTime + self.customDomainName = customDomainName + self.workgroupName = workgroupName + } +} + +struct CreateCustomDomainAssociationOutputBody: Swift.Equatable { + let customDomainName: Swift.String? + let workgroupName: Swift.String? + let customDomainCertificateArn: Swift.String? + let customDomainCertificateExpiryTime: ClientRuntime.Date? +} + +extension CreateCustomDomainAssociationOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainCertificateArn + case customDomainCertificateExpiryTime + case customDomainName + case workgroupName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let customDomainNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainName) + customDomainName = customDomainNameDecoded + let workgroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workgroupName) + workgroupName = workgroupNameDecoded + let customDomainCertificateArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainCertificateArn) + customDomainCertificateArn = customDomainCertificateArnDecoded + let customDomainCertificateExpiryTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .customDomainCertificateExpiryTime) + customDomainCertificateExpiryTime = customDomainCertificateExpiryTimeDecoded + } +} + +enum CreateCustomDomainAssociationOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension CreateEndpointAccessInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case endpointName @@ -1316,6 +1541,93 @@ enum CreateWorkgroupOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DeleteCustomDomainAssociationInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainName + case workgroupName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let customDomainName = self.customDomainName { + try encodeContainer.encode(customDomainName, forKey: .customDomainName) + } + if let workgroupName = self.workgroupName { + try encodeContainer.encode(workgroupName, forKey: .workgroupName) + } + } +} + +extension DeleteCustomDomainAssociationInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct DeleteCustomDomainAssociationInput: Swift.Equatable { + /// The custom domain name associated with the workgroup. + /// This member is required. + public var customDomainName: Swift.String? + /// The name of the workgroup associated with the database. + /// This member is required. + public var workgroupName: Swift.String? + + public init( + customDomainName: Swift.String? = nil, + workgroupName: Swift.String? = nil + ) + { + self.customDomainName = customDomainName + self.workgroupName = workgroupName + } +} + +struct DeleteCustomDomainAssociationInputBody: Swift.Equatable { + let workgroupName: Swift.String? + let customDomainName: Swift.String? +} + +extension DeleteCustomDomainAssociationInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainName + case workgroupName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workgroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workgroupName) + workgroupName = workgroupNameDecoded + let customDomainNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainName) + customDomainName = customDomainNameDecoded + } +} + +extension DeleteCustomDomainAssociationOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct DeleteCustomDomainAssociationOutput: Swift.Equatable { + + public init() { } +} + +enum DeleteCustomDomainAssociationOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension DeleteEndpointAccessInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case endpointName @@ -2141,6 +2453,7 @@ extension RedshiftServerlessClientTypes { extension GetCredentialsInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainName case dbName case durationSeconds case workgroupName @@ -2148,6 +2461,9 @@ extension GetCredentialsInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let customDomainName = self.customDomainName { + try encodeContainer.encode(customDomainName, forKey: .customDomainName) + } if let dbName = self.dbName { try encodeContainer.encode(dbName, forKey: .dbName) } @@ -2167,6 +2483,8 @@ extension GetCredentialsInput: ClientRuntime.URLPathProvider { } public struct GetCredentialsInput: Swift.Equatable { + /// The custom domain name associated with the workgroup. The custom domain name or the workgroup name must be included in the request. + public var customDomainName: Swift.String? /// The name of the database to get temporary authorization to log on to. Constraints: /// /// * Must be 1 to 64 alphanumeric characters or hyphens. @@ -2182,15 +2500,16 @@ public struct GetCredentialsInput: Swift.Equatable { /// The number of seconds until the returned temporary password expires. The minimum is 900 seconds, and the maximum is 3600 seconds. public var durationSeconds: Swift.Int? /// The name of the workgroup associated with the database. - /// This member is required. public var workgroupName: Swift.String? public init( + customDomainName: Swift.String? = nil, dbName: Swift.String? = nil, durationSeconds: Swift.Int? = nil, workgroupName: Swift.String? = nil ) { + self.customDomainName = customDomainName self.dbName = dbName self.durationSeconds = durationSeconds self.workgroupName = workgroupName @@ -2198,13 +2517,15 @@ public struct GetCredentialsInput: Swift.Equatable { } struct GetCredentialsInputBody: Swift.Equatable { - let workgroupName: Swift.String? let dbName: Swift.String? let durationSeconds: Swift.Int? + let workgroupName: Swift.String? + let customDomainName: Swift.String? } extension GetCredentialsInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainName case dbName case durationSeconds case workgroupName @@ -2212,12 +2533,14 @@ extension GetCredentialsInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let workgroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workgroupName) - workgroupName = workgroupNameDecoded let dbNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dbName) dbName = dbNameDecoded let durationSecondsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .durationSeconds) durationSeconds = durationSecondsDecoded + let workgroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workgroupName) + workgroupName = workgroupNameDecoded + let customDomainNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainName) + customDomainName = customDomainNameDecoded } } @@ -2309,6 +2632,153 @@ enum GetCredentialsOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension GetCustomDomainAssociationInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainName + case workgroupName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let customDomainName = self.customDomainName { + try encodeContainer.encode(customDomainName, forKey: .customDomainName) + } + if let workgroupName = self.workgroupName { + try encodeContainer.encode(workgroupName, forKey: .workgroupName) + } + } +} + +extension GetCustomDomainAssociationInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct GetCustomDomainAssociationInput: Swift.Equatable { + /// The custom domain name associated with the workgroup. + /// This member is required. + public var customDomainName: Swift.String? + /// The name of the workgroup associated with the database. + /// This member is required. + public var workgroupName: Swift.String? + + public init( + customDomainName: Swift.String? = nil, + workgroupName: Swift.String? = nil + ) + { + self.customDomainName = customDomainName + self.workgroupName = workgroupName + } +} + +struct GetCustomDomainAssociationInputBody: Swift.Equatable { + let customDomainName: Swift.String? + let workgroupName: Swift.String? +} + +extension GetCustomDomainAssociationInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainName + case workgroupName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let customDomainNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainName) + customDomainName = customDomainNameDecoded + let workgroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workgroupName) + workgroupName = workgroupNameDecoded + } +} + +extension GetCustomDomainAssociationOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: GetCustomDomainAssociationOutputBody = try responseDecoder.decode(responseBody: data) + self.customDomainCertificateArn = output.customDomainCertificateArn + self.customDomainCertificateExpiryTime = output.customDomainCertificateExpiryTime + self.customDomainName = output.customDomainName + self.workgroupName = output.workgroupName + } else { + self.customDomainCertificateArn = nil + self.customDomainCertificateExpiryTime = nil + self.customDomainName = nil + self.workgroupName = nil + } + } +} + +public struct GetCustomDomainAssociationOutput: Swift.Equatable { + /// The custom domain name’s certificate Amazon resource name (ARN). + public var customDomainCertificateArn: Swift.String? + /// The expiration time for the certificate. + public var customDomainCertificateExpiryTime: ClientRuntime.Date? + /// The custom domain name associated with the workgroup. + public var customDomainName: Swift.String? + /// The name of the workgroup associated with the database. + public var workgroupName: Swift.String? + + public init( + customDomainCertificateArn: Swift.String? = nil, + customDomainCertificateExpiryTime: ClientRuntime.Date? = nil, + customDomainName: Swift.String? = nil, + workgroupName: Swift.String? = nil + ) + { + self.customDomainCertificateArn = customDomainCertificateArn + self.customDomainCertificateExpiryTime = customDomainCertificateExpiryTime + self.customDomainName = customDomainName + self.workgroupName = workgroupName + } +} + +struct GetCustomDomainAssociationOutputBody: Swift.Equatable { + let customDomainName: Swift.String? + let workgroupName: Swift.String? + let customDomainCertificateArn: Swift.String? + let customDomainCertificateExpiryTime: ClientRuntime.Date? +} + +extension GetCustomDomainAssociationOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainCertificateArn + case customDomainCertificateExpiryTime + case customDomainName + case workgroupName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let customDomainNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainName) + customDomainName = customDomainNameDecoded + let workgroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workgroupName) + workgroupName = workgroupNameDecoded + let customDomainCertificateArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainCertificateArn) + customDomainCertificateArn = customDomainCertificateArnDecoded + let customDomainCertificateExpiryTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .customDomainCertificateExpiryTime) + customDomainCertificateExpiryTime = customDomainCertificateExpiryTimeDecoded + } +} + +enum GetCustomDomainAssociationOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension GetEndpointAccessInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case endpointName @@ -3312,6 +3782,147 @@ extension InvalidPaginationExceptionBody: Swift.Decodable { } } +extension ListCustomDomainAssociationsInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainCertificateArn + case customDomainName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let customDomainCertificateArn = self.customDomainCertificateArn { + try encodeContainer.encode(customDomainCertificateArn, forKey: .customDomainCertificateArn) + } + if let customDomainName = self.customDomainName { + try encodeContainer.encode(customDomainName, forKey: .customDomainName) + } + } +} + +extension ListCustomDomainAssociationsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct ListCustomDomainAssociationsInput: Swift.Equatable { + /// The custom domain name’s certificate Amazon resource name (ARN). + public var customDomainCertificateArn: Swift.String? + /// The custom domain name associated with the workgroup. + public var customDomainName: Swift.String? + /// An optional parameter that specifies the maximum number of results to return. You can use nextToken to display the next page of results. + public var maxResults: Swift.Int? + /// When nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. + public var nextToken: Swift.String? + + public init( + customDomainCertificateArn: Swift.String? = nil, + customDomainName: Swift.String? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.customDomainCertificateArn = customDomainCertificateArn + self.customDomainName = customDomainName + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListCustomDomainAssociationsInputBody: Swift.Equatable { + let customDomainName: Swift.String? + let customDomainCertificateArn: Swift.String? +} + +extension ListCustomDomainAssociationsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainCertificateArn + case customDomainName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let customDomainNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainName) + customDomainName = customDomainNameDecoded + let customDomainCertificateArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainCertificateArn) + customDomainCertificateArn = customDomainCertificateArnDecoded + } +} + +extension ListCustomDomainAssociationsOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: ListCustomDomainAssociationsOutputBody = try responseDecoder.decode(responseBody: data) + self.associations = output.associations + self.nextToken = output.nextToken + } else { + self.associations = nil + self.nextToken = nil + } + } +} + +public struct ListCustomDomainAssociationsOutput: Swift.Equatable { + /// A list of Association objects. + public var associations: [RedshiftServerlessClientTypes.Association]? + /// When nextToken is returned, there are more results available. The value of nextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. + public var nextToken: Swift.String? + + public init( + associations: [RedshiftServerlessClientTypes.Association]? = nil, + nextToken: Swift.String? = nil + ) + { + self.associations = associations + self.nextToken = nextToken + } +} + +struct ListCustomDomainAssociationsOutputBody: Swift.Equatable { + let nextToken: Swift.String? + let associations: [RedshiftServerlessClientTypes.Association]? +} + +extension ListCustomDomainAssociationsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case associations + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + let associationsContainer = try containerValues.decodeIfPresent([RedshiftServerlessClientTypes.Association?].self, forKey: .associations) + var associationsDecoded0:[RedshiftServerlessClientTypes.Association]? = nil + if let associationsContainer = associationsContainer { + associationsDecoded0 = [RedshiftServerlessClientTypes.Association]() + for structure0 in associationsContainer { + if let structure0 = structure0 { + associationsDecoded0?.append(structure0) + } + } + } + associations = associationsDecoded0 + } +} + +enum ListCustomDomainAssociationsOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidPaginationException": return try await InvalidPaginationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension ListEndpointAccessInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case vpcId @@ -6498,6 +7109,166 @@ enum UntagResourceOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension UpdateCustomDomainAssociationInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainCertificateArn + case customDomainName + case workgroupName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let customDomainCertificateArn = self.customDomainCertificateArn { + try encodeContainer.encode(customDomainCertificateArn, forKey: .customDomainCertificateArn) + } + if let customDomainName = self.customDomainName { + try encodeContainer.encode(customDomainName, forKey: .customDomainName) + } + if let workgroupName = self.workgroupName { + try encodeContainer.encode(workgroupName, forKey: .workgroupName) + } + } +} + +extension UpdateCustomDomainAssociationInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct UpdateCustomDomainAssociationInput: Swift.Equatable { + /// The custom domain name’s certificate Amazon resource name (ARN). This is optional. + /// This member is required. + public var customDomainCertificateArn: Swift.String? + /// The custom domain name associated with the workgroup. + /// This member is required. + public var customDomainName: Swift.String? + /// The name of the workgroup associated with the database. + /// This member is required. + public var workgroupName: Swift.String? + + public init( + customDomainCertificateArn: Swift.String? = nil, + customDomainName: Swift.String? = nil, + workgroupName: Swift.String? = nil + ) + { + self.customDomainCertificateArn = customDomainCertificateArn + self.customDomainName = customDomainName + self.workgroupName = workgroupName + } +} + +struct UpdateCustomDomainAssociationInputBody: Swift.Equatable { + let workgroupName: Swift.String? + let customDomainName: Swift.String? + let customDomainCertificateArn: Swift.String? +} + +extension UpdateCustomDomainAssociationInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainCertificateArn + case customDomainName + case workgroupName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workgroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workgroupName) + workgroupName = workgroupNameDecoded + let customDomainNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainName) + customDomainName = customDomainNameDecoded + let customDomainCertificateArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainCertificateArn) + customDomainCertificateArn = customDomainCertificateArnDecoded + } +} + +extension UpdateCustomDomainAssociationOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: UpdateCustomDomainAssociationOutputBody = try responseDecoder.decode(responseBody: data) + self.customDomainCertificateArn = output.customDomainCertificateArn + self.customDomainCertificateExpiryTime = output.customDomainCertificateExpiryTime + self.customDomainName = output.customDomainName + self.workgroupName = output.workgroupName + } else { + self.customDomainCertificateArn = nil + self.customDomainCertificateExpiryTime = nil + self.customDomainName = nil + self.workgroupName = nil + } + } +} + +public struct UpdateCustomDomainAssociationOutput: Swift.Equatable { + /// The custom domain name’s certificate Amazon resource name (ARN). + public var customDomainCertificateArn: Swift.String? + /// The expiration time for the certificate. + public var customDomainCertificateExpiryTime: ClientRuntime.Date? + /// The custom domain name associated with the workgroup. + public var customDomainName: Swift.String? + /// The name of the workgroup associated with the database. + public var workgroupName: Swift.String? + + public init( + customDomainCertificateArn: Swift.String? = nil, + customDomainCertificateExpiryTime: ClientRuntime.Date? = nil, + customDomainName: Swift.String? = nil, + workgroupName: Swift.String? = nil + ) + { + self.customDomainCertificateArn = customDomainCertificateArn + self.customDomainCertificateExpiryTime = customDomainCertificateExpiryTime + self.customDomainName = customDomainName + self.workgroupName = workgroupName + } +} + +struct UpdateCustomDomainAssociationOutputBody: Swift.Equatable { + let customDomainName: Swift.String? + let workgroupName: Swift.String? + let customDomainCertificateArn: Swift.String? + let customDomainCertificateExpiryTime: ClientRuntime.Date? +} + +extension UpdateCustomDomainAssociationOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDomainCertificateArn + case customDomainCertificateExpiryTime + case customDomainName + case workgroupName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let customDomainNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainName) + customDomainName = customDomainNameDecoded + let workgroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workgroupName) + workgroupName = workgroupNameDecoded + let customDomainCertificateArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainCertificateArn) + customDomainCertificateArn = customDomainCertificateArnDecoded + let customDomainCertificateExpiryTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .customDomainCertificateExpiryTime) + customDomainCertificateExpiryTime = customDomainCertificateExpiryTimeDecoded + } +} + +enum UpdateCustomDomainAssociationOutputError: ClientRuntime.HttpResponseErrorBinding { + static func makeError(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws -> Swift.Error { + let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) + let requestID = httpResponse.requestId + switch restJSONError.errorType { + case "AccessDeniedException": return try await AccessDeniedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ThrottlingException": return try await ThrottlingException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension UpdateEndpointAccessInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case endpointName @@ -7687,6 +8458,9 @@ extension RedshiftServerlessClientTypes.Workgroup: Swift.Codable { case baseCapacity case configParameters case creationDate + case customDomainCertificateArn + case customDomainCertificateExpiryTime + case customDomainName case endpoint case enhancedVpcRouting case namespaceName @@ -7716,6 +8490,15 @@ extension RedshiftServerlessClientTypes.Workgroup: Swift.Codable { if let creationDate = self.creationDate { try encodeContainer.encodeTimestamp(creationDate, format: .dateTime, forKey: .creationDate) } + if let customDomainCertificateArn = self.customDomainCertificateArn { + try encodeContainer.encode(customDomainCertificateArn, forKey: .customDomainCertificateArn) + } + if let customDomainCertificateExpiryTime = self.customDomainCertificateExpiryTime { + try encodeContainer.encodeTimestamp(customDomainCertificateExpiryTime, format: .dateTime, forKey: .customDomainCertificateExpiryTime) + } + if let customDomainName = self.customDomainName { + try encodeContainer.encode(customDomainName, forKey: .customDomainName) + } if let endpoint = self.endpoint { try encodeContainer.encode(endpoint, forKey: .endpoint) } @@ -7820,6 +8603,12 @@ extension RedshiftServerlessClientTypes.Workgroup: Swift.Codable { creationDate = creationDateDecoded let portDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .port) port = portDecoded + let customDomainNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainName) + customDomainName = customDomainNameDecoded + let customDomainCertificateArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDomainCertificateArn) + customDomainCertificateArn = customDomainCertificateArnDecoded + let customDomainCertificateExpiryTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .customDomainCertificateExpiryTime) + customDomainCertificateExpiryTime = customDomainCertificateExpiryTimeDecoded let workgroupVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workgroupVersion) workgroupVersion = workgroupVersionDecoded let patchVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .patchVersion) @@ -7836,6 +8625,12 @@ extension RedshiftServerlessClientTypes { public var configParameters: [RedshiftServerlessClientTypes.ConfigParameter]? /// The creation date of the workgroup. public var creationDate: ClientRuntime.Date? + /// The custom domain name’s certificate Amazon resource name (ARN). + public var customDomainCertificateArn: Swift.String? + /// The expiration time for the certificate. + public var customDomainCertificateExpiryTime: ClientRuntime.Date? + /// The custom domain name associated with the workgroup. + public var customDomainName: Swift.String? /// The endpoint that is created from the workgroup. public var endpoint: RedshiftServerlessClientTypes.Endpoint? /// The value that specifies whether to enable enhanced virtual private cloud (VPC) routing, which forces Amazon Redshift Serverless to route traffic through your VPC. @@ -7867,6 +8662,9 @@ extension RedshiftServerlessClientTypes { baseCapacity: Swift.Int? = nil, configParameters: [RedshiftServerlessClientTypes.ConfigParameter]? = nil, creationDate: ClientRuntime.Date? = nil, + customDomainCertificateArn: Swift.String? = nil, + customDomainCertificateExpiryTime: ClientRuntime.Date? = nil, + customDomainName: Swift.String? = nil, endpoint: RedshiftServerlessClientTypes.Endpoint? = nil, enhancedVpcRouting: Swift.Bool? = nil, namespaceName: Swift.String? = nil, @@ -7885,6 +8683,9 @@ extension RedshiftServerlessClientTypes { self.baseCapacity = baseCapacity self.configParameters = configParameters self.creationDate = creationDate + self.customDomainCertificateArn = customDomainCertificateArn + self.customDomainCertificateExpiryTime = customDomainCertificateExpiryTime + self.customDomainName = customDomainName self.endpoint = endpoint self.enhancedVpcRouting = enhancedVpcRouting self.namespaceName = namespaceName diff --git a/Sources/Services/AWSResiliencehub/Paginators.swift b/Sources/Services/AWSResiliencehub/Paginators.swift index 7d1061b06d8..479139d011c 100644 --- a/Sources/Services/AWSResiliencehub/Paginators.swift +++ b/Sources/Services/AWSResiliencehub/Paginators.swift @@ -158,9 +158,12 @@ extension ListAppsInput: ClientRuntime.PaginateToken { public func usingPaginationToken(_ token: Swift.String) -> ListAppsInput { return ListAppsInput( appArn: self.appArn, + fromLastAssessmentTime: self.fromLastAssessmentTime, maxResults: self.maxResults, name: self.name, - nextToken: token + nextToken: token, + reverseOrder: self.reverseOrder, + toLastAssessmentTime: self.toLastAssessmentTime )} } extension ResiliencehubClient { diff --git a/Sources/Services/AWSResiliencehub/ResiliencehubClient.swift b/Sources/Services/AWSResiliencehub/ResiliencehubClient.swift index 9d1f56f0e7f..b7f554ff8c0 100644 --- a/Sources/Services/AWSResiliencehub/ResiliencehubClient.swift +++ b/Sources/Services/AWSResiliencehub/ResiliencehubClient.swift @@ -67,7 +67,7 @@ public struct ResiliencehubClientLogHandlerFactory: ClientRuntime.SDKLogHandlerF } extension ResiliencehubClient: ResiliencehubClientProtocol { - /// Adds the resource mapping for the draft application version. You can also update an existing resource mapping to a new physical resource. + /// Adds the source of resource-maps to the draft version of an application. During assessment, Resilience Hub will use these resource-maps to resolve the latest physical ID for each resource in the application template. For more information about different types of resources suported by Resilience Hub and how to add them in your application, see [Step 2: How is your application managed?](https://docs.aws.amazon.com/resilience-hub/latest/userguide/how-app-manage.html) in the Resilience Hub User Guide. /// /// - Parameter AddDraftAppVersionResourceMappingsInput : [no documentation found] /// @@ -374,7 +374,7 @@ extension ResiliencehubClient: ResiliencehubClientProtocol { return result } - /// Creates a resiliency policy for an application. + /// Creates a resiliency policy for an application. Resilience Hub allows you to provide a value of zero for rtoInSecs and rpoInSecs of your resiliency policy. But, while assessing your application, the lowest possible assessment result is near zero. Hence, if you provide value zero for rtoInSecs and rpoInSecs, the estimated workload RTO and estimated workload RPO result will be near zero and the Compliance status for your application will be set to Policy breached. /// /// - Parameter CreateResiliencyPolicyInput : [no documentation found] /// @@ -2668,7 +2668,7 @@ extension ResiliencehubClient: ResiliencehubClientProtocol { return result } - /// Updates a resiliency policy. + /// Updates a resiliency policy. Resilience Hub allows you to provide a value of zero for rtoInSecs and rpoInSecs of your resiliency policy. But, while assessing your application, the lowest possible assessment result is near zero. Hence, if you provide value zero for rtoInSecs and rpoInSecs, the estimated workload RTO and estimated workload RPO result will be near zero and the Compliance status for your application will be set to Policy breached. /// /// - Parameter UpdateResiliencyPolicyInput : [no documentation found] /// diff --git a/Sources/Services/AWSResiliencehub/ResiliencehubClientProtocol.swift b/Sources/Services/AWSResiliencehub/ResiliencehubClientProtocol.swift index 4b27f9f41e4..0b1622062cf 100644 --- a/Sources/Services/AWSResiliencehub/ResiliencehubClientProtocol.swift +++ b/Sources/Services/AWSResiliencehub/ResiliencehubClientProtocol.swift @@ -4,7 +4,7 @@ import ClientRuntime /// Resilience Hub helps you proactively prepare and protect your Amazon Web Services applications from disruptions. It offers continual resiliency assessment and validation that integrates into your software development lifecycle. This enables you to uncover resiliency weaknesses, ensure recovery time objective (RTO) and recovery point objective (RPO) targets for your applications are met, and resolve issues before they are released into production. public protocol ResiliencehubClientProtocol { - /// Adds the resource mapping for the draft application version. You can also update an existing resource mapping to a new physical resource. + /// Adds the source of resource-maps to the draft version of an application. During assessment, Resilience Hub will use these resource-maps to resolve the latest physical ID for each resource in the application template. For more information about different types of resources suported by Resilience Hub and how to add them in your application, see [Step 2: How is your application managed?](https://docs.aws.amazon.com/resilience-hub/latest/userguide/how-app-manage.html) in the Resilience Hub User Guide. /// /// - Parameter AddDraftAppVersionResourceMappingsInput : [no documentation found] /// @@ -109,7 +109,7 @@ public protocol ResiliencehubClientProtocol { /// - `ThrottlingException` : This exception occurs when you have exceeded the limit on the number of requests per second. /// - `ValidationException` : This exception occurs when a request is not valid. func createRecommendationTemplate(input: CreateRecommendationTemplateInput) async throws -> CreateRecommendationTemplateOutput - /// Creates a resiliency policy for an application. + /// Creates a resiliency policy for an application. Resilience Hub allows you to provide a value of zero for rtoInSecs and rpoInSecs of your resiliency policy. But, while assessing your application, the lowest possible assessment result is near zero. Hence, if you provide value zero for rtoInSecs and rpoInSecs, the estimated workload RTO and estimated workload RPO result will be near zero and the Compliance status for your application will be set to Policy breached. /// /// - Parameter CreateResiliencyPolicyInput : [no documentation found] /// @@ -858,7 +858,7 @@ public protocol ResiliencehubClientProtocol { /// - `ThrottlingException` : This exception occurs when you have exceeded the limit on the number of requests per second. /// - `ValidationException` : This exception occurs when a request is not valid. func updateAppVersionResource(input: UpdateAppVersionResourceInput) async throws -> UpdateAppVersionResourceOutput - /// Updates a resiliency policy. + /// Updates a resiliency policy. Resilience Hub allows you to provide a value of zero for rtoInSecs and rpoInSecs of your resiliency policy. But, while assessing your application, the lowest possible assessment result is near zero. Hence, if you provide value zero for rtoInSecs and rpoInSecs, the estimated workload RTO and estimated workload RPO result will be near zero and the Compliance status for your application will be set to Policy breached. /// /// - Parameter UpdateResiliencyPolicyInput : [no documentation found] /// diff --git a/Sources/Services/AWSResiliencehub/models/Models.swift b/Sources/Services/AWSResiliencehub/models/Models.swift index a8cbfade90e..897aa53d913 100644 --- a/Sources/Services/AWSResiliencehub/models/Models.swift +++ b/Sources/Services/AWSResiliencehub/models/Models.swift @@ -84,7 +84,7 @@ extension AddDraftAppVersionResourceMappingsInput: ClientRuntime.URLPathProvider } public struct AddDraftAppVersionResourceMappingsInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Mappings used to map logical resources from the template to physical resources. You can use the mapping type CFN_STACK if the application template uses a logical stack name. Or you can map individual resources by using the mapping type RESOURCE. We recommend using the mapping type CFN_STACK if the application is backed by a CloudFormation stack. @@ -147,7 +147,7 @@ extension AddDraftAppVersionResourceMappingsOutput: ClientRuntime.HttpResponseBi } public struct AddDraftAppVersionResourceMappingsOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The version of the application. @@ -419,6 +419,8 @@ extension ResiliencehubClientTypes.App: Swift.Codable { case permissionModel case policyArn case resiliencyScore + case rpoInSecs + case rtoInSecs case status case tags } @@ -470,6 +472,12 @@ extension ResiliencehubClientTypes.App: Swift.Codable { if resiliencyScore != 0.0 { try encodeContainer.encode(resiliencyScore, forKey: .resiliencyScore) } + if let rpoInSecs = self.rpoInSecs { + try encodeContainer.encode(rpoInSecs, forKey: .rpoInSecs) + } + if let rtoInSecs = self.rtoInSecs { + try encodeContainer.encode(rtoInSecs, forKey: .rtoInSecs) + } if let status = self.status { try encodeContainer.encode(status.rawValue, forKey: .status) } @@ -533,25 +541,29 @@ extension ResiliencehubClientTypes.App: Swift.Codable { driftStatus = driftStatusDecoded let lastDriftEvaluationTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastDriftEvaluationTime) lastDriftEvaluationTime = lastDriftEvaluationTimeDecoded + let rtoInSecsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .rtoInSecs) + rtoInSecs = rtoInSecsDecoded + let rpoInSecsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .rpoInSecs) + rpoInSecs = rpoInSecsDecoded } } extension ResiliencehubClientTypes.App: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "App(appArn: \(Swift.String(describing: appArn)), assessmentSchedule: \(Swift.String(describing: assessmentSchedule)), complianceStatus: \(Swift.String(describing: complianceStatus)), creationTime: \(Swift.String(describing: creationTime)), description: \(Swift.String(describing: description)), driftStatus: \(Swift.String(describing: driftStatus)), eventSubscriptions: \(Swift.String(describing: eventSubscriptions)), lastAppComplianceEvaluationTime: \(Swift.String(describing: lastAppComplianceEvaluationTime)), lastDriftEvaluationTime: \(Swift.String(describing: lastDriftEvaluationTime)), lastResiliencyScoreEvaluationTime: \(Swift.String(describing: lastResiliencyScoreEvaluationTime)), name: \(Swift.String(describing: name)), permissionModel: \(Swift.String(describing: permissionModel)), policyArn: \(Swift.String(describing: policyArn)), resiliencyScore: \(Swift.String(describing: resiliencyScore)), status: \(Swift.String(describing: status)), tags: \"CONTENT_REDACTED\")"} + "App(appArn: \(Swift.String(describing: appArn)), assessmentSchedule: \(Swift.String(describing: assessmentSchedule)), complianceStatus: \(Swift.String(describing: complianceStatus)), creationTime: \(Swift.String(describing: creationTime)), description: \(Swift.String(describing: description)), driftStatus: \(Swift.String(describing: driftStatus)), eventSubscriptions: \(Swift.String(describing: eventSubscriptions)), lastAppComplianceEvaluationTime: \(Swift.String(describing: lastAppComplianceEvaluationTime)), lastDriftEvaluationTime: \(Swift.String(describing: lastDriftEvaluationTime)), lastResiliencyScoreEvaluationTime: \(Swift.String(describing: lastResiliencyScoreEvaluationTime)), name: \(Swift.String(describing: name)), permissionModel: \(Swift.String(describing: permissionModel)), policyArn: \(Swift.String(describing: policyArn)), resiliencyScore: \(Swift.String(describing: resiliencyScore)), rpoInSecs: \(Swift.String(describing: rpoInSecs)), rtoInSecs: \(Swift.String(describing: rtoInSecs)), status: \(Swift.String(describing: status)), tags: \"CONTENT_REDACTED\")"} } extension ResiliencehubClientTypes { /// Defines an Resilience Hub application. public struct App: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Assessment execution schedule with 'Daily' or 'Disabled' values. public var assessmentSchedule: ResiliencehubClientTypes.AppAssessmentScheduleType? /// Current status of compliance for the resiliency policy. public var complianceStatus: ResiliencehubClientTypes.AppComplianceStatusType? - /// Timestamp for when the app was created. + /// Date and time when the app was created. /// This member is required. public var creationTime: ClientRuntime.Date? /// Optional description for an application. @@ -560,21 +572,25 @@ extension ResiliencehubClientTypes { public var driftStatus: ResiliencehubClientTypes.AppDriftStatusType? /// The list of events you would like to subscribe and get notification for. Currently, Resilience Hub supports notifications only for Drift detected and Scheduled assessment failure events. public var eventSubscriptions: [ResiliencehubClientTypes.EventSubscription]? - /// Timestamp for the most recent compliance evaluation. + /// Date and time the most recent compliance evaluation. public var lastAppComplianceEvaluationTime: ClientRuntime.Date? /// Indicates the last time that a drift was evaluated. public var lastDriftEvaluationTime: ClientRuntime.Date? - /// Timestamp for the most recent resiliency score evaluation. + /// Date and time the most recent resiliency score evaluation. public var lastResiliencyScoreEvaluationTime: ClientRuntime.Date? /// Name for the application. /// This member is required. public var name: Swift.String? /// Defines the roles and credentials that Resilience Hub would use while creating the application, importing its resources, and running an assessment. public var permissionModel: ResiliencehubClientTypes.PermissionModel? - /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var policyArn: Swift.String? /// Current resiliency score for the application. public var resiliencyScore: Swift.Double + /// Recovery Point Objective (RPO) in seconds. + public var rpoInSecs: Swift.Int? + /// Recovery Time Objective (RTO) in seconds. + public var rtoInSecs: Swift.Int? /// Status of the application. public var status: ResiliencehubClientTypes.AppStatusType? /// Tags assigned to the resource. A tag is a label that you assign to an Amazon Web Services resource. Each tag consists of a key/value pair. @@ -595,6 +611,8 @@ extension ResiliencehubClientTypes { permissionModel: ResiliencehubClientTypes.PermissionModel? = nil, policyArn: Swift.String? = nil, resiliencyScore: Swift.Double = 0.0, + rpoInSecs: Swift.Int? = nil, + rtoInSecs: Swift.Int? = nil, status: ResiliencehubClientTypes.AppStatusType? = nil, tags: [Swift.String:Swift.String]? = nil ) @@ -613,6 +631,8 @@ extension ResiliencehubClientTypes { self.permissionModel = permissionModel self.policyArn = policyArn self.resiliencyScore = resiliencyScore + self.rpoInSecs = rpoInSecs + self.rtoInSecs = rtoInSecs self.status = status self.tags = tags } @@ -773,11 +793,11 @@ extension ResiliencehubClientTypes.AppAssessment: Swift.CustomDebugStringConvert extension ResiliencehubClientTypes { /// Defines an application assessment. public struct AppAssessment: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var appArn: Swift.String? /// Version of an application. public var appVersion: Swift.String? - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? /// Name of the assessment. @@ -989,11 +1009,11 @@ extension ResiliencehubClientTypes.AppAssessmentSummary: Swift.Codable { extension ResiliencehubClientTypes { /// Defines an application assessment summary. public struct AppAssessmentSummary: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var appArn: Swift.String? /// Version of an application. public var appVersion: Swift.String? - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? /// Name of the assessment. @@ -1374,7 +1394,7 @@ extension ResiliencehubClientTypes { public var importType: ResiliencehubClientTypes.ResourceMappingType? /// The number of resources. public var resourceCount: Swift.Int - /// The Amazon Resource Name (ARN) of the input source. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// The Amazon Resource Name (ARN) of the input source. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var sourceArn: Swift.String? /// The name of the input source. public var sourceName: Swift.String? @@ -1441,8 +1461,11 @@ extension ResiliencehubClientTypes.AppSummary: Swift.Codable { case creationTime case description case driftStatus + case lastAppComplianceEvaluationTime case name case resiliencyScore + case rpoInSecs + case rtoInSecs case status } @@ -1466,12 +1489,21 @@ extension ResiliencehubClientTypes.AppSummary: Swift.Codable { if let driftStatus = self.driftStatus { try encodeContainer.encode(driftStatus.rawValue, forKey: .driftStatus) } + if let lastAppComplianceEvaluationTime = self.lastAppComplianceEvaluationTime { + try encodeContainer.encodeTimestamp(lastAppComplianceEvaluationTime, format: .epochSeconds, forKey: .lastAppComplianceEvaluationTime) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } if resiliencyScore != 0.0 { try encodeContainer.encode(resiliencyScore, forKey: .resiliencyScore) } + if let rpoInSecs = self.rpoInSecs { + try encodeContainer.encode(rpoInSecs, forKey: .rpoInSecs) + } + if let rtoInSecs = self.rtoInSecs { + try encodeContainer.encode(rtoInSecs, forKey: .rtoInSecs) + } if let status = self.status { try encodeContainer.encode(status.rawValue, forKey: .status) } @@ -1497,31 +1529,43 @@ extension ResiliencehubClientTypes.AppSummary: Swift.Codable { status = statusDecoded let driftStatusDecoded = try containerValues.decodeIfPresent(ResiliencehubClientTypes.AppDriftStatusType.self, forKey: .driftStatus) driftStatus = driftStatusDecoded + let lastAppComplianceEvaluationTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastAppComplianceEvaluationTime) + lastAppComplianceEvaluationTime = lastAppComplianceEvaluationTimeDecoded + let rtoInSecsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .rtoInSecs) + rtoInSecs = rtoInSecsDecoded + let rpoInSecsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .rpoInSecs) + rpoInSecs = rpoInSecsDecoded } } extension ResiliencehubClientTypes { /// Defines an application summary. public struct AppSummary: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Assessment execution schedule with 'Daily' or 'Disabled' values. public var assessmentSchedule: ResiliencehubClientTypes.AppAssessmentScheduleType? /// The current status of compliance for the resiliency policy. public var complianceStatus: ResiliencehubClientTypes.AppComplianceStatusType? - /// The timestamp for when the app was created. + /// Date and time when the app was created. /// This member is required. public var creationTime: ClientRuntime.Date? /// The optional description for an app. public var description: Swift.String? /// Indicates if compliance drifts (deviations) were detected while running an assessment for your application. public var driftStatus: ResiliencehubClientTypes.AppDriftStatusType? + /// Date and time of the most recent compliance evaluation. + public var lastAppComplianceEvaluationTime: ClientRuntime.Date? /// The name of the application. /// This member is required. public var name: Swift.String? /// The current resiliency score for the application. public var resiliencyScore: Swift.Double + /// Recovery Point Objective (RPO) in seconds. + public var rpoInSecs: Swift.Int? + /// Recovery Time Objective (RTO) in seconds. + public var rtoInSecs: Swift.Int? /// Status of the application. public var status: ResiliencehubClientTypes.AppStatusType? @@ -1532,8 +1576,11 @@ extension ResiliencehubClientTypes { creationTime: ClientRuntime.Date? = nil, description: Swift.String? = nil, driftStatus: ResiliencehubClientTypes.AppDriftStatusType? = nil, + lastAppComplianceEvaluationTime: ClientRuntime.Date? = nil, name: Swift.String? = nil, resiliencyScore: Swift.Double = 0.0, + rpoInSecs: Swift.Int? = nil, + rtoInSecs: Swift.Int? = nil, status: ResiliencehubClientTypes.AppStatusType? = nil ) { @@ -1543,8 +1590,11 @@ extension ResiliencehubClientTypes { self.creationTime = creationTime self.description = description self.driftStatus = driftStatus + self.lastAppComplianceEvaluationTime = lastAppComplianceEvaluationTime self.name = name self.resiliencyScore = resiliencyScore + self.rpoInSecs = rpoInSecs + self.rtoInSecs = rtoInSecs self.status = status } } @@ -1761,7 +1811,7 @@ extension BatchUpdateRecommendationStatusInput: ClientRuntime.URLPathProvider { } public struct BatchUpdateRecommendationStatusInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Defines the list of operational recommendations that need to be included or excluded. @@ -1824,7 +1874,7 @@ extension BatchUpdateRecommendationStatusOutput: ClientRuntime.HttpResponseBindi } public struct BatchUpdateRecommendationStatusOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// A list of items with error details about each item, which could not be included or excluded. @@ -2684,7 +2734,7 @@ public struct CreateAppInput: Swift.Equatable { public var name: Swift.String? /// Defines the roles and credentials that Resilience Hub would use while creating the application, importing its resources, and running an assessment. public var permissionModel: ResiliencehubClientTypes.PermissionModel? - /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var policyArn: Swift.String? /// Tags assigned to the resource. A tag is a label that you assign to an Amazon Web Services resource. Each tag consists of a key/value pair. public var tags: [Swift.String:Swift.String]? @@ -2879,7 +2929,7 @@ extension CreateAppVersionAppComponentInput: ClientRuntime.URLPathProvider { public struct CreateAppVersionAppComponentInput: Swift.Equatable { /// Currently, there is no supported additional information for Application Components. public var additionalInfo: [Swift.String:[Swift.String]]? - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. You should not reuse the same client token for other API requests. @@ -2980,7 +3030,7 @@ extension CreateAppVersionAppComponentOutput: ClientRuntime.HttpResponseBinding } public struct CreateAppVersionAppComponentOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// List of Application Components that belong to this resource. @@ -3109,7 +3159,7 @@ extension CreateAppVersionResourceInput: ClientRuntime.URLPathProvider { public struct CreateAppVersionResourceInput: Swift.Equatable { /// Currently, there is no supported additional information for resources. public var additionalInfo: [Swift.String:[Swift.String]]? - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// List of Application Components that this resource belongs to. If an Application Component is not part of the Resilience Hub application, it will be added. @@ -3253,7 +3303,7 @@ extension CreateAppVersionResourceOutput: ClientRuntime.HttpResponseBinding { } public struct CreateAppVersionResourceOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Resilience Hub application version. @@ -3377,7 +3427,7 @@ extension CreateRecommendationTemplateInput: ClientRuntime.URLPathProvider { } public struct CreateRecommendationTemplateInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? /// The name of the Amazon S3 bucket that will contain the recommendation template. @@ -3813,7 +3863,7 @@ extension DeleteAppAssessmentInput: ClientRuntime.URLPathProvider { } public struct DeleteAppAssessmentInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? /// Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. You should not reuse the same client token for other API requests. @@ -3864,7 +3914,7 @@ extension DeleteAppAssessmentOutput: ClientRuntime.HttpResponseBinding { } public struct DeleteAppAssessmentOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? /// The current status of the assessment for the resiliency policy. @@ -3945,7 +3995,7 @@ extension DeleteAppInput: ClientRuntime.URLPathProvider { } public struct DeleteAppInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. You should not reuse the same client token for other API requests. @@ -4025,14 +4075,14 @@ extension DeleteAppInputSourceInput: ClientRuntime.URLPathProvider { } public struct DeleteAppInputSourceInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. You should not reuse the same client token for other API requests. public var clientToken: Swift.String? /// The namespace on your Amazon Elastic Kubernetes Service cluster that you want to delete from the Resilience Hub application. public var eksSourceClusterNamespace: ResiliencehubClientTypes.EksSourceClusterNamespace? - /// The Amazon Resource Name (ARN) of the imported resource you want to remove from the Resilience Hub application. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// The Amazon Resource Name (ARN) of the imported resource you want to remove from the Resilience Hub application. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var sourceArn: Swift.String? /// The imported Terraform s3 state file you want to remove from the Resilience Hub application. public var terraformSource: ResiliencehubClientTypes.TerraformSource? @@ -4100,7 +4150,7 @@ extension DeleteAppInputSourceOutput: ClientRuntime.HttpResponseBinding { } public struct DeleteAppInputSourceOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var appArn: Swift.String? /// Name of the input source from where the application resource is imported from. public var appInputSource: ResiliencehubClientTypes.AppInputSource? @@ -4164,7 +4214,7 @@ extension DeleteAppOutput: ClientRuntime.HttpResponseBinding { } public struct DeleteAppOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? @@ -4235,7 +4285,7 @@ extension DeleteAppVersionAppComponentInput: ClientRuntime.URLPathProvider { } public struct DeleteAppVersionAppComponentInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. You should not reuse the same client token for other API requests. @@ -4297,7 +4347,7 @@ extension DeleteAppVersionAppComponentOutput: ClientRuntime.HttpResponseBinding } public struct DeleteAppVersionAppComponentOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// List of Application Components that belong to this resource. @@ -4402,7 +4452,7 @@ extension DeleteAppVersionResourceInput: ClientRuntime.URLPathProvider { } public struct DeleteAppVersionResourceInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Amazon Web Services account that owns the physical resource. @@ -4495,7 +4545,7 @@ extension DeleteAppVersionResourceOutput: ClientRuntime.HttpResponseBinding { } public struct DeleteAppVersionResourceOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Resilience Hub application version. @@ -4709,7 +4759,7 @@ extension DeleteResiliencyPolicyInput: ClientRuntime.URLPathProvider { public struct DeleteResiliencyPolicyInput: Swift.Equatable { /// Used for an idempotency token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. You should not reuse the same client token for other API requests. public var clientToken: Swift.String? - /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var policyArn: Swift.String? @@ -4756,7 +4806,7 @@ extension DeleteResiliencyPolicyOutput: ClientRuntime.HttpResponseBinding { } public struct DeleteResiliencyPolicyOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var policyArn: Swift.String? @@ -4820,7 +4870,7 @@ extension DescribeAppAssessmentInput: ClientRuntime.URLPathProvider { } public struct DescribeAppAssessmentInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? @@ -4924,7 +4974,7 @@ extension DescribeAppInput: ClientRuntime.URLPathProvider { } public struct DescribeAppInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? @@ -5036,7 +5086,7 @@ extension DescribeAppVersionAppComponentInput: ClientRuntime.URLPathProvider { } public struct DescribeAppVersionAppComponentInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Resilience Hub application version. @@ -5099,7 +5149,7 @@ extension DescribeAppVersionAppComponentOutput: ClientRuntime.HttpResponseBindin } public struct DescribeAppVersionAppComponentOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// List of Application Components that belong to this resource. @@ -5184,7 +5234,7 @@ extension DescribeAppVersionInput: ClientRuntime.URLPathProvider { } public struct DescribeAppVersionInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Resilience Hub application version. @@ -5240,7 +5290,7 @@ extension DescribeAppVersionOutput: ClientRuntime.HttpResponseBinding { public struct DescribeAppVersionOutput: Swift.Equatable { /// Additional configuration parameters for an Resilience Hub application. If you want to implement additionalInfo through the Resilience Hub console rather than using an API call, see [Configure the application configuration parameters](https://docs.aws.amazon.com/resilience-hub/latest/userguide/app-config-param.html). Currently, this parameter supports only failover region and account. public var additionalInfo: [Swift.String:[Swift.String]]? - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Resilience Hub application version. @@ -5358,7 +5408,7 @@ extension DescribeAppVersionResourceInput: ClientRuntime.URLPathProvider { } public struct DescribeAppVersionResourceInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Resilience Hub application version. @@ -5452,7 +5502,7 @@ extension DescribeAppVersionResourceOutput: ClientRuntime.HttpResponseBinding { } public struct DescribeAppVersionResourceOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Resilience Hub application version. @@ -5541,7 +5591,7 @@ extension DescribeAppVersionResourcesResolutionStatusInput: ClientRuntime.URLPat } public struct DescribeAppVersionResourcesResolutionStatusInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The version of the application. @@ -5607,7 +5657,7 @@ extension DescribeAppVersionResourcesResolutionStatusOutput: ClientRuntime.HttpR } public struct DescribeAppVersionResourcesResolutionStatusOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The version of the application. @@ -5709,7 +5759,7 @@ extension DescribeAppVersionTemplateInput: ClientRuntime.URLPathProvider { } public struct DescribeAppVersionTemplateInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The version of the application. @@ -5763,7 +5813,7 @@ extension DescribeAppVersionTemplateOutput: ClientRuntime.HttpResponseBinding { } public struct DescribeAppVersionTemplateOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// A JSON string that provides information about your application structure. To learn more about the appTemplateBody template, see the sample template provided in the Examples section. The appTemplateBody JSON string has the following structure: @@ -5918,7 +5968,7 @@ extension DescribeDraftAppVersionResourcesImportStatusInput: ClientRuntime.URLPa } public struct DescribeDraftAppVersionResourcesImportStatusInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? @@ -5967,7 +6017,7 @@ extension DescribeDraftAppVersionResourcesImportStatusOutput: ClientRuntime.Http } public struct DescribeDraftAppVersionResourcesImportStatusOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The version of the application. @@ -5978,7 +6028,7 @@ public struct DescribeDraftAppVersionResourcesImportStatusOutput: Swift.Equatabl /// Status of the action. /// This member is required. public var status: ResiliencehubClientTypes.ResourceImportStatusType? - /// The timestamp for when the status last changed. + /// The time when the status last changed. /// This member is required. public var statusChangeTime: ClientRuntime.Date? @@ -6065,7 +6115,7 @@ extension DescribeResiliencyPolicyInput: ClientRuntime.URLPathProvider { } public struct DescribeResiliencyPolicyInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var policyArn: Swift.String? @@ -6446,7 +6496,7 @@ extension ResiliencehubClientTypes.EksSource: Swift.Codable { extension ResiliencehubClientTypes { /// The input source of the Amazon Elastic Kubernetes Service cluster. public struct EksSource: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Amazon Elastic Kubernetes Service cluster. The format for this ARN is: arn:aws:eks:region:account-id:cluster/cluster-name. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Amazon Elastic Kubernetes Service cluster. The format for this ARN is: arn:aws:eks:region:account-id:cluster/cluster-name. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var eksClusterArn: Swift.String? /// The list of namespaces located on your Amazon Elastic Kubernetes Service cluster. @@ -6493,7 +6543,7 @@ extension ResiliencehubClientTypes.EksSourceClusterNamespace: Swift.Codable { extension ResiliencehubClientTypes { /// The input source of the namespace that is located on your Amazon Elastic Kubernetes Service cluster. public struct EksSourceClusterNamespace: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Amazon Elastic Kubernetes Service cluster. The format for this ARN is: arn:aws:eks:region:account-id:cluster/cluster-name. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Amazon Elastic Kubernetes Service cluster. The format for this ARN is: arn:aws:eks:region:account-id:cluster/cluster-name. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var eksClusterArn: Swift.String? /// Name of the namespace that is located on your Amazon Elastic Kubernetes Service cluster. @@ -6590,7 +6640,7 @@ extension ResiliencehubClientTypes { /// Unique name to identify an event subscription. /// This member is required. public var name: Swift.String? - /// Amazon Resource Name (ARN) of the Amazon Simple Notification Service topic. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Amazon Simple Notification Service topic. The format for this ARN is: arn:partition:sns:region:account:topic-name. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var snsTopicArn: Swift.String? public init( @@ -6702,10 +6752,10 @@ extension ResiliencehubClientTypes.FailurePolicy: Swift.Codable { extension ResiliencehubClientTypes { /// Defines a failure policy. public struct FailurePolicy: Swift.Equatable { - /// The Recovery Point Objective (RPO), in seconds. + /// Recovery Point Objective (RPO) in seconds. /// This member is required. public var rpoInSecs: Swift.Int - /// The Recovery Time Objective (RTO), in seconds. + /// Recovery Time Objective (RTO) in seconds. /// This member is required. public var rtoInSecs: Swift.Int @@ -6807,7 +6857,7 @@ extension ImportResourcesToDraftAppVersionInput: ClientRuntime.URLPathProvider { } public struct ImportResourcesToDraftAppVersionInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The input sources of the Amazon Elastic Kubernetes Service resources you need to import. @@ -6917,7 +6967,7 @@ extension ImportResourcesToDraftAppVersionOutput: ClientRuntime.HttpResponseBind } public struct ImportResourcesToDraftAppVersionOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The version of the application. @@ -7114,7 +7164,7 @@ extension ListAlarmRecommendationsInput: ClientRuntime.URLPathProvider { } public struct ListAlarmRecommendationsInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? /// Maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. @@ -7261,7 +7311,7 @@ extension ListAppAssessmentComplianceDriftsInput: ClientRuntime.URLPathProvider } public struct ListAppAssessmentComplianceDriftsInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? /// Indicates the maximum number of applications requested. @@ -7429,7 +7479,7 @@ extension ListAppAssessmentsInput: ClientRuntime.URLPathProvider { } public struct ListAppAssessmentsInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var appArn: Swift.String? /// The name for the assessment. public var assessmentName: Swift.String? @@ -7580,7 +7630,7 @@ extension ListAppComponentCompliancesInput: ClientRuntime.URLPathProvider { } public struct ListAppComponentCompliancesInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? /// Maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. @@ -7727,7 +7777,7 @@ extension ListAppComponentRecommendationsInput: ClientRuntime.URLPathProvider { } public struct ListAppComponentRecommendationsInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? /// Maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. @@ -7878,7 +7928,7 @@ extension ListAppInputSourcesInput: ClientRuntime.URLPathProvider { } public struct ListAppInputSourcesInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Resilience Hub application version. @@ -8038,7 +8088,7 @@ extension ListAppVersionAppComponentsInput: ClientRuntime.URLPathProvider { } public struct ListAppVersionAppComponentsInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Version of the Application Component. @@ -8110,7 +8160,7 @@ extension ListAppVersionAppComponentsOutput: ClientRuntime.HttpResponseBinding { } public struct ListAppVersionAppComponentsOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Defines an Application Component. @@ -8220,7 +8270,7 @@ extension ListAppVersionResourceMappingsInput: ClientRuntime.URLPathProvider { } public struct ListAppVersionResourceMappingsInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The version of the application. @@ -8384,7 +8434,7 @@ extension ListAppVersionResourcesInput: ClientRuntime.URLPathProvider { } public struct ListAppVersionResourcesInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The version of the application. @@ -8568,7 +8618,7 @@ extension ListAppVersionsInput: ClientRuntime.URLPathProvider { } public struct ListAppVersionsInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Upper limit of the time range to filter the application versions. @@ -8714,6 +8764,10 @@ extension ListAppsInput: ClientRuntime.QueryItemProvider { let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) items.append(maxResultsQueryItem) } + if let reverseOrder = reverseOrder { + let reverseOrderQueryItem = ClientRuntime.URLQueryItem(name: "reverseOrder".urlPercentEncoding(), value: Swift.String(reverseOrder).urlPercentEncoding()) + items.append(reverseOrderQueryItem) + } if let name = name { let nameQueryItem = ClientRuntime.URLQueryItem(name: "name".urlPercentEncoding(), value: Swift.String(name).urlPercentEncoding()) items.append(nameQueryItem) @@ -8722,6 +8776,14 @@ extension ListAppsInput: ClientRuntime.QueryItemProvider { let appArnQueryItem = ClientRuntime.URLQueryItem(name: "appArn".urlPercentEncoding(), value: Swift.String(appArn).urlPercentEncoding()) items.append(appArnQueryItem) } + if let toLastAssessmentTime = toLastAssessmentTime { + let toLastAssessmentTimeQueryItem = ClientRuntime.URLQueryItem(name: "toLastAssessmentTime".urlPercentEncoding(), value: Swift.String(TimestampFormatter(format: .dateTime).string(from: toLastAssessmentTime)).urlPercentEncoding()) + items.append(toLastAssessmentTimeQueryItem) + } + if let fromLastAssessmentTime = fromLastAssessmentTime { + let fromLastAssessmentTimeQueryItem = ClientRuntime.URLQueryItem(name: "fromLastAssessmentTime".urlPercentEncoding(), value: Swift.String(TimestampFormatter(format: .dateTime).string(from: fromLastAssessmentTime)).urlPercentEncoding()) + items.append(fromLastAssessmentTimeQueryItem) + } return items } } @@ -8734,26 +8796,38 @@ extension ListAppsInput: ClientRuntime.URLPathProvider { } public struct ListAppsInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var appArn: Swift.String? + /// Indicates the lower limit of the range that is used to filter applications based on their last assessment times. + public var fromLastAssessmentTime: ClientRuntime.Date? /// Maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. public var maxResults: Swift.Int? /// The name for the one of the listed applications. public var name: Swift.String? /// Null, or the token from a previous call to get the next set of results. public var nextToken: Swift.String? + /// The application list is sorted based on the values of lastAppComplianceEvaluationTime field. By default, application list is sorted in ascending order. To sort the appliation list in descending order, set this field to True. + public var reverseOrder: Swift.Bool? + /// Indicates the upper limit of the range that is used to filter the applications based on their last assessment times. + public var toLastAssessmentTime: ClientRuntime.Date? public init( appArn: Swift.String? = nil, + fromLastAssessmentTime: ClientRuntime.Date? = nil, maxResults: Swift.Int? = nil, name: Swift.String? = nil, - nextToken: Swift.String? = nil + nextToken: Swift.String? = nil, + reverseOrder: Swift.Bool? = nil, + toLastAssessmentTime: ClientRuntime.Date? = nil ) { self.appArn = appArn + self.fromLastAssessmentTime = fromLastAssessmentTime self.maxResults = maxResults self.name = name self.nextToken = nextToken + self.reverseOrder = reverseOrder + self.toLastAssessmentTime = toLastAssessmentTime } } @@ -8888,7 +8962,7 @@ extension ListRecommendationTemplatesInput: ClientRuntime.URLPathProvider { } public struct ListRecommendationTemplatesInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? /// Maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. @@ -9165,7 +9239,7 @@ extension ListSopRecommendationsInput: ClientRuntime.URLPathProvider { } public struct ListSopRecommendationsInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? /// Maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. @@ -9536,7 +9610,7 @@ extension ListTestRecommendationsInput: ClientRuntime.URLPathProvider { } public struct ListTestRecommendationsInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? /// Maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. @@ -9692,7 +9766,7 @@ extension ListUnsupportedAppVersionResourcesInput: ClientRuntime.URLPathProvider } public struct ListUnsupportedAppVersionResourcesInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The version of the application. @@ -10172,7 +10246,7 @@ extension ResiliencehubClientTypes { public var physicalResourceId: ResiliencehubClientTypes.PhysicalResourceId? /// The name of the resource. public var resourceName: Swift.String? - /// The type of resource. + /// Type of resource. /// This member is required. public var resourceType: Swift.String? /// Type of input source. @@ -10346,7 +10420,7 @@ extension PublishAppVersionInput: ClientRuntime.URLPathProvider { } public struct PublishAppVersionInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Name of the application version. @@ -10401,7 +10475,7 @@ extension PublishAppVersionOutput: ClientRuntime.HttpResponseBinding { } public struct PublishAppVersionOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The version of the application. @@ -10493,7 +10567,7 @@ extension PutDraftAppVersionTemplateInput: ClientRuntime.URLPathProvider { } public struct PutDraftAppVersionTemplateInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// A JSON string that provides information about your application structure. To learn more about the appTemplateBody template, see the sample template provided in the Examples section. The appTemplateBody JSON string has the following structure: @@ -10619,7 +10693,7 @@ extension PutDraftAppVersionTemplateOutput: ClientRuntime.HttpResponseBinding { } public struct PutDraftAppVersionTemplateOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var appArn: Swift.String? /// The version of the application. public var appVersion: Swift.String? @@ -11007,9 +11081,9 @@ extension ResiliencehubClientTypes.RecommendationTemplate: Swift.CustomDebugStri extension ResiliencehubClientTypes { /// Defines a recommendation template created with the [CreateRecommendationTemplate] action. public struct RecommendationTemplate: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var appArn: Swift.String? - /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the assessment. The format for this ARN is: arn:partition:resiliencehub:region:account:app-assessment/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var assessmentArn: Swift.String? /// The end time for the action. @@ -11178,7 +11252,7 @@ extension RemoveDraftAppVersionResourceMappingsInput: ClientRuntime.URLPathProvi } public struct RemoveDraftAppVersionResourceMappingsInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The names of the registered applications you want to remove from the resource mappings. @@ -11323,7 +11397,7 @@ extension RemoveDraftAppVersionResourceMappingsOutput: ClientRuntime.HttpRespons } public struct RemoveDraftAppVersionResourceMappingsOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var appArn: Swift.String? /// The version of the application. public var appVersion: Swift.String? @@ -11506,9 +11580,9 @@ extension ResiliencehubClientTypes.ResiliencyPolicy: Swift.CustomDebugStringConv } extension ResiliencehubClientTypes { - /// Defines a resiliency policy. + /// Defines a resiliency policy. Resilience Hub allows you to provide a value of zero for rtoInSecs and rpoInSecs of your resiliency policy. But, while assessing your application, the lowest possible assessment result is near zero. Hence, if you provide value zero for rtoInSecs and rpoInSecs, the estimated workload RTO and estimated workload RPO result will be near zero and the Compliance status for your application will be set to Policy breached. public struct ResiliencyPolicy: Swift.Equatable { - /// The timestamp for when the resiliency policy was created. + /// Date and time when the resiliency policy was created. public var creationTime: ClientRuntime.Date? /// Specifies a high-level geographical location constraint for where your resilience policy data can be stored. public var dataLocationConstraint: ResiliencehubClientTypes.DataLocationConstraint? @@ -11516,7 +11590,7 @@ extension ResiliencehubClientTypes { public var estimatedCostTier: ResiliencehubClientTypes.EstimatedCostTier? /// The resiliency policy. public var policy: [Swift.String:ResiliencehubClientTypes.FailurePolicy]? - /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var policyArn: Swift.String? /// The description for the policy. public var policyDescription: Swift.String? @@ -11680,7 +11754,7 @@ extension ResolveAppVersionResourcesInput: ClientRuntime.URLPathProvider { } public struct ResolveAppVersionResourcesInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The version of the application. @@ -11736,7 +11810,7 @@ extension ResolveAppVersionResourcesOutput: ClientRuntime.HttpResponseBinding { } public struct ResolveAppVersionResourcesOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The version of the application. @@ -12578,7 +12652,7 @@ extension StartAppAssessmentInput: ClientRuntime.URLPathProvider { } public struct StartAppAssessmentInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// The version of the application. @@ -13369,7 +13443,7 @@ extension UpdateAppInput: ClientRuntime.URLPathProvider { } public struct UpdateAppInput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Assessment execution schedule with 'Daily' or 'Disabled' values. @@ -13382,7 +13456,7 @@ public struct UpdateAppInput: Swift.Equatable { public var eventSubscriptions: [ResiliencehubClientTypes.EventSubscription]? /// Defines the roles and credentials that Resilience Hub would use while creating an application, importing its resources, and running an assessment. public var permissionModel: ResiliencehubClientTypes.PermissionModel? - /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. public var policyArn: Swift.String? public init( @@ -13555,7 +13629,7 @@ extension UpdateAppVersionAppComponentInput: ClientRuntime.URLPathProvider { public struct UpdateAppVersionAppComponentInput: Swift.Equatable { /// Currently, there is no supported additional information for Application Components. public var additionalInfo: [Swift.String:[Swift.String]]? - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Identifier of the Application Component. @@ -13647,7 +13721,7 @@ extension UpdateAppVersionAppComponentOutput: ClientRuntime.HttpResponseBinding } public struct UpdateAppVersionAppComponentOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// List of Application Components that belong to this resource. @@ -13740,7 +13814,7 @@ extension UpdateAppVersionInput: ClientRuntime.URLPathProvider { public struct UpdateAppVersionInput: Swift.Equatable { /// Additional configuration parameters for an Resilience Hub application. If you want to implement additionalInfo through the Resilience Hub console rather than using an API call, see [Configure the application configuration parameters](https://docs.aws.amazon.com/resilience-hub/latest/userguide/app-config-param.html). Currently, this parameter accepts a key-value mapping (in a string format) of only one failover region and one associated account. Key: "failover-regions" Value: "[{"region":"", "accounts":[{"id":""}]}]" public var additionalInfo: [Swift.String:[Swift.String]]? - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? @@ -13809,7 +13883,7 @@ extension UpdateAppVersionOutput: ClientRuntime.HttpResponseBinding { public struct UpdateAppVersionOutput: Swift.Equatable { /// Additional configuration parameters for an Resilience Hub application. If you want to implement additionalInfo through the Resilience Hub console rather than using an API call, see [Configure the application configuration parameters](https://docs.aws.amazon.com/resilience-hub/latest/userguide/app-config-param.html). Currently, this parameter supports only failover region and account. public var additionalInfo: [Swift.String:[Swift.String]]? - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Resilience Hub application version. @@ -13951,7 +14025,7 @@ extension UpdateAppVersionResourceInput: ClientRuntime.URLPathProvider { public struct UpdateAppVersionResourceInput: Swift.Equatable { /// Currently, there is no supported additional information for resources. public var additionalInfo: [Swift.String:[Swift.String]]? - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// List of Application Components that this resource belongs to. If an Application Component is not part of the Resilience Hub application, it will be added. @@ -14091,7 +14165,7 @@ extension UpdateAppVersionResourceOutput: ClientRuntime.HttpResponseBinding { } public struct UpdateAppVersionResourceOutput: Swift.Equatable { - /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var appArn: Swift.String? /// Resilience Hub application version. @@ -14334,7 +14408,7 @@ public struct UpdateResiliencyPolicyInput: Swift.Equatable { public var dataLocationConstraint: ResiliencehubClientTypes.DataLocationConstraint? /// The type of resiliency policy to be created, including the recovery time objective (RTO) and recovery point objective (RPO) in seconds. public var policy: [Swift.String:ResiliencehubClientTypes.FailurePolicy]? - /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the AWS General Reference guide. + /// Amazon Resource Name (ARN) of the resiliency policy. The format for this ARN is: arn:partition:resiliencehub:region:account:resiliency-policy/policy-id. For more information about ARNs, see [ Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the Amazon Web Services General Reference guide. /// This member is required. public var policyArn: Swift.String? /// The description for the policy. diff --git a/Sources/Services/AWSRoute53/EndpointResolver.swift b/Sources/Services/AWSRoute53/EndpointResolver.swift index 8c49c99efd0..c5601f97ce1 100644 --- a/Sources/Services/AWSRoute53/EndpointResolver.swift +++ b/Sources/Services/AWSRoute53/EndpointResolver.swift @@ -34,7 +34,7 @@ public protocol EndpointResolver { public struct DefaultEndpointResolver: EndpointResolver { private let engine: AWSClientRuntime.AWSEndpointsRuleEngine - private let ruleSet = "{\"version\":\"1.0\",\"parameters\":{\"Region\":{\"builtIn\":\"AWS::Region\",\"required\":false,\"documentation\":\"The AWS region used to dispatch the request.\",\"type\":\"String\"},\"UseDualStack\":{\"builtIn\":\"AWS::UseDualStack\",\"required\":true,\"default\":false,\"documentation\":\"When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.\",\"type\":\"Boolean\"},\"UseFIPS\":{\"builtIn\":\"AWS::UseFIPS\",\"required\":true,\"default\":false,\"documentation\":\"When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.\",\"type\":\"Boolean\"},\"Endpoint\":{\"builtIn\":\"SDK::Endpoint\",\"required\":false,\"documentation\":\"Override the endpoint used to send this request\",\"type\":\"String\"}},\"rules\":[{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Endpoint\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"error\":\"Invalid Configuration: FIPS and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"error\":\"Invalid Configuration: Dualstack and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[],\"endpoint\":{\"url\":{\"ref\":\"Endpoint\"},\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Region\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"aws.partition\",\"argv\":[{\"ref\":\"Region\"}],\"assign\":\"PartitionResult\"}],\"rules\":[{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"us-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53-fips.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"us-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-cn\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.amazonaws.com.cn\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"cn-northwest-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-us-gov\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.us-gov.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"us-gov-west-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-us-gov\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.us-gov.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"us-gov-west-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-iso\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.c2s.ic.gov\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"us-iso-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-iso-b\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.sc2s.sgov.gov\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"us-isob-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]}]},{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://route53-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS and DualStack are enabled, but this partition does not support one or both\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]},true]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://route53-fips.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS is enabled but this partition does not support FIPS\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://route53.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"DualStack is enabled but this partition does not support DualStack\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[],\"endpoint\":{\"url\":\"https://route53.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"Invalid Configuration: Missing Region\",\"type\":\"error\"}]}" + private let ruleSet = "{\"version\":\"1.0\",\"parameters\":{\"Region\":{\"builtIn\":\"AWS::Region\",\"required\":false,\"documentation\":\"The AWS region used to dispatch the request.\",\"type\":\"String\"},\"UseDualStack\":{\"builtIn\":\"AWS::UseDualStack\",\"required\":true,\"default\":false,\"documentation\":\"When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.\",\"type\":\"Boolean\"},\"UseFIPS\":{\"builtIn\":\"AWS::UseFIPS\",\"required\":true,\"default\":false,\"documentation\":\"When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.\",\"type\":\"Boolean\"},\"Endpoint\":{\"builtIn\":\"SDK::Endpoint\",\"required\":false,\"documentation\":\"Override the endpoint used to send this request\",\"type\":\"String\"}},\"rules\":[{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Endpoint\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"error\":\"Invalid Configuration: FIPS and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"error\":\"Invalid Configuration: Dualstack and custom endpoint are not supported\",\"type\":\"error\"},{\"conditions\":[],\"endpoint\":{\"url\":{\"ref\":\"Endpoint\"},\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"isSet\",\"argv\":[{\"ref\":\"Region\"}]}],\"rules\":[{\"conditions\":[{\"fn\":\"aws.partition\",\"argv\":[{\"ref\":\"Region\"}],\"assign\":\"PartitionResult\"}],\"rules\":[{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"us-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53-fips.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"us-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-cn\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.amazonaws.com.cn\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"cn-northwest-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-us-gov\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.us-gov.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"us-gov-west-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-us-gov\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.us-gov.amazonaws.com\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"us-gov-west-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-iso\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.c2s.ic.gov\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"us-iso-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-iso-b\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.sc2s.sgov.gov\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"us-isob-east-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-iso-e\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.cloud.adc-e.uk\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"eu-isoe-west-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"name\"]},\"aws-iso-f\"]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},false]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},false]}],\"endpoint\":{\"url\":\"https://route53.csp.hci.ic.gov\",\"properties\":{\"authSchemes\":[{\"name\":\"sigv4\",\"signingName\":\"route53\",\"signingRegion\":\"us-isof-south-1\"}]},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]},{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]}]},{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://route53-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS and DualStack are enabled, but this partition does not support one or both\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseFIPS\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]},true]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://route53-fips.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"FIPS is enabled but this partition does not support FIPS\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[{\"ref\":\"UseDualStack\"},true]}],\"rules\":[{\"conditions\":[{\"fn\":\"booleanEquals\",\"argv\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsDualStack\"]}]}],\"rules\":[{\"conditions\":[],\"endpoint\":{\"url\":\"https://route53.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"DualStack is enabled but this partition does not support DualStack\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[],\"endpoint\":{\"url\":\"https://route53.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"}],\"type\":\"tree\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"Invalid Configuration: Missing Region\",\"type\":\"error\"}]}" public init() throws { engine = try AWSClientRuntime.AWSEndpointsRuleEngine(ruleSet: ruleSet) diff --git a/Sources/Services/AWSS3Outposts/models/Models.swift b/Sources/Services/AWSS3Outposts/models/Models.swift index 92fef5ef071..93a342ebaaa 100644 --- a/Sources/Services/AWSS3Outposts/models/Models.swift +++ b/Sources/Services/AWSS3Outposts/models/Models.swift @@ -1100,6 +1100,7 @@ extension S3OutpostsClientTypes.Outpost: Swift.Codable { case outpostArn = "OutpostArn" case outpostId = "OutpostId" case ownerId = "OwnerId" + case s3OutpostArn = "S3OutpostArn" } public func encode(to encoder: Swift.Encoder) throws { @@ -1116,12 +1117,17 @@ extension S3OutpostsClientTypes.Outpost: Swift.Codable { if let ownerId = self.ownerId { try encodeContainer.encode(ownerId, forKey: .ownerId) } + if let s3OutpostArn = self.s3OutpostArn { + try encodeContainer.encode(s3OutpostArn, forKey: .s3OutpostArn) + } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let outpostArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .outpostArn) outpostArn = outpostArnDecoded + let s3OutpostArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .s3OutpostArn) + s3OutpostArn = s3OutpostArnDecoded let outpostIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .outpostId) outpostId = outpostIdDecoded let ownerIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ownerId) @@ -1142,18 +1148,22 @@ extension S3OutpostsClientTypes { public var outpostId: Swift.String? /// Returns the Amazon Web Services account ID of the outpost owner. Useful for comparing owned versus shared outposts. public var ownerId: Swift.String? + /// Specifies the unique S3 on Outposts ARN for use with Resource Access Manager (RAM). + public var s3OutpostArn: Swift.String? public init( capacityInBytes: Swift.Int = 0, outpostArn: Swift.String? = nil, outpostId: Swift.String? = nil, - ownerId: Swift.String? = nil + ownerId: Swift.String? = nil, + s3OutpostArn: Swift.String? = nil ) { self.capacityInBytes = capacityInBytes self.outpostArn = outpostArn self.outpostId = outpostId self.ownerId = ownerId + self.s3OutpostArn = s3OutpostArn } } diff --git a/Sources/Services/AWSSNS/SNSClient.swift b/Sources/Services/AWSSNS/SNSClient.swift index 63bb719d460..5181dfeb5ef 100644 --- a/Sources/Services/AWSSNS/SNSClient.swift +++ b/Sources/Services/AWSSNS/SNSClient.swift @@ -171,6 +171,7 @@ extension SNSClient: SNSClientProtocol { /// - `InternalErrorException` : Indicates an internal service error. /// - `InvalidParameterException` : Indicates that a request parameter does not comply with the associated constraints. /// - `NotFoundException` : Indicates that the requested resource does not exist. + /// - `ReplayLimitExceededException` : Indicates that the request parameter has exceeded the maximum number of concurrent message replays. /// - `SubscriptionLimitExceededException` : Indicates that the customer already owns the maximum allowed number of subscriptions. public func confirmSubscription(input: ConfirmSubscriptionInput) async throws -> ConfirmSubscriptionOutput { @@ -571,6 +572,7 @@ extension SNSClient: SNSClientProtocol { /// - `ConcurrentAccessException` : Can't perform multiple operations on a tag simultaneously. Perform the operations sequentially. /// - `InternalErrorException` : Indicates an internal service error. /// - `InvalidParameterException` : Indicates that a request parameter does not comply with the associated constraints. + /// - `InvalidStateException` : Indicates that the specified state is not a valid state for an event source. /// - `NotFoundException` : Indicates that the requested resource does not exist. /// - `StaleTagException` : A tag has been added to a resource with the same ARN as a deleted resource. Wait a short while and then retry the operation. /// - `TagPolicyException` : The request doesn't comply with the IAM tag policy. Correct your request and then retry it. @@ -1424,8 +1426,8 @@ extension SNSClient: SNSClientProtocol { /// - `InvalidParameterValueException` : Indicates that a request parameter does not comply with the associated constraints. /// - `InvalidSecurityException` : The credential signature isn't valid. You must use an HTTPS endpoint and sign your request using Signature Version 4. /// - `KMSAccessDeniedException` : The ciphertext references a key that doesn't exist or that you don't have access to. - /// - `KMSDisabledException` : The request was rejected because the specified customer master key (CMK) isn't enabled. - /// - `KMSInvalidStateException` : The request was rejected because the state of the specified resource isn't valid for this request. For more information, see [How Key State Affects Use of a Customer Master Key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. + /// - `KMSDisabledException` : The request was rejected because the specified Amazon Web Services KMS key isn't enabled. + /// - `KMSInvalidStateException` : The request was rejected because the state of the specified resource isn't valid for this request. For more information, see [Key states of Amazon Web Services KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. /// - `KMSNotFoundException` : The request was rejected because the specified entity or resource can't be found. /// - `KMSOptInRequired` : The Amazon Web Services access key ID needs a subscription for the service. /// - `KMSThrottlingException` : The request was denied due to request throttling. For more information about throttling, see [Limits](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#requests-per-second) in the Key Management Service Developer Guide. @@ -1486,8 +1488,8 @@ extension SNSClient: SNSClientProtocol { /// - `InvalidParameterValueException` : Indicates that a request parameter does not comply with the associated constraints. /// - `InvalidSecurityException` : The credential signature isn't valid. You must use an HTTPS endpoint and sign your request using Signature Version 4. /// - `KMSAccessDeniedException` : The ciphertext references a key that doesn't exist or that you don't have access to. - /// - `KMSDisabledException` : The request was rejected because the specified customer master key (CMK) isn't enabled. - /// - `KMSInvalidStateException` : The request was rejected because the state of the specified resource isn't valid for this request. For more information, see [How Key State Affects Use of a Customer Master Key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. + /// - `KMSDisabledException` : The request was rejected because the specified Amazon Web Services KMS key isn't enabled. + /// - `KMSInvalidStateException` : The request was rejected because the state of the specified resource isn't valid for this request. For more information, see [Key states of Amazon Web Services KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. /// - `KMSNotFoundException` : The request was rejected because the specified entity or resource can't be found. /// - `KMSOptInRequired` : The Amazon Web Services access key ID needs a subscription for the service. /// - `KMSThrottlingException` : The request was denied due to request throttling. For more information about throttling, see [Limits](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#requests-per-second) in the Key Management Service Developer Guide. @@ -1779,6 +1781,7 @@ extension SNSClient: SNSClientProtocol { /// - `InternalErrorException` : Indicates an internal service error. /// - `InvalidParameterException` : Indicates that a request parameter does not comply with the associated constraints. /// - `NotFoundException` : Indicates that the requested resource does not exist. + /// - `ReplayLimitExceededException` : Indicates that the request parameter has exceeded the maximum number of concurrent message replays. public func setSubscriptionAttributes(input: SetSubscriptionAttributesInput) async throws -> SetSubscriptionAttributesOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1861,7 +1864,7 @@ extension SNSClient: SNSClientProtocol { return result } - /// Subscribes an endpoint to an Amazon SNS topic. If the endpoint type is HTTP/S or email, or if the endpoint and the topic are not in the same Amazon Web Services account, the endpoint owner must run the ConfirmSubscription action to confirm the subscription. You call the ConfirmSubscription action with the token from the subscription response. Confirmation tokens are valid for three days. This action is throttled at 100 transactions per second (TPS). + /// Subscribes an endpoint to an Amazon SNS topic. If the endpoint type is HTTP/S or email, or if the endpoint and the topic are not in the same Amazon Web Services account, the endpoint owner must run the ConfirmSubscription action to confirm the subscription. You call the ConfirmSubscription action with the token from the subscription response. Confirmation tokens are valid for two days. This action is throttled at 100 transactions per second (TPS). /// /// - Parameter SubscribeInput : Input for Subscribe action. /// @@ -1876,6 +1879,7 @@ extension SNSClient: SNSClientProtocol { /// - `InvalidParameterException` : Indicates that a request parameter does not comply with the associated constraints. /// - `InvalidSecurityException` : The credential signature isn't valid. You must use an HTTPS endpoint and sign your request using Signature Version 4. /// - `NotFoundException` : Indicates that the requested resource does not exist. + /// - `ReplayLimitExceededException` : Indicates that the request parameter has exceeded the maximum number of concurrent message replays. /// - `SubscriptionLimitExceededException` : Indicates that the customer already owns the maximum allowed number of subscriptions. public func subscribe(input: SubscribeInput) async throws -> SubscribeOutput { diff --git a/Sources/Services/AWSSNS/SNSClientProtocol.swift b/Sources/Services/AWSSNS/SNSClientProtocol.swift index 7bc2c71a2a5..7af9fe9dcaa 100644 --- a/Sources/Services/AWSSNS/SNSClientProtocol.swift +++ b/Sources/Services/AWSSNS/SNSClientProtocol.swift @@ -46,6 +46,7 @@ public protocol SNSClientProtocol { /// - `InternalErrorException` : Indicates an internal service error. /// - `InvalidParameterException` : Indicates that a request parameter does not comply with the associated constraints. /// - `NotFoundException` : Indicates that the requested resource does not exist. + /// - `ReplayLimitExceededException` : Indicates that the request parameter has exceeded the maximum number of concurrent message replays. /// - `SubscriptionLimitExceededException` : Indicates that the customer already owns the maximum allowed number of subscriptions. func confirmSubscription(input: ConfirmSubscriptionInput) async throws -> ConfirmSubscriptionOutput /// Creates a platform application object for one of the supported push notification services, such as APNS and GCM (Firebase Cloud Messaging), to which devices and mobile apps may register. You must specify PlatformPrincipal and PlatformCredential attributes when using the CreatePlatformApplication action. PlatformPrincipal and PlatformCredential are received from the notification service. @@ -182,6 +183,7 @@ public protocol SNSClientProtocol { /// - `ConcurrentAccessException` : Can't perform multiple operations on a tag simultaneously. Perform the operations sequentially. /// - `InternalErrorException` : Indicates an internal service error. /// - `InvalidParameterException` : Indicates that a request parameter does not comply with the associated constraints. + /// - `InvalidStateException` : Indicates that the specified state is not a valid state for an event source. /// - `NotFoundException` : Indicates that the requested resource does not exist. /// - `StaleTagException` : A tag has been added to a resource with the same ARN as a deleted resource. Wait a short while and then retry the operation. /// - `TagPolicyException` : The request doesn't comply with the IAM tag policy. Correct your request and then retry it. @@ -441,8 +443,8 @@ public protocol SNSClientProtocol { /// - `InvalidParameterValueException` : Indicates that a request parameter does not comply with the associated constraints. /// - `InvalidSecurityException` : The credential signature isn't valid. You must use an HTTPS endpoint and sign your request using Signature Version 4. /// - `KMSAccessDeniedException` : The ciphertext references a key that doesn't exist or that you don't have access to. - /// - `KMSDisabledException` : The request was rejected because the specified customer master key (CMK) isn't enabled. - /// - `KMSInvalidStateException` : The request was rejected because the state of the specified resource isn't valid for this request. For more information, see [How Key State Affects Use of a Customer Master Key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. + /// - `KMSDisabledException` : The request was rejected because the specified Amazon Web Services KMS key isn't enabled. + /// - `KMSInvalidStateException` : The request was rejected because the state of the specified resource isn't valid for this request. For more information, see [Key states of Amazon Web Services KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. /// - `KMSNotFoundException` : The request was rejected because the specified entity or resource can't be found. /// - `KMSOptInRequired` : The Amazon Web Services access key ID needs a subscription for the service. /// - `KMSThrottlingException` : The request was denied due to request throttling. For more information about throttling, see [Limits](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#requests-per-second) in the Key Management Service Developer Guide. @@ -470,8 +472,8 @@ public protocol SNSClientProtocol { /// - `InvalidParameterValueException` : Indicates that a request parameter does not comply with the associated constraints. /// - `InvalidSecurityException` : The credential signature isn't valid. You must use an HTTPS endpoint and sign your request using Signature Version 4. /// - `KMSAccessDeniedException` : The ciphertext references a key that doesn't exist or that you don't have access to. - /// - `KMSDisabledException` : The request was rejected because the specified customer master key (CMK) isn't enabled. - /// - `KMSInvalidStateException` : The request was rejected because the state of the specified resource isn't valid for this request. For more information, see [How Key State Affects Use of a Customer Master Key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. + /// - `KMSDisabledException` : The request was rejected because the specified Amazon Web Services KMS key isn't enabled. + /// - `KMSInvalidStateException` : The request was rejected because the state of the specified resource isn't valid for this request. For more information, see [Key states of Amazon Web Services KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. /// - `KMSNotFoundException` : The request was rejected because the specified entity or resource can't be found. /// - `KMSOptInRequired` : The Amazon Web Services access key ID needs a subscription for the service. /// - `KMSThrottlingException` : The request was denied due to request throttling. For more information about throttling, see [Limits](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#requests-per-second) in the Key Management Service Developer Guide. @@ -565,6 +567,7 @@ public protocol SNSClientProtocol { /// - `InternalErrorException` : Indicates an internal service error. /// - `InvalidParameterException` : Indicates that a request parameter does not comply with the associated constraints. /// - `NotFoundException` : Indicates that the requested resource does not exist. + /// - `ReplayLimitExceededException` : Indicates that the request parameter has exceeded the maximum number of concurrent message replays. func setSubscriptionAttributes(input: SetSubscriptionAttributesInput) async throws -> SetSubscriptionAttributesOutput /// Allows a topic owner to set an attribute of the topic to a new value. To remove the ability to change topic permissions, you must deny permissions to the AddPermission, RemovePermission, and SetTopicAttributes actions in your IAM policy. /// @@ -581,7 +584,7 @@ public protocol SNSClientProtocol { /// - `InvalidSecurityException` : The credential signature isn't valid. You must use an HTTPS endpoint and sign your request using Signature Version 4. /// - `NotFoundException` : Indicates that the requested resource does not exist. func setTopicAttributes(input: SetTopicAttributesInput) async throws -> SetTopicAttributesOutput - /// Subscribes an endpoint to an Amazon SNS topic. If the endpoint type is HTTP/S or email, or if the endpoint and the topic are not in the same Amazon Web Services account, the endpoint owner must run the ConfirmSubscription action to confirm the subscription. You call the ConfirmSubscription action with the token from the subscription response. Confirmation tokens are valid for three days. This action is throttled at 100 transactions per second (TPS). + /// Subscribes an endpoint to an Amazon SNS topic. If the endpoint type is HTTP/S or email, or if the endpoint and the topic are not in the same Amazon Web Services account, the endpoint owner must run the ConfirmSubscription action to confirm the subscription. You call the ConfirmSubscription action with the token from the subscription response. Confirmation tokens are valid for two days. This action is throttled at 100 transactions per second (TPS). /// /// - Parameter SubscribeInput : Input for Subscribe action. /// @@ -596,6 +599,7 @@ public protocol SNSClientProtocol { /// - `InvalidParameterException` : Indicates that a request parameter does not comply with the associated constraints. /// - `InvalidSecurityException` : The credential signature isn't valid. You must use an HTTPS endpoint and sign your request using Signature Version 4. /// - `NotFoundException` : Indicates that the requested resource does not exist. + /// - `ReplayLimitExceededException` : Indicates that the request parameter has exceeded the maximum number of concurrent message replays. /// - `SubscriptionLimitExceededException` : Indicates that the customer already owns the maximum allowed number of subscriptions. func subscribe(input: SubscribeInput) async throws -> SubscribeOutput /// Add tags to the specified Amazon SNS topic. For an overview, see [Amazon SNS Tags](https://docs.aws.amazon.com/sns/latest/dg/sns-tags.html) in the Amazon SNS Developer Guide. When you use topic tags, keep the following guidelines in mind: diff --git a/Sources/Services/AWSSNS/models/Models.swift b/Sources/Services/AWSSNS/models/Models.swift index 1ab1ce67b37..aa9ba7ecf1f 100644 --- a/Sources/Services/AWSSNS/models/Models.swift +++ b/Sources/Services/AWSSNS/models/Models.swift @@ -670,6 +670,7 @@ enum ConfirmSubscriptionOutputError: ClientRuntime.HttpResponseErrorBinding { case "InternalError": return try await InternalErrorException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidParameter": return try await InvalidParameterException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "NotFound": return try await NotFoundException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "ReplayLimitExceeded": return try await ReplayLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "SubscriptionLimitExceeded": return try await SubscriptionLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } @@ -1139,7 +1140,9 @@ public struct CreateTopicInput: Swift.Equatable { /// /// The following attributes apply only to [FIFO topics](https://docs.aws.amazon.com/sns/latest/dg/sns-fifo-topics.html): /// - /// * FifoTopic – When this is set to true, a FIFO topic is created. + /// * ArchivePolicy – Adds or updates an inline policy document to archive messages stored in the specified Amazon SNS topic. + /// + /// * BeginningArchiveTime – The earliest starting point at which a message in the topic’s archive can be replayed from. This point in time is based on the configured message retention period set by the topic’s message archiving policy. /// /// * ContentBasedDeduplication – Enables content-based deduplication for FIFO topics. /// @@ -1564,6 +1567,7 @@ enum DeleteTopicOutputError: ClientRuntime.HttpResponseErrorBinding { case "ConcurrentAccess": return try await ConcurrentAccessException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InternalError": return try await InternalErrorException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidParameter": return try await InvalidParameterException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "InvalidState": return try await InvalidStateException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "NotFound": return try await NotFoundException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "StaleTag": return try await StaleTagException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "TagPolicy": return try await TagPolicyException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) @@ -2978,6 +2982,60 @@ extension InvalidSecurityExceptionBody: Swift.Decodable { } } +extension InvalidStateException { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { + let output: AWSClientRuntime.ErrorResponseContainer = try responseDecoder.decode(responseBody: data) + self.properties.message = output.error.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// Indicates that the specified state is not a valid state for an event source. +public struct InvalidStateException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "InvalidState" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct InvalidStateExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension InvalidStateExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + extension KMSAccessDeniedException { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { @@ -3046,7 +3104,7 @@ extension KMSDisabledException { } } -/// The request was rejected because the specified customer master key (CMK) isn't enabled. +/// The request was rejected because the specified Amazon Web Services KMS key isn't enabled. public struct KMSDisabledException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { public struct Properties { @@ -3100,7 +3158,7 @@ extension KMSInvalidStateException { } } -/// The request was rejected because the state of the specified resource isn't valid for this request. For more information, see [How Key State Affects Use of a Customer Master Key](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. +/// The request was rejected because the state of the specified resource isn't valid for this request. For more information, see [Key states of Amazon Web Services KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. public struct KMSInvalidStateException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { public struct Properties { @@ -5903,6 +5961,60 @@ enum RemovePermissionOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension ReplayLimitExceededException { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { + let output: AWSClientRuntime.ErrorResponseContainer = try responseDecoder.decode(responseBody: data) + self.properties.message = output.error.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// Indicates that the request parameter has exceeded the maximum number of concurrent message replays. +public struct ReplayLimitExceededException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ReplayLimitExceeded" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct ReplayLimitExceededExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension ReplayLimitExceededExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + extension ResourceNotFoundException { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { @@ -6587,6 +6699,7 @@ enum SetSubscriptionAttributesOutputError: ClientRuntime.HttpResponseErrorBindin case "InternalError": return try await InternalErrorException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidParameter": return try await InvalidParameterException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "NotFound": return try await NotFoundException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "ReplayLimitExceeded": return try await ReplayLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } } @@ -6891,6 +7004,21 @@ public struct SubscribeInput: Swift.Equatable { /// /// /// Specifying a valid ARN for this attribute is required for Kinesis Data Firehose delivery stream subscriptions. For more information, see [Fanout to Kinesis Data Firehose delivery streams](https://docs.aws.amazon.com/sns/latest/dg/sns-firehose-as-subscriber.html) in the Amazon SNS Developer Guide. + /// + /// + /// The following attributes apply only to [FIFO topics](https://docs.aws.amazon.com/sns/latest/dg/sns-fifo-topics.html): + /// + /// * ReplayPolicy – Adds or updates an inline policy document for a subscription to replay messages stored in the specified Amazon SNS topic. + /// + /// * ReplayStatus – Retrieves the status of the subscription message replay, which can be one of the following: + /// + /// * Completed – The replay has successfully redelivered all messages, and is now delivering newly published messages. If an ending point was specified in the ReplayPolicy then the subscription will no longer receive newly published messages. + /// + /// * In progress – The replay is currently replaying the selected messages. + /// + /// * Failed – The replay was unable to complete. + /// + /// * Pending – The default state while the replay initiates. public var attributes: [Swift.String:Swift.String]? /// The endpoint that you want to receive notifications. Endpoints vary by protocol: /// @@ -7056,6 +7184,7 @@ enum SubscribeOutputError: ClientRuntime.HttpResponseErrorBinding { case "InvalidParameter": return try await InvalidParameterException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "InvalidSecurity": return try await InvalidSecurityException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "NotFound": return try await NotFoundException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "ReplayLimitExceeded": return try await ReplayLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) case "SubscriptionLimitExceeded": return try await SubscriptionLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) } diff --git a/Sources/Services/AWSSageMaker/SageMakerClient.swift b/Sources/Services/AWSSageMaker/SageMakerClient.swift index a8017498c07..6afc2c10ece 100644 --- a/Sources/Services/AWSSageMaker/SageMakerClient.swift +++ b/Sources/Services/AWSSageMaker/SageMakerClient.swift @@ -460,7 +460,7 @@ extension SageMakerClient: SageMakerClientProtocol { return result } - /// Creates an Autopilot job also referred to as Autopilot experiment or AutoML job. We recommend using the new versions [CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) and [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html), which offer backward compatibility. CreateAutoMLJobV2 can manage tabular problem types identical to those of its previous version CreateAutoMLJob, as well as time-series forecasting, and non-tabular problem types such as image or text classification. Find guidelines about how to migrate a CreateAutoMLJob to CreateAutoMLJobV2 in [Migrate a CreateAutoMLJob to CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment-api.html#autopilot-create-experiment-api-migrate-v1-v2). You can find the best-performing model after you run an AutoML job by calling [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html) (recommended) or [DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html). + /// Creates an Autopilot job also referred to as Autopilot experiment or AutoML job. We recommend using the new versions [CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) and [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html), which offer backward compatibility. CreateAutoMLJobV2 can manage tabular problem types identical to those of its previous version CreateAutoMLJob, as well as time-series forecasting, non-tabular problem types such as image or text classification, and text generation (LLMs fine-tuning). Find guidelines about how to migrate a CreateAutoMLJob to CreateAutoMLJobV2 in [Migrate a CreateAutoMLJob to CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment-api.html#autopilot-create-experiment-api-migrate-v1-v2). You can find the best-performing model after you run an AutoML job by calling [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html) (recommended) or [DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html). /// /// - Parameter CreateAutoMLJobInput : [no documentation found] /// @@ -506,7 +506,7 @@ extension SageMakerClient: SageMakerClientProtocol { return result } - /// Creates an Autopilot job also referred to as Autopilot experiment or AutoML job V2. [CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) and [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html) are new versions of [CreateAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html) and [DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html) which offer backward compatibility. CreateAutoMLJobV2 can manage tabular problem types identical to those of its previous version CreateAutoMLJob, as well as time-series forecasting, and non-tabular problem types such as image or text classification. Find guidelines about how to migrate a CreateAutoMLJob to CreateAutoMLJobV2 in [Migrate a CreateAutoMLJob to CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment-api.html#autopilot-create-experiment-api-migrate-v1-v2). For the list of available problem types supported by CreateAutoMLJobV2, see [AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLProblemTypeConfig.html). You can find the best-performing model after you run an AutoML job V2 by calling [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html). + /// Creates an Autopilot job also referred to as Autopilot experiment or AutoML job V2. [CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) and [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html) are new versions of [CreateAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html) and [DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html) which offer backward compatibility. CreateAutoMLJobV2 can manage tabular problem types identical to those of its previous version CreateAutoMLJob, as well as time-series forecasting, non-tabular problem types such as image or text classification, and text generation (LLMs fine-tuning). Find guidelines about how to migrate a CreateAutoMLJob to CreateAutoMLJobV2 in [Migrate a CreateAutoMLJob to CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment-api.html#autopilot-create-experiment-api-migrate-v1-v2). For the list of available problem types supported by CreateAutoMLJobV2, see [AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLProblemTypeConfig.html). You can find the best-performing model after you run an AutoML job V2 by calling [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html). /// /// - Parameter CreateAutoMLJobV2Input : [no documentation found] /// diff --git a/Sources/Services/AWSSageMaker/SageMakerClientProtocol.swift b/Sources/Services/AWSSageMaker/SageMakerClientProtocol.swift index 14e40c9137f..039703881bd 100644 --- a/Sources/Services/AWSSageMaker/SageMakerClientProtocol.swift +++ b/Sources/Services/AWSSageMaker/SageMakerClientProtocol.swift @@ -95,7 +95,7 @@ public protocol SageMakerClientProtocol { /// __Possible Exceptions:__ /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. func createArtifact(input: CreateArtifactInput) async throws -> CreateArtifactOutput - /// Creates an Autopilot job also referred to as Autopilot experiment or AutoML job. We recommend using the new versions [CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) and [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html), which offer backward compatibility. CreateAutoMLJobV2 can manage tabular problem types identical to those of its previous version CreateAutoMLJob, as well as time-series forecasting, and non-tabular problem types such as image or text classification. Find guidelines about how to migrate a CreateAutoMLJob to CreateAutoMLJobV2 in [Migrate a CreateAutoMLJob to CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment-api.html#autopilot-create-experiment-api-migrate-v1-v2). You can find the best-performing model after you run an AutoML job by calling [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html) (recommended) or [DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html). + /// Creates an Autopilot job also referred to as Autopilot experiment or AutoML job. We recommend using the new versions [CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) and [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html), which offer backward compatibility. CreateAutoMLJobV2 can manage tabular problem types identical to those of its previous version CreateAutoMLJob, as well as time-series forecasting, non-tabular problem types such as image or text classification, and text generation (LLMs fine-tuning). Find guidelines about how to migrate a CreateAutoMLJob to CreateAutoMLJobV2 in [Migrate a CreateAutoMLJob to CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment-api.html#autopilot-create-experiment-api-migrate-v1-v2). You can find the best-performing model after you run an AutoML job by calling [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html) (recommended) or [DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html). /// /// - Parameter CreateAutoMLJobInput : [no documentation found] /// @@ -107,7 +107,7 @@ public protocol SageMakerClientProtocol { /// - `ResourceInUse` : Resource being accessed is in use. /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. func createAutoMLJob(input: CreateAutoMLJobInput) async throws -> CreateAutoMLJobOutput - /// Creates an Autopilot job also referred to as Autopilot experiment or AutoML job V2. [CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) and [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html) are new versions of [CreateAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html) and [DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html) which offer backward compatibility. CreateAutoMLJobV2 can manage tabular problem types identical to those of its previous version CreateAutoMLJob, as well as time-series forecasting, and non-tabular problem types such as image or text classification. Find guidelines about how to migrate a CreateAutoMLJob to CreateAutoMLJobV2 in [Migrate a CreateAutoMLJob to CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment-api.html#autopilot-create-experiment-api-migrate-v1-v2). For the list of available problem types supported by CreateAutoMLJobV2, see [AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLProblemTypeConfig.html). You can find the best-performing model after you run an AutoML job V2 by calling [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html). + /// Creates an Autopilot job also referred to as Autopilot experiment or AutoML job V2. [CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html) and [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html) are new versions of [CreateAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html) and [DescribeAutoMLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html) which offer backward compatibility. CreateAutoMLJobV2 can manage tabular problem types identical to those of its previous version CreateAutoMLJob, as well as time-series forecasting, non-tabular problem types such as image or text classification, and text generation (LLMs fine-tuning). Find guidelines about how to migrate a CreateAutoMLJob to CreateAutoMLJobV2 in [Migrate a CreateAutoMLJob to CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development-create-experiment-api.html#autopilot-create-experiment-api-migrate-v1-v2). For the list of available problem types supported by CreateAutoMLJobV2, see [AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLProblemTypeConfig.html). You can find the best-performing model after you run an AutoML job V2 by calling [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html). /// /// - Parameter CreateAutoMLJobV2Input : [no documentation found] /// diff --git a/Sources/Services/AWSSageMaker/models/Models.swift b/Sources/Services/AWSSageMaker/models/Models.swift index 17609ee1c37..a685f55cbb5 100644 --- a/Sources/Services/AWSSageMaker/models/Models.swift +++ b/Sources/Services/AWSSageMaker/models/Models.swift @@ -4493,6 +4493,8 @@ extension SageMakerClientTypes { /// * For text classification: text/csv;header=present or x-application/vnd.amazon+parquet. The default value is text/csv;header=present. /// /// * For time-series forecasting: text/csv;header=present or x-application/vnd.amazon+parquet. The default value is text/csv;header=present. + /// + /// * For text generation (LLMs fine-tuning): text/csv;header=present or x-application/vnd.amazon+parquet. The default value is text/csv;header=present. public var contentType: Swift.String? /// The data source for an AutoML channel (Required). public var dataSource: SageMakerClientTypes.AutoMLDataSource? @@ -4549,7 +4551,7 @@ extension SageMakerClientTypes { public struct AutoMLJobCompletionCriteria: Swift.Equatable { /// The maximum runtime, in seconds, an AutoML job has to complete. If an AutoML job exceeds the maximum runtime, the job is stopped automatically and its processing is ended gracefully. The AutoML job identifies the best model whose training was completed and marks it as the best-performing model. Any unfinished steps of the job, such as automatic one-click Autopilot model deployment, are not completed. public var maxAutoMLJobRuntimeInSeconds: Swift.Int? - /// The maximum number of times a training job is allowed to run. For text and image classification, as well as time-series forecasting problem types, the supported value is 1. For tabular problem types, the maximum value is 750. + /// The maximum number of times a training job is allowed to run. For text and image classification, time-series forecasting, as well as text generation (LLMs fine-tuning) problem types, the supported value is 1. For tabular problem types, the maximum value is 750. public var maxCandidates: Swift.Int? /// The maximum time, in seconds, that each training job executed inside hyperparameter tuning is allowed to run as part of a hyperparameter tuning job. For more information, see the [StoppingCondition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StoppingCondition.html) used by the [CreateHyperParameterTuningJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html) action. For job V2s (jobs created by calling CreateAutoMLJobV2), this field controls the runtime of the job candidate. public var maxRuntimePerTrainingJobInSeconds: Swift.Int? @@ -4663,12 +4665,25 @@ extension SageMakerClientTypes.AutoMLJobObjective: Swift.Codable { } extension SageMakerClientTypes { - /// Specifies a metric to minimize or maximize as the objective of a job. + /// Specifies a metric to minimize or maximize as the objective of an AutoML job. public struct AutoMLJobObjective: Swift.Equatable { - /// The name of the objective metric used to measure the predictive quality of a machine learning system. During training, the model's parameters are updated iteratively to optimize its performance based on the feedback provided by the objective metric when evaluating the model on the validation dataset. For the list of all available metrics supported by Autopilot, see [Autopilot metrics](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-metrics-validation.html#autopilot-metrics). If you do not specify a metric explicitly, the default behavior is to automatically use: + /// The name of the objective metric used to measure the predictive quality of a machine learning system. During training, the model's parameters are updated iteratively to optimize its performance based on the feedback provided by the objective metric when evaluating the model on the validation dataset. The list of available metrics supported by Autopilot and the default metric applied when you do not specify a metric name explicitly depend on the problem type. /// /// * For tabular problem types: /// + /// * List of available metrics: + /// + /// * Regression: InferenceLatency, MAE, MSE, R2, RMSE + /// + /// * Binary classification: Accuracy, AUC, BalancedAccuracy, F1, InferenceLatency, LogLoss, Precision, Recall + /// + /// * Multiclass classification: Accuracy, BalancedAccuracy, F1macro, InferenceLatency, LogLoss, PrecisionMacro, RecallMacro + /// + /// + /// For a description of each metric, see [Autopilot metrics for classification and regression](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-metrics-validation.html#autopilot-metrics). + /// + /// * Default objective metrics: + /// /// * Regression: MSE. /// /// * Binary classification: F1. @@ -4678,9 +4693,28 @@ extension SageMakerClientTypes { /// /// /// - /// * For image or text classification problem types: Accuracy /// - /// * For time-series forecasting problem types: AverageWeightedQuantileLoss + /// + /// + /// * For image or text classification problem types: + /// + /// * List of available metrics: Accuracy For a description of each metric, see [Autopilot metrics for text and image classification](https://docs.aws.amazon.com/sagemaker/latest/dg/text-classification-data-format-and-metric.html). + /// + /// * Default objective metrics: Accuracy + /// + /// + /// + /// + /// * For time-series forecasting problem types: + /// + /// * List of available metrics: RMSE, wQL, Average wQL, MASE, MAPE, WAPE For a description of each metric, see [Autopilot metrics for time-series forecasting](https://docs.aws.amazon.com/sagemaker/latest/dg/timeseries-objective-metric.html). + /// + /// * Default objective metrics: AverageWeightedQuantileLoss + /// + /// + /// + /// + /// * For text generation problem types (LLMs fine-tuning): Fine-tuning language models in Autopilot does not require setting the AutoMLJobObjective field. Autopilot fine-tunes LLMs without requiring multiple candidates to be trained and evaluated. Instead, using your dataset, Autopilot directly fine-tunes your target model to enhance a default objective metric, the cross-entropy loss. After fine-tuning a language model, you can evaluate the quality of its generated text using different metrics. For a list of the available metrics, see [Metrics for fine-tuning LLMs in Autopilot](https://docs.aws.amazon.com/sagemaker/latest/dg/llms-finetuning-models.html). /// This member is required. public var metricName: SageMakerClientTypes.AutoMLMetricEnum? @@ -5109,12 +5143,19 @@ extension SageMakerClientTypes { case mape case mase case mse + case perplexity case precision case precisionMacro case r2 case recall case recallMacro case rmse + case rouge1 + case rouge2 + case rougel + case rougelSum + case trainingLoss + case validationLoss case wape case sdkUnknown(Swift.String) @@ -5132,12 +5173,19 @@ extension SageMakerClientTypes { .mape, .mase, .mse, + .perplexity, .precision, .precisionMacro, .r2, .recall, .recallMacro, .rmse, + .rouge1, + .rouge2, + .rougel, + .rougelSum, + .trainingLoss, + .validationLoss, .wape, .sdkUnknown("") ] @@ -5160,12 +5208,19 @@ extension SageMakerClientTypes { case .mape: return "MAPE" case .mase: return "MASE" case .mse: return "MSE" + case .perplexity: return "Perplexity" case .precision: return "Precision" case .precisionMacro: return "PrecisionMacro" case .r2: return "R2" case .recall: return "Recall" case .recallMacro: return "RecallMacro" case .rmse: return "RMSE" + case .rouge1: return "Rouge1" + case .rouge2: return "Rouge2" + case .rougel: return "RougeL" + case .rougelSum: return "RougeLSum" + case .trainingLoss: return "TrainingLoss" + case .validationLoss: return "ValidationLoss" case .wape: return "WAPE" case let .sdkUnknown(s): return s } @@ -5299,6 +5354,7 @@ extension SageMakerClientTypes.AutoMLProblemTypeConfig: Swift.Codable { case imageclassificationjobconfig = "ImageClassificationJobConfig" case tabularjobconfig = "TabularJobConfig" case textclassificationjobconfig = "TextClassificationJobConfig" + case textgenerationjobconfig = "TextGenerationJobConfig" case timeseriesforecastingjobconfig = "TimeSeriesForecastingJobConfig" case sdkUnknown } @@ -5312,6 +5368,8 @@ extension SageMakerClientTypes.AutoMLProblemTypeConfig: Swift.Codable { try container.encode(tabularjobconfig, forKey: .tabularjobconfig) case let .textclassificationjobconfig(textclassificationjobconfig): try container.encode(textclassificationjobconfig, forKey: .textclassificationjobconfig) + case let .textgenerationjobconfig(textgenerationjobconfig): + try container.encode(textgenerationjobconfig, forKey: .textgenerationjobconfig) case let .timeseriesforecastingjobconfig(timeseriesforecastingjobconfig): try container.encode(timeseriesforecastingjobconfig, forKey: .timeseriesforecastingjobconfig) case let .sdkUnknown(sdkUnknown): @@ -5341,6 +5399,11 @@ extension SageMakerClientTypes.AutoMLProblemTypeConfig: Swift.Codable { self = .timeseriesforecastingjobconfig(timeseriesforecastingjobconfig) return } + let textgenerationjobconfigDecoded = try values.decodeIfPresent(SageMakerClientTypes.TextGenerationJobConfig.self, forKey: .textgenerationjobconfig) + if let textgenerationjobconfig = textgenerationjobconfigDecoded { + self = .textgenerationjobconfig(textgenerationjobconfig) + return + } self = .sdkUnknown("") } } @@ -5352,10 +5415,12 @@ extension SageMakerClientTypes { case imageclassificationjobconfig(SageMakerClientTypes.ImageClassificationJobConfig) /// Settings used to configure an AutoML job V2 for the text classification problem type. case textclassificationjobconfig(SageMakerClientTypes.TextClassificationJobConfig) - /// Settings used to configure an AutoML job V2 for a tabular problem type (regression, classification). + /// Settings used to configure an AutoML job V2 for the tabular problem type (regression, classification). case tabularjobconfig(SageMakerClientTypes.TabularJobConfig) - /// Settings used to configure an AutoML job V2 for a time-series forecasting problem type. + /// Settings used to configure an AutoML job V2 for the time-series forecasting problem type. case timeseriesforecastingjobconfig(SageMakerClientTypes.TimeSeriesForecastingJobConfig) + /// Settings used to configure an AutoML job V2 for the text generation (LLMs fine-tuning) problem type. The text generation models that support fine-tuning in Autopilot are currently accessible exclusively in regions supported by Canvas. Refer to the documentation of Canvas for the [full list of its supported Regions](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas.html). + case textgenerationjobconfig(SageMakerClientTypes.TextGenerationJobConfig) case sdkUnknown(Swift.String) } @@ -5366,6 +5431,7 @@ extension SageMakerClientTypes { case imageClassification case tabular case textClassification + case textGeneration case timeseriesForecasting case sdkUnknown(Swift.String) @@ -5374,6 +5440,7 @@ extension SageMakerClientTypes { .imageClassification, .tabular, .textClassification, + .textGeneration, .timeseriesForecasting, .sdkUnknown("") ] @@ -5387,6 +5454,7 @@ extension SageMakerClientTypes { case .imageClassification: return "ImageClassification" case .tabular: return "Tabular" case .textClassification: return "TextClassification" + case .textGeneration: return "TextGeneration" case .timeseriesForecasting: return "TimeSeriesForecasting" case let .sdkUnknown(s): return s } @@ -5402,6 +5470,7 @@ extension SageMakerClientTypes { extension SageMakerClientTypes.AutoMLProblemTypeResolvedAttributes: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case tabularresolvedattributes = "TabularResolvedAttributes" + case textgenerationresolvedattributes = "TextGenerationResolvedAttributes" case sdkUnknown } @@ -5410,6 +5479,8 @@ extension SageMakerClientTypes.AutoMLProblemTypeResolvedAttributes: Swift.Codabl switch self { case let .tabularresolvedattributes(tabularresolvedattributes): try container.encode(tabularresolvedattributes, forKey: .tabularresolvedattributes) + case let .textgenerationresolvedattributes(textgenerationresolvedattributes): + try container.encode(textgenerationresolvedattributes, forKey: .textgenerationresolvedattributes) case let .sdkUnknown(sdkUnknown): try container.encode(sdkUnknown, forKey: .sdkUnknown) } @@ -5422,15 +5493,22 @@ extension SageMakerClientTypes.AutoMLProblemTypeResolvedAttributes: Swift.Codabl self = .tabularresolvedattributes(tabularresolvedattributes) return } + let textgenerationresolvedattributesDecoded = try values.decodeIfPresent(SageMakerClientTypes.TextGenerationResolvedAttributes.self, forKey: .textgenerationresolvedattributes) + if let textgenerationresolvedattributes = textgenerationresolvedattributesDecoded { + self = .textgenerationresolvedattributes(textgenerationresolvedattributes) + return + } self = .sdkUnknown("") } } extension SageMakerClientTypes { - /// The resolved attributes specific to the problem type of an AutoML job V2. + /// Stores resolved attributes specific to the problem type of an AutoML job V2. public enum AutoMLProblemTypeResolvedAttributes: Swift.Equatable { - /// Defines the resolved attributes for the TABULAR problem type. + /// The resolved attributes for the tabular problem type. case tabularresolvedattributes(SageMakerClientTypes.TabularResolvedAttributes) + /// The resolved attributes for the text generation problem type. + case textgenerationresolvedattributes(SageMakerClientTypes.TextGenerationResolvedAttributes) case sdkUnknown(Swift.String) } @@ -5502,7 +5580,7 @@ extension SageMakerClientTypes.AutoMLResolvedAttributes: Swift.Codable { extension SageMakerClientTypes { /// The resolved attributes used to configure an AutoML job V2. public struct AutoMLResolvedAttributes: Swift.Equatable { - /// Specifies a metric to minimize or maximize as the objective of a job. + /// Specifies a metric to minimize or maximize as the objective of an AutoML job. public var autoMLJobObjective: SageMakerClientTypes.AutoMLJobObjective? /// Defines the resolved attributes specific to a problem type. public var autoMLProblemTypeResolvedAttributes: SageMakerClientTypes.AutoMLProblemTypeResolvedAttributes? @@ -11111,12 +11189,18 @@ public struct CreateAutoMLJobV2Input: Swift.Equatable { /// * For text classification: S3Prefix. /// /// * For time-series forecasting: S3Prefix. + /// + /// * For text generation (LLMs fine-tuning): S3Prefix. /// This member is required. public var autoMLJobInputDataConfig: [SageMakerClientTypes.AutoMLJobChannel]? /// Identifies an Autopilot job. The name must be unique to your account and is case insensitive. /// This member is required. public var autoMLJobName: Swift.String? - /// Specifies a metric to minimize or maximize as the objective of a job. If not specified, the default objective metric depends on the problem type. For the list of default values per problem type, see [AutoMLJobObjective](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobObjective.html). For tabular problem types, you must either provide both the AutoMLJobObjective and indicate the type of supervised learning problem in AutoMLProblemTypeConfig (TabularJobConfig.ProblemType), or none at all. + /// Specifies a metric to minimize or maximize as the objective of a job. If not specified, the default objective metric depends on the problem type. For the list of default values per problem type, see [AutoMLJobObjective](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobObjective.html). + /// + /// * For tabular problem types: You must either provide both the AutoMLJobObjective and indicate the type of supervised learning problem in AutoMLProblemTypeConfig (TabularJobConfig.ProblemType), or none at all. + /// + /// * For text generation problem types (LLMs fine-tuning): Fine-tuning language models in Autopilot does not require setting the AutoMLJobObjective field. Autopilot fine-tunes LLMs without requiring multiple candidates to be trained and evaluated. Instead, using your dataset, Autopilot directly fine-tunes your target model to enhance a default objective metric, the cross-entropy loss. After fine-tuning a language model, you can evaluate the quality of its generated text using different metrics. For a list of the available metrics, see [Metrics for fine-tuning LLMs in Autopilot](https://docs.aws.amazon.com/sagemaker/latest/dg/llms-finetuning-models.html). public var autoMLJobObjective: SageMakerClientTypes.AutoMLJobObjective? /// Defines the configuration settings of one of the supported problem types. /// This member is required. @@ -48293,7 +48377,7 @@ extension SageMakerClientTypes { /// Specifies a limit to how long a model hyperparameter training job can run. It also specifies how long a managed spot training job has to complete. When the job reaches the time limit, SageMaker ends the training job. Use this API to cap model training costs. /// This member is required. public var stoppingCondition: SageMakerClientTypes.StoppingCondition? - /// Defines the objective metric for a hyperparameter tuning job. Hyperparameter tuning uses the value of this metric to evaluate the training jobs it launches, and returns the training job that results in either the highest or lowest value for this metric, depending on the value you specify for the Type parameter. + /// Defines the objective metric for a hyperparameter tuning job. Hyperparameter tuning uses the value of this metric to evaluate the training jobs it launches, and returns the training job that results in either the highest or lowest value for this metric, depending on the value you specify for the Type parameter. If you want to define a custom objective metric, see [Define metrics and environment variables](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-metrics-variables.html). public var tuningObjective: SageMakerClientTypes.HyperParameterTuningJobObjective? /// The [VpcConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html) object that specifies the VPC that you want the training jobs that this hyperparameter tuning job launches to connect to. Control access to and from your training container by configuring the VPC. For more information, see [Protect Training Jobs by Using an Amazon Virtual Private Cloud](https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html). public var vpcConfig: SageMakerClientTypes.VpcConfig? @@ -48816,7 +48900,7 @@ extension SageMakerClientTypes.HyperParameterTuningJobObjective: Swift.Codable { } extension SageMakerClientTypes { - /// Defines the objective metric for a hyperparameter tuning job. Hyperparameter tuning uses the value of this metric to evaluate the training jobs it launches, and returns the training job that results in either the highest or lowest value for this metric, depending on the value you specify for the Type parameter. + /// Defines the objective metric for a hyperparameter tuning job. Hyperparameter tuning uses the value of this metric to evaluate the training jobs it launches, and returns the training job that results in either the highest or lowest value for this metric, depending on the value you specify for the Type parameter. If you want to define a custom objective metric, see [Define metrics and environment variables](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-define-metrics-variables.html). public struct HyperParameterTuningJobObjective: Swift.Equatable { /// The name of the metric to use for the objective metric. /// This member is required. @@ -49866,7 +49950,7 @@ extension SageMakerClientTypes.ImageClassificationJobConfig: Swift.Codable { } extension SageMakerClientTypes { - /// Stores the configuration information for the image classification problem of an AutoML job V2. + /// The collection of settings used by an AutoML job V2 for the image classification problem type. public struct ImageClassificationJobConfig: Swift.Equatable { /// How long a job is allowed to run, or how many candidates a job is allowed to generate. public var completionCriteria: SageMakerClientTypes.AutoMLJobCompletionCriteria? @@ -70565,6 +70649,7 @@ extension SageMakerClientTypes { extension SageMakerClientTypes.ModelDashboardMonitoringSchedule: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case batchTransformInput = "BatchTransformInput" case creationTime = "CreationTime" case endpointName = "EndpointName" case failureReason = "FailureReason" @@ -70580,6 +70665,9 @@ extension SageMakerClientTypes.ModelDashboardMonitoringSchedule: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let batchTransformInput = self.batchTransformInput { + try encodeContainer.encode(batchTransformInput, forKey: .batchTransformInput) + } if let creationTime = self.creationTime { try encodeContainer.encodeTimestamp(creationTime, format: .epochSeconds, forKey: .creationTime) } @@ -70651,12 +70739,16 @@ extension SageMakerClientTypes.ModelDashboardMonitoringSchedule: Swift.Codable { monitoringAlertSummaries = monitoringAlertSummariesDecoded0 let lastMonitoringExecutionSummaryDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.MonitoringExecutionSummary.self, forKey: .lastMonitoringExecutionSummary) lastMonitoringExecutionSummary = lastMonitoringExecutionSummaryDecoded + let batchTransformInputDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.BatchTransformInput.self, forKey: .batchTransformInput) + batchTransformInput = batchTransformInputDecoded } } extension SageMakerClientTypes { /// A monitoring schedule for a model displayed in the Amazon SageMaker Model Dashboard. public struct ModelDashboardMonitoringSchedule: Swift.Equatable { + /// Input object for the batch transform job. + public var batchTransformInput: SageMakerClientTypes.BatchTransformInput? /// A timestamp that indicates when the monitoring schedule was created. public var creationTime: ClientRuntime.Date? /// The endpoint which is monitored. @@ -70681,6 +70773,7 @@ extension SageMakerClientTypes { public var monitoringType: SageMakerClientTypes.MonitoringType? public init( + batchTransformInput: SageMakerClientTypes.BatchTransformInput? = nil, creationTime: ClientRuntime.Date? = nil, endpointName: Swift.String? = nil, failureReason: Swift.String? = nil, @@ -70694,6 +70787,7 @@ extension SageMakerClientTypes { monitoringType: SageMakerClientTypes.MonitoringType? = nil ) { + self.batchTransformInput = batchTransformInput self.creationTime = creationTime self.endpointName = endpointName self.failureReason = failureReason @@ -85091,7 +85185,7 @@ extension SageMakerClientTypes.ResolvedAttributes: Swift.Codable { extension SageMakerClientTypes { /// The resolved attributes. public struct ResolvedAttributes: Swift.Equatable { - /// Specifies a metric to minimize or maximize as the objective of a job. + /// Specifies a metric to minimize or maximize as the objective of an AutoML job. public var autoMLJobObjective: SageMakerClientTypes.AutoMLJobObjective? /// How long a job is allowed to run, or how many candidates a job is allowed to generate. public var completionCriteria: SageMakerClientTypes.AutoMLJobCompletionCriteria? @@ -91324,7 +91418,7 @@ extension SageMakerClientTypes.TabularJobConfig: Swift.Codable { } extension SageMakerClientTypes { - /// The collection of settings used by an AutoML job V2 for the TABULAR problem type. + /// The collection of settings used by an AutoML job V2 for the tabular problem type. public struct TabularJobConfig: Swift.Equatable { /// The configuration information of how model candidates are generated. public var candidateGenerationConfig: SageMakerClientTypes.CandidateGenerationConfig? @@ -91388,7 +91482,7 @@ extension SageMakerClientTypes.TabularResolvedAttributes: Swift.Codable { } extension SageMakerClientTypes { - /// The resolved attributes specific to the TABULAR problem type. + /// The resolved attributes specific to the tabular problem type. public struct TabularResolvedAttributes: Swift.Equatable { /// The type of supervised learning problem available for the model candidates of the AutoML job V2 (Binary Classification, Multiclass Classification, Regression). For more information, see [ Amazon SageMaker Autopilot problem types](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-datasets-problem-types.html#autopilot-problem-types). public var problemType: SageMakerClientTypes.ProblemType? @@ -91924,7 +92018,7 @@ extension SageMakerClientTypes.TextClassificationJobConfig: Swift.Codable { } extension SageMakerClientTypes { - /// Stores the configuration information for the text classification problem of an AutoML job V2. + /// The collection of settings used by an AutoML job V2 for the text classification problem type. public struct TextClassificationJobConfig: Swift.Equatable { /// How long a job is allowed to run, or how many candidates a job is allowed to generate. public var completionCriteria: SageMakerClientTypes.AutoMLJobCompletionCriteria? @@ -91949,6 +92043,86 @@ extension SageMakerClientTypes { } +extension SageMakerClientTypes.TextGenerationJobConfig: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case baseModelName = "BaseModelName" + case completionCriteria = "CompletionCriteria" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let baseModelName = self.baseModelName { + try encodeContainer.encode(baseModelName, forKey: .baseModelName) + } + if let completionCriteria = self.completionCriteria { + try encodeContainer.encode(completionCriteria, forKey: .completionCriteria) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let completionCriteriaDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLJobCompletionCriteria.self, forKey: .completionCriteria) + completionCriteria = completionCriteriaDecoded + let baseModelNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .baseModelName) + baseModelName = baseModelNameDecoded + } +} + +extension SageMakerClientTypes { + /// The collection of settings used by an AutoML job V2 for the text generation problem type. The text generation models that support fine-tuning in Autopilot are currently accessible exclusively in regions supported by Canvas. Refer to the documentation of Canvas for the [full list of its supported Regions](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas.html). + public struct TextGenerationJobConfig: Swift.Equatable { + /// The name of the base model to fine-tune. Autopilot supports fine-tuning a variety of large language models. For information on the list of supported models, see [Text generation models supporting fine-tuning in Autopilot](https://docs.aws.amazon.com/sagemaker/src/AWSIronmanApiDoc/build/server-root/sagemaker/latest/dg/llms-finetuning-models.html#llms-finetuning-supported-llms). If no BaseModelName is provided, the default model used is Falcon-7B-Instruct. + public var baseModelName: Swift.String? + /// How long a job is allowed to run, or how many candidates a job is allowed to generate. + public var completionCriteria: SageMakerClientTypes.AutoMLJobCompletionCriteria? + + public init( + baseModelName: Swift.String? = nil, + completionCriteria: SageMakerClientTypes.AutoMLJobCompletionCriteria? = nil + ) + { + self.baseModelName = baseModelName + self.completionCriteria = completionCriteria + } + } + +} + +extension SageMakerClientTypes.TextGenerationResolvedAttributes: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case baseModelName = "BaseModelName" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let baseModelName = self.baseModelName { + try encodeContainer.encode(baseModelName, forKey: .baseModelName) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let baseModelNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .baseModelName) + baseModelName = baseModelNameDecoded + } +} + +extension SageMakerClientTypes { + /// The resolved attributes specific to the text generation problem type. + public struct TextGenerationResolvedAttributes: Swift.Equatable { + /// The name of the base model to fine-tune. + public var baseModelName: Swift.String? + + public init( + baseModelName: Swift.String? = nil + ) + { + self.baseModelName = baseModelName + } + } + +} + extension SageMakerClientTypes.TimeSeriesConfig: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case groupingAttributeNames = "GroupingAttributeNames" diff --git a/Sources/Services/AWSSsmSap/Paginators.swift b/Sources/Services/AWSSsmSap/Paginators.swift index 8888442e7f0..0640140e667 100644 --- a/Sources/Services/AWSSsmSap/Paginators.swift +++ b/Sources/Services/AWSSsmSap/Paginators.swift @@ -19,6 +19,7 @@ extension SsmSapClient { extension ListApplicationsInput: ClientRuntime.PaginateToken { public func usingPaginationToken(_ token: Swift.String) -> ListApplicationsInput { return ListApplicationsInput( + filters: self.filters, maxResults: self.maxResults, nextToken: token )} diff --git a/Sources/Services/AWSSsmSap/SsmSapClient.swift b/Sources/Services/AWSSsmSap/SsmSapClient.swift index e15468b8088..93c17bd0a38 100644 --- a/Sources/Services/AWSSsmSap/SsmSapClient.swift +++ b/Sources/Services/AWSSsmSap/SsmSapClient.swift @@ -123,6 +123,7 @@ extension SsmSapClient: SsmSapClientProtocol { /// /// __Possible Exceptions:__ /// - `InternalServerException` : An internal error has occurred. + /// - `UnauthorizedException` : The request is not authorized. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. public func deregisterApplication(input: DeregisterApplicationInput) async throws -> DeregisterApplicationOutput { @@ -213,6 +214,7 @@ extension SsmSapClient: SsmSapClientProtocol { /// /// __Possible Exceptions:__ /// - `InternalServerException` : An internal error has occurred. + /// - `UnauthorizedException` : The request is not authorized. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. public func getComponent(input: GetComponentInput) async throws -> GetComponentOutput { @@ -441,6 +443,7 @@ extension SsmSapClient: SsmSapClientProtocol { /// __Possible Exceptions:__ /// - `InternalServerException` : An internal error has occurred. /// - `ResourceNotFoundException` : The resource is not available. + /// - `UnauthorizedException` : The request is not authorized. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. public func listComponents(input: ListComponentsInput) async throws -> ListComponentsOutput { @@ -667,6 +670,7 @@ extension SsmSapClient: SsmSapClientProtocol { /// __Possible Exceptions:__ /// - `ConflictException` : A conflict has occurred. /// - `InternalServerException` : An internal error has occurred. + /// - `ResourceNotFoundException` : The resource is not available. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. public func registerApplication(input: RegisterApplicationInput) async throws -> RegisterApplicationOutput { @@ -714,6 +718,7 @@ extension SsmSapClient: SsmSapClientProtocol { /// - `ConflictException` : A conflict has occurred. /// - `InternalServerException` : An internal error has occurred. /// - `ResourceNotFoundException` : The resource is not available. + /// - `UnauthorizedException` : The request is not authorized. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. public func startApplicationRefresh(input: StartApplicationRefreshInput) async throws -> StartApplicationRefreshOutput { @@ -851,6 +856,7 @@ extension SsmSapClient: SsmSapClientProtocol { /// - `ConflictException` : A conflict has occurred. /// - `InternalServerException` : An internal error has occurred. /// - `ResourceNotFoundException` : The resource is not available. + /// - `UnauthorizedException` : The request is not authorized. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. public func updateApplicationSettings(input: UpdateApplicationSettingsInput) async throws -> UpdateApplicationSettingsOutput { diff --git a/Sources/Services/AWSSsmSap/SsmSapClientProtocol.swift b/Sources/Services/AWSSsmSap/SsmSapClientProtocol.swift index 4df5849ce4c..76808381584 100644 --- a/Sources/Services/AWSSsmSap/SsmSapClientProtocol.swift +++ b/Sources/Services/AWSSsmSap/SsmSapClientProtocol.swift @@ -27,6 +27,7 @@ public protocol SsmSapClientProtocol { /// /// __Possible Exceptions:__ /// - `InternalServerException` : An internal error has occurred. + /// - `UnauthorizedException` : The request is not authorized. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. func deregisterApplication(input: DeregisterApplicationInput) async throws -> DeregisterApplicationOutput /// Gets an application registered with AWS Systems Manager for SAP. It also returns the components of the application. @@ -51,6 +52,7 @@ public protocol SsmSapClientProtocol { /// /// __Possible Exceptions:__ /// - `InternalServerException` : An internal error has occurred. + /// - `UnauthorizedException` : The request is not authorized. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. func getComponent(input: GetComponentInput) async throws -> GetComponentOutput /// Gets the SAP HANA database of an application registered with AWS Systems Manager for SAP. @@ -114,6 +116,7 @@ public protocol SsmSapClientProtocol { /// __Possible Exceptions:__ /// - `InternalServerException` : An internal error has occurred. /// - `ResourceNotFoundException` : The resource is not available. + /// - `UnauthorizedException` : The request is not authorized. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. func listComponents(input: ListComponentsInput) async throws -> ListComponentsOutput /// Lists the SAP HANA databases of an application registered with AWS Systems Manager for SAP. @@ -178,6 +181,7 @@ public protocol SsmSapClientProtocol { /// __Possible Exceptions:__ /// - `ConflictException` : A conflict has occurred. /// - `InternalServerException` : An internal error has occurred. + /// - `ResourceNotFoundException` : The resource is not available. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. func registerApplication(input: RegisterApplicationInput) async throws -> RegisterApplicationOutput /// Refreshes a registered application. @@ -192,6 +196,7 @@ public protocol SsmSapClientProtocol { /// - `ConflictException` : A conflict has occurred. /// - `InternalServerException` : An internal error has occurred. /// - `ResourceNotFoundException` : The resource is not available. + /// - `UnauthorizedException` : The request is not authorized. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. func startApplicationRefresh(input: StartApplicationRefreshInput) async throws -> StartApplicationRefreshOutput /// Creates tag for a resource by specifying the ARN. @@ -232,6 +237,7 @@ public protocol SsmSapClientProtocol { /// - `ConflictException` : A conflict has occurred. /// - `InternalServerException` : An internal error has occurred. /// - `ResourceNotFoundException` : The resource is not available. + /// - `UnauthorizedException` : The request is not authorized. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. func updateApplicationSettings(input: UpdateApplicationSettingsInput) async throws -> UpdateApplicationSettingsOutput } diff --git a/Sources/Services/AWSSsmSap/models/Models.swift b/Sources/Services/AWSSsmSap/models/Models.swift index 19dc1d36435..cdf475d3dec 100644 --- a/Sources/Services/AWSSsmSap/models/Models.swift +++ b/Sources/Services/AWSSsmSap/models/Models.swift @@ -2,6 +2,44 @@ import AWSClientRuntime import ClientRuntime +extension SsmSapClientTypes { + public enum AllocationType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case elasticIp + case overlay + case unknown + case vpcSubnet + case sdkUnknown(Swift.String) + + public static var allCases: [AllocationType] { + return [ + .elasticIp, + .overlay, + .unknown, + .vpcSubnet, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .elasticIp: return "ELASTIC_IP" + case .overlay: return "OVERLAY" + case .unknown: return "UNKNOWN" + case .vpcSubnet: return "VPC_SUBNET" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = AllocationType(rawValue: rawValue) ?? AllocationType.sdkUnknown(rawValue) + } + } +} + extension SsmSapClientTypes.Application: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case appRegistryArn = "AppRegistryArn" @@ -286,6 +324,7 @@ extension SsmSapClientTypes { extension SsmSapClientTypes.ApplicationSummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case arn = "Arn" + case discoveryStatus = "DiscoveryStatus" case id = "Id" case tags = "Tags" case type = "Type" @@ -296,6 +335,9 @@ extension SsmSapClientTypes.ApplicationSummary: Swift.Codable { if let arn = self.arn { try encodeContainer.encode(arn, forKey: .arn) } + if let discoveryStatus = self.discoveryStatus { + try encodeContainer.encode(discoveryStatus.rawValue, forKey: .discoveryStatus) + } if let id = self.id { try encodeContainer.encode(id, forKey: .id) } @@ -314,6 +356,8 @@ extension SsmSapClientTypes.ApplicationSummary: Swift.Codable { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) id = idDecoded + let discoveryStatusDecoded = try containerValues.decodeIfPresent(SsmSapClientTypes.ApplicationDiscoveryStatus.self, forKey: .discoveryStatus) + discoveryStatus = discoveryStatusDecoded let typeDecoded = try containerValues.decodeIfPresent(SsmSapClientTypes.ApplicationType.self, forKey: .type) type = typeDecoded let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) @@ -337,6 +381,8 @@ extension SsmSapClientTypes { public struct ApplicationSummary: Swift.Equatable { /// The Amazon Resource Name (ARN) of the application. public var arn: Swift.String? + /// The status of the latest discovery. + public var discoveryStatus: SsmSapClientTypes.ApplicationDiscoveryStatus? /// The ID of the application. public var id: Swift.String? /// The tags on the application. @@ -346,12 +392,14 @@ extension SsmSapClientTypes { public init( arn: Swift.String? = nil, + discoveryStatus: SsmSapClientTypes.ApplicationDiscoveryStatus? = nil, id: Swift.String? = nil, tags: [Swift.String:Swift.String]? = nil, type: SsmSapClientTypes.ApplicationType? = nil ) { self.arn = arn + self.discoveryStatus = discoveryStatus self.id = id self.tags = tags self.type = type @@ -363,11 +411,13 @@ extension SsmSapClientTypes { extension SsmSapClientTypes { public enum ApplicationType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case hana + case sapAbap case sdkUnknown(Swift.String) public static var allCases: [ApplicationType] { return [ .hana, + .sapAbap, .sdkUnknown("") ] } @@ -378,6 +428,7 @@ extension SsmSapClientTypes { public var rawValue: Swift.String { switch self { case .hana: return "HANA" + case .sapAbap: return "SAP_ABAP" case let .sdkUnknown(s): return s } } @@ -393,6 +444,7 @@ extension SsmSapClientTypes.AssociatedHost: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case ec2InstanceId = "Ec2InstanceId" case hostname = "Hostname" + case ipAddresses = "IpAddresses" case osVersion = "OsVersion" } @@ -404,6 +456,12 @@ extension SsmSapClientTypes.AssociatedHost: Swift.Codable { if let hostname = self.hostname { try encodeContainer.encode(hostname, forKey: .hostname) } + if let ipAddresses = ipAddresses { + var ipAddressesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .ipAddresses) + for ipaddressmember0 in ipAddresses { + try ipAddressesContainer.encode(ipaddressmember0) + } + } if let osVersion = self.osVersion { try encodeContainer.encode(osVersion, forKey: .osVersion) } @@ -415,6 +473,17 @@ extension SsmSapClientTypes.AssociatedHost: Swift.Codable { hostname = hostnameDecoded let ec2InstanceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ec2InstanceId) ec2InstanceId = ec2InstanceIdDecoded + let ipAddressesContainer = try containerValues.decodeIfPresent([SsmSapClientTypes.IpAddressMember?].self, forKey: .ipAddresses) + var ipAddressesDecoded0:[SsmSapClientTypes.IpAddressMember]? = nil + if let ipAddressesContainer = ipAddressesContainer { + ipAddressesDecoded0 = [SsmSapClientTypes.IpAddressMember]() + for structure0 in ipAddressesContainer { + if let structure0 = structure0 { + ipAddressesDecoded0?.append(structure0) + } + } + } + ipAddresses = ipAddressesDecoded0 let osVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .osVersion) osVersion = osVersionDecoded } @@ -427,17 +496,21 @@ extension SsmSapClientTypes { public var ec2InstanceId: Swift.String? /// The name of the host. public var hostname: Swift.String? + /// The IP addresses of the associated host. + public var ipAddresses: [SsmSapClientTypes.IpAddressMember]? /// The version of the operating system. public var osVersion: Swift.String? public init( ec2InstanceId: Swift.String? = nil, hostname: Swift.String? = nil, + ipAddresses: [SsmSapClientTypes.IpAddressMember]? = nil, osVersion: Swift.String? = nil ) { self.ec2InstanceId = ec2InstanceId self.hostname = hostname + self.ipAddresses = ipAddresses self.osVersion = osVersion } } @@ -569,6 +642,7 @@ extension SsmSapClientTypes.Component: Swift.Codable { case childComponents = "ChildComponents" case componentId = "ComponentId" case componentType = "ComponentType" + case databaseConnection = "DatabaseConnection" case databases = "Databases" case hdbVersion = "HdbVersion" case hosts = "Hosts" @@ -576,9 +650,12 @@ extension SsmSapClientTypes.Component: Swift.Codable { case parentComponent = "ParentComponent" case primaryHost = "PrimaryHost" case resilience = "Resilience" + case sapFeature = "SapFeature" case sapHostname = "SapHostname" case sapKernelVersion = "SapKernelVersion" + case sid = "Sid" case status = "Status" + case systemNumber = "SystemNumber" } public func encode(to encoder: Swift.Encoder) throws { @@ -604,6 +681,9 @@ extension SsmSapClientTypes.Component: Swift.Codable { if let componentType = self.componentType { try encodeContainer.encode(componentType.rawValue, forKey: .componentType) } + if let databaseConnection = self.databaseConnection { + try encodeContainer.encode(databaseConnection, forKey: .databaseConnection) + } if let databases = databases { var databasesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .databases) for databaseid0 in databases { @@ -631,21 +711,34 @@ extension SsmSapClientTypes.Component: Swift.Codable { if let resilience = self.resilience { try encodeContainer.encode(resilience, forKey: .resilience) } + if let sapFeature = self.sapFeature { + try encodeContainer.encode(sapFeature, forKey: .sapFeature) + } if let sapHostname = self.sapHostname { try encodeContainer.encode(sapHostname, forKey: .sapHostname) } if let sapKernelVersion = self.sapKernelVersion { try encodeContainer.encode(sapKernelVersion, forKey: .sapKernelVersion) } + if let sid = self.sid { + try encodeContainer.encode(sid, forKey: .sid) + } if let status = self.status { try encodeContainer.encode(status.rawValue, forKey: .status) } + if let systemNumber = self.systemNumber { + try encodeContainer.encode(systemNumber, forKey: .systemNumber) + } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let componentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .componentId) componentId = componentIdDecoded + let sidDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sid) + sid = sidDecoded + let systemNumberDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .systemNumber) + systemNumber = systemNumberDecoded let parentComponentDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .parentComponent) parentComponent = parentComponentDecoded let childComponentsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .childComponents) @@ -667,6 +760,8 @@ extension SsmSapClientTypes.Component: Swift.Codable { status = statusDecoded let sapHostnameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sapHostname) sapHostname = sapHostnameDecoded + let sapFeatureDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sapFeature) + sapFeature = sapFeatureDecoded let sapKernelVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sapKernelVersion) sapKernelVersion = sapKernelVersionDecoded let hdbVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .hdbVersion) @@ -699,6 +794,8 @@ extension SsmSapClientTypes.Component: Swift.Codable { hosts = hostsDecoded0 let primaryHostDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .primaryHost) primaryHost = primaryHostDecoded + let databaseConnectionDecoded = try containerValues.decodeIfPresent(SsmSapClientTypes.DatabaseConnection.self, forKey: .databaseConnection) + databaseConnection = databaseConnectionDecoded let lastUpdatedDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastUpdated) lastUpdated = lastUpdatedDecoded let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) @@ -721,6 +818,8 @@ extension SsmSapClientTypes { public var componentId: Swift.String? /// The type of the component. public var componentType: SsmSapClientTypes.ComponentType? + /// The connection specifications for the database of the component. + public var databaseConnection: SsmSapClientTypes.DatabaseConnection? /// The SAP HANA databases of the component. public var databases: [Swift.String]? /// The SAP HANA version of the component. @@ -737,12 +836,32 @@ extension SsmSapClientTypes { public var primaryHost: Swift.String? /// Details of the SAP HANA system replication for the component. public var resilience: SsmSapClientTypes.Resilience? + /// The SAP feature of the component. + public var sapFeature: Swift.String? /// The hostname of the component. public var sapHostname: Swift.String? /// The kernel version of the component. public var sapKernelVersion: Swift.String? + /// The SAP System Identifier of the application component. + public var sid: Swift.String? /// The status of the component. + /// + /// * ACTIVATED - this status has been deprecated. + /// + /// * STARTING - the component is in the process of being started. + /// + /// * STOPPED - the component is not running. + /// + /// * STOPPING - the component is in the process of being stopped. + /// + /// * RUNNING - the component is running. + /// + /// * RUNNING_WITH_ERROR - one or more child component(s) of the parent component is not running. Call [GetComponent](https://docs.aws.amazon.com/ssmsap/latest/APIReference/API_GetComponent.html) to review the status of each child component. + /// + /// * UNDEFINED - AWS Systems Manager for SAP cannot provide the component status based on the discovered information. Verify your SAP application. public var status: SsmSapClientTypes.ComponentStatus? + /// The SAP system number of the application component. + public var systemNumber: Swift.String? public init( applicationId: Swift.String? = nil, @@ -751,6 +870,7 @@ extension SsmSapClientTypes { childComponents: [Swift.String]? = nil, componentId: Swift.String? = nil, componentType: SsmSapClientTypes.ComponentType? = nil, + databaseConnection: SsmSapClientTypes.DatabaseConnection? = nil, databases: [Swift.String]? = nil, hdbVersion: Swift.String? = nil, hosts: [SsmSapClientTypes.Host]? = nil, @@ -758,9 +878,12 @@ extension SsmSapClientTypes { parentComponent: Swift.String? = nil, primaryHost: Swift.String? = nil, resilience: SsmSapClientTypes.Resilience? = nil, + sapFeature: Swift.String? = nil, sapHostname: Swift.String? = nil, sapKernelVersion: Swift.String? = nil, - status: SsmSapClientTypes.ComponentStatus? = nil + sid: Swift.String? = nil, + status: SsmSapClientTypes.ComponentStatus? = nil, + systemNumber: Swift.String? = nil ) { self.applicationId = applicationId @@ -769,6 +892,7 @@ extension SsmSapClientTypes { self.childComponents = childComponents self.componentId = componentId self.componentType = componentType + self.databaseConnection = databaseConnection self.databases = databases self.hdbVersion = hdbVersion self.hosts = hosts @@ -776,9 +900,12 @@ extension SsmSapClientTypes { self.parentComponent = parentComponent self.primaryHost = primaryHost self.resilience = resilience + self.sapFeature = sapFeature self.sapHostname = sapHostname self.sapKernelVersion = sapKernelVersion + self.sid = sid self.status = status + self.systemNumber = systemNumber } } @@ -920,14 +1047,26 @@ extension SsmSapClientTypes { extension SsmSapClientTypes { public enum ComponentType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case abap + case ascs + case dialog + case ers case hana case hanaNode + case wd + case webdisp case sdkUnknown(Swift.String) public static var allCases: [ComponentType] { return [ + .abap, + .ascs, + .dialog, + .ers, .hana, .hanaNode, + .wd, + .webdisp, .sdkUnknown("") ] } @@ -937,8 +1076,14 @@ extension SsmSapClientTypes { } public var rawValue: Swift.String { switch self { + case .abap: return "ABAP" + case .ascs: return "ASCS" + case .dialog: return "DIALOG" + case .ers: return "ERS" case .hana: return "HANA" case .hanaNode: return "HANA_NODE" + case .wd: return "WD" + case .webdisp: return "WEBDISP" case let .sdkUnknown(s): return s } } @@ -1181,6 +1326,93 @@ extension SsmSapClientTypes { } +extension SsmSapClientTypes.DatabaseConnection: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case connectionIp = "ConnectionIp" + case databaseArn = "DatabaseArn" + case databaseConnectionMethod = "DatabaseConnectionMethod" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let connectionIp = self.connectionIp { + try encodeContainer.encode(connectionIp, forKey: .connectionIp) + } + if let databaseArn = self.databaseArn { + try encodeContainer.encode(databaseArn, forKey: .databaseArn) + } + if let databaseConnectionMethod = self.databaseConnectionMethod { + try encodeContainer.encode(databaseConnectionMethod.rawValue, forKey: .databaseConnectionMethod) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let databaseConnectionMethodDecoded = try containerValues.decodeIfPresent(SsmSapClientTypes.DatabaseConnectionMethod.self, forKey: .databaseConnectionMethod) + databaseConnectionMethod = databaseConnectionMethodDecoded + let databaseArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseArn) + databaseArn = databaseArnDecoded + let connectionIpDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .connectionIp) + connectionIp = connectionIpDecoded + } +} + +extension SsmSapClientTypes { + /// The connection specifications for the database. + public struct DatabaseConnection: Swift.Equatable { + /// The IP address for connection. + public var connectionIp: Swift.String? + /// The Amazon Resource Name of the connected SAP HANA database. + public var databaseArn: Swift.String? + /// The method of connection. + public var databaseConnectionMethod: SsmSapClientTypes.DatabaseConnectionMethod? + + public init( + connectionIp: Swift.String? = nil, + databaseArn: Swift.String? = nil, + databaseConnectionMethod: SsmSapClientTypes.DatabaseConnectionMethod? = nil + ) + { + self.connectionIp = connectionIp + self.databaseArn = databaseArn + self.databaseConnectionMethod = databaseConnectionMethod + } + } + +} + +extension SsmSapClientTypes { + public enum DatabaseConnectionMethod: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case direct + case overlay + case sdkUnknown(Swift.String) + + public static var allCases: [DatabaseConnectionMethod] { + return [ + .direct, + .overlay, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .direct: return "DIRECT" + case .overlay: return "OVERLAY" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = DatabaseConnectionMethod(rawValue: rawValue) ?? DatabaseConnectionMethod.sdkUnknown(rawValue) + } + } +} + extension SsmSapClientTypes { public enum DatabaseStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case error @@ -1543,6 +1775,7 @@ enum DeregisterApplicationOutputError: ClientRuntime.HttpResponseErrorBinding { let requestID = httpResponse.requestId switch restJSONError.errorType { case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "UnauthorizedException": return try await UnauthorizedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) } @@ -1910,6 +2143,7 @@ enum GetComponentOutputError: ClientRuntime.HttpResponseErrorBinding { let requestID = httpResponse.requestId switch restJSONError.errorType { case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "UnauthorizedException": return try await UnauthorizedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) } @@ -2461,14 +2695,76 @@ extension InternalServerExceptionBody: Swift.Decodable { } } +extension SsmSapClientTypes.IpAddressMember: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case allocationType = "AllocationType" + case ipAddress = "IpAddress" + case primary = "Primary" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let allocationType = self.allocationType { + try encodeContainer.encode(allocationType.rawValue, forKey: .allocationType) + } + if let ipAddress = self.ipAddress { + try encodeContainer.encode(ipAddress, forKey: .ipAddress) + } + if let primary = self.primary { + try encodeContainer.encode(primary, forKey: .primary) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let ipAddressDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ipAddress) + ipAddress = ipAddressDecoded + let primaryDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .primary) + primary = primaryDecoded + let allocationTypeDecoded = try containerValues.decodeIfPresent(SsmSapClientTypes.AllocationType.self, forKey: .allocationType) + allocationType = allocationTypeDecoded + } +} + +extension SsmSapClientTypes { + /// Provides information of the IP address. + public struct IpAddressMember: Swift.Equatable { + /// The type of allocation for the IP address. + public var allocationType: SsmSapClientTypes.AllocationType? + /// The IP address. + public var ipAddress: Swift.String? + /// The primary IP address. + public var primary: Swift.Bool? + + public init( + allocationType: SsmSapClientTypes.AllocationType? = nil, + ipAddress: Swift.String? = nil, + primary: Swift.Bool? = nil + ) + { + self.allocationType = allocationType + self.ipAddress = ipAddress + self.primary = primary + } + } + +} + extension ListApplicationsInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case filters = "Filters" case maxResults = "MaxResults" case nextToken = "NextToken" } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let filters = filters { + var filtersContainer = encodeContainer.nestedUnkeyedContainer(forKey: .filters) + for filter0 in filters { + try filtersContainer.encode(filter0) + } + } if let maxResults = self.maxResults { try encodeContainer.encode(maxResults, forKey: .maxResults) } @@ -2485,16 +2781,20 @@ extension ListApplicationsInput: ClientRuntime.URLPathProvider { } public struct ListApplicationsInput: Swift.Equatable { + /// The filter of name, value, and operator. + public var filters: [SsmSapClientTypes.Filter]? /// The maximum number of results to return with a single call. To retrieve the remaining results, make another call with the returned nextToken value. public var maxResults: Swift.Int? /// The token for the next page of results. public var nextToken: Swift.String? public init( + filters: [SsmSapClientTypes.Filter]? = nil, maxResults: Swift.Int? = nil, nextToken: Swift.String? = nil ) { + self.filters = filters self.maxResults = maxResults self.nextToken = nextToken } @@ -2503,10 +2803,12 @@ public struct ListApplicationsInput: Swift.Equatable { struct ListApplicationsInputBody: Swift.Equatable { let nextToken: Swift.String? let maxResults: Swift.Int? + let filters: [SsmSapClientTypes.Filter]? } extension ListApplicationsInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case filters = "Filters" case maxResults = "MaxResults" case nextToken = "NextToken" } @@ -2517,6 +2819,17 @@ extension ListApplicationsInputBody: Swift.Decodable { nextToken = nextTokenDecoded let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) maxResults = maxResultsDecoded + let filtersContainer = try containerValues.decodeIfPresent([SsmSapClientTypes.Filter?].self, forKey: .filters) + var filtersDecoded0:[SsmSapClientTypes.Filter]? = nil + if let filtersContainer = filtersContainer { + filtersDecoded0 = [SsmSapClientTypes.Filter]() + for structure0 in filtersContainer { + if let structure0 = structure0 { + filtersDecoded0?.append(structure0) + } + } + } + filters = filtersDecoded0 } } @@ -2729,6 +3042,7 @@ enum ListComponentsOutputError: ClientRuntime.HttpResponseErrorBinding { switch restJSONError.errorType { case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "UnauthorizedException": return try await UnauthorizedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) } @@ -3536,6 +3850,7 @@ extension RegisterApplicationInput: Swift.Encodable { case applicationId = "ApplicationId" case applicationType = "ApplicationType" case credentials = "Credentials" + case databaseArn = "DatabaseArn" case instances = "Instances" case sapInstanceNumber = "SapInstanceNumber" case sid = "Sid" @@ -3556,6 +3871,9 @@ extension RegisterApplicationInput: Swift.Encodable { try credentialsContainer.encode(applicationcredential0) } } + if let databaseArn = self.databaseArn { + try encodeContainer.encode(databaseArn, forKey: .databaseArn) + } if let instances = instances { var instancesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .instances) for instanceid0 in instances { @@ -3591,8 +3909,9 @@ public struct RegisterApplicationInput: Swift.Equatable { /// This member is required. public var applicationType: SsmSapClientTypes.ApplicationType? /// The credentials of the SAP application. - /// This member is required. public var credentials: [SsmSapClientTypes.ApplicationCredential]? + /// The Amazon Resource Name of the SAP HANA database. + public var databaseArn: Swift.String? /// The Amazon EC2 instances on which your SAP application is running. /// This member is required. public var instances: [Swift.String]? @@ -3607,6 +3926,7 @@ public struct RegisterApplicationInput: Swift.Equatable { applicationId: Swift.String? = nil, applicationType: SsmSapClientTypes.ApplicationType? = nil, credentials: [SsmSapClientTypes.ApplicationCredential]? = nil, + databaseArn: Swift.String? = nil, instances: [Swift.String]? = nil, sapInstanceNumber: Swift.String? = nil, sid: Swift.String? = nil, @@ -3616,6 +3936,7 @@ public struct RegisterApplicationInput: Swift.Equatable { self.applicationId = applicationId self.applicationType = applicationType self.credentials = credentials + self.databaseArn = databaseArn self.instances = instances self.sapInstanceNumber = sapInstanceNumber self.sid = sid @@ -3631,6 +3952,7 @@ struct RegisterApplicationInputBody: Swift.Equatable { let sid: Swift.String? let tags: [Swift.String:Swift.String]? let credentials: [SsmSapClientTypes.ApplicationCredential]? + let databaseArn: Swift.String? } extension RegisterApplicationInputBody: Swift.Decodable { @@ -3638,6 +3960,7 @@ extension RegisterApplicationInputBody: Swift.Decodable { case applicationId = "ApplicationId" case applicationType = "ApplicationType" case credentials = "Credentials" + case databaseArn = "DatabaseArn" case instances = "Instances" case sapInstanceNumber = "SapInstanceNumber" case sid = "Sid" @@ -3687,6 +4010,8 @@ extension RegisterApplicationInputBody: Swift.Decodable { } } credentials = credentialsDecoded0 + let databaseArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseArn) + databaseArn = databaseArnDecoded } } @@ -3747,6 +4072,7 @@ enum RegisterApplicationOutputError: ClientRuntime.HttpResponseErrorBinding { switch restJSONError.errorType { case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) } @@ -3797,6 +4123,7 @@ extension SsmSapClientTypes { extension SsmSapClientTypes.Resilience: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case clusterStatus = "ClusterStatus" + case enqueueReplication = "EnqueueReplication" case hsrOperationMode = "HsrOperationMode" case hsrReplicationMode = "HsrReplicationMode" case hsrTier = "HsrTier" @@ -3807,6 +4134,9 @@ extension SsmSapClientTypes.Resilience: Swift.Codable { if let clusterStatus = self.clusterStatus { try encodeContainer.encode(clusterStatus.rawValue, forKey: .clusterStatus) } + if let enqueueReplication = self.enqueueReplication { + try encodeContainer.encode(enqueueReplication, forKey: .enqueueReplication) + } if let hsrOperationMode = self.hsrOperationMode { try encodeContainer.encode(hsrOperationMode.rawValue, forKey: .hsrOperationMode) } @@ -3828,6 +4158,8 @@ extension SsmSapClientTypes.Resilience: Swift.Codable { hsrOperationMode = hsrOperationModeDecoded let clusterStatusDecoded = try containerValues.decodeIfPresent(SsmSapClientTypes.ClusterStatus.self, forKey: .clusterStatus) clusterStatus = clusterStatusDecoded + let enqueueReplicationDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .enqueueReplication) + enqueueReplication = enqueueReplicationDecoded } } @@ -3836,6 +4168,8 @@ extension SsmSapClientTypes { public struct Resilience: Swift.Equatable { /// The cluster status of the component. public var clusterStatus: SsmSapClientTypes.ClusterStatus? + /// Indicates if or not enqueue replication is enabled for the ASCS component. + public var enqueueReplication: Swift.Bool? /// The operation mode of the component. public var hsrOperationMode: SsmSapClientTypes.OperationMode? /// The replication mode of the component. @@ -3845,12 +4179,14 @@ extension SsmSapClientTypes { public init( clusterStatus: SsmSapClientTypes.ClusterStatus? = nil, + enqueueReplication: Swift.Bool? = nil, hsrOperationMode: SsmSapClientTypes.OperationMode? = nil, hsrReplicationMode: SsmSapClientTypes.ReplicationMode? = nil, hsrTier: Swift.String? = nil ) { self.clusterStatus = clusterStatus + self.enqueueReplication = enqueueReplication self.hsrOperationMode = hsrOperationMode self.hsrReplicationMode = hsrReplicationMode self.hsrTier = hsrTier @@ -4010,6 +4346,7 @@ enum StartApplicationRefreshOutputError: ClientRuntime.HttpResponseErrorBinding case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "UnauthorizedException": return try await UnauthorizedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) } @@ -4107,6 +4444,61 @@ enum TagResourceOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension UnauthorizedException { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { + if let data = try await httpResponse.body.readData(), + let responseDecoder = decoder { + let output: UnauthorizedExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// The request is not authorized. +public struct UnauthorizedException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "UnauthorizedException" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = HttpResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +struct UnauthorizedExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension UnauthorizedExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message = "Message" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + extension UntagResourceInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { @@ -4189,6 +4581,7 @@ extension UpdateApplicationSettingsInput: Swift.Encodable { case backint = "Backint" case credentialsToAddOrUpdate = "CredentialsToAddOrUpdate" case credentialsToRemove = "CredentialsToRemove" + case databaseArn = "DatabaseArn" } public func encode(to encoder: Swift.Encoder) throws { @@ -4211,6 +4604,9 @@ extension UpdateApplicationSettingsInput: Swift.Encodable { try credentialsToRemoveContainer.encode(applicationcredential0) } } + if let databaseArn = self.databaseArn { + try encodeContainer.encode(databaseArn, forKey: .databaseArn) + } } } @@ -4230,18 +4626,22 @@ public struct UpdateApplicationSettingsInput: Swift.Equatable { public var credentialsToAddOrUpdate: [SsmSapClientTypes.ApplicationCredential]? /// The credentials to be removed. public var credentialsToRemove: [SsmSapClientTypes.ApplicationCredential]? + /// The Amazon Resource Name of the SAP HANA database that replaces the current SAP HANA connection with the SAP_ABAP application. + public var databaseArn: Swift.String? public init( applicationId: Swift.String? = nil, backint: SsmSapClientTypes.BackintConfig? = nil, credentialsToAddOrUpdate: [SsmSapClientTypes.ApplicationCredential]? = nil, - credentialsToRemove: [SsmSapClientTypes.ApplicationCredential]? = nil + credentialsToRemove: [SsmSapClientTypes.ApplicationCredential]? = nil, + databaseArn: Swift.String? = nil ) { self.applicationId = applicationId self.backint = backint self.credentialsToAddOrUpdate = credentialsToAddOrUpdate self.credentialsToRemove = credentialsToRemove + self.databaseArn = databaseArn } } @@ -4250,6 +4650,7 @@ struct UpdateApplicationSettingsInputBody: Swift.Equatable { let credentialsToAddOrUpdate: [SsmSapClientTypes.ApplicationCredential]? let credentialsToRemove: [SsmSapClientTypes.ApplicationCredential]? let backint: SsmSapClientTypes.BackintConfig? + let databaseArn: Swift.String? } extension UpdateApplicationSettingsInputBody: Swift.Decodable { @@ -4258,6 +4659,7 @@ extension UpdateApplicationSettingsInputBody: Swift.Decodable { case backint = "Backint" case credentialsToAddOrUpdate = "CredentialsToAddOrUpdate" case credentialsToRemove = "CredentialsToRemove" + case databaseArn = "DatabaseArn" } public init(from decoder: Swift.Decoder) throws { @@ -4288,6 +4690,8 @@ extension UpdateApplicationSettingsInputBody: Swift.Decodable { credentialsToRemove = credentialsToRemoveDecoded0 let backintDecoded = try containerValues.decodeIfPresent(SsmSapClientTypes.BackintConfig.self, forKey: .backint) backint = backintDecoded + let databaseArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseArn) + databaseArn = databaseArnDecoded } } @@ -4358,6 +4762,7 @@ enum UpdateApplicationSettingsOutputError: ClientRuntime.HttpResponseErrorBindin case "ConflictException": return try await ConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InternalServerException": return try await InternalServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "UnauthorizedException": return try await UnauthorizedException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ValidationException": return try await ValidationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) } diff --git a/Sources/Services/AWSTransfer/Waiters.swift b/Sources/Services/AWSTransfer/Waiters.swift index 790ef90eed5..5437fcc3b46 100644 --- a/Sources/Services/AWSTransfer/Waiters.swift +++ b/Sources/Services/AWSTransfer/Waiters.swift @@ -25,7 +25,7 @@ extension TransferClientProtocol { return JMESUtils.compare(state, ==, "STOP_FAILED") }), ] - return try WaiterConfiguration(acceptors: acceptors, minDelay: 30.0, maxDelay: 120.0) + return try WaiterConfiguration(acceptors: acceptors, minDelay: 30.0, maxDelay: 3600.0) } /// Initiates waiting for the ServerOffline event on the describeServer operation. @@ -65,7 +65,7 @@ extension TransferClientProtocol { return JMESUtils.compare(state, ==, "START_FAILED") }), ] - return try WaiterConfiguration(acceptors: acceptors, minDelay: 30.0, maxDelay: 120.0) + return try WaiterConfiguration(acceptors: acceptors, minDelay: 30.0, maxDelay: 3600.0) } /// Initiates waiting for the ServerOnline event on the describeServer operation. diff --git a/Sources/Services/AWSTransfer/models/Models.swift b/Sources/Services/AWSTransfer/models/Models.swift index a418cd3a8ba..b1597d4e5e5 100644 --- a/Sources/Services/AWSTransfer/models/Models.swift +++ b/Sources/Services/AWSTransfer/models/Models.swift @@ -1719,7 +1719,7 @@ public struct CreateUserInput: Swift.Equatable { /// A system-assigned unique identifier for a server instance. This is the specific server that you added your user to. /// This member is required. public var serverId: Swift.String? - /// The public portion of the Secure Shell (SSH) key used to authenticate the user to the server. The three standard SSH public key format elements are , , and an optional , with spaces between each element. Transfer Family accepts RSA, ECDSA, and ED25519 keys. + /// The public portion of the Secure Shell (SSH) key used to authenticate the user to the server. The three standard SSH public key format elements are , , and an optional , with spaces between each element. Transfer Family accepts RSA, ECDSA, and ED25519 keys. /// /// * For RSA keys, the key type is ssh-rsa. /// @@ -11051,13 +11051,13 @@ extension TransferClientTypes.SftpConnectorConfig: Swift.Codable { extension TransferClientTypes { /// Contains the details for an SFTP connector object. The connector object is used for transferring files to and from a partner's SFTP server. public struct SftpConnectorConfig: Swift.Equatable { - /// The public portion of the host key, or keys, that are used to identify the external server to which you are connecting. You can use the ssh-keyscan command against the SFTP server to retrieve the necessary key. The three standard SSH public key format elements are , , and an optional , with spaces between each element. Specify only the and : do not enter the portion of the key. For the trusted host key, Transfer Family accepts RSA and ECDSA keys. + /// The public portion of the host key, or keys, that are used to identify the external server to which you are connecting. You can use the ssh-keyscan command against the SFTP server to retrieve the necessary key. The three standard SSH public key format elements are , , and an optional , with spaces between each element. Specify only the and : do not enter the portion of the key. For the trusted host key, Transfer Family accepts RSA and ECDSA keys. /// - /// * For RSA keys, the string is ssh-rsa. + /// * For RSA keys, the string is ssh-rsa. /// - /// * For ECDSA keys, the string is either ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, or ecdsa-sha2-nistp521, depending on the size of the key you generated. + /// * For ECDSA keys, the string is either ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, or ecdsa-sha2-nistp521, depending on the size of the key you generated. public var trustedHostKeys: [Swift.String]? - /// The identifier for the secret (in Amazon Web Services Secrets Manager) that contains the SFTP user's private key, password, or both. The identifier can be either the Amazon Resource Name (ARN) or the name of the secret. + /// The identifier for the secret (in Amazon Web Services Secrets Manager) that contains the SFTP user's private key, password, or both. The identifier must be the Amazon Resource Name (ARN) of the secret. public var userSecretId: Swift.String? public init( diff --git a/Sources/Services/AWSTranslate/TranslateClient.swift b/Sources/Services/AWSTranslate/TranslateClient.swift index 801a7b636fe..c0335c12994 100644 --- a/Sources/Services/AWSTranslate/TranslateClient.swift +++ b/Sources/Services/AWSTranslate/TranslateClient.swift @@ -793,7 +793,7 @@ extension TranslateClient: TranslateClientProtocol { return result } - /// Translates the input document from the source language to the target language. This synchronous operation supports plain text or HTML for the input document. TranslateDocument supports translations from English to any supported language, and from any supported language to English. Therefore, specify either the source language code or the target language code as “en” (English). TranslateDocument does not support language auto-detection. If you set the Formality parameter, the request will fail if the target language does not support formality. For a list of target languages that support formality, see [Setting formality](https://docs.aws.amazon.com/translate/latest/dg/customizing-translations-formality.html). + /// Translates the input document from the source language to the target language. This synchronous operation supports text, HTML, or Word documents as the input document. TranslateDocument supports translations from English to any supported language, and from any supported language to English. Therefore, specify either the source language code or the target language code as “en” (English). If you set the Formality parameter, the request will fail if the target language does not support formality. For a list of target languages that support formality, see [Setting formality](https://docs.aws.amazon.com/translate/latest/dg/customizing-translations-formality.html). /// /// - Parameter TranslateDocumentInput : [no documentation found] /// diff --git a/Sources/Services/AWSTranslate/TranslateClientProtocol.swift b/Sources/Services/AWSTranslate/TranslateClientProtocol.swift index a1f7b9a2777..f00df716970 100644 --- a/Sources/Services/AWSTranslate/TranslateClientProtocol.swift +++ b/Sources/Services/AWSTranslate/TranslateClientProtocol.swift @@ -218,7 +218,7 @@ public protocol TranslateClientProtocol { /// - `ResourceNotFoundException` : The resource you are looking for has not been found. Review the resource you're looking for and see if a different resource will accomplish your needs before retrying the revised request. /// - `TooManyTagsException` : You have added too many tags to this resource. The maximum is 50 tags. func tagResource(input: TagResourceInput) async throws -> TagResourceOutput - /// Translates the input document from the source language to the target language. This synchronous operation supports plain text or HTML for the input document. TranslateDocument supports translations from English to any supported language, and from any supported language to English. Therefore, specify either the source language code or the target language code as “en” (English). TranslateDocument does not support language auto-detection. If you set the Formality parameter, the request will fail if the target language does not support formality. For a list of target languages that support formality, see [Setting formality](https://docs.aws.amazon.com/translate/latest/dg/customizing-translations-formality.html). + /// Translates the input document from the source language to the target language. This synchronous operation supports text, HTML, or Word documents as the input document. TranslateDocument supports translations from English to any supported language, and from any supported language to English. Therefore, specify either the source language code or the target language code as “en” (English). If you set the Formality parameter, the request will fail if the target language does not support formality. For a list of target languages that support formality, see [Setting formality](https://docs.aws.amazon.com/translate/latest/dg/customizing-translations-formality.html). /// /// - Parameter TranslateDocumentInput : [no documentation found] /// diff --git a/Sources/Services/AWSTranslate/models/Models.swift b/Sources/Services/AWSTranslate/models/Models.swift index bb9942d395c..577216cd540 100644 --- a/Sources/Services/AWSTranslate/models/Models.swift +++ b/Sources/Services/AWSTranslate/models/Models.swift @@ -59,6 +59,35 @@ extension TranslateClientTypes { } +extension TranslateClientTypes { + public enum Brevity: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case on + case sdkUnknown(Swift.String) + + public static var allCases: [Brevity] { + return [ + .on, + .sdkUnknown("") + ] + } + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) + } + public var rawValue: Swift.String { + switch self { + case .on: return "ON" + case let .sdkUnknown(s): return s + } + } + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = Brevity(rawValue: rawValue) ?? Brevity.sdkUnknown(rawValue) + } + } +} + extension ConcurrentModificationException { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let data = try await httpResponse.body.readData(), @@ -2677,10 +2706,8 @@ extension TranslateClientTypes { /// Specifies the format and S3 location of the parallel data input file. public struct ParallelDataConfig: Swift.Equatable { /// The format of the parallel data input file. - /// This member is required. public var format: TranslateClientTypes.ParallelDataFormat? /// The URI of the Amazon S3 folder that contains the parallel data input file. The folder must be in the same Region as the API endpoint you are calling. - /// This member is required. public var s3Uri: Swift.String? public init( @@ -3245,7 +3272,13 @@ public struct StartTextTranslationJobInput: Swift.Equatable { public var outputDataConfig: TranslateClientTypes.OutputDataConfig? /// The name of a parallel data resource to add to the translation job. This resource consists of examples that show how you want segments of text to be translated. If you specify multiple target languages for the job, the parallel data file must include translations for all the target languages. When you add parallel data to a translation job, you create an Active Custom Translation job. This parameter accepts only one parallel data resource. Active Custom Translation jobs are priced at a higher rate than other jobs that don't use parallel data. For more information, see [Amazon Translate pricing](http://aws.amazon.com/translate/pricing/). For a list of available parallel data resources, use the [ListParallelData] operation. For more information, see [ Customizing your translations with parallel data](https://docs.aws.amazon.com/translate/latest/dg/customizing-translations-parallel-data.html). public var parallelDataNames: [Swift.String]? - /// Settings to configure your translation output, including the option to set the formality level of the output text and the option to mask profane words and phrases. + /// Settings to configure your translation output. You can configure the following options: + /// + /// * Brevity: not supported. + /// + /// * Formality: sets the formality level of the output text. + /// + /// * Profanity: masks profane words and phrases in your translation output. public var settings: TranslateClientTypes.TranslationSettings? /// The language code of the input language. Specify the language if all input documents share the same language. If you don't know the language of the source files, or your input documents contains different source languages, select auto. Amazon Translate auto detects the source language for each input document. For a list of supported language codes, see [Supported languages](https://docs.aws.amazon.com/translate/latest/dg/what-is-languages.html). /// This member is required. @@ -4555,9 +4588,15 @@ public struct TranslateDocumentInput: Swift.Equatable { /// The content and content type for the document to be translated. The document size must not exceed 100 KB. /// This member is required. public var document: TranslateClientTypes.Document? - /// Settings to configure your translation output, including the option to set the formality level of the output text and the option to mask profane words and phrases. + /// Settings to configure your translation output. You can configure the following options: + /// + /// * Brevity: not supported. + /// + /// * Formality: sets the formality level of the output text. + /// + /// * Profanity: masks profane words and phrases in your translation output. public var settings: TranslateClientTypes.TranslationSettings? - /// The language code for the language of the source text. Do not use auto, because TranslateDocument does not support language auto-detection. For a list of supported language codes, see [Supported languages](https://docs.aws.amazon.com/translate/latest/dg/what-is-languages.html). + /// The language code for the language of the source text. For a list of supported language codes, see [Supported languages](https://docs.aws.amazon.com/translate/latest/dg/what-is-languages.html). To have Amazon Translate determine the source language of your text, you can specify auto in the SourceLanguageCode field. If you specify auto, Amazon Translate will call [Amazon Comprehend](https://docs.aws.amazon.com/comprehend/latest/dg/comprehend-general.html) to determine the source language. If you specify auto, you must send the TranslateDocument request in a region that supports Amazon Comprehend. Otherwise, the request returns an error indicating that autodetect is not supported. /// This member is required. public var sourceLanguageCode: Swift.String? /// The language code requested for the translated document. For a list of supported language codes, see [Supported languages](https://docs.aws.amazon.com/translate/latest/dg/what-is-languages.html). @@ -4644,7 +4683,13 @@ extension TranslateDocumentOutput: ClientRuntime.HttpResponseBinding { } public struct TranslateDocumentOutput: Swift.Equatable { - /// Settings to configure your translation output, including the option to set the formality level of the output text and the option to mask profane words and phrases. + /// Settings to configure your translation output. You can configure the following options: + /// + /// * Brevity: reduces the length of the translation output for most translations. Available for TranslateText only. + /// + /// * Formality: sets the formality level of the translation output. + /// + /// * Profanity: masks profane words and phrases in the translation output. public var appliedSettings: TranslateClientTypes.TranslationSettings? /// The names of the custom terminologies applied to the input text by Amazon Translate to produce the translated text document. public var appliedTerminologies: [TranslateClientTypes.AppliedTerminology]? @@ -4771,7 +4816,13 @@ extension TranslateTextInput: ClientRuntime.URLPathProvider { } public struct TranslateTextInput: Swift.Equatable { - /// Settings to configure your translation output, including the option to set the formality level of the output text and the option to mask profane words and phrases. + /// Settings to configure your translation output. You can configure the following options: + /// + /// * Brevity: reduces the length of the translated output for most translations. + /// + /// * Formality: sets the formality level of the output text. + /// + /// * Profanity: masks profane words and phrases in your translation output. public var settings: TranslateClientTypes.TranslationSettings? /// The language code for the language of the source text. For a list of language codes, see [Supported languages](https://docs.aws.amazon.com/translate/latest/dg/what-is-languages.html). To have Amazon Translate determine the source language of your text, you can specify auto in the SourceLanguageCode field. If you specify auto, Amazon Translate will call [Amazon Comprehend](https://docs.aws.amazon.com/comprehend/latest/dg/comprehend-general.html) to determine the source language. If you specify auto, you must send the TranslateText request in a region that supports Amazon Comprehend. Otherwise, the request returns an error indicating that autodetect is not supported. /// This member is required. @@ -4995,12 +5046,16 @@ extension TranslateClientTypes { extension TranslateClientTypes.TranslationSettings: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case brevity = "Brevity" case formality = "Formality" case profanity = "Profanity" } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let brevity = self.brevity { + try encodeContainer.encode(brevity.rawValue, forKey: .brevity) + } if let formality = self.formality { try encodeContainer.encode(formality.rawValue, forKey: .formality) } @@ -5015,22 +5070,34 @@ extension TranslateClientTypes.TranslationSettings: Swift.Codable { formality = formalityDecoded let profanityDecoded = try containerValues.decodeIfPresent(TranslateClientTypes.Profanity.self, forKey: .profanity) profanity = profanityDecoded + let brevityDecoded = try containerValues.decodeIfPresent(TranslateClientTypes.Brevity.self, forKey: .brevity) + brevity = brevityDecoded } } extension TranslateClientTypes { - /// Settings to configure your translation output, including the option to set the formality level of the output text and the option to mask profane words and phrases. + /// Settings to configure your translation output. You can configure the following options: + /// + /// * Brevity: reduces the length of the translation output for most translations. Available for TranslateText only. + /// + /// * Formality: sets the formality level of the translation output. + /// + /// * Profanity: masks profane words and phrases in the translation output. public struct TranslationSettings: Swift.Equatable { - /// You can optionally specify the desired level of formality for translations to supported target languages. The formality setting controls the level of formal language usage (also known as [register](https://en.wikipedia.org/wiki/Register_(sociolinguistics))) in the translation output. You can set the value to informal or formal. If you don't specify a value for formality, or if the target language doesn't support formality, the translation will ignore the formality setting. If you specify multiple target languages for the job, translate ignores the formality setting for any unsupported target language. For a list of target languages that support formality, see [Supported languages](https://docs.aws.amazon.com/translate/latest/dg/customizing-translations-formality.html#customizing-translations-formality-languages) in the Amazon Translate Developer Guide. + /// When you turn on brevity, Amazon Translate reduces the length of the translation output for most translations (when compared with the same translation with brevity turned off). By default, brevity is turned off. If you turn on brevity for a translation request with an unsupported language pair, the translation proceeds with the brevity setting turned off. For the language pairs that brevity supports, see [Using brevity](https://docs.aws.amazon.com/translate/latest/dg/customizing-translations-brevity) in the Amazon Translate Developer Guide. + public var brevity: TranslateClientTypes.Brevity? + /// You can specify the desired level of formality for translations to supported target languages. The formality setting controls the level of formal language usage (also known as [register](https://en.wikipedia.org/wiki/Register_(sociolinguistics))) in the translation output. You can set the value to informal or formal. If you don't specify a value for formality, or if the target language doesn't support formality, the translation will ignore the formality setting. If you specify multiple target languages for the job, translate ignores the formality setting for any unsupported target language. For a list of target languages that support formality, see [Supported languages](https://docs.aws.amazon.com/translate/latest/dg/customizing-translations-formality.html#customizing-translations-formality-languages) in the Amazon Translate Developer Guide. public var formality: TranslateClientTypes.Formality? - /// Enable the profanity setting if you want Amazon Translate to mask profane words and phrases in your translation output. To mask profane words and phrases, Amazon Translate replaces them with the grawlix string “?$#@$“. This 5-character sequence is used for each profane word or phrase, regardless of the length or number of words. Amazon Translate doesn't detect profanity in all of its supported languages. For languages that don't support profanity detection, see [Unsupported languages](https://docs.aws.amazon.com/translate/latest/dg/customizing-translations-profanity.html#customizing-translations-profanity-languages) in the Amazon Translate Developer Guide. If you specify multiple target languages for the job, all the target languages must support profanity masking. If any of the target languages don't support profanity masking, the translation job won't mask profanity for any target language. + /// You can enable the profanity setting if you want to mask profane words and phrases in your translation output. To mask profane words and phrases, Amazon Translate replaces them with the grawlix string “?$#@$“. This 5-character sequence is used for each profane word or phrase, regardless of the length or number of words. Amazon Translate doesn't detect profanity in all of its supported languages. For languages that don't support profanity detection, see [Unsupported languages](https://docs.aws.amazon.com/translate/latest/dg/customizing-translations-profanity.html#customizing-translations-profanity-languages) in the Amazon Translate Developer Guide. If you specify multiple target languages for the job, all the target languages must support profanity masking. If any of the target languages don't support profanity masking, the translation job won't mask profanity for any target language. public var profanity: TranslateClientTypes.Profanity? public init( + brevity: TranslateClientTypes.Brevity? = nil, formality: TranslateClientTypes.Formality? = nil, profanity: TranslateClientTypes.Profanity? = nil ) { + self.brevity = brevity self.formality = formality self.profanity = profanity } diff --git a/Sources/Services/AWSWAFV2/WAFV2Client.swift b/Sources/Services/AWSWAFV2/WAFV2Client.swift index 4feceab673d..79dea7855d6 100644 --- a/Sources/Services/AWSWAFV2/WAFV2Client.swift +++ b/Sources/Services/AWSWAFV2/WAFV2Client.swift @@ -67,7 +67,15 @@ public struct WAFV2ClientLogHandlerFactory: ClientRuntime.SDKLogHandlerFactory { } extension WAFV2Client: WAFV2ClientProtocol { - /// Associates a web ACL with a regional application resource, to protect the resource. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified Access instance. For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To associate a web ACL, in the CloudFront call UpdateDistribution, set the web ACL ID to the Amazon Resource Name (ARN) of the web ACL. For information, see [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) in the Amazon CloudFront Developer Guide. When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds. + /// Associates a web ACL with a regional application resource, to protect the resource. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified Access instance. For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To associate a web ACL, in the CloudFront call UpdateDistribution, set the web ACL ID to the Amazon Resource Name (ARN) of the web ACL. For information, see [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) in the Amazon CloudFront Developer Guide. Required permissions for customer-managed IAM policies This call requires permissions that are specific to the protected resource type. For details, see [Permissions for AssociateWebACL](https://docs.aws.amazon.com/waf/latest/developerguide/security_iam_service-with-iam.html#security_iam_action-AssociateWebACL) in the WAF Developer Guide. Temporary inconsistencies during updates When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate to all areas where the resources are stored. The propagation time can be from a few seconds to a number of minutes. The following are examples of the temporary inconsistencies that you might notice during change propagation: + /// + /// * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating that the web ACL is unavailable. + /// + /// * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web ACL is used and not in another. + /// + /// * After you change a rule action setting, you might see the old action in some places and the new action in others. + /// + /// * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in one area while still allowed in another. /// /// - Parameter AssociateWebACLInput : [no documentation found] /// @@ -1073,7 +1081,7 @@ extension WAFV2Client: WAFV2ClientProtocol { return result } - /// Disassociates the specified regional application resource from any existing web ACL association. A resource can have at most one web ACL association. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified Access instance. For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To disassociate a web ACL, provide an empty web ACL ID in the CloudFront call UpdateDistribution. For information, see [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) in the Amazon CloudFront API Reference. + /// Disassociates the specified regional application resource from any existing web ACL association. A resource can have at most one web ACL association. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified Access instance. For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To disassociate a web ACL, provide an empty web ACL ID in the CloudFront call UpdateDistribution. For information, see [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) in the Amazon CloudFront API Reference. Required permissions for customer-managed IAM policies This call requires permissions that are specific to the protected resource type. For details, see [Permissions for DisassociateWebACL](https://docs.aws.amazon.com/waf/latest/developerguide/security_iam_service-with-iam.html#security_iam_action-DisassociateWebACL) in the WAF Developer Guide. /// /// - Parameter DisassociateWebACLInput : [no documentation found] /// @@ -1800,7 +1808,7 @@ extension WAFV2Client: WAFV2ClientProtocol { return result } - /// Retrieves the [WebACL] for the specified resource. + /// Retrieves the [WebACL] for the specified resource. This call uses GetWebACL, to verify that your account has permission to access the retrieved web ACL. If you get an error that indicates that your account isn't authorized to perform wafv2:GetWebACL on the resource, that error won't be included in your CloudTrail event history. For Amazon CloudFront, don't use this call. Instead, call the CloudFront action GetDistributionConfig. For information, see [GetDistributionConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetDistributionConfig.html) in the Amazon CloudFront API Reference. Required permissions for customer-managed IAM policies This call requires permissions that are specific to the protected resource type. For details, see [Permissions for GetWebACLForResource](https://docs.aws.amazon.com/waf/latest/developerguide/security_iam_service-with-iam.html#security_iam_action-GetWebACLForResource) in the WAF Developer Guide. /// /// - Parameter GetWebACLForResourceInput : [no documentation found] /// @@ -2299,7 +2307,7 @@ extension WAFV2Client: WAFV2ClientProtocol { return result } - /// Retrieves an array of the Amazon Resource Names (ARNs) for the regional resources that are associated with the specified web ACL. If you want the list of Amazon CloudFront resources, use the CloudFront call ListDistributionsByWebACLId. + /// Retrieves an array of the Amazon Resource Names (ARNs) for the regional resources that are associated with the specified web ACL. For Amazon CloudFront, don't use this call. Instead, use the CloudFront call ListDistributionsByWebACLId. For information, see [ListDistributionsByWebACLId](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListDistributionsByWebACLId.html) in the Amazon CloudFront API Reference. Required permissions for customer-managed IAM policies This call requires permissions that are specific to the protected resource type. For details, see [Permissions for ListResourcesForWebACL](https://docs.aws.amazon.com/waf/latest/developerguide/security_iam_service-with-iam.html#security_iam_action-ListResourcesForWebACL) in the WAF Developer Guide. /// /// - Parameter ListResourcesForWebACLInput : [no documentation found] /// @@ -2857,7 +2865,15 @@ extension WAFV2Client: WAFV2ClientProtocol { /// * Provide the complete IP set specification to this call /// /// - /// When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds. + /// Temporary inconsistencies during updates When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate to all areas where the resources are stored. The propagation time can be from a few seconds to a number of minutes. The following are examples of the temporary inconsistencies that you might notice during change propagation: + /// + /// * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating that the web ACL is unavailable. + /// + /// * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web ACL is used and not in another. + /// + /// * After you change a rule action setting, you might see the old action in some places and the new action in others. + /// + /// * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in one area while still allowed in another. /// /// - Parameter UpdateIPSetInput : [no documentation found] /// @@ -2982,7 +2998,15 @@ extension WAFV2Client: WAFV2ClientProtocol { /// * Provide the complete regex pattern set specification to this call /// /// - /// When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds. + /// Temporary inconsistencies during updates When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate to all areas where the resources are stored. The propagation time can be from a few seconds to a number of minutes. The following are examples of the temporary inconsistencies that you might notice during change propagation: + /// + /// * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating that the web ACL is unavailable. + /// + /// * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web ACL is used and not in another. + /// + /// * After you change a rule action setting, you might see the old action in some places and the new action in others. + /// + /// * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in one area while still allowed in another. /// /// - Parameter UpdateRegexPatternSetInput : [no documentation found] /// @@ -3050,7 +3074,15 @@ extension WAFV2Client: WAFV2ClientProtocol { /// * Provide the complete rule group specification to this call /// /// - /// When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds. A rule group defines a collection of rules to inspect and control web requests that you can use in a [WebACL]. When you create a rule group, you define an immutable capacity limit. If you update a rule group, you must stay within the capacity. This allows others to reuse the rule group with confidence in its capacity requirements. + /// A rule group defines a collection of rules to inspect and control web requests that you can use in a [WebACL]. When you create a rule group, you define an immutable capacity limit. If you update a rule group, you must stay within the capacity. This allows others to reuse the rule group with confidence in its capacity requirements. Temporary inconsistencies during updates When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate to all areas where the resources are stored. The propagation time can be from a few seconds to a number of minutes. The following are examples of the temporary inconsistencies that you might notice during change propagation: + /// + /// * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating that the web ACL is unavailable. + /// + /// * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web ACL is used and not in another. + /// + /// * After you change a rule action setting, you might see the old action in some places and the new action in others. + /// + /// * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in one area while still allowed in another. /// /// - Parameter UpdateRuleGroupInput : [no documentation found] /// @@ -3121,7 +3153,15 @@ extension WAFV2Client: WAFV2ClientProtocol { /// * Provide the complete web ACL specification to this call /// /// - /// When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds. A web ACL defines a collection of rules to use to inspect and control web requests. Each rule has a statement that defines what to look for in web requests and an action that WAF applies to requests that match the statement. In the web ACL, you assign a default action to take (allow, block) for any request that does not match any of the rules. The rules in a web ACL can be a combination of the types [Rule], [RuleGroup], and managed rule group. You can associate a web ACL with one or more Amazon Web Services resources to protect. The resources can be an Amazon CloudFront distribution, an Amazon API Gateway REST API, an Application Load Balancer, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified Access instance. + /// A web ACL defines a collection of rules to use to inspect and control web requests. Each rule has a statement that defines what to look for in web requests and an action that WAF applies to requests that match the statement. In the web ACL, you assign a default action to take (allow, block) for any request that does not match any of the rules. The rules in a web ACL can be a combination of the types [Rule], [RuleGroup], and managed rule group. You can associate a web ACL with one or more Amazon Web Services resources to protect. The resources can be an Amazon CloudFront distribution, an Amazon API Gateway REST API, an Application Load Balancer, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified Access instance. Temporary inconsistencies during updates When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate to all areas where the resources are stored. The propagation time can be from a few seconds to a number of minutes. The following are examples of the temporary inconsistencies that you might notice during change propagation: + /// + /// * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating that the web ACL is unavailable. + /// + /// * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web ACL is used and not in another. + /// + /// * After you change a rule action setting, you might see the old action in some places and the new action in others. + /// + /// * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in one area while still allowed in another. /// /// - Parameter UpdateWebACLInput : [no documentation found] /// diff --git a/Sources/Services/AWSWAFV2/WAFV2ClientProtocol.swift b/Sources/Services/AWSWAFV2/WAFV2ClientProtocol.swift index b598252e974..1e81c24a40a 100644 --- a/Sources/Services/AWSWAFV2/WAFV2ClientProtocol.swift +++ b/Sources/Services/AWSWAFV2/WAFV2ClientProtocol.swift @@ -17,7 +17,15 @@ import ClientRuntime /// /// * The limits WAF places on the use of rules more closely reflects the cost of running each type of rule. Rule groups include capacity settings, so you know the maximum cost of a rule group when you use it. public protocol WAFV2ClientProtocol { - /// Associates a web ACL with a regional application resource, to protect the resource. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified Access instance. For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To associate a web ACL, in the CloudFront call UpdateDistribution, set the web ACL ID to the Amazon Resource Name (ARN) of the web ACL. For information, see [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) in the Amazon CloudFront Developer Guide. When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds. + /// Associates a web ACL with a regional application resource, to protect the resource. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified Access instance. For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To associate a web ACL, in the CloudFront call UpdateDistribution, set the web ACL ID to the Amazon Resource Name (ARN) of the web ACL. For information, see [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) in the Amazon CloudFront Developer Guide. Required permissions for customer-managed IAM policies This call requires permissions that are specific to the protected resource type. For details, see [Permissions for AssociateWebACL](https://docs.aws.amazon.com/waf/latest/developerguide/security_iam_service-with-iam.html#security_iam_action-AssociateWebACL) in the WAF Developer Guide. Temporary inconsistencies during updates When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate to all areas where the resources are stored. The propagation time can be from a few seconds to a number of minutes. The following are examples of the temporary inconsistencies that you might notice during change propagation: + /// + /// * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating that the web ACL is unavailable. + /// + /// * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web ACL is used and not in another. + /// + /// * After you change a rule action setting, you might see the old action in some places and the new action in others. + /// + /// * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in one area while still allowed in another. /// /// - Parameter AssociateWebACLInput : [no documentation found] /// @@ -445,7 +453,7 @@ public protocol WAFV2ClientProtocol { /// - `WAFInvalidResourceException` : WAF couldn’t perform the operation because the resource that you requested isn’t valid. Check the resource, and try again. /// - `WAFNonexistentItemException` : WAF couldn’t perform the operation because your resource doesn't exist. If you've just created a resource that you're using in this operation, you might just need to wait a few minutes. It can take from a few seconds to a number of minutes for changes to propagate. func describeManagedRuleGroup(input: DescribeManagedRuleGroupInput) async throws -> DescribeManagedRuleGroupOutput - /// Disassociates the specified regional application resource from any existing web ACL association. A resource can have at most one web ACL association. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified Access instance. For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To disassociate a web ACL, provide an empty web ACL ID in the CloudFront call UpdateDistribution. For information, see [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) in the Amazon CloudFront API Reference. + /// Disassociates the specified regional application resource from any existing web ACL association. A resource can have at most one web ACL association. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified Access instance. For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To disassociate a web ACL, provide an empty web ACL ID in the CloudFront call UpdateDistribution. For information, see [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) in the Amazon CloudFront API Reference. Required permissions for customer-managed IAM policies This call requires permissions that are specific to the protected resource type. For details, see [Permissions for DisassociateWebACL](https://docs.aws.amazon.com/waf/latest/developerguide/security_iam_service-with-iam.html#security_iam_action-DisassociateWebACL) in the WAF Developer Guide. /// /// - Parameter DisassociateWebACLInput : [no documentation found] /// @@ -730,7 +738,7 @@ public protocol WAFV2ClientProtocol { /// * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't be associated. /// - `WAFNonexistentItemException` : WAF couldn’t perform the operation because your resource doesn't exist. If you've just created a resource that you're using in this operation, you might just need to wait a few minutes. It can take from a few seconds to a number of minutes for changes to propagate. func getWebACL(input: GetWebACLInput) async throws -> GetWebACLOutput - /// Retrieves the [WebACL] for the specified resource. + /// Retrieves the [WebACL] for the specified resource. This call uses GetWebACL, to verify that your account has permission to access the retrieved web ACL. If you get an error that indicates that your account isn't authorized to perform wafv2:GetWebACL on the resource, that error won't be included in your CloudTrail event history. For Amazon CloudFront, don't use this call. Instead, call the CloudFront action GetDistributionConfig. For information, see [GetDistributionConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetDistributionConfig.html) in the Amazon CloudFront API Reference. Required permissions for customer-managed IAM policies This call requires permissions that are specific to the protected resource type. For details, see [Permissions for GetWebACLForResource](https://docs.aws.amazon.com/waf/latest/developerguide/security_iam_service-with-iam.html#security_iam_action-GetWebACLForResource) in the WAF Developer Guide. /// /// - Parameter GetWebACLForResourceInput : [no documentation found] /// @@ -923,7 +931,7 @@ public protocol WAFV2ClientProtocol { /// /// * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL can't be associated. func listRegexPatternSets(input: ListRegexPatternSetsInput) async throws -> ListRegexPatternSetsOutput - /// Retrieves an array of the Amazon Resource Names (ARNs) for the regional resources that are associated with the specified web ACL. If you want the list of Amazon CloudFront resources, use the CloudFront call ListDistributionsByWebACLId. + /// Retrieves an array of the Amazon Resource Names (ARNs) for the regional resources that are associated with the specified web ACL. For Amazon CloudFront, don't use this call. Instead, use the CloudFront call ListDistributionsByWebACLId. For information, see [ListDistributionsByWebACLId](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListDistributionsByWebACLId.html) in the Amazon CloudFront API Reference. Required permissions for customer-managed IAM policies This call requires permissions that are specific to the protected resource type. For details, see [Permissions for ListResourcesForWebACL](https://docs.aws.amazon.com/waf/latest/developerguide/security_iam_service-with-iam.html#security_iam_action-ListResourcesForWebACL) in the WAF Developer Guide. /// /// - Parameter ListResourcesForWebACLInput : [no documentation found] /// @@ -1175,7 +1183,15 @@ public protocol WAFV2ClientProtocol { /// * Provide the complete IP set specification to this call /// /// - /// When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds. + /// Temporary inconsistencies during updates When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate to all areas where the resources are stored. The propagation time can be from a few seconds to a number of minutes. The following are examples of the temporary inconsistencies that you might notice during change propagation: + /// + /// * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating that the web ACL is unavailable. + /// + /// * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web ACL is used and not in another. + /// + /// * After you change a rule action setting, you might see the old action in some places and the new action in others. + /// + /// * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in one area while still allowed in another. /// /// - Parameter UpdateIPSetInput : [no documentation found] /// @@ -1232,7 +1248,15 @@ public protocol WAFV2ClientProtocol { /// * Provide the complete regex pattern set specification to this call /// /// - /// When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds. + /// Temporary inconsistencies during updates When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate to all areas where the resources are stored. The propagation time can be from a few seconds to a number of minutes. The following are examples of the temporary inconsistencies that you might notice during change propagation: + /// + /// * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating that the web ACL is unavailable. + /// + /// * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web ACL is used and not in another. + /// + /// * After you change a rule action setting, you might see the old action in some places and the new action in others. + /// + /// * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in one area while still allowed in another. /// /// - Parameter UpdateRegexPatternSetInput : [no documentation found] /// @@ -1266,7 +1290,15 @@ public protocol WAFV2ClientProtocol { /// * Provide the complete rule group specification to this call /// /// - /// When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds. A rule group defines a collection of rules to inspect and control web requests that you can use in a [WebACL]. When you create a rule group, you define an immutable capacity limit. If you update a rule group, you must stay within the capacity. This allows others to reuse the rule group with confidence in its capacity requirements. + /// A rule group defines a collection of rules to inspect and control web requests that you can use in a [WebACL]. When you create a rule group, you define an immutable capacity limit. If you update a rule group, you must stay within the capacity. This allows others to reuse the rule group with confidence in its capacity requirements. Temporary inconsistencies during updates When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate to all areas where the resources are stored. The propagation time can be from a few seconds to a number of minutes. The following are examples of the temporary inconsistencies that you might notice during change propagation: + /// + /// * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating that the web ACL is unavailable. + /// + /// * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web ACL is used and not in another. + /// + /// * After you change a rule action setting, you might see the old action in some places and the new action in others. + /// + /// * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in one area while still allowed in another. /// /// - Parameter UpdateRuleGroupInput : [no documentation found] /// @@ -1303,7 +1335,15 @@ public protocol WAFV2ClientProtocol { /// * Provide the complete web ACL specification to this call /// /// - /// When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds. A web ACL defines a collection of rules to use to inspect and control web requests. Each rule has a statement that defines what to look for in web requests and an action that WAF applies to requests that match the statement. In the web ACL, you assign a default action to take (allow, block) for any request that does not match any of the rules. The rules in a web ACL can be a combination of the types [Rule], [RuleGroup], and managed rule group. You can associate a web ACL with one or more Amazon Web Services resources to protect. The resources can be an Amazon CloudFront distribution, an Amazon API Gateway REST API, an Application Load Balancer, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified Access instance. + /// A web ACL defines a collection of rules to use to inspect and control web requests. Each rule has a statement that defines what to look for in web requests and an action that WAF applies to requests that match the statement. In the web ACL, you assign a default action to take (allow, block) for any request that does not match any of the rules. The rules in a web ACL can be a combination of the types [Rule], [RuleGroup], and managed rule group. You can associate a web ACL with one or more Amazon Web Services resources to protect. The resources can be an Amazon CloudFront distribution, an Amazon API Gateway REST API, an Application Load Balancer, an AppSync GraphQL API, an Amazon Cognito user pool, an App Runner service, or an Amazon Web Services Verified Access instance. Temporary inconsistencies during updates When you create or change a web ACL or other WAF resources, the changes take a small amount of time to propagate to all areas where the resources are stored. The propagation time can be from a few seconds to a number of minutes. The following are examples of the temporary inconsistencies that you might notice during change propagation: + /// + /// * After you create a web ACL, if you try to associate it with a resource, you might get an exception indicating that the web ACL is unavailable. + /// + /// * After you add a rule group to a web ACL, the new rule group rules might be in effect in one area where the web ACL is used and not in another. + /// + /// * After you change a rule action setting, you might see the old action in some places and the new action in others. + /// + /// * After you add an IP address to an IP set that is in use in a blocking rule, the new address might be blocked in one area while still allowed in another. /// /// - Parameter UpdateWebACLInput : [no documentation found] /// diff --git a/Sources/Services/AWSWAFV2/models/Models.swift b/Sources/Services/AWSWAFV2/models/Models.swift index 28a5b559224..35e524af85a 100644 --- a/Sources/Services/AWSWAFV2/models/Models.swift +++ b/Sources/Services/AWSWAFV2/models/Models.swift @@ -873,7 +873,7 @@ extension WAFV2ClientTypes { /// /// * JA3Fingerprint: Match against the request's JA3 fingerprint. The JA3 fingerprint is a 32-character hash derived from the TLS Client Hello of an incoming request. This fingerprint serves as a unique identifier for the client's TLS configuration. You can use this choice only with a string match ByteMatchStatement with the PositionalConstraint set to EXACTLY. You can obtain the JA3 fingerprint for client requests from the web ACL logs. If WAF is able to calculate the fingerprint, it includes it in the logs. For information about the logging fields, see [Log fields](https://docs.aws.amazon.com/waf/latest/developerguide/logging-fields.html) in the WAF Developer Guide. /// - /// * HeaderOrder: The comma-separated list of header names to match for. WAF creates a string that contains the ordered list of header names, from the headers in the web request, and then matches against that string. + /// * HeaderOrder: The list of header names to match for. WAF creates a string that contains the ordered list of header names, from the headers in the web request, and then matches against that string. /// /// /// If SearchString includes alphabetic characters A-Z and a-z, note that the value is case sensitive. If you're using the WAF API Specify a base64-encoded version of the value. The maximum length of the value before you base64-encode it is 200 bytes. For example, suppose the value of Type is HEADER and the value of Data is User-Agent. If you want to search the User-Agent header for the value BadBot, you base64-encode BadBot using MIME base64-encoding and include the resulting value, QmFkQm90, in the value of SearchString. If you're using the CLI or one of the Amazon Web Services SDKs The value that you want WAF to search for. The SDK automatically base64 encodes the value. @@ -1522,7 +1522,7 @@ extension WAFV2ClientTypes { /// The filter to use to identify the subset of cookies to inspect in a web request. You must specify exactly one setting: either All, IncludedCookies, or ExcludedCookies. Example JSON: "MatchPattern": { "IncludedCookies": [ "session-id-time", "session-id" ] } /// This member is required. public var matchPattern: WAFV2ClientTypes.CookieMatchPattern? - /// The parts of the cookies to inspect with the rule inspection criteria. If you specify All, WAF inspects both keys and values. + /// The parts of the cookies to inspect with the rule inspection criteria. If you specify ALL, WAF inspects both keys and values. All does not require a match to be found in the keys and a match to be found in the values. It requires a match to be found in the keys or the values or both. To require a match in the keys and in the values, use a logical AND statement to combine two match rules, one that inspects the keys and another that inspects the values. /// This member is required. public var matchScope: WAFV2ClientTypes.MapMatchScope? /// What WAF should do if the cookies of the request are more numerous or larger than WAF can inspect. WAF does not support inspecting the entire contents of request cookies when they exceed 8 KB (8192 bytes) or 200 total cookies. The underlying host service forwards a maximum of 200 cookies and at most 8 KB of cookie contents to WAF. The options for oversize handling are the following: @@ -7751,7 +7751,7 @@ extension WAFV2ClientTypes { /// The filter to use to identify the subset of headers to inspect in a web request. You must specify exactly one setting: either All, IncludedHeaders, or ExcludedHeaders. Example JSON: "MatchPattern": { "ExcludedHeaders": [ "KeyToExclude1", "KeyToExclude2" ] } /// This member is required. public var matchPattern: WAFV2ClientTypes.HeaderMatchPattern? - /// The parts of the headers to match with the rule inspection criteria. If you specify All, WAF inspects both keys and values. + /// The parts of the headers to match with the rule inspection criteria. If you specify ALL, WAF inspects both keys and values. All does not require a match to be found in the keys and a match to be found in the values. It requires a match to be found in the keys or the values or both. To require a match in the keys and in the values, use a logical AND statement to combine two match rules, one that inspects the keys and another that inspects the values. /// This member is required. public var matchScope: WAFV2ClientTypes.MapMatchScope? /// What WAF should do if the headers of the request are more numerous or larger than WAF can inspect. WAF does not support inspecting the entire contents of request headers when they exceed 8 KB (8192 bytes) or 200 total headers. The underlying host service forwards a maximum of 200 headers and at most 8 KB of header contents to WAF. The options for oversize handling are the following: @@ -8288,7 +8288,7 @@ extension WAFV2ClientTypes { /// The patterns to look for in the JSON body. WAF inspects the results of these pattern matches against the rule inspection criteria. /// This member is required. public var matchPattern: WAFV2ClientTypes.JsonMatchPattern? - /// The parts of the JSON to match against using the MatchPattern. If you specify All, WAF matches against keys and values. + /// The parts of the JSON to match against using the MatchPattern. If you specify ALL, WAF matches against keys and values. All does not require a match to be found in the keys and a match to be found in the values. It requires a match to be found in the keys or the values or both. To require a match in the keys and in the values, use a logical AND statement to combine two match rules, one that inspects the keys and another that inspects the values. /// This member is required. public var matchScope: WAFV2ClientTypes.JsonMatchScope? /// What WAF should do if the body is larger than WAF can inspect. WAF does not support inspecting the entire contents of the web request body if the body exceeds the limit for the resource type. If the body is larger than the limit, the underlying host service only forwards the contents that are below the limit to WAF for inspection. The default limit is 8 KB (8,192 bytes) for regional resources and 16 KB (16,384 bytes) for CloudFront distributions. For CloudFront distributions, you can increase the limit in the web ACL AssociationConfig, for additional processing fees. The options for oversize handling are the following: diff --git a/Sources/Services/AWSWisdom/models/Models.swift b/Sources/Services/AWSWisdom/models/Models.swift index 4f914cdc15c..6a5207f5dea 100644 --- a/Sources/Services/AWSWisdom/models/Models.swift +++ b/Sources/Services/AWSWisdom/models/Models.swift @@ -105,7 +105,9 @@ extension WisdomClientTypes { /// /// * For [ Zendesk](https://developer.zendesk.com/api-reference/help_center/help-center-api/articles/), your AppIntegrations DataIntegration must have an ObjectConfiguration if objectFields is not provided, including at least id, title, updated_at, and draft as source fields. /// - /// * For [ SharePoint](https://learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/sharepoint-net-server-csom-jsom-and-rest-api-index), your AppIntegrations DataIntegration must have a FileConfiguration, including only file extensions that are among docx, pdf, html, htm, and txt. + /// * For [SharePoint](https://learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/sharepoint-net-server-csom-jsom-and-rest-api-index), your AppIntegrations DataIntegration must have a FileConfiguration, including only file extensions that are among docx, pdf, html, htm, and txt. + /// + /// * For [Amazon S3](https://aws.amazon.com/s3/), the ObjectConfiguration and FileConfiguration of your AppIntegrations DataIntegration must be null. The SourceURI of your DataIntegration must use the following format: s3://your_s3_bucket_name. The bucket policy of the corresponding S3 bucket must allow the Amazon Web Services principal app-integrations.amazonaws.com to perform s3:ListBucket, s3:GetObject, and s3:GetBucketLocation against the bucket. /// This member is required. public var appIntegrationArn: Swift.String? /// The fields from the source that are made available to your agents in Wisdom. Optional if ObjectConfiguration is included in the provided DataIntegration. @@ -527,7 +529,7 @@ extension WisdomClientTypes { /// The name. /// This member is required. public var name: Swift.String? - /// The KMS key used for encryption. + /// The configuration information for the customer managed key used for encryption. This KMS key must have a policy that allows kms:CreateGrant and kms:DescribeKey permissions to the IAM identity using the key to invoke Wisdom. To use Wisdom with chat, the key policy must also allow kms:Decrypt, kms:GenerateDataKey*, and kms:DescribeKey permissions to the connect.amazonaws.com service principal. For more information about setting up a customer managed key for Wisdom, see [Enable Amazon Connect Wisdom for your instance](https://docs.aws.amazon.com/connect/latest/adminguide/enable-wisdom.html). public var serverSideEncryptionConfiguration: WisdomClientTypes.ServerSideEncryptionConfiguration? /// The status of the assistant. /// This member is required. @@ -738,7 +740,7 @@ extension WisdomClientTypes { /// The name of the assistant. /// This member is required. public var name: Swift.String? - /// The KMS key used for encryption. + /// The configuration information for the customer managed key used for encryption. This KMS key must have a policy that allows kms:CreateGrant and kms:DescribeKey permissions to the IAM identity using the key to invoke Wisdom. To use Wisdom with chat, the key policy must also allow kms:Decrypt, kms:GenerateDataKey*, and kms:DescribeKey permissions to the connect.amazonaws.com service principal. For more information about setting up a customer managed key for Wisdom, see [Enable Amazon Connect Wisdom for your instance](https://docs.aws.amazon.com/connect/latest/adminguide/enable-wisdom.html). public var serverSideEncryptionConfiguration: WisdomClientTypes.ServerSideEncryptionConfiguration? /// The status of the assistant. /// This member is required. @@ -1585,7 +1587,7 @@ public struct CreateAssistantInput: Swift.Equatable { /// The name of the assistant. /// This member is required. public var name: Swift.String? - /// The KMS key used for encryption. + /// The configuration information for the customer managed key used for encryption. The customer managed key must have a policy that allows kms:CreateGrant and kms:DescribeKey permissions to the IAM identity using the key to invoke Wisdom. To use Wisdom with chat, the key policy must also allow kms:Decrypt, kms:GenerateDataKey*, and kms:DescribeKey permissions to the connect.amazonaws.com service principal. For more information about setting up a customer managed key for Wisdom, see [Enable Amazon Connect Wisdom for your instance](https://docs.aws.amazon.com/connect/latest/adminguide/enable-wisdom.html). public var serverSideEncryptionConfiguration: WisdomClientTypes.ServerSideEncryptionConfiguration? /// The tags used to organize, track, or control access for this resource. public var tags: [Swift.String:Swift.String]? @@ -1981,7 +1983,7 @@ public struct CreateKnowledgeBaseInput: Swift.Equatable { public var name: Swift.String? /// Information about how to render the content. public var renderingConfiguration: WisdomClientTypes.RenderingConfiguration? - /// The KMS key used for encryption. + /// The configuration information for the customer managed key used for encryption. This KMS key must have a policy that allows kms:CreateGrant and kms:DescribeKey permissions to the IAM identity using the key to invoke Wisdom. For more information about setting up a customer managed key for Wisdom, see [Enable Amazon Connect Wisdom for your instance](https://docs.aws.amazon.com/connect/latest/adminguide/enable-wisdom.html). public var serverSideEncryptionConfiguration: WisdomClientTypes.ServerSideEncryptionConfiguration? /// The source of the knowledge base content. Only set this argument for EXTERNAL knowledge bases. public var sourceConfiguration: WisdomClientTypes.SourceConfiguration? @@ -3625,7 +3627,7 @@ extension WisdomClientTypes { public var name: Swift.String? /// Information about how to render the content. public var renderingConfiguration: WisdomClientTypes.RenderingConfiguration? - /// The KMS key used for encryption. + /// The configuration information for the customer managed key used for encryption. This KMS key must have a policy that allows kms:CreateGrant and kms:DescribeKey permissions to the IAM identity using the key to invoke Wisdom. For more information about setting up a customer managed key for Wisdom, see [Enable Amazon Connect Wisdom for your instance](https://docs.aws.amazon.com/connect/latest/adminguide/enable-wisdom.html). public var serverSideEncryptionConfiguration: WisdomClientTypes.ServerSideEncryptionConfiguration? /// Source configuration information about the knowledge base. public var sourceConfiguration: WisdomClientTypes.SourceConfiguration? @@ -3813,7 +3815,7 @@ extension WisdomClientTypes { public var name: Swift.String? /// Information about how to render the content. public var renderingConfiguration: WisdomClientTypes.RenderingConfiguration? - /// The KMS key used for encryption. + /// The configuration information for the customer managed key used for encryption. This KMS key must have a policy that allows kms:CreateGrant and kms:DescribeKey permissions to the IAM identity using the key to invoke Wisdom. For more information about setting up a customer managed key for Wisdom, see [Enable Amazon Connect Wisdom for your instance](https://docs.aws.amazon.com/connect/latest/adminguide/enable-wisdom.html). public var serverSideEncryptionConfiguration: WisdomClientTypes.ServerSideEncryptionConfiguration? /// Configuration information about the external data source. public var sourceConfiguration: WisdomClientTypes.SourceConfiguration? @@ -5861,9 +5863,9 @@ extension WisdomClientTypes.ServerSideEncryptionConfiguration: Swift.Codable { } extension WisdomClientTypes { - /// The KMS key used for encryption. + /// The configuration information for the customer managed key used for encryption. public struct ServerSideEncryptionConfiguration: Swift.Equatable { - /// The KMS key. For information about valid ID values, see [Key identifiers (KeyId)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id). + /// The customer managed key used for encryption. For more information about setting up a customer managed key for Wisdom, see [Enable Amazon Connect Wisdom for your instance](https://docs.aws.amazon.com/connect/latest/adminguide/enable-wisdom.html). For information about valid ID values, see [Key identifiers (KeyId)](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id). public var kmsKeyId: Swift.String? public init( diff --git a/Tests/Services/AWSCodeBuildTests/EndpointResolverTest.swift b/Tests/Services/AWSCodeBuildTests/EndpointResolverTest.swift index 972c860aeb5..dd788c1a36c 100644 --- a/Tests/Services/AWSCodeBuildTests/EndpointResolverTest.swift +++ b/Tests/Services/AWSCodeBuildTests/EndpointResolverTest.swift @@ -1046,4 +1046,23 @@ class EndpointResolverTest: XCTestCase { } } + /// Partition doesn't support DualStack + func testResolve53() throws { + let endpointParams = EndpointParams( + region: "us-isob-east-1", + useDualStack: true, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("DualStack is enabled but this partition does not support DualStack", message) + default: + XCTFail() + } + } + } + } diff --git a/Tests/Services/AWSConnectTests/EndpointResolverTest.swift b/Tests/Services/AWSConnectTests/EndpointResolverTest.swift index b7c722ed377..fd653203068 100644 --- a/Tests/Services/AWSConnectTests/EndpointResolverTest.swift +++ b/Tests/Services/AWSConnectTests/EndpointResolverTest.swift @@ -726,4 +726,23 @@ class EndpointResolverTest: XCTestCase { } } + /// Partition doesn't support DualStack + func testResolve37() throws { + let endpointParams = EndpointParams( + region: "us-isob-east-1", + useDualStack: true, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("DualStack is enabled but this partition does not support DualStack", message) + default: + XCTFail() + } + } + } + } diff --git a/Tests/Services/AWSGlueTests/EndpointResolverTest.swift b/Tests/Services/AWSGlueTests/EndpointResolverTest.swift index 52fbb8d908d..4798d247052 100644 --- a/Tests/Services/AWSGlueTests/EndpointResolverTest.swift +++ b/Tests/Services/AWSGlueTests/EndpointResolverTest.swift @@ -1026,4 +1026,23 @@ class EndpointResolverTest: XCTestCase { } } + /// Partition doesn't support DualStack + func testResolve52() throws { + let endpointParams = EndpointParams( + region: "us-isob-east-1", + useDualStack: true, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("DualStack is enabled but this partition does not support DualStack", message) + default: + XCTFail() + } + } + } + } diff --git a/Tests/Services/AWSIAMTests/EndpointResolverTest.swift b/Tests/Services/AWSIAMTests/EndpointResolverTest.swift index 9c7d24180e6..192050ce88f 100644 --- a/Tests/Services/AWSIAMTests/EndpointResolverTest.swift +++ b/Tests/Services/AWSIAMTests/EndpointResolverTest.swift @@ -758,4 +758,23 @@ class EndpointResolverTest: XCTestCase { } } + /// Partition doesn't support DualStack + func testResolve33() throws { + let endpointParams = EndpointParams( + region: "us-isob-east-1", + useDualStack: true, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("DualStack is enabled but this partition does not support DualStack", message) + default: + XCTFail() + } + } + } + } diff --git a/Tests/Services/AWSLaunchWizardTests/EndpointResolverTest.swift b/Tests/Services/AWSLaunchWizardTests/EndpointResolverTest.swift new file mode 100644 index 00000000000..620ac27b335 --- /dev/null +++ b/Tests/Services/AWSLaunchWizardTests/EndpointResolverTest.swift @@ -0,0 +1,528 @@ +// Code generated by smithy-swift-codegen. DO NOT EDIT! + +import AWSClientRuntime +@testable import AWSLaunchWizard +import AwsCommonRuntimeKit +import ClientRuntime +import SmithyTestUtil +import XCTest + +class EndpointResolverTest: XCTestCase { + + override class func setUp() { + AwsCommonRuntimeKit.CommonRuntimeKit.initialize() + } + + /// For region us-east-1 with FIPS enabled and DualStack enabled + func testResolve1() throws { + let endpointParams = EndpointParams( + region: "us-east-1", + useDualStack: true, + useFIPS: true + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard-fips.us-east-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region us-east-1 with FIPS enabled and DualStack disabled + func testResolve2() throws { + let endpointParams = EndpointParams( + region: "us-east-1", + useDualStack: false, + useFIPS: true + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard-fips.us-east-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region us-east-1 with FIPS disabled and DualStack enabled + func testResolve3() throws { + let endpointParams = EndpointParams( + region: "us-east-1", + useDualStack: true, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard.us-east-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region us-east-1 with FIPS disabled and DualStack disabled + func testResolve4() throws { + let endpointParams = EndpointParams( + region: "us-east-1", + useDualStack: false, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard.us-east-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region cn-north-1 with FIPS enabled and DualStack enabled + func testResolve5() throws { + let endpointParams = EndpointParams( + region: "cn-north-1", + useDualStack: true, + useFIPS: true + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard-fips.cn-north-1.api.amazonwebservices.com.cn", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region cn-north-1 with FIPS enabled and DualStack disabled + func testResolve6() throws { + let endpointParams = EndpointParams( + region: "cn-north-1", + useDualStack: false, + useFIPS: true + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard-fips.cn-north-1.amazonaws.com.cn", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region cn-north-1 with FIPS disabled and DualStack enabled + func testResolve7() throws { + let endpointParams = EndpointParams( + region: "cn-north-1", + useDualStack: true, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard.cn-north-1.api.amazonwebservices.com.cn", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region cn-north-1 with FIPS disabled and DualStack disabled + func testResolve8() throws { + let endpointParams = EndpointParams( + region: "cn-north-1", + useDualStack: false, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard.cn-north-1.amazonaws.com.cn", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region us-gov-east-1 with FIPS enabled and DualStack enabled + func testResolve9() throws { + let endpointParams = EndpointParams( + region: "us-gov-east-1", + useDualStack: true, + useFIPS: true + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard-fips.us-gov-east-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region us-gov-east-1 with FIPS enabled and DualStack disabled + func testResolve10() throws { + let endpointParams = EndpointParams( + region: "us-gov-east-1", + useDualStack: false, + useFIPS: true + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard-fips.us-gov-east-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region us-gov-east-1 with FIPS disabled and DualStack enabled + func testResolve11() throws { + let endpointParams = EndpointParams( + region: "us-gov-east-1", + useDualStack: true, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard.us-gov-east-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region us-gov-east-1 with FIPS disabled and DualStack disabled + func testResolve12() throws { + let endpointParams = EndpointParams( + region: "us-gov-east-1", + useDualStack: false, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard.us-gov-east-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region us-iso-east-1 with FIPS enabled and DualStack enabled + func testResolve13() throws { + let endpointParams = EndpointParams( + region: "us-iso-east-1", + useDualStack: true, + useFIPS: true + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("FIPS and DualStack are enabled, but this partition does not support one or both", message) + default: + XCTFail() + } + } + } + + /// For region us-iso-east-1 with FIPS enabled and DualStack disabled + func testResolve14() throws { + let endpointParams = EndpointParams( + region: "us-iso-east-1", + useDualStack: false, + useFIPS: true + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard-fips.us-iso-east-1.c2s.ic.gov", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region us-iso-east-1 with FIPS disabled and DualStack enabled + func testResolve15() throws { + let endpointParams = EndpointParams( + region: "us-iso-east-1", + useDualStack: true, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("DualStack is enabled but this partition does not support DualStack", message) + default: + XCTFail() + } + } + } + + /// For region us-iso-east-1 with FIPS disabled and DualStack disabled + func testResolve16() throws { + let endpointParams = EndpointParams( + region: "us-iso-east-1", + useDualStack: false, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard.us-iso-east-1.c2s.ic.gov", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region us-isob-east-1 with FIPS enabled and DualStack enabled + func testResolve17() throws { + let endpointParams = EndpointParams( + region: "us-isob-east-1", + useDualStack: true, + useFIPS: true + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("FIPS and DualStack are enabled, but this partition does not support one or both", message) + default: + XCTFail() + } + } + } + + /// For region us-isob-east-1 with FIPS enabled and DualStack disabled + func testResolve18() throws { + let endpointParams = EndpointParams( + region: "us-isob-east-1", + useDualStack: false, + useFIPS: true + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard-fips.us-isob-east-1.sc2s.sgov.gov", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For region us-isob-east-1 with FIPS disabled and DualStack enabled + func testResolve19() throws { + let endpointParams = EndpointParams( + region: "us-isob-east-1", + useDualStack: true, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("DualStack is enabled but this partition does not support DualStack", message) + default: + XCTFail() + } + } + } + + /// For region us-isob-east-1 with FIPS disabled and DualStack disabled + func testResolve20() throws { + let endpointParams = EndpointParams( + region: "us-isob-east-1", + useDualStack: false, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://launchwizard.us-isob-east-1.sc2s.sgov.gov", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For custom endpoint with region set and fips disabled and dualstack disabled + func testResolve21() throws { + let endpointParams = EndpointParams( + endpoint: "https://example.com", + region: "us-east-1", + useDualStack: false, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://example.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For custom endpoint with region not set and fips disabled and dualstack disabled + func testResolve22() throws { + let endpointParams = EndpointParams( + endpoint: "https://example.com", + useDualStack: false, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + let actual = try resolver.resolve(params: endpointParams) + + let properties: [String: AnyHashable] = + [:] + + let headers = Headers() + let expected = try ClientRuntime.Endpoint(urlString: "https://example.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// For custom endpoint with fips enabled and dualstack disabled + func testResolve23() throws { + let endpointParams = EndpointParams( + endpoint: "https://example.com", + region: "us-east-1", + useDualStack: false, + useFIPS: true + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("Invalid Configuration: FIPS and custom endpoint are not supported", message) + default: + XCTFail() + } + } + } + + /// For custom endpoint with fips disabled and dualstack enabled + func testResolve24() throws { + let endpointParams = EndpointParams( + endpoint: "https://example.com", + region: "us-east-1", + useDualStack: true, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("Invalid Configuration: Dualstack and custom endpoint are not supported", message) + default: + XCTFail() + } + } + } + + /// Missing region + func testResolve25() throws { + let endpointParams = EndpointParams( + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("Invalid Configuration: Missing Region", message) + default: + XCTFail() + } + } + } + + /// Partition doesn't support DualStack + func testResolve26() throws { + let endpointParams = EndpointParams( + region: "us-isob-east-1", + useDualStack: true, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("DualStack is enabled but this partition does not support DualStack", message) + default: + XCTFail() + } + } + } + +} diff --git a/Tests/Services/AWSOpenSearchTests/EndpointResolverTest.swift b/Tests/Services/AWSOpenSearchTests/EndpointResolverTest.swift index f2b05b33c11..7d6773562bb 100644 --- a/Tests/Services/AWSOpenSearchTests/EndpointResolverTest.swift +++ b/Tests/Services/AWSOpenSearchTests/EndpointResolverTest.swift @@ -568,7 +568,7 @@ class EndpointResolverTest: XCTestCase { [:] let headers = Headers() - let expected = try ClientRuntime.Endpoint(urlString: "https://es.us-east-1.api.aws", headers: headers, properties: properties) + let expected = try ClientRuntime.Endpoint(urlString: "https://aos.us-east-1.api.aws", headers: headers, properties: properties) XCTAssertEqual(expected, actual) } @@ -668,7 +668,7 @@ class EndpointResolverTest: XCTestCase { [:] let headers = Headers() - let expected = try ClientRuntime.Endpoint(urlString: "https://es.cn-north-1.api.amazonwebservices.com.cn", headers: headers, properties: properties) + let expected = try ClientRuntime.Endpoint(urlString: "https://aos.cn-north-1.api.amazonwebservices.com.cn", headers: headers, properties: properties) XCTAssertEqual(expected, actual) } @@ -788,7 +788,7 @@ class EndpointResolverTest: XCTestCase { [:] let headers = Headers() - let expected = try ClientRuntime.Endpoint(urlString: "https://es.us-gov-east-1.api.aws", headers: headers, properties: properties) + let expected = try ClientRuntime.Endpoint(urlString: "https://aos.us-gov-east-1.api.aws", headers: headers, properties: properties) XCTAssertEqual(expected, actual) } diff --git a/Tests/Services/AWSRoute53Tests/EndpointResolverTest.swift b/Tests/Services/AWSRoute53Tests/EndpointResolverTest.swift index e5f3e215e4a..dce5e4068ae 100644 --- a/Tests/Services/AWSRoute53Tests/EndpointResolverTest.swift +++ b/Tests/Services/AWSRoute53Tests/EndpointResolverTest.swift @@ -758,4 +758,23 @@ class EndpointResolverTest: XCTestCase { } } + /// Partition doesn't support DualStack + func testResolve33() throws { + let endpointParams = EndpointParams( + region: "us-isob-east-1", + useDualStack: true, + useFIPS: false + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("DualStack is enabled but this partition does not support DualStack", message) + default: + XCTFail() + } + } + } + } diff --git a/Tests/Services/AWSS3Tests/EndpointResolverTest.swift b/Tests/Services/AWSS3Tests/EndpointResolverTest.swift index a51249aa9de..b5bd5dc3eac 100644 --- a/Tests/Services/AWSS3Tests/EndpointResolverTest.swift +++ b/Tests/Services/AWSS3Tests/EndpointResolverTest.swift @@ -3428,7 +3428,7 @@ class EndpointResolverTest: XCTestCase { } } - /// FIPS + path-only + /// FIPS + path-only (TODO: consider making this an error) func testResolve123() throws { let endpointParams = EndpointParams( bucket: "bucket!", diff --git a/packageDependencies.plist b/packageDependencies.plist index 9083c22629b..36865d8fac5 100644 --- a/packageDependencies.plist +++ b/packageDependencies.plist @@ -9,6 +9,6 @@ clientRuntimeBranch main clientRuntimeVersion - 0.34.0 + 0.35.0