From b0ff4a706d2864b84bbb76ca586f5abc4d21ef8a Mon Sep 17 00:00:00 2001 From: AWS SDK Swift Automation Date: Wed, 20 Dec 2023 20:06:16 +0000 Subject: [PATCH] chore: Updates version to 0.33.0 --- Package.swift | 3 +- Package.version | 2 +- .../Documentation.docc/AWSSDKForSwift.md | 2 + .../Services/AWSAppStream/models/Models.swift | 3 + .../Services/AWSAppSync/models/Models.swift | 134 + Sources/Services/AWSAthena/Paginators.swift | 9 +- .../Services/AWSAthena/models/Models.swift | 285 +- Sources/Services/AWSB2bi/B2biClient.swift | 44 +- .../Services/AWSB2bi/B2biClientProtocol.swift | 44 +- Sources/Services/AWSB2bi/models/Models.swift | 14 +- Sources/Services/AWSBackup/BackupClient.swift | 2 +- .../AWSBackup/BackupClientProtocol.swift | 2 +- Sources/Services/AWSBackup/Paginators.swift | 1 + .../Services/AWSBackup/models/Models.swift | 116 +- .../BillingconductorClient.swift | 50 + .../BillingconductorClientProtocol.swift | 19 +- .../AWSBillingconductor/Paginators.swift | 33 + .../AWSBillingconductor/models/Models.swift | 415 +- .../ChimeSDKMeetingsClient.swift | 14 +- .../ChimeSDKMeetingsClientProtocol.swift | 16 +- .../AWSChimeSDKMeetings/models/Models.swift | 247 +- .../CleanRoomsMLClientProtocol.swift | 2 +- .../AWSCleanRoomsML/models/Models.swift | 2 +- .../Services/AWSCloud9/models/Models.swift | 6 +- .../AWSCloudFormation/models/Models.swift | 6 +- .../AWSCloudWatch/models/Models.swift | 19 +- .../CloudWatchLogsClient.swift | 70 +- .../CloudWatchLogsClientProtocol.swift | 36 +- .../AWSCloudWatchLogs/models/Models.swift | 588 +- .../AWSCodeDeploy/CodeDeployClient.swift | 2 + .../CodeDeployClientProtocol.swift | 2 + .../AWSCodeDeploy/models/Models.swift | 276 +- .../CognitoIdentityProviderClient.swift | 36 +- ...ognitoIdentityProviderClientProtocol.swift | 47 +- .../models/Models.swift | 249 +- .../AWSComprehend/ComprehendClient.swift | 42 +- .../ComprehendClientProtocol.swift | 42 +- .../AWSComprehend/models/Models.swift | 66 +- .../Services/AWSConnect/ConnectClient.swift | 203 + .../AWSConnect/ConnectClientProtocol.swift | 73 + .../Services/AWSConnect/models/Models.swift | 1026 +- .../AWSControlTower/models/Models.swift | 6 +- Sources/Services/AWSDrs/models/Models.swift | 48 +- Sources/Services/AWSEC2/models/Models.swift | 193 +- Sources/Services/AWSEKS/EKSClient.swift | 549 +- .../Services/AWSEKS/EKSClientProtocol.swift | 267 +- Sources/Services/AWSEKS/Paginators.swift | 94 + Sources/Services/AWSEKS/models/Models.swift | 2074 ++- Sources/Services/AWSFSx/Paginators.swift | 1 + Sources/Services/AWSFSx/models/Models.swift | 41 +- .../Services/AWSFinspace/FinspaceClient.swift | 726 ++ .../AWSFinspace/FinspaceClientProtocol.swift | 268 + Sources/Services/AWSFinspace/Paginators.swift | 45 + .../Services/AWSFinspace/models/Models.swift | 10601 +++++++++++----- .../Services/AWSFirehose/FirehoseClient.swift | 2 + .../AWSFirehose/FirehoseClientProtocol.swift | 2 + .../Services/AWSFirehose/models/Models.swift | 141 + .../Services/AWSGameLift/GameLiftClient.swift | 6 +- .../AWSGameLift/GameLiftClientProtocol.swift | 6 +- .../Services/AWSGameLift/models/Models.swift | 48 +- .../AWSImagebuilder/ImagebuilderClient.swift | 372 +- .../ImagebuilderClientProtocol.swift | 143 +- .../Services/AWSImagebuilder/Paginators.swift | 94 + .../AWSImagebuilder/models/Models.swift | 7360 +++++++---- Sources/Services/AWSIoT/IoTClient.swift | 249 + .../Services/AWSIoT/IoTClientProtocol.swift | 91 + Sources/Services/AWSIoT/models/Models.swift | 731 +- Sources/Services/AWSKMS/KMSClient.swift | 163 +- .../Services/AWSKMS/KMSClientProtocol.swift | 163 +- Sources/Services/AWSKMS/models/Models.swift | 12 +- .../Services/AWSLocation/models/Models.swift | 72 +- .../MarketplaceCatalogClient.swift | 49 + .../MarketplaceCatalogClientProtocol.swift | 16 + .../AWSMarketplaceCatalog/models/Models.swift | 313 +- .../Services/AWSNeptune/NeptuneClient.swift | 1 + .../AWSNeptune/NeptuneClientProtocol.swift | 1 + .../Services/AWSNeptune/models/Models.swift | 114 +- .../AWSNeptuneGraph/EndpointResolver.swift | 158 + .../AWSNeptuneGraph/NeptuneGraphClient.swift | 1125 ++ .../NeptuneGraphClientProtocol.swift | 374 + .../Services/AWSNeptuneGraph/Paginators.swift | 5 + .../AWSNeptuneGraph/models/Models.swift | 5431 ++++++++ .../AWSOpenSearch/OpenSearchClient.swift | 10 +- .../OpenSearchClientProtocol.swift | 10 +- .../AWSOpenSearch/models/Models.swift | 38 +- .../AWSPaymentCryptography/Paginators.swift | 61 - .../PaymentCryptographyClient.swift | 56 +- .../PaymentCryptographyClientProtocol.swift | 58 +- .../models/Models.swift | 191 +- .../Services/AWSPinpoint/models/Models.swift | 2 +- .../AWSQuickSight/QuickSightClient.swift | 55 +- .../QuickSightClientProtocol.swift | 22 +- .../AWSQuickSight/models/Models.swift | 382 + Sources/Services/AWSRDS/Paginators.swift | 34 + Sources/Services/AWSRDS/RDSClient.swift | 82 + .../Services/AWSRDS/RDSClientProtocol.swift | 16 + Sources/Services/AWSRDS/models/Models.swift | 1641 ++- .../Route53ResolverClient.swift | 64 +- .../Route53ResolverClientProtocol.swift | 64 +- .../AWSRoute53Resolver/models/Models.swift | 239 +- .../Services/AWSSageMaker/Paginators.swift | 37 + .../AWSSageMaker/SageMakerClient.swift | 87 +- .../SageMakerClientProtocol.swift | 53 +- .../Services/AWSSageMaker/models/Models.swift | 621 +- .../AWSSecurityHub/models/Models.swift | 809 +- .../AWSWorkSpaces/WorkSpacesClient.swift | 2 + .../WorkSpacesClientProtocol.swift | 2 + .../AWSWorkSpaces/models/Models.swift | 6 +- .../EndpointResolverTest.swift | 1521 +++ .../EndpointResolverTest.swift | 19 + packageDependencies.plist | 2 +- 111 files changed, 35653 insertions(+), 6934 deletions(-) create mode 100644 Sources/Services/AWSNeptuneGraph/EndpointResolver.swift create mode 100644 Sources/Services/AWSNeptuneGraph/NeptuneGraphClient.swift create mode 100644 Sources/Services/AWSNeptuneGraph/NeptuneGraphClientProtocol.swift create mode 100644 Sources/Services/AWSNeptuneGraph/Paginators.swift create mode 100644 Sources/Services/AWSNeptuneGraph/models/Models.swift create mode 100644 Tests/Services/AWSNeptuneGraphTests/EndpointResolverTest.swift diff --git a/Package.swift b/Package.swift index 1eb335cedf6..38888ac3d0f 100644 --- a/Package.swift +++ b/Package.swift @@ -230,7 +230,7 @@ func addResolvedTargets() { // MARK: - Generated addDependencies( - clientRuntimeVersion: "0.36.0", + clientRuntimeVersion: "0.37.0", crtVersion: "0.17.0" ) @@ -484,6 +484,7 @@ let serviceTargets: [String] = [ "AWSMobile", "AWSMq", "AWSNeptune", + "AWSNeptuneGraph", "AWSNeptunedata", "AWSNetworkFirewall", "AWSNetworkManager", diff --git a/Package.version b/Package.version index 8a0d6d408f7..7d07a196012 100644 --- a/Package.version +++ b/Package.version @@ -1 +1 @@ -0.32.0 \ No newline at end of file +0.33.0 \ No newline at end of file diff --git a/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md b/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md index 63e0a0131a0..074d4951f54 100644 --- a/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md +++ b/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md @@ -503,6 +503,8 @@ This SDK is open-source. Code is available on Github [here](https://github.com/ [AWSNeptune](../../../../../swift/api/awsneptune/latest) +[AWSNeptuneGraph](../../../../../swift/api/awsneptunegraph/latest) + [AWSNeptunedata](../../../../../swift/api/awsneptunedata/latest) [AWSNetworkFirewall](../../../../../swift/api/awsnetworkfirewall/latest) diff --git a/Sources/Services/AWSAppStream/models/Models.swift b/Sources/Services/AWSAppStream/models/Models.swift index 7c5bc7bf9bb..bb21ff21afe 100644 --- a/Sources/Services/AWSAppStream/models/Models.swift +++ b/Sources/Services/AWSAppStream/models/Models.swift @@ -12311,6 +12311,7 @@ extension AppStreamClientTypes { case windows case windowsServer2016 case windowsServer2019 + case windowsServer2022 case sdkUnknown(Swift.String) public static var allCases: [PlatformType] { @@ -12319,6 +12320,7 @@ extension AppStreamClientTypes { .windows, .windowsServer2016, .windowsServer2019, + .windowsServer2022, .sdkUnknown("") ] } @@ -12332,6 +12334,7 @@ extension AppStreamClientTypes { case .windows: return "WINDOWS" case .windowsServer2016: return "WINDOWS_SERVER_2016" case .windowsServer2019: return "WINDOWS_SERVER_2019" + case .windowsServer2022: return "WINDOWS_SERVER_2022" case let .sdkUnknown(s): return s } } diff --git a/Sources/Services/AWSAppSync/models/Models.swift b/Sources/Services/AWSAppSync/models/Models.swift index 5dae305556b..711f7385193 100644 --- a/Sources/Services/AWSAppSync/models/Models.swift +++ b/Sources/Services/AWSAppSync/models/Models.swift @@ -2759,12 +2759,15 @@ extension CreateGraphqlApiInput: Swift.Encodable { case additionalAuthenticationProviders case apiType case authenticationType + case introspectionConfig case lambdaAuthorizerConfig case logConfig case mergedApiExecutionRoleArn case name case openIDConnectConfig case ownerContact + case queryDepthLimit + case resolverCountLimit case tags case userPoolConfig case visibility @@ -2785,6 +2788,9 @@ extension CreateGraphqlApiInput: Swift.Encodable { if let authenticationType = self.authenticationType { try encodeContainer.encode(authenticationType.rawValue, forKey: .authenticationType) } + if let introspectionConfig = self.introspectionConfig { + try encodeContainer.encode(introspectionConfig.rawValue, forKey: .introspectionConfig) + } if let lambdaAuthorizerConfig = self.lambdaAuthorizerConfig { try encodeContainer.encode(lambdaAuthorizerConfig, forKey: .lambdaAuthorizerConfig) } @@ -2803,6 +2809,12 @@ extension CreateGraphqlApiInput: Swift.Encodable { if let ownerContact = self.ownerContact { try encodeContainer.encode(ownerContact, forKey: .ownerContact) } + if let queryDepthLimit = self.queryDepthLimit { + try encodeContainer.encode(queryDepthLimit, forKey: .queryDepthLimit) + } + if let resolverCountLimit = self.resolverCountLimit { + try encodeContainer.encode(resolverCountLimit, forKey: .resolverCountLimit) + } if let tags = tags { var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) for (dictKey0, tagMap0) in tags { @@ -2835,6 +2847,8 @@ public struct CreateGraphqlApiInput: Swift.Equatable { /// The authentication type: API key, Identity and Access Management (IAM), OpenID Connect (OIDC), Amazon Cognito user pools, or Lambda. /// This member is required. public var authenticationType: AppSyncClientTypes.AuthenticationType? + /// Sets the value of the GraphQL API to enable (ENABLED) or disable (DISABLED) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). + public var introspectionConfig: AppSyncClientTypes.GraphQLApiIntrospectionConfig? /// Configuration for Lambda function authorization. public var lambdaAuthorizerConfig: AppSyncClientTypes.LambdaAuthorizerConfig? /// The Amazon CloudWatch Logs configuration. @@ -2848,6 +2862,10 @@ public struct CreateGraphqlApiInput: Swift.Equatable { public var openIDConnectConfig: AppSyncClientTypes.OpenIDConnectConfig? /// The owner contact information for an API resource. This field accepts any string input with a length of 0 - 256 characters. public var ownerContact: Swift.String? + /// The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query. The default value is 0 (or unspecified), which indicates there's no depth limit. If you set a limit, it can be between 1 and 75 nested levels. This field will produce a limit error if the operation falls out of bounds. Note that fields can still be set to nullable or non-nullable. If a non-nullable field produces an error, the error will be thrown upwards to the first nullable field available. + public var queryDepthLimit: Swift.Int? + /// The maximum number of resolvers that can be invoked in a single request. The default value is 0 (or unspecified), which will set the limit to 10000. When specified, the limit value can be between 1 and 10000. This field will produce a limit error if the operation falls out of bounds. + public var resolverCountLimit: Swift.Int? /// A TagMap object. public var tags: [Swift.String:Swift.String]? /// The Amazon Cognito user pool configuration. @@ -2861,12 +2879,15 @@ public struct CreateGraphqlApiInput: Swift.Equatable { additionalAuthenticationProviders: [AppSyncClientTypes.AdditionalAuthenticationProvider]? = nil, apiType: AppSyncClientTypes.GraphQLApiType? = nil, authenticationType: AppSyncClientTypes.AuthenticationType? = nil, + introspectionConfig: AppSyncClientTypes.GraphQLApiIntrospectionConfig? = nil, lambdaAuthorizerConfig: AppSyncClientTypes.LambdaAuthorizerConfig? = nil, logConfig: AppSyncClientTypes.LogConfig? = nil, mergedApiExecutionRoleArn: Swift.String? = nil, name: Swift.String? = nil, openIDConnectConfig: AppSyncClientTypes.OpenIDConnectConfig? = nil, ownerContact: Swift.String? = nil, + queryDepthLimit: Swift.Int? = nil, + resolverCountLimit: Swift.Int? = nil, tags: [Swift.String:Swift.String]? = nil, userPoolConfig: AppSyncClientTypes.UserPoolConfig? = nil, visibility: AppSyncClientTypes.GraphQLApiVisibility? = nil, @@ -2876,12 +2897,15 @@ public struct CreateGraphqlApiInput: Swift.Equatable { self.additionalAuthenticationProviders = additionalAuthenticationProviders self.apiType = apiType self.authenticationType = authenticationType + self.introspectionConfig = introspectionConfig self.lambdaAuthorizerConfig = lambdaAuthorizerConfig self.logConfig = logConfig self.mergedApiExecutionRoleArn = mergedApiExecutionRoleArn self.name = name self.openIDConnectConfig = openIDConnectConfig self.ownerContact = ownerContact + self.queryDepthLimit = queryDepthLimit + self.resolverCountLimit = resolverCountLimit self.tags = tags self.userPoolConfig = userPoolConfig self.visibility = visibility @@ -2903,6 +2927,9 @@ struct CreateGraphqlApiInputBody: Swift.Equatable { let apiType: AppSyncClientTypes.GraphQLApiType? let mergedApiExecutionRoleArn: Swift.String? let ownerContact: Swift.String? + let introspectionConfig: AppSyncClientTypes.GraphQLApiIntrospectionConfig? + let queryDepthLimit: Swift.Int? + let resolverCountLimit: Swift.Int? } extension CreateGraphqlApiInputBody: Swift.Decodable { @@ -2910,12 +2937,15 @@ extension CreateGraphqlApiInputBody: Swift.Decodable { case additionalAuthenticationProviders case apiType case authenticationType + case introspectionConfig case lambdaAuthorizerConfig case logConfig case mergedApiExecutionRoleArn case name case openIDConnectConfig case ownerContact + case queryDepthLimit + case resolverCountLimit case tags case userPoolConfig case visibility @@ -2968,6 +2998,12 @@ extension CreateGraphqlApiInputBody: Swift.Decodable { mergedApiExecutionRoleArn = mergedApiExecutionRoleArnDecoded let ownerContactDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ownerContact) ownerContact = ownerContactDecoded + let introspectionConfigDecoded = try containerValues.decodeIfPresent(AppSyncClientTypes.GraphQLApiIntrospectionConfig.self, forKey: .introspectionConfig) + introspectionConfig = introspectionConfigDecoded + let queryDepthLimitDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .queryDepthLimit) + queryDepthLimit = queryDepthLimitDecoded + let resolverCountLimitDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .resolverCountLimit) + resolverCountLimit = resolverCountLimitDecoded } } @@ -6888,6 +6924,38 @@ enum GetTypeOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension AppSyncClientTypes { + public enum GraphQLApiIntrospectionConfig: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case disabled + case enabled + case sdkUnknown(Swift.String) + + public static var allCases: [GraphQLApiIntrospectionConfig] { + return [ + .disabled, + .enabled, + .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 .disabled: return "DISABLED" + case .enabled: return "ENABLED" + 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 = GraphQLApiIntrospectionConfig(rawValue: rawValue) ?? GraphQLApiIntrospectionConfig.sdkUnknown(rawValue) + } + } +} + extension AppSyncClientTypes { public enum GraphQLApiType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case graphql @@ -7015,6 +7083,7 @@ extension AppSyncClientTypes.GraphqlApi: Swift.Codable { case arn case authenticationType case dns + case introspectionConfig case lambdaAuthorizerConfig case logConfig case mergedApiExecutionRoleArn @@ -7022,6 +7091,8 @@ extension AppSyncClientTypes.GraphqlApi: Swift.Codable { case openIDConnectConfig case owner case ownerContact + case queryDepthLimit + case resolverCountLimit case tags case uris case userPoolConfig @@ -7056,6 +7127,9 @@ extension AppSyncClientTypes.GraphqlApi: Swift.Codable { try dnsContainer.encode(mapOfStringToString0, forKey: ClientRuntime.Key(stringValue: dictKey0)) } } + if let introspectionConfig = self.introspectionConfig { + try encodeContainer.encode(introspectionConfig.rawValue, forKey: .introspectionConfig) + } if let lambdaAuthorizerConfig = self.lambdaAuthorizerConfig { try encodeContainer.encode(lambdaAuthorizerConfig, forKey: .lambdaAuthorizerConfig) } @@ -7077,6 +7151,12 @@ extension AppSyncClientTypes.GraphqlApi: Swift.Codable { if let ownerContact = self.ownerContact { try encodeContainer.encode(ownerContact, forKey: .ownerContact) } + if queryDepthLimit != 0 { + try encodeContainer.encode(queryDepthLimit, forKey: .queryDepthLimit) + } + if resolverCountLimit != 0 { + try encodeContainer.encode(resolverCountLimit, forKey: .resolverCountLimit) + } if let tags = tags { var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) for (dictKey0, tagMap0) in tags { @@ -7179,6 +7259,12 @@ extension AppSyncClientTypes.GraphqlApi: Swift.Codable { owner = ownerDecoded let ownerContactDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ownerContact) ownerContact = ownerContactDecoded + let introspectionConfigDecoded = try containerValues.decodeIfPresent(AppSyncClientTypes.GraphQLApiIntrospectionConfig.self, forKey: .introspectionConfig) + introspectionConfig = introspectionConfigDecoded + let queryDepthLimitDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .queryDepthLimit) ?? 0 + queryDepthLimit = queryDepthLimitDecoded + let resolverCountLimitDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .resolverCountLimit) ?? 0 + resolverCountLimit = resolverCountLimitDecoded } } @@ -7197,6 +7283,8 @@ extension AppSyncClientTypes { public var authenticationType: AppSyncClientTypes.AuthenticationType? /// The DNS records for the API. public var dns: [Swift.String:Swift.String]? + /// Sets the value of the GraphQL API to enable (ENABLED) or disable (DISABLED) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). + public var introspectionConfig: AppSyncClientTypes.GraphQLApiIntrospectionConfig? /// Configuration for Lambda function authorization. public var lambdaAuthorizerConfig: AppSyncClientTypes.LambdaAuthorizerConfig? /// The Amazon CloudWatch Logs configuration. @@ -7211,6 +7299,10 @@ extension AppSyncClientTypes { public var owner: Swift.String? /// The owner contact information for an API resource. This field accepts any string input with a length of 0 - 256 characters. public var ownerContact: Swift.String? + /// The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query. The default value is 0 (or unspecified), which indicates there's no depth limit. If you set a limit, it can be between 1 and 75 nested levels. This field will produce a limit error if the operation falls out of bounds. Note that fields can still be set to nullable or non-nullable. If a non-nullable field produces an error, the error will be thrown upwards to the first nullable field available. + public var queryDepthLimit: Swift.Int + /// The maximum number of resolvers that can be invoked in a single request. The default value is 0 (or unspecified), which will set the limit to 10000. When specified, the limit value can be between 1 and 10000. This field will produce a limit error if the operation falls out of bounds. + public var resolverCountLimit: Swift.Int /// The tags. public var tags: [Swift.String:Swift.String]? /// The URIs. @@ -7231,6 +7323,7 @@ extension AppSyncClientTypes { arn: Swift.String? = nil, authenticationType: AppSyncClientTypes.AuthenticationType? = nil, dns: [Swift.String:Swift.String]? = nil, + introspectionConfig: AppSyncClientTypes.GraphQLApiIntrospectionConfig? = nil, lambdaAuthorizerConfig: AppSyncClientTypes.LambdaAuthorizerConfig? = nil, logConfig: AppSyncClientTypes.LogConfig? = nil, mergedApiExecutionRoleArn: Swift.String? = nil, @@ -7238,6 +7331,8 @@ extension AppSyncClientTypes { openIDConnectConfig: AppSyncClientTypes.OpenIDConnectConfig? = nil, owner: Swift.String? = nil, ownerContact: Swift.String? = nil, + queryDepthLimit: Swift.Int = 0, + resolverCountLimit: Swift.Int = 0, tags: [Swift.String:Swift.String]? = nil, uris: [Swift.String:Swift.String]? = nil, userPoolConfig: AppSyncClientTypes.UserPoolConfig? = nil, @@ -7252,6 +7347,7 @@ extension AppSyncClientTypes { self.arn = arn self.authenticationType = authenticationType self.dns = dns + self.introspectionConfig = introspectionConfig self.lambdaAuthorizerConfig = lambdaAuthorizerConfig self.logConfig = logConfig self.mergedApiExecutionRoleArn = mergedApiExecutionRoleArn @@ -7259,6 +7355,8 @@ extension AppSyncClientTypes { self.openIDConnectConfig = openIDConnectConfig self.owner = owner self.ownerContact = ownerContact + self.queryDepthLimit = queryDepthLimit + self.resolverCountLimit = resolverCountLimit self.tags = tags self.uris = uris self.userPoolConfig = userPoolConfig @@ -11760,12 +11858,15 @@ extension UpdateGraphqlApiInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case additionalAuthenticationProviders case authenticationType + case introspectionConfig case lambdaAuthorizerConfig case logConfig case mergedApiExecutionRoleArn case name case openIDConnectConfig case ownerContact + case queryDepthLimit + case resolverCountLimit case userPoolConfig case xrayEnabled } @@ -11781,6 +11882,9 @@ extension UpdateGraphqlApiInput: Swift.Encodable { if let authenticationType = self.authenticationType { try encodeContainer.encode(authenticationType.rawValue, forKey: .authenticationType) } + if let introspectionConfig = self.introspectionConfig { + try encodeContainer.encode(introspectionConfig.rawValue, forKey: .introspectionConfig) + } if let lambdaAuthorizerConfig = self.lambdaAuthorizerConfig { try encodeContainer.encode(lambdaAuthorizerConfig, forKey: .lambdaAuthorizerConfig) } @@ -11799,6 +11903,12 @@ extension UpdateGraphqlApiInput: Swift.Encodable { if let ownerContact = self.ownerContact { try encodeContainer.encode(ownerContact, forKey: .ownerContact) } + if let queryDepthLimit = self.queryDepthLimit { + try encodeContainer.encode(queryDepthLimit, forKey: .queryDepthLimit) + } + if let resolverCountLimit = self.resolverCountLimit { + try encodeContainer.encode(resolverCountLimit, forKey: .resolverCountLimit) + } if let userPoolConfig = self.userPoolConfig { try encodeContainer.encode(userPoolConfig, forKey: .userPoolConfig) } @@ -11825,6 +11935,8 @@ public struct UpdateGraphqlApiInput: Swift.Equatable { public var apiId: Swift.String? /// The new authentication type for the GraphqlApi object. public var authenticationType: AppSyncClientTypes.AuthenticationType? + /// Sets the value of the GraphQL API to enable (ENABLED) or disable (DISABLED) introspection. If no value is provided, the introspection configuration will be set to ENABLED by default. This field will produce an error if the operation attempts to use the introspection feature while this field is disabled. For more information about introspection, see [GraphQL introspection](https://graphql.org/learn/introspection/). + public var introspectionConfig: AppSyncClientTypes.GraphQLApiIntrospectionConfig? /// Configuration for Lambda function authorization. public var lambdaAuthorizerConfig: AppSyncClientTypes.LambdaAuthorizerConfig? /// The Amazon CloudWatch Logs configuration for the GraphqlApi object. @@ -11838,6 +11950,10 @@ public struct UpdateGraphqlApiInput: Swift.Equatable { public var openIDConnectConfig: AppSyncClientTypes.OpenIDConnectConfig? /// The owner contact information for an API resource. This field accepts any string input with a length of 0 - 256 characters. public var ownerContact: Swift.String? + /// The maximum depth a query can have in a single request. Depth refers to the amount of nested levels allowed in the body of query. The default value is 0 (or unspecified), which indicates there's no depth limit. If you set a limit, it can be between 1 and 75 nested levels. This field will produce a limit error if the operation falls out of bounds. Note that fields can still be set to nullable or non-nullable. If a non-nullable field produces an error, the error will be thrown upwards to the first nullable field available. + public var queryDepthLimit: Swift.Int? + /// The maximum number of resolvers that can be invoked in a single request. The default value is 0 (or unspecified), which will set the limit to 10000. When specified, the limit value can be between 1 and 10000. This field will produce a limit error if the operation falls out of bounds. + public var resolverCountLimit: Swift.Int? /// The new Amazon Cognito user pool configuration for the ~GraphqlApi object. public var userPoolConfig: AppSyncClientTypes.UserPoolConfig? /// A flag indicating whether to use X-Ray tracing for the GraphqlApi. @@ -11847,12 +11963,15 @@ public struct UpdateGraphqlApiInput: Swift.Equatable { additionalAuthenticationProviders: [AppSyncClientTypes.AdditionalAuthenticationProvider]? = nil, apiId: Swift.String? = nil, authenticationType: AppSyncClientTypes.AuthenticationType? = nil, + introspectionConfig: AppSyncClientTypes.GraphQLApiIntrospectionConfig? = nil, lambdaAuthorizerConfig: AppSyncClientTypes.LambdaAuthorizerConfig? = nil, logConfig: AppSyncClientTypes.LogConfig? = nil, mergedApiExecutionRoleArn: Swift.String? = nil, name: Swift.String? = nil, openIDConnectConfig: AppSyncClientTypes.OpenIDConnectConfig? = nil, ownerContact: Swift.String? = nil, + queryDepthLimit: Swift.Int? = nil, + resolverCountLimit: Swift.Int? = nil, userPoolConfig: AppSyncClientTypes.UserPoolConfig? = nil, xrayEnabled: Swift.Bool? = nil ) @@ -11860,12 +11979,15 @@ public struct UpdateGraphqlApiInput: Swift.Equatable { self.additionalAuthenticationProviders = additionalAuthenticationProviders self.apiId = apiId self.authenticationType = authenticationType + self.introspectionConfig = introspectionConfig self.lambdaAuthorizerConfig = lambdaAuthorizerConfig self.logConfig = logConfig self.mergedApiExecutionRoleArn = mergedApiExecutionRoleArn self.name = name self.openIDConnectConfig = openIDConnectConfig self.ownerContact = ownerContact + self.queryDepthLimit = queryDepthLimit + self.resolverCountLimit = resolverCountLimit self.userPoolConfig = userPoolConfig self.xrayEnabled = xrayEnabled } @@ -11882,18 +12004,24 @@ struct UpdateGraphqlApiInputBody: Swift.Equatable { let lambdaAuthorizerConfig: AppSyncClientTypes.LambdaAuthorizerConfig? let mergedApiExecutionRoleArn: Swift.String? let ownerContact: Swift.String? + let introspectionConfig: AppSyncClientTypes.GraphQLApiIntrospectionConfig? + let queryDepthLimit: Swift.Int? + let resolverCountLimit: Swift.Int? } extension UpdateGraphqlApiInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case additionalAuthenticationProviders case authenticationType + case introspectionConfig case lambdaAuthorizerConfig case logConfig case mergedApiExecutionRoleArn case name case openIDConnectConfig case ownerContact + case queryDepthLimit + case resolverCountLimit case userPoolConfig case xrayEnabled } @@ -11929,6 +12057,12 @@ extension UpdateGraphqlApiInputBody: Swift.Decodable { mergedApiExecutionRoleArn = mergedApiExecutionRoleArnDecoded let ownerContactDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ownerContact) ownerContact = ownerContactDecoded + let introspectionConfigDecoded = try containerValues.decodeIfPresent(AppSyncClientTypes.GraphQLApiIntrospectionConfig.self, forKey: .introspectionConfig) + introspectionConfig = introspectionConfigDecoded + let queryDepthLimitDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .queryDepthLimit) + queryDepthLimit = queryDepthLimitDecoded + let resolverCountLimitDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .resolverCountLimit) + resolverCountLimit = resolverCountLimitDecoded } } diff --git a/Sources/Services/AWSAthena/Paginators.swift b/Sources/Services/AWSAthena/Paginators.swift index 36287198439..142f619d04b 100644 --- a/Sources/Services/AWSAthena/Paginators.swift +++ b/Sources/Services/AWSAthena/Paginators.swift @@ -108,7 +108,8 @@ extension ListDatabasesInput: ClientRuntime.PaginateToken { return ListDatabasesInput( catalogName: self.catalogName, maxResults: self.maxResults, - nextToken: token + nextToken: token, + workGroup: self.workGroup )} } @@ -138,7 +139,8 @@ extension ListDataCatalogsInput: ClientRuntime.PaginateToken { public func usingPaginationToken(_ token: Swift.String) -> ListDataCatalogsInput { return ListDataCatalogsInput( maxResults: self.maxResults, - nextToken: token + nextToken: token, + workGroup: self.workGroup )} } @@ -304,7 +306,8 @@ extension ListTableMetadataInput: ClientRuntime.PaginateToken { databaseName: self.databaseName, expression: self.expression, maxResults: self.maxResults, - nextToken: token + nextToken: token, + workGroup: self.workGroup )} } diff --git a/Sources/Services/AWSAthena/models/Models.swift b/Sources/Services/AWSAthena/models/Models.swift index 98be3134a12..800d3da9308 100644 --- a/Sources/Services/AWSAthena/models/Models.swift +++ b/Sources/Services/AWSAthena/models/Models.swift @@ -160,6 +160,35 @@ extension AthenaClientTypes { } +extension AthenaClientTypes { + public enum AuthenticationType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case directoryIdentity + case sdkUnknown(Swift.String) + + public static var allCases: [AuthenticationType] { + return [ + .directoryIdentity, + .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 .directoryIdentity: return "DIRECTORY_IDENTITY" + 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 = AuthenticationType(rawValue: rawValue) ?? AuthenticationType.sdkUnknown(rawValue) + } + } +} + extension BatchGetNamedQueryInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case namedQueryIds = "NamedQueryIds" @@ -1471,7 +1500,7 @@ extension AthenaClientTypes { /// The name of the column. /// This member is required. public var name: Swift.String? - /// Indicates the column's nullable status. + /// Unsupported constraint. This value always shows as UNKNOWN. public var nullable: AthenaClientTypes.ColumnNullable? /// For DECIMAL data types, specifies the total number of digits, up to 38. For performance reasons, we recommend up to 18 digits. public var precision: Swift.Int @@ -4326,6 +4355,7 @@ enum GetCapacityReservationOutputError: ClientRuntime.HttpResponseErrorBinding { extension GetDataCatalogInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case name = "Name" + case workGroup = "WorkGroup" } public func encode(to encoder: Swift.Encoder) throws { @@ -4333,6 +4363,9 @@ extension GetDataCatalogInput: Swift.Encodable { if let name = self.name { try encodeContainer.encode(name, forKey: .name) } + if let workGroup = self.workGroup { + try encodeContainer.encode(workGroup, forKey: .workGroup) + } } } @@ -4346,28 +4379,36 @@ public struct GetDataCatalogInput: Swift.Equatable { /// The name of the data catalog to return. /// This member is required. public var name: Swift.String? + /// The name of the workgroup. Required if making an IAM Identity Center request. + public var workGroup: Swift.String? public init( - name: Swift.String? = nil + name: Swift.String? = nil, + workGroup: Swift.String? = nil ) { self.name = name + self.workGroup = workGroup } } struct GetDataCatalogInputBody: Swift.Equatable { let name: Swift.String? + let workGroup: Swift.String? } extension GetDataCatalogInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case name = "Name" + case workGroup = "WorkGroup" } 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 workGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workGroup) + workGroup = workGroupDecoded } } @@ -4427,6 +4468,7 @@ extension GetDatabaseInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case catalogName = "CatalogName" case databaseName = "DatabaseName" + case workGroup = "WorkGroup" } public func encode(to encoder: Swift.Encoder) throws { @@ -4437,6 +4479,9 @@ extension GetDatabaseInput: Swift.Encodable { if let databaseName = self.databaseName { try encodeContainer.encode(databaseName, forKey: .databaseName) } + if let workGroup = self.workGroup { + try encodeContainer.encode(workGroup, forKey: .workGroup) + } } } @@ -4453,26 +4498,32 @@ public struct GetDatabaseInput: Swift.Equatable { /// The name of the database to return. /// This member is required. public var databaseName: Swift.String? + /// The name of the workgroup for which the metadata is being fetched. Required if requesting an IAM Identity Center enabled Glue Data Catalog. + public var workGroup: Swift.String? public init( catalogName: Swift.String? = nil, - databaseName: Swift.String? = nil + databaseName: Swift.String? = nil, + workGroup: Swift.String? = nil ) { self.catalogName = catalogName self.databaseName = databaseName + self.workGroup = workGroup } } struct GetDatabaseInputBody: Swift.Equatable { let catalogName: Swift.String? let databaseName: Swift.String? + let workGroup: Swift.String? } extension GetDatabaseInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case catalogName = "CatalogName" case databaseName = "DatabaseName" + case workGroup = "WorkGroup" } public init(from decoder: Swift.Decoder) throws { @@ -4481,6 +4532,8 @@ extension GetDatabaseInputBody: Swift.Decodable { catalogName = catalogNameDecoded let databaseNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseName) databaseName = databaseNameDecoded + let workGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workGroup) + workGroup = workGroupDecoded } } @@ -5494,6 +5547,7 @@ extension GetTableMetadataInput: Swift.Encodable { case catalogName = "CatalogName" case databaseName = "DatabaseName" case tableName = "TableName" + case workGroup = "WorkGroup" } public func encode(to encoder: Swift.Encoder) throws { @@ -5507,6 +5561,9 @@ extension GetTableMetadataInput: Swift.Encodable { if let tableName = self.tableName { try encodeContainer.encode(tableName, forKey: .tableName) } + if let workGroup = self.workGroup { + try encodeContainer.encode(workGroup, forKey: .workGroup) + } } } @@ -5526,16 +5583,20 @@ public struct GetTableMetadataInput: Swift.Equatable { /// The name of the table for which metadata is returned. /// This member is required. public var tableName: Swift.String? + /// The name of the workgroup for which the metadata is being fetched. Required if requesting an IAM Identity Center enabled Glue Data Catalog. + public var workGroup: Swift.String? public init( catalogName: Swift.String? = nil, databaseName: Swift.String? = nil, - tableName: Swift.String? = nil + tableName: Swift.String? = nil, + workGroup: Swift.String? = nil ) { self.catalogName = catalogName self.databaseName = databaseName self.tableName = tableName + self.workGroup = workGroup } } @@ -5543,6 +5604,7 @@ struct GetTableMetadataInputBody: Swift.Equatable { let catalogName: Swift.String? let databaseName: Swift.String? let tableName: Swift.String? + let workGroup: Swift.String? } extension GetTableMetadataInputBody: Swift.Decodable { @@ -5550,6 +5612,7 @@ extension GetTableMetadataInputBody: Swift.Decodable { case catalogName = "CatalogName" case databaseName = "DatabaseName" case tableName = "TableName" + case workGroup = "WorkGroup" } public init(from decoder: Swift.Decoder) throws { @@ -5560,6 +5623,8 @@ extension GetTableMetadataInputBody: Swift.Decodable { databaseName = databaseNameDecoded let tableNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .tableName) tableName = tableNameDecoded + let workGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workGroup) + workGroup = workGroupDecoded } } @@ -5716,6 +5781,51 @@ enum GetWorkGroupOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension AthenaClientTypes.IdentityCenterConfiguration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case enableIdentityCenter = "EnableIdentityCenter" + case identityCenterInstanceArn = "IdentityCenterInstanceArn" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let enableIdentityCenter = self.enableIdentityCenter { + try encodeContainer.encode(enableIdentityCenter, forKey: .enableIdentityCenter) + } + if let identityCenterInstanceArn = self.identityCenterInstanceArn { + try encodeContainer.encode(identityCenterInstanceArn, forKey: .identityCenterInstanceArn) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let enableIdentityCenterDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .enableIdentityCenter) + enableIdentityCenter = enableIdentityCenterDecoded + let identityCenterInstanceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .identityCenterInstanceArn) + identityCenterInstanceArn = identityCenterInstanceArnDecoded + } +} + +extension AthenaClientTypes { + /// Specifies whether the workgroup is IAM Identity Center supported. + public struct IdentityCenterConfiguration: Swift.Equatable { + /// Specifies whether the workgroup is IAM Identity Center supported. + public var enableIdentityCenter: Swift.Bool? + /// The IAM Identity Center instance ARN that the workgroup associates to. + public var identityCenterInstanceArn: Swift.String? + + public init( + enableIdentityCenter: Swift.Bool? = nil, + identityCenterInstanceArn: Swift.String? = nil + ) + { + self.enableIdentityCenter = enableIdentityCenter + self.identityCenterInstanceArn = identityCenterInstanceArn + } + } + +} + extension ImportNotebookInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientRequestToken = "ClientRequestToken" @@ -6410,6 +6520,7 @@ extension ListDataCatalogsInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case maxResults = "MaxResults" case nextToken = "NextToken" + case workGroup = "WorkGroup" } public func encode(to encoder: Swift.Encoder) throws { @@ -6420,6 +6531,9 @@ extension ListDataCatalogsInput: Swift.Encodable { if let nextToken = self.nextToken { try encodeContainer.encode(nextToken, forKey: .nextToken) } + if let workGroup = self.workGroup { + try encodeContainer.encode(workGroup, forKey: .workGroup) + } } } @@ -6434,26 +6548,32 @@ public struct ListDataCatalogsInput: Swift.Equatable { public var maxResults: Swift.Int? /// A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the NextToken from the response object of the previous page call. public var nextToken: Swift.String? + /// The name of the workgroup. Required if making an IAM Identity Center request. + public var workGroup: Swift.String? public init( maxResults: Swift.Int? = nil, - nextToken: Swift.String? = nil + nextToken: Swift.String? = nil, + workGroup: Swift.String? = nil ) { self.maxResults = maxResults self.nextToken = nextToken + self.workGroup = workGroup } } struct ListDataCatalogsInputBody: Swift.Equatable { let nextToken: Swift.String? let maxResults: Swift.Int? + let workGroup: Swift.String? } extension ListDataCatalogsInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case maxResults = "MaxResults" case nextToken = "NextToken" + case workGroup = "WorkGroup" } public init(from decoder: Swift.Decoder) throws { @@ -6462,6 +6582,8 @@ extension ListDataCatalogsInputBody: Swift.Decodable { nextToken = nextTokenDecoded let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) maxResults = maxResultsDecoded + let workGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workGroup) + workGroup = workGroupDecoded } } @@ -6541,6 +6663,7 @@ extension ListDatabasesInput: Swift.Encodable { case catalogName = "CatalogName" case maxResults = "MaxResults" case nextToken = "NextToken" + case workGroup = "WorkGroup" } public func encode(to encoder: Swift.Encoder) throws { @@ -6554,6 +6677,9 @@ extension ListDatabasesInput: Swift.Encodable { if let nextToken = self.nextToken { try encodeContainer.encode(nextToken, forKey: .nextToken) } + if let workGroup = self.workGroup { + try encodeContainer.encode(workGroup, forKey: .workGroup) + } } } @@ -6571,16 +6697,20 @@ public struct ListDatabasesInput: Swift.Equatable { public var maxResults: Swift.Int? /// A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the NextToken from the response object of the previous page call. public var nextToken: Swift.String? + /// The name of the workgroup for which the metadata is being fetched. Required if requesting an IAM Identity Center enabled Glue Data Catalog. + public var workGroup: Swift.String? public init( catalogName: Swift.String? = nil, maxResults: Swift.Int? = nil, - nextToken: Swift.String? = nil + nextToken: Swift.String? = nil, + workGroup: Swift.String? = nil ) { self.catalogName = catalogName self.maxResults = maxResults self.nextToken = nextToken + self.workGroup = workGroup } } @@ -6588,6 +6718,7 @@ struct ListDatabasesInputBody: Swift.Equatable { let catalogName: Swift.String? let nextToken: Swift.String? let maxResults: Swift.Int? + let workGroup: Swift.String? } extension ListDatabasesInputBody: Swift.Decodable { @@ -6595,6 +6726,7 @@ extension ListDatabasesInputBody: Swift.Decodable { case catalogName = "CatalogName" case maxResults = "MaxResults" case nextToken = "NextToken" + case workGroup = "WorkGroup" } public init(from decoder: Swift.Decoder) throws { @@ -6605,6 +6737,8 @@ extension ListDatabasesInputBody: Swift.Decodable { nextToken = nextTokenDecoded let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) maxResults = maxResultsDecoded + let workGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workGroup) + workGroup = workGroupDecoded } } @@ -7868,6 +8002,7 @@ extension ListTableMetadataInput: Swift.Encodable { case expression = "Expression" case maxResults = "MaxResults" case nextToken = "NextToken" + case workGroup = "WorkGroup" } public func encode(to encoder: Swift.Encoder) throws { @@ -7887,6 +8022,9 @@ extension ListTableMetadataInput: Swift.Encodable { if let nextToken = self.nextToken { try encodeContainer.encode(nextToken, forKey: .nextToken) } + if let workGroup = self.workGroup { + try encodeContainer.encode(workGroup, forKey: .workGroup) + } } } @@ -7909,13 +8047,16 @@ public struct ListTableMetadataInput: Swift.Equatable { public var maxResults: Swift.Int? /// A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the NextToken from the response object of the previous page call. public var nextToken: Swift.String? + /// The name of the workgroup for which the metadata is being fetched. Required if requesting an IAM Identity Center enabled Glue Data Catalog. + public var workGroup: Swift.String? public init( catalogName: Swift.String? = nil, databaseName: Swift.String? = nil, expression: Swift.String? = nil, maxResults: Swift.Int? = nil, - nextToken: Swift.String? = nil + nextToken: Swift.String? = nil, + workGroup: Swift.String? = nil ) { self.catalogName = catalogName @@ -7923,6 +8064,7 @@ public struct ListTableMetadataInput: Swift.Equatable { self.expression = expression self.maxResults = maxResults self.nextToken = nextToken + self.workGroup = workGroup } } @@ -7932,6 +8074,7 @@ struct ListTableMetadataInputBody: Swift.Equatable { let expression: Swift.String? let nextToken: Swift.String? let maxResults: Swift.Int? + let workGroup: Swift.String? } extension ListTableMetadataInputBody: Swift.Decodable { @@ -7941,6 +8084,7 @@ extension ListTableMetadataInputBody: Swift.Decodable { case expression = "Expression" case maxResults = "MaxResults" case nextToken = "NextToken" + case workGroup = "WorkGroup" } public init(from decoder: Swift.Decoder) throws { @@ -7955,6 +8099,8 @@ extension ListTableMetadataInputBody: Swift.Decodable { nextToken = nextTokenDecoded let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) maxResults = maxResultsDecoded + let workGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workGroup) + workGroup = workGroupDecoded } } @@ -8828,6 +8974,7 @@ extension AthenaClientTypes.QueryExecution: Swift.Codable { case query = "Query" case queryExecutionContext = "QueryExecutionContext" case queryExecutionId = "QueryExecutionId" + case queryResultsS3AccessGrantsConfiguration = "QueryResultsS3AccessGrantsConfiguration" case resultConfiguration = "ResultConfiguration" case resultReuseConfiguration = "ResultReuseConfiguration" case statementType = "StatementType" @@ -8857,6 +9004,9 @@ extension AthenaClientTypes.QueryExecution: Swift.Codable { if let queryExecutionId = self.queryExecutionId { try encodeContainer.encode(queryExecutionId, forKey: .queryExecutionId) } + if let queryResultsS3AccessGrantsConfiguration = self.queryResultsS3AccessGrantsConfiguration { + try encodeContainer.encode(queryResultsS3AccessGrantsConfiguration, forKey: .queryResultsS3AccessGrantsConfiguration) + } if let resultConfiguration = self.resultConfiguration { try encodeContainer.encode(resultConfiguration, forKey: .resultConfiguration) } @@ -8915,6 +9065,8 @@ extension AthenaClientTypes.QueryExecution: Swift.Codable { executionParameters = executionParametersDecoded0 let substatementTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .substatementType) substatementType = substatementTypeDecoded + let queryResultsS3AccessGrantsConfigurationDecoded = try containerValues.decodeIfPresent(AthenaClientTypes.QueryResultsS3AccessGrantsConfiguration.self, forKey: .queryResultsS3AccessGrantsConfiguration) + queryResultsS3AccessGrantsConfiguration = queryResultsS3AccessGrantsConfigurationDecoded } } @@ -8931,6 +9083,8 @@ extension AthenaClientTypes { public var queryExecutionContext: AthenaClientTypes.QueryExecutionContext? /// The unique identifier for each query execution. public var queryExecutionId: Swift.String? + /// Specifies whether Amazon S3 access grants are enabled for query results. + public var queryResultsS3AccessGrantsConfiguration: AthenaClientTypes.QueryResultsS3AccessGrantsConfiguration? /// The location in Amazon S3 where query and calculation results are stored and the encryption option, if any, used for query results. These are known as "client-side settings". If workgroup settings override client-side settings, then the query uses the location for the query results and the encryption configuration that are specified for the workgroup. public var resultConfiguration: AthenaClientTypes.ResultConfiguration? /// Specifies the query result reuse behavior that was used for the query. @@ -8952,6 +9106,7 @@ extension AthenaClientTypes { query: Swift.String? = nil, queryExecutionContext: AthenaClientTypes.QueryExecutionContext? = nil, queryExecutionId: Swift.String? = nil, + queryResultsS3AccessGrantsConfiguration: AthenaClientTypes.QueryResultsS3AccessGrantsConfiguration? = nil, resultConfiguration: AthenaClientTypes.ResultConfiguration? = nil, resultReuseConfiguration: AthenaClientTypes.ResultReuseConfiguration? = nil, statementType: AthenaClientTypes.StatementType? = nil, @@ -8966,6 +9121,7 @@ extension AthenaClientTypes { self.query = query self.queryExecutionContext = queryExecutionContext self.queryExecutionId = queryExecutionId + self.queryResultsS3AccessGrantsConfiguration = queryResultsS3AccessGrantsConfiguration self.resultConfiguration = resultConfiguration self.resultReuseConfiguration = resultReuseConfiguration self.statementType = statementType @@ -9254,6 +9410,63 @@ extension AthenaClientTypes { } +extension AthenaClientTypes.QueryResultsS3AccessGrantsConfiguration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case authenticationType = "AuthenticationType" + case createUserLevelPrefix = "CreateUserLevelPrefix" + case enableS3AccessGrants = "EnableS3AccessGrants" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let authenticationType = self.authenticationType { + try encodeContainer.encode(authenticationType.rawValue, forKey: .authenticationType) + } + if let createUserLevelPrefix = self.createUserLevelPrefix { + try encodeContainer.encode(createUserLevelPrefix, forKey: .createUserLevelPrefix) + } + if let enableS3AccessGrants = self.enableS3AccessGrants { + try encodeContainer.encode(enableS3AccessGrants, forKey: .enableS3AccessGrants) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let enableS3AccessGrantsDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .enableS3AccessGrants) + enableS3AccessGrants = enableS3AccessGrantsDecoded + let createUserLevelPrefixDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .createUserLevelPrefix) + createUserLevelPrefix = createUserLevelPrefixDecoded + let authenticationTypeDecoded = try containerValues.decodeIfPresent(AthenaClientTypes.AuthenticationType.self, forKey: .authenticationType) + authenticationType = authenticationTypeDecoded + } +} + +extension AthenaClientTypes { + /// Specifies whether Amazon S3 access grants are enabled for query results. + public struct QueryResultsS3AccessGrantsConfiguration: Swift.Equatable { + /// The authentication type used for Amazon S3 access grants. Currently, only DIRECTORY_IDENTITY is supported. + /// This member is required. + public var authenticationType: AthenaClientTypes.AuthenticationType? + /// When enabled, appends the user ID as an Amazon S3 path prefix to the query result output location. + public var createUserLevelPrefix: Swift.Bool? + /// Specifies whether Amazon S3 access grants are enabled for query results. + /// This member is required. + public var enableS3AccessGrants: Swift.Bool? + + public init( + authenticationType: AthenaClientTypes.AuthenticationType? = nil, + createUserLevelPrefix: Swift.Bool? = nil, + enableS3AccessGrants: Swift.Bool? = nil + ) + { + self.authenticationType = authenticationType + self.createUserLevelPrefix = createUserLevelPrefix + self.enableS3AccessGrants = enableS3AccessGrants + } + } + +} + extension AthenaClientTypes.QueryRuntimeStatistics: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case outputStage = "OutputStage" @@ -10304,7 +10517,7 @@ extension AthenaClientTypes { public struct SessionConfiguration: Swift.Equatable { /// If query and calculation results are encrypted in Amazon S3, indicates the encryption option used (for example, SSE_KMS or CSE_KMS) and key information. public var encryptionConfiguration: AthenaClientTypes.EncryptionConfiguration? - /// The ARN of the execution role used in a Spark session to access user resources. This property applies only to Spark-enabled workgroups. + /// The ARN of the execution role used to access user resources for Spark sessions and Identity Center enabled workgroups. This property applies only to Spark enabled workgroups and Identity Center enabled workgroups. public var executionRole: Swift.String? /// The idle timeout in seconds for the session. public var idleTimeoutSeconds: Swift.Int? @@ -10779,7 +10992,7 @@ extension StartQueryExecutionInput: ClientRuntime.URLPathProvider { } public struct StartQueryExecutionInput: Swift.Equatable { - /// A unique case-sensitive string used to ensure the request to create the query is idempotent (executes only once). If another StartQueryExecution request is received, the same response is returned and another query is not created. If a parameter has changed, for example, the QueryString, an error is returned. This token is listed as not required because Amazon Web Services SDKs (for example the Amazon Web Services SDK for Java) auto-generate the token for users. If you are not using the Amazon Web Services SDK or the Amazon Web Services CLI, you must provide this token or the action will fail. + /// A unique case-sensitive string used to ensure the request to create the query is idempotent (executes only once). If another StartQueryExecution request is received, the same response is returned and another query is not created. An error is returned if a parameter, such as QueryString, has changed. A call to StartQueryExecution that uses a previous client request token returns the same QueryExecutionId even if the requester doesn't have permission on the tables specified in QueryString. This token is listed as not required because Amazon Web Services SDKs (for example the Amazon Web Services SDK for Java) auto-generate the token for users. If you are not using the Amazon Web Services SDK or the Amazon Web Services CLI, you must provide this token or the action will fail. public var clientRequestToken: Swift.String? /// A list of values for the parameters in a query. The values are applied sequentially to the parameters in the query in the order in which the parameters occur. public var executionParameters: [Swift.String]? @@ -12788,6 +13001,7 @@ extension AthenaClientTypes.WorkGroup: Swift.Codable { case configuration = "Configuration" case creationTime = "CreationTime" case description = "Description" + case identityCenterApplicationArn = "IdentityCenterApplicationArn" case name = "Name" case state = "State" } @@ -12803,6 +13017,9 @@ extension AthenaClientTypes.WorkGroup: Swift.Codable { if let description = self.description { try encodeContainer.encode(description, forKey: .description) } + if let identityCenterApplicationArn = self.identityCenterApplicationArn { + try encodeContainer.encode(identityCenterApplicationArn, forKey: .identityCenterApplicationArn) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -12823,6 +13040,8 @@ extension AthenaClientTypes.WorkGroup: Swift.Codable { description = descriptionDecoded let creationTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .creationTime) creationTime = creationTimeDecoded + let identityCenterApplicationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .identityCenterApplicationArn) + identityCenterApplicationArn = identityCenterApplicationArnDecoded } } @@ -12835,6 +13054,8 @@ extension AthenaClientTypes { public var creationTime: ClientRuntime.Date? /// The workgroup description. public var description: Swift.String? + /// The ARN of the IAM Identity Center enabled application associated with the workgroup. + public var identityCenterApplicationArn: Swift.String? /// The workgroup name. /// This member is required. public var name: Swift.String? @@ -12845,6 +13066,7 @@ extension AthenaClientTypes { configuration: AthenaClientTypes.WorkGroupConfiguration? = nil, creationTime: ClientRuntime.Date? = nil, description: Swift.String? = nil, + identityCenterApplicationArn: Swift.String? = nil, name: Swift.String? = nil, state: AthenaClientTypes.WorkGroupState? = nil ) @@ -12852,6 +13074,7 @@ extension AthenaClientTypes { self.configuration = configuration self.creationTime = creationTime self.description = description + self.identityCenterApplicationArn = identityCenterApplicationArn self.name = name self.state = state } @@ -12868,7 +13091,9 @@ extension AthenaClientTypes.WorkGroupConfiguration: Swift.Codable { case enforceWorkGroupConfiguration = "EnforceWorkGroupConfiguration" case engineVersion = "EngineVersion" case executionRole = "ExecutionRole" + case identityCenterConfiguration = "IdentityCenterConfiguration" case publishCloudWatchMetricsEnabled = "PublishCloudWatchMetricsEnabled" + case queryResultsS3AccessGrantsConfiguration = "QueryResultsS3AccessGrantsConfiguration" case requesterPaysEnabled = "RequesterPaysEnabled" case resultConfiguration = "ResultConfiguration" } @@ -12896,9 +13121,15 @@ extension AthenaClientTypes.WorkGroupConfiguration: Swift.Codable { if let executionRole = self.executionRole { try encodeContainer.encode(executionRole, forKey: .executionRole) } + if let identityCenterConfiguration = self.identityCenterConfiguration { + try encodeContainer.encode(identityCenterConfiguration, forKey: .identityCenterConfiguration) + } if let publishCloudWatchMetricsEnabled = self.publishCloudWatchMetricsEnabled { try encodeContainer.encode(publishCloudWatchMetricsEnabled, forKey: .publishCloudWatchMetricsEnabled) } + if let queryResultsS3AccessGrantsConfiguration = self.queryResultsS3AccessGrantsConfiguration { + try encodeContainer.encode(queryResultsS3AccessGrantsConfiguration, forKey: .queryResultsS3AccessGrantsConfiguration) + } if let requesterPaysEnabled = self.requesterPaysEnabled { try encodeContainer.encode(requesterPaysEnabled, forKey: .requesterPaysEnabled) } @@ -12929,6 +13160,10 @@ extension AthenaClientTypes.WorkGroupConfiguration: Swift.Codable { customerContentEncryptionConfiguration = customerContentEncryptionConfigurationDecoded let enableMinimumEncryptionConfigurationDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .enableMinimumEncryptionConfiguration) enableMinimumEncryptionConfiguration = enableMinimumEncryptionConfigurationDecoded + let identityCenterConfigurationDecoded = try containerValues.decodeIfPresent(AthenaClientTypes.IdentityCenterConfiguration.self, forKey: .identityCenterConfiguration) + identityCenterConfiguration = identityCenterConfigurationDecoded + let queryResultsS3AccessGrantsConfigurationDecoded = try containerValues.decodeIfPresent(AthenaClientTypes.QueryResultsS3AccessGrantsConfiguration.self, forKey: .queryResultsS3AccessGrantsConfiguration) + queryResultsS3AccessGrantsConfiguration = queryResultsS3AccessGrantsConfigurationDecoded } } @@ -12947,10 +13182,14 @@ extension AthenaClientTypes { public var enforceWorkGroupConfiguration: Swift.Bool? /// The engine version that all queries running on the workgroup use. Queries on the AmazonAthenaPreviewFunctionality workgroup run on the preview engine regardless of this setting. public var engineVersion: AthenaClientTypes.EngineVersion? - /// Role used in a Spark session for accessing the user's resources. This property applies only to Spark-enabled workgroups. + /// The ARN of the execution role used to access user resources for Spark sessions and Identity Center enabled workgroups. This property applies only to Spark enabled workgroups and Identity Center enabled workgroups. public var executionRole: Swift.String? + /// Specifies whether the workgroup is IAM Identity Center supported. + public var identityCenterConfiguration: AthenaClientTypes.IdentityCenterConfiguration? /// Indicates that the Amazon CloudWatch metrics are enabled for the workgroup. public var publishCloudWatchMetricsEnabled: Swift.Bool? + /// Specifies whether Amazon S3 access grants are enabled for query results. + public var queryResultsS3AccessGrantsConfiguration: AthenaClientTypes.QueryResultsS3AccessGrantsConfiguration? /// If set to true, allows members assigned to a workgroup to reference Amazon S3 Requester Pays buckets in queries. If set to false, workgroup members cannot query data from Requester Pays buckets, and queries that retrieve data from Requester Pays buckets cause an error. The default is false. For more information about Requester Pays buckets, see [Requester Pays Buckets](https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) in the Amazon Simple Storage Service Developer Guide. public var requesterPaysEnabled: Swift.Bool? /// The configuration for the workgroup, which includes the location in Amazon S3 where query and calculation results are stored and the encryption option, if any, used for query and calculation results. To run the query, you must specify the query results location using one of the ways: either in the workgroup using this setting, or for individual queries (client-side), using [ResultConfiguration$OutputLocation]. If none of them is set, Athena issues an error that no output location is provided. For more information, see [Working with query results, recent queries, and output files](https://docs.aws.amazon.com/athena/latest/ug/querying.html). @@ -12964,7 +13203,9 @@ extension AthenaClientTypes { enforceWorkGroupConfiguration: Swift.Bool? = nil, engineVersion: AthenaClientTypes.EngineVersion? = nil, executionRole: Swift.String? = nil, + identityCenterConfiguration: AthenaClientTypes.IdentityCenterConfiguration? = nil, publishCloudWatchMetricsEnabled: Swift.Bool? = nil, + queryResultsS3AccessGrantsConfiguration: AthenaClientTypes.QueryResultsS3AccessGrantsConfiguration? = nil, requesterPaysEnabled: Swift.Bool? = nil, resultConfiguration: AthenaClientTypes.ResultConfiguration? = nil ) @@ -12976,7 +13217,9 @@ extension AthenaClientTypes { self.enforceWorkGroupConfiguration = enforceWorkGroupConfiguration self.engineVersion = engineVersion self.executionRole = executionRole + self.identityCenterConfiguration = identityCenterConfiguration self.publishCloudWatchMetricsEnabled = publishCloudWatchMetricsEnabled + self.queryResultsS3AccessGrantsConfiguration = queryResultsS3AccessGrantsConfiguration self.requesterPaysEnabled = requesterPaysEnabled self.resultConfiguration = resultConfiguration } @@ -12994,6 +13237,7 @@ extension AthenaClientTypes.WorkGroupConfigurationUpdates: Swift.Codable { case engineVersion = "EngineVersion" case executionRole = "ExecutionRole" case publishCloudWatchMetricsEnabled = "PublishCloudWatchMetricsEnabled" + case queryResultsS3AccessGrantsConfiguration = "QueryResultsS3AccessGrantsConfiguration" case removeBytesScannedCutoffPerQuery = "RemoveBytesScannedCutoffPerQuery" case removeCustomerContentEncryptionConfiguration = "RemoveCustomerContentEncryptionConfiguration" case requesterPaysEnabled = "RequesterPaysEnabled" @@ -13026,6 +13270,9 @@ extension AthenaClientTypes.WorkGroupConfigurationUpdates: Swift.Codable { if let publishCloudWatchMetricsEnabled = self.publishCloudWatchMetricsEnabled { try encodeContainer.encode(publishCloudWatchMetricsEnabled, forKey: .publishCloudWatchMetricsEnabled) } + if let queryResultsS3AccessGrantsConfiguration = self.queryResultsS3AccessGrantsConfiguration { + try encodeContainer.encode(queryResultsS3AccessGrantsConfiguration, forKey: .queryResultsS3AccessGrantsConfiguration) + } if let removeBytesScannedCutoffPerQuery = self.removeBytesScannedCutoffPerQuery { try encodeContainer.encode(removeBytesScannedCutoffPerQuery, forKey: .removeBytesScannedCutoffPerQuery) } @@ -13066,6 +13313,8 @@ extension AthenaClientTypes.WorkGroupConfigurationUpdates: Swift.Codable { customerContentEncryptionConfiguration = customerContentEncryptionConfigurationDecoded let enableMinimumEncryptionConfigurationDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .enableMinimumEncryptionConfiguration) enableMinimumEncryptionConfiguration = enableMinimumEncryptionConfigurationDecoded + let queryResultsS3AccessGrantsConfigurationDecoded = try containerValues.decodeIfPresent(AthenaClientTypes.QueryResultsS3AccessGrantsConfiguration.self, forKey: .queryResultsS3AccessGrantsConfiguration) + queryResultsS3AccessGrantsConfiguration = queryResultsS3AccessGrantsConfigurationDecoded } } @@ -13084,10 +13333,12 @@ extension AthenaClientTypes { public var enforceWorkGroupConfiguration: Swift.Bool? /// The engine version requested when a workgroup is updated. After the update, all queries on the workgroup run on the requested engine version. If no value was previously set, the default is Auto. Queries on the AmazonAthenaPreviewFunctionality workgroup run on the preview engine regardless of this setting. public var engineVersion: AthenaClientTypes.EngineVersion? - /// The ARN of the execution role used to access user resources. This property applies only to Spark-enabled workgroups. + /// The ARN of the execution role used to access user resources for Spark sessions and Identity Center enabled workgroups. This property applies only to Spark enabled workgroups and Identity Center enabled workgroups. public var executionRole: Swift.String? /// Indicates whether this workgroup enables publishing metrics to Amazon CloudWatch. public var publishCloudWatchMetricsEnabled: Swift.Bool? + /// Specifies whether Amazon S3 access grants are enabled for query results. + public var queryResultsS3AccessGrantsConfiguration: AthenaClientTypes.QueryResultsS3AccessGrantsConfiguration? /// Indicates that the data usage control limit per query is removed. [WorkGroupConfiguration$BytesScannedCutoffPerQuery] public var removeBytesScannedCutoffPerQuery: Swift.Bool? /// Removes content encryption configuration from an Apache Spark-enabled Athena workgroup. @@ -13106,6 +13357,7 @@ extension AthenaClientTypes { engineVersion: AthenaClientTypes.EngineVersion? = nil, executionRole: Swift.String? = nil, publishCloudWatchMetricsEnabled: Swift.Bool? = nil, + queryResultsS3AccessGrantsConfiguration: AthenaClientTypes.QueryResultsS3AccessGrantsConfiguration? = nil, removeBytesScannedCutoffPerQuery: Swift.Bool? = nil, removeCustomerContentEncryptionConfiguration: Swift.Bool? = nil, requesterPaysEnabled: Swift.Bool? = nil, @@ -13120,6 +13372,7 @@ extension AthenaClientTypes { self.engineVersion = engineVersion self.executionRole = executionRole self.publishCloudWatchMetricsEnabled = publishCloudWatchMetricsEnabled + self.queryResultsS3AccessGrantsConfiguration = queryResultsS3AccessGrantsConfiguration self.removeBytesScannedCutoffPerQuery = removeBytesScannedCutoffPerQuery self.removeCustomerContentEncryptionConfiguration = removeCustomerContentEncryptionConfiguration self.requesterPaysEnabled = requesterPaysEnabled @@ -13166,6 +13419,7 @@ extension AthenaClientTypes.WorkGroupSummary: Swift.Codable { case creationTime = "CreationTime" case description = "Description" case engineVersion = "EngineVersion" + case identityCenterApplicationArn = "IdentityCenterApplicationArn" case name = "Name" case state = "State" } @@ -13181,6 +13435,9 @@ extension AthenaClientTypes.WorkGroupSummary: Swift.Codable { if let engineVersion = self.engineVersion { try encodeContainer.encode(engineVersion, forKey: .engineVersion) } + if let identityCenterApplicationArn = self.identityCenterApplicationArn { + try encodeContainer.encode(identityCenterApplicationArn, forKey: .identityCenterApplicationArn) + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -13201,6 +13458,8 @@ extension AthenaClientTypes.WorkGroupSummary: Swift.Codable { creationTime = creationTimeDecoded let engineVersionDecoded = try containerValues.decodeIfPresent(AthenaClientTypes.EngineVersion.self, forKey: .engineVersion) engineVersion = engineVersionDecoded + let identityCenterApplicationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .identityCenterApplicationArn) + identityCenterApplicationArn = identityCenterApplicationArnDecoded } } @@ -13213,6 +13472,8 @@ extension AthenaClientTypes { public var description: Swift.String? /// The engine version setting for all queries on the workgroup. Queries on the AmazonAthenaPreviewFunctionality workgroup run on the preview engine regardless of this setting. public var engineVersion: AthenaClientTypes.EngineVersion? + /// The ARN of the IAM Identity Center enabled application associated with the workgroup. + public var identityCenterApplicationArn: Swift.String? /// The name of the workgroup. public var name: Swift.String? /// The state of the workgroup. @@ -13222,6 +13483,7 @@ extension AthenaClientTypes { creationTime: ClientRuntime.Date? = nil, description: Swift.String? = nil, engineVersion: AthenaClientTypes.EngineVersion? = nil, + identityCenterApplicationArn: Swift.String? = nil, name: Swift.String? = nil, state: AthenaClientTypes.WorkGroupState? = nil ) @@ -13229,6 +13491,7 @@ extension AthenaClientTypes { self.creationTime = creationTime self.description = description self.engineVersion = engineVersion + self.identityCenterApplicationArn = identityCenterApplicationArn self.name = name self.state = state } diff --git a/Sources/Services/AWSB2bi/B2biClient.swift b/Sources/Services/AWSB2bi/B2biClient.swift index 82086d6caa8..8b0a3ddf043 100644 --- a/Sources/Services/AWSB2bi/B2biClient.swift +++ b/Sources/Services/AWSB2bi/B2biClient.swift @@ -69,7 +69,7 @@ public struct B2biClientLogHandlerFactory: ClientRuntime.SDKLogHandlerFactory { extension B2biClient: B2biClientProtocol { /// Performs the `CreateCapability` operation on the `B2BI` service. /// - /// Instantiates a capability based on the specified parameters. Capabilities contain the information necessary to process incoming EDI (electronic data interchange) documents. + /// Instantiates a capability based on the specified parameters. A trading capability contains the information required to transform incoming EDI documents into JSON or XML outputs. /// /// - Parameter CreateCapabilityInput : [no documentation found] /// @@ -123,7 +123,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `CreatePartnership` operation on the `B2BI` service. /// - /// Creates a partnership between a customer and a trading partner, based on the supplied parameters. Partnerships link trading partners with your profile and a specific transformer, so that the EDI (electronic data interchange) documents that they upload to Amazon S3 can be processed according to their specifications. + /// Creates a partnership between a customer and a trading partner, based on the supplied parameters. A partnership represents the connection between you and your trading partner. It ties together a profile and one or more trading capabilities. /// /// - Parameter CreatePartnershipInput : [no documentation found] /// @@ -177,7 +177,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `CreateProfile` operation on the `B2BI` service. /// - /// Creates a customer profile. You can have up to five customer profiles, each representing a distinct private network. Profiles contain basic information about you and your business. + /// Creates a customer profile. You can have up to five customer profiles, each representing a distinct private network. A profile is the mechanism used to create the concept of a private network. /// /// - Parameter CreateProfileInput : [no documentation found] /// @@ -231,7 +231,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `CreateTransformer` operation on the `B2BI` service. /// - /// Creates a transformer. Transformers describe how to process the incoming EDI (electronic data interchange) documents, and extract the necessary information. + /// Creates a transformer. A transformer describes how to process the incoming EDI documents and extract the necessary information to the output file. /// /// - Parameter CreateTransformerInput : [no documentation found] /// @@ -285,7 +285,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `DeleteCapability` operation on the `B2BI` service. /// - /// Deletes the specified capability. Capabilities contain the information necessary to process incoming EDI (electronic data interchange) documents. + /// Deletes the specified capability. A trading capability contains the information required to transform incoming EDI documents into JSON or XML outputs. /// /// - Parameter DeleteCapabilityInput : [no documentation found] /// @@ -337,7 +337,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `DeletePartnership` operation on the `B2BI` service. /// - /// Deletes the specified partnership. Partnerships link trading partners with your profile and a specific transformer, so that the EDI (electronic data interchange) documents that they upload to Amazon S3 can be processed according to their specifications. + /// Deletes the specified partnership. A partnership represents the connection between you and your trading partner. It ties together a profile and one or more trading capabilities. /// /// - Parameter DeletePartnershipInput : [no documentation found] /// @@ -389,7 +389,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `DeleteProfile` operation on the `B2BI` service. /// - /// Deletes the specified profile. Profiles contain basic information about you and your business. + /// Deletes the specified profile. A profile is the mechanism used to create the concept of a private network. /// /// - Parameter DeleteProfileInput : [no documentation found] /// @@ -441,7 +441,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `DeleteTransformer` operation on the `B2BI` service. /// - /// Deletes the specified transformer. Transformers describe how to process the incoming EDI (electronic data interchange) documents, and extract the necessary information. + /// Deletes the specified transformer. A transformer describes how to process the incoming EDI documents and extract the necessary information to the output file. /// /// - Parameter DeleteTransformerInput : [no documentation found] /// @@ -493,7 +493,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `GetCapability` operation on the `B2BI` service. /// - /// Retrieves the details for the specified capability. Capabilities contain the information necessary to process incoming EDI (electronic data interchange) documents. + /// Retrieves the details for the specified capability. A trading capability contains the information required to transform incoming EDI documents into JSON or XML outputs. /// /// - Parameter GetCapabilityInput : [no documentation found] /// @@ -544,7 +544,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `GetPartnership` operation on the `B2BI` service. /// - /// Retrieves the details for a partnership, based on the partner and profile IDs specified. Partnerships link trading partners with your profile and a specific transformer, so that the EDI (electronic data interchange) documents that they upload to Amazon S3 can be processed according to their specifications. + /// Retrieves the details for a partnership, based on the partner and profile IDs specified. A partnership represents the connection between you and your trading partner. It ties together a profile and one or more trading capabilities. /// /// - Parameter GetPartnershipInput : [no documentation found] /// @@ -595,7 +595,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `GetProfile` operation on the `B2BI` service. /// - /// Retrieves the details for the profile specified by the profile ID. Profiles contain basic information about you and your business. + /// Retrieves the details for the profile specified by the profile ID. A profile is the mechanism used to create the concept of a private network. /// /// - Parameter GetProfileInput : [no documentation found] /// @@ -646,7 +646,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `GetTransformer` operation on the `B2BI` service. /// - /// Retrieves the details for the transformer specified by the transformer ID. Transformers describe how to process the incoming EDI (electronic data interchange) documents, and extract the necessary information. + /// Retrieves the details for the transformer specified by the transformer ID. A transformer describes how to process the incoming EDI documents and extract the necessary information to the output file. /// /// - Parameter GetTransformerInput : [no documentation found] /// @@ -749,7 +749,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `ListCapabilities` operation on the `B2BI` service. /// - /// Lists the capabilities associated with your Amazon Web Services account for your current or specified region. Capabilities contain the information necessary to process incoming EDI (electronic data interchange) documents. + /// Lists the capabilities associated with your Amazon Web Services account for your current or specified region. A trading capability contains the information required to transform incoming EDI documents into JSON or XML outputs. /// /// - Parameter ListCapabilitiesInput : [no documentation found] /// @@ -792,7 +792,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `ListPartnerships` operation on the `B2BI` service. /// - /// Lists the partnerships associated with your Amazon Web Services account for your current or specified region. Partnerships link trading partners with your profile and a specific transformer, so that the EDI (electronic data interchange) documents that they upload to Amazon S3 can be processed according to their specifications. + /// Lists the partnerships associated with your Amazon Web Services account for your current or specified region. A partnership represents the connection between you and your trading partner. It ties together a profile and one or more trading capabilities. /// /// - Parameter ListPartnershipsInput : [no documentation found] /// @@ -844,7 +844,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `ListProfiles` operation on the `B2BI` service. /// - /// Lists the profiles associated with your Amazon Web Services account for your current or specified region. Profiles contain basic information about you and your business. + /// Lists the profiles associated with your Amazon Web Services account for your current or specified region. A profile is the mechanism used to create the concept of a private network. /// /// - Parameter ListProfilesInput : [no documentation found] /// @@ -935,7 +935,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `ListTransformers` operation on the `B2BI` service. /// - /// Lists the available transformers. Transformers describe how to process the incoming EDI (electronic data interchange) documents, and extract the necessary information. + /// Lists the available transformers. A transformer describes how to process the incoming EDI documents and extract the necessary information to the output file. /// /// - Parameter ListTransformersInput : [no documentation found] /// @@ -978,7 +978,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `StartTransformerJob` operation on the `B2BI` service. /// - /// Runs a job, using a transformer, to parse input EDI (electronic data interchange) file into the output structures used by Amazon Web Services B2BI Data Interchange. + /// Runs a job, using a transformer, to parse input EDI (electronic data interchange) file into the output structures used by Amazon Web Services B2BI Data Interchange. If you only want to transform EDI (electronic data interchange) documents, you don't need to create profiles, partnerships or capabilities. Just create and configure a transformer, and then run the StartTransformerJob API to process your files. /// /// - Parameter StartTransformerJobInput : [no documentation found] /// @@ -1079,7 +1079,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `TestMapping` operation on the `B2BI` service. /// - /// Maps the input file according to the provided template file. + /// Maps the input file according to the provided template file. The API call downloads the file contents from the Amazon S3 location, and passes the contents in as a string, to the inputFileContent parameter. /// /// - Parameter TestMappingInput : [no documentation found] /// @@ -1230,7 +1230,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `UpdateCapability` operation on the `B2BI` service. /// - /// Updates some of the parameters for a capability, based on the specified parameters. Capabilities contain the information necessary to process incoming EDI (electronic data interchange) documents. + /// Updates some of the parameters for a capability, based on the specified parameters. A trading capability contains the information required to transform incoming EDI documents into JSON or XML outputs. /// /// - Parameter UpdateCapabilityInput : [no documentation found] /// @@ -1283,7 +1283,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `UpdatePartnership` operation on the `B2BI` service. /// - /// Updates some of the parameters for a partnership between a customer and trading partner. Partnerships link trading partners with your profile and a specific transformer, so that the EDI (electronic data interchange) documents that they upload to Amazon S3 can be processed according to their specifications. + /// Updates some of the parameters for a partnership between a customer and trading partner. A partnership represents the connection between you and your trading partner. It ties together a profile and one or more trading capabilities. /// /// - Parameter UpdatePartnershipInput : [no documentation found] /// @@ -1336,7 +1336,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `UpdateProfile` operation on the `B2BI` service. /// - /// Updates the specified parameters for a profile. Profiles contain basic information about you and your business. + /// Updates the specified parameters for a profile. A profile is the mechanism used to create the concept of a private network. /// /// - Parameter UpdateProfileInput : [no documentation found] /// @@ -1389,7 +1389,7 @@ extension B2biClient: B2biClientProtocol { /// Performs the `UpdateTransformer` operation on the `B2BI` service. /// - /// Updates the specified parameters for a transformer. Transformers describe how to process the incoming EDI (electronic data interchange) documents, and extract the necessary information. + /// Updates the specified parameters for a transformer. A transformer describes how to process the incoming EDI documents and extract the necessary information to the output file. /// /// - Parameter UpdateTransformerInput : [no documentation found] /// diff --git a/Sources/Services/AWSB2bi/B2biClientProtocol.swift b/Sources/Services/AWSB2bi/B2biClientProtocol.swift index 535db915147..315134960c5 100644 --- a/Sources/Services/AWSB2bi/B2biClientProtocol.swift +++ b/Sources/Services/AWSB2bi/B2biClientProtocol.swift @@ -6,7 +6,7 @@ import ClientRuntime public protocol B2biClientProtocol { /// Performs the `CreateCapability` operation on the `B2BI` service. /// - /// Instantiates a capability based on the specified parameters. Capabilities contain the information necessary to process incoming EDI (electronic data interchange) documents. + /// Instantiates a capability based on the specified parameters. A trading capability contains the information required to transform incoming EDI documents into JSON or XML outputs. /// /// - Parameter CreateCapabilityInput : [no documentation found] /// @@ -25,7 +25,7 @@ public protocol B2biClientProtocol { func createCapability(input: CreateCapabilityInput) async throws -> CreateCapabilityOutput /// Performs the `CreatePartnership` operation on the `B2BI` service. /// - /// Creates a partnership between a customer and a trading partner, based on the supplied parameters. Partnerships link trading partners with your profile and a specific transformer, so that the EDI (electronic data interchange) documents that they upload to Amazon S3 can be processed according to their specifications. + /// Creates a partnership between a customer and a trading partner, based on the supplied parameters. A partnership represents the connection between you and your trading partner. It ties together a profile and one or more trading capabilities. /// /// - Parameter CreatePartnershipInput : [no documentation found] /// @@ -44,7 +44,7 @@ public protocol B2biClientProtocol { func createPartnership(input: CreatePartnershipInput) async throws -> CreatePartnershipOutput /// Performs the `CreateProfile` operation on the `B2BI` service. /// - /// Creates a customer profile. You can have up to five customer profiles, each representing a distinct private network. Profiles contain basic information about you and your business. + /// Creates a customer profile. You can have up to five customer profiles, each representing a distinct private network. A profile is the mechanism used to create the concept of a private network. /// /// - Parameter CreateProfileInput : [no documentation found] /// @@ -63,7 +63,7 @@ public protocol B2biClientProtocol { func createProfile(input: CreateProfileInput) async throws -> CreateProfileOutput /// Performs the `CreateTransformer` operation on the `B2BI` service. /// - /// Creates a transformer. Transformers describe how to process the incoming EDI (electronic data interchange) documents, and extract the necessary information. + /// Creates a transformer. A transformer describes how to process the incoming EDI documents and extract the necessary information to the output file. /// /// - Parameter CreateTransformerInput : [no documentation found] /// @@ -82,7 +82,7 @@ public protocol B2biClientProtocol { func createTransformer(input: CreateTransformerInput) async throws -> CreateTransformerOutput /// Performs the `DeleteCapability` operation on the `B2BI` service. /// - /// Deletes the specified capability. Capabilities contain the information necessary to process incoming EDI (electronic data interchange) documents. + /// Deletes the specified capability. A trading capability contains the information required to transform incoming EDI documents into JSON or XML outputs. /// /// - Parameter DeleteCapabilityInput : [no documentation found] /// @@ -100,7 +100,7 @@ public protocol B2biClientProtocol { func deleteCapability(input: DeleteCapabilityInput) async throws -> DeleteCapabilityOutput /// Performs the `DeletePartnership` operation on the `B2BI` service. /// - /// Deletes the specified partnership. Partnerships link trading partners with your profile and a specific transformer, so that the EDI (electronic data interchange) documents that they upload to Amazon S3 can be processed according to their specifications. + /// Deletes the specified partnership. A partnership represents the connection between you and your trading partner. It ties together a profile and one or more trading capabilities. /// /// - Parameter DeletePartnershipInput : [no documentation found] /// @@ -118,7 +118,7 @@ public protocol B2biClientProtocol { func deletePartnership(input: DeletePartnershipInput) async throws -> DeletePartnershipOutput /// Performs the `DeleteProfile` operation on the `B2BI` service. /// - /// Deletes the specified profile. Profiles contain basic information about you and your business. + /// Deletes the specified profile. A profile is the mechanism used to create the concept of a private network. /// /// - Parameter DeleteProfileInput : [no documentation found] /// @@ -136,7 +136,7 @@ public protocol B2biClientProtocol { func deleteProfile(input: DeleteProfileInput) async throws -> DeleteProfileOutput /// Performs the `DeleteTransformer` operation on the `B2BI` service. /// - /// Deletes the specified transformer. Transformers describe how to process the incoming EDI (electronic data interchange) documents, and extract the necessary information. + /// Deletes the specified transformer. A transformer describes how to process the incoming EDI documents and extract the necessary information to the output file. /// /// - Parameter DeleteTransformerInput : [no documentation found] /// @@ -154,7 +154,7 @@ public protocol B2biClientProtocol { func deleteTransformer(input: DeleteTransformerInput) async throws -> DeleteTransformerOutput /// Performs the `GetCapability` operation on the `B2BI` service. /// - /// Retrieves the details for the specified capability. Capabilities contain the information necessary to process incoming EDI (electronic data interchange) documents. + /// Retrieves the details for the specified capability. A trading capability contains the information required to transform incoming EDI documents into JSON or XML outputs. /// /// - Parameter GetCapabilityInput : [no documentation found] /// @@ -171,7 +171,7 @@ public protocol B2biClientProtocol { func getCapability(input: GetCapabilityInput) async throws -> GetCapabilityOutput /// Performs the `GetPartnership` operation on the `B2BI` service. /// - /// Retrieves the details for a partnership, based on the partner and profile IDs specified. Partnerships link trading partners with your profile and a specific transformer, so that the EDI (electronic data interchange) documents that they upload to Amazon S3 can be processed according to their specifications. + /// Retrieves the details for a partnership, based on the partner and profile IDs specified. A partnership represents the connection between you and your trading partner. It ties together a profile and one or more trading capabilities. /// /// - Parameter GetPartnershipInput : [no documentation found] /// @@ -188,7 +188,7 @@ public protocol B2biClientProtocol { func getPartnership(input: GetPartnershipInput) async throws -> GetPartnershipOutput /// Performs the `GetProfile` operation on the `B2BI` service. /// - /// Retrieves the details for the profile specified by the profile ID. Profiles contain basic information about you and your business. + /// Retrieves the details for the profile specified by the profile ID. A profile is the mechanism used to create the concept of a private network. /// /// - Parameter GetProfileInput : [no documentation found] /// @@ -205,7 +205,7 @@ public protocol B2biClientProtocol { func getProfile(input: GetProfileInput) async throws -> GetProfileOutput /// Performs the `GetTransformer` operation on the `B2BI` service. /// - /// Retrieves the details for the transformer specified by the transformer ID. Transformers describe how to process the incoming EDI (electronic data interchange) documents, and extract the necessary information. + /// Retrieves the details for the transformer specified by the transformer ID. A transformer describes how to process the incoming EDI documents and extract the necessary information to the output file. /// /// - Parameter GetTransformerInput : [no documentation found] /// @@ -239,7 +239,7 @@ public protocol B2biClientProtocol { func getTransformerJob(input: GetTransformerJobInput) async throws -> GetTransformerJobOutput /// Performs the `ListCapabilities` operation on the `B2BI` service. /// - /// Lists the capabilities associated with your Amazon Web Services account for your current or specified region. Capabilities contain the information necessary to process incoming EDI (electronic data interchange) documents. + /// Lists the capabilities associated with your Amazon Web Services account for your current or specified region. A trading capability contains the information required to transform incoming EDI documents into JSON or XML outputs. /// /// - Parameter ListCapabilitiesInput : [no documentation found] /// @@ -247,7 +247,7 @@ public protocol B2biClientProtocol { func listCapabilities(input: ListCapabilitiesInput) async throws -> ListCapabilitiesOutput /// Performs the `ListPartnerships` operation on the `B2BI` service. /// - /// Lists the partnerships associated with your Amazon Web Services account for your current or specified region. Partnerships link trading partners with your profile and a specific transformer, so that the EDI (electronic data interchange) documents that they upload to Amazon S3 can be processed according to their specifications. + /// Lists the partnerships associated with your Amazon Web Services account for your current or specified region. A partnership represents the connection between you and your trading partner. It ties together a profile and one or more trading capabilities. /// /// - Parameter ListPartnershipsInput : [no documentation found] /// @@ -264,7 +264,7 @@ public protocol B2biClientProtocol { func listPartnerships(input: ListPartnershipsInput) async throws -> ListPartnershipsOutput /// Performs the `ListProfiles` operation on the `B2BI` service. /// - /// Lists the profiles associated with your Amazon Web Services account for your current or specified region. Profiles contain basic information about you and your business. + /// Lists the profiles associated with your Amazon Web Services account for your current or specified region. A profile is the mechanism used to create the concept of a private network. /// /// - Parameter ListProfilesInput : [no documentation found] /// @@ -286,7 +286,7 @@ public protocol B2biClientProtocol { func listTagsForResource(input: ListTagsForResourceInput) async throws -> ListTagsForResourceOutput /// Performs the `ListTransformers` operation on the `B2BI` service. /// - /// Lists the available transformers. Transformers describe how to process the incoming EDI (electronic data interchange) documents, and extract the necessary information. + /// Lists the available transformers. A transformer describes how to process the incoming EDI documents and extract the necessary information to the output file. /// /// - Parameter ListTransformersInput : [no documentation found] /// @@ -294,7 +294,7 @@ public protocol B2biClientProtocol { func listTransformers(input: ListTransformersInput) async throws -> ListTransformersOutput /// Performs the `StartTransformerJob` operation on the `B2BI` service. /// - /// Runs a job, using a transformer, to parse input EDI (electronic data interchange) file into the output structures used by Amazon Web Services B2BI Data Interchange. + /// Runs a job, using a transformer, to parse input EDI (electronic data interchange) file into the output structures used by Amazon Web Services B2BI Data Interchange. If you only want to transform EDI (electronic data interchange) documents, you don't need to create profiles, partnerships or capabilities. Just create and configure a transformer, and then run the StartTransformerJob API to process your files. /// /// - Parameter StartTransformerJobInput : [no documentation found] /// @@ -326,7 +326,7 @@ public protocol B2biClientProtocol { func tagResource(input: TagResourceInput) async throws -> TagResourceOutput /// Performs the `TestMapping` operation on the `B2BI` service. /// - /// Maps the input file according to the provided template file. + /// Maps the input file according to the provided template file. The API call downloads the file contents from the Amazon S3 location, and passes the contents in as a string, to the inputFileContent parameter. /// /// - Parameter TestMappingInput : [no documentation found] /// @@ -374,7 +374,7 @@ public protocol B2biClientProtocol { func untagResource(input: UntagResourceInput) async throws -> UntagResourceOutput /// Performs the `UpdateCapability` operation on the `B2BI` service. /// - /// Updates some of the parameters for a capability, based on the specified parameters. Capabilities contain the information necessary to process incoming EDI (electronic data interchange) documents. + /// Updates some of the parameters for a capability, based on the specified parameters. A trading capability contains the information required to transform incoming EDI documents into JSON or XML outputs. /// /// - Parameter UpdateCapabilityInput : [no documentation found] /// @@ -393,7 +393,7 @@ public protocol B2biClientProtocol { func updateCapability(input: UpdateCapabilityInput) async throws -> UpdateCapabilityOutput /// Performs the `UpdatePartnership` operation on the `B2BI` service. /// - /// Updates some of the parameters for a partnership between a customer and trading partner. Partnerships link trading partners with your profile and a specific transformer, so that the EDI (electronic data interchange) documents that they upload to Amazon S3 can be processed according to their specifications. + /// Updates some of the parameters for a partnership between a customer and trading partner. A partnership represents the connection between you and your trading partner. It ties together a profile and one or more trading capabilities. /// /// - Parameter UpdatePartnershipInput : [no documentation found] /// @@ -412,7 +412,7 @@ public protocol B2biClientProtocol { func updatePartnership(input: UpdatePartnershipInput) async throws -> UpdatePartnershipOutput /// Performs the `UpdateProfile` operation on the `B2BI` service. /// - /// Updates the specified parameters for a profile. Profiles contain basic information about you and your business. + /// Updates the specified parameters for a profile. A profile is the mechanism used to create the concept of a private network. /// /// - Parameter UpdateProfileInput : [no documentation found] /// @@ -431,7 +431,7 @@ public protocol B2biClientProtocol { func updateProfile(input: UpdateProfileInput) async throws -> UpdateProfileOutput /// Performs the `UpdateTransformer` operation on the `B2BI` service. /// - /// Updates the specified parameters for a transformer. Transformers describe how to process the incoming EDI (electronic data interchange) documents, and extract the necessary information. + /// Updates the specified parameters for a transformer. A transformer describes how to process the incoming EDI documents and extract the necessary information to the output file. /// /// - Parameter UpdateTransformerInput : [no documentation found] /// diff --git a/Sources/Services/AWSB2bi/models/Models.swift b/Sources/Services/AWSB2bi/models/Models.swift index 0dc3e1eefd3..271236dd959 100644 --- a/Sources/Services/AWSB2bi/models/Models.swift +++ b/Sources/Services/AWSB2bi/models/Models.swift @@ -86,7 +86,7 @@ extension B2biClientTypes.CapabilityConfiguration: Swift.Codable { } extension B2biClientTypes { - /// A capability object. Currently, only EDI (electronic data interchange) capabilities are supported. Capabilities contain the information necessary to process incoming EDI (electronic data interchange) documents. + /// A capability object. Currently, only EDI (electronic data interchange) capabilities are supported. A trading capability contains the information required to transform incoming EDI documents into JSON or XML outputs. public enum CapabilityConfiguration: Swift.Equatable { /// An EDI (electronic data interchange) configuration object. case edi(B2biClientTypes.EdiConfiguration) @@ -139,7 +139,7 @@ extension B2biClientTypes.CapabilitySummary: Swift.Codable { } extension B2biClientTypes { - /// Returns the capability summary details. Capabilities contain the information necessary to process incoming EDI (electronic data interchange) documents. + /// Returns the capability summary details. A trading capability contains the information required to transform incoming EDI documents into JSON or XML outputs. public struct CapabilitySummary: Swift.Equatable { /// Returns a system-assigned unique identifier for the capability. /// This member is required. @@ -3419,7 +3419,7 @@ extension B2biClientTypes.PartnershipSummary: Swift.Codable { } extension B2biClientTypes { - /// A structure that contains the details for a partnership. Partnerships link trading partners with your profile and a specific transformer, so that the EDI (electronic data interchange) documents that they upload to Amazon S3 can be processed according to their specifications. + /// A structure that contains the details for a partnership. A partnership represents the connection between you and your trading partner. It ties together a profile and one or more trading capabilities. public struct PartnershipSummary: Swift.Equatable { /// Returns one or more capabilities associated with this partnership. public var capabilities: [Swift.String]? @@ -3517,7 +3517,7 @@ extension B2biClientTypes.ProfileSummary: Swift.Codable { } extension B2biClientTypes { - /// Contains the details for a profile. Profiles contain basic information about you and your business. + /// Contains the details for a profile. A profile is the mechanism used to create the concept of a private network. public struct ProfileSummary: Swift.Equatable { /// Returns the name for the business associated with this profile. /// This member is required. @@ -4069,7 +4069,7 @@ public struct TestMappingInput: Swift.Equatable { /// Specifies that the currently supported file formats for EDI transformations are JSON and XML. /// This member is required. public var fileFormat: B2biClientTypes.FileFormat? - /// Specify the EDI (electronic data interchange) file that is used as input for the transform. + /// Specify the contents of the EDI (electronic data interchange) XML or JSON file that is used as input for the transform. /// This member is required. public var inputFileContent: Swift.String? /// Specifies the name of the mapping template for the transformer. This template is used to convert the input document into the correct set of objects. @@ -4498,7 +4498,7 @@ extension B2biClientTypes.TransformerSummary: Swift.Codable { } extension B2biClientTypes { - /// Contains the details for a transformer object. Transformers describe how to process the incoming EDI (electronic data interchange) documents, and extract the necessary information. + /// Contains the details for a transformer object. A transformer describes how to process the incoming EDI documents and extract the necessary information to the output file. public struct TransformerSummary: Swift.Equatable { /// Returns a timestamp indicating when the transformer was created. For example, 2023-07-20T19:58:44.624Z. /// This member is required. @@ -5696,7 +5696,7 @@ extension B2biClientTypes.X12Details: Swift.Codable { } extension B2biClientTypes { - /// A structure that contains the X12 transaction set and version. The X12 structure is used when the system transforms an EDI (electronic data interchange) file. + /// A structure that contains the X12 transaction set and version. The X12 structure is used when the system transforms an EDI (electronic data interchange) file. If an EDI input file contains more than one transaction, each transaction must have the same transaction set and version, for example 214/4010. If not, the transformer cannot parse the file. public struct X12Details: Swift.Equatable { /// Returns an enumerated type where each value identifies an X12 transaction set. Transaction sets are maintained by the X12 Accredited Standards Committee. public var transactionSet: B2biClientTypes.X12TransactionSet? diff --git a/Sources/Services/AWSBackup/BackupClient.swift b/Sources/Services/AWSBackup/BackupClient.swift index ce53eeb5b0e..bcec364aea8 100644 --- a/Sources/Services/AWSBackup/BackupClient.swift +++ b/Sources/Services/AWSBackup/BackupClient.swift @@ -4181,7 +4181,7 @@ extension BackupClient: BackupClientProtocol { /// Performs the `UpdateRegionSettings` operation on the `CryoControllerUserManager` service. /// - /// Updates the current service opt-in settings for the Region. If service-opt-in is enabled for a service, Backup tries to protect that service's resources in this Region, when the resource is included in an on-demand backup or scheduled backup plan. Otherwise, Backup does not try to protect that service's resources in this Region. Use the DescribeRegionSettings API to determine the resource types that are supported. + /// Updates the current service opt-in settings for the Region. Use the DescribeRegionSettings API to determine the resource types that are supported. /// /// - Parameter UpdateRegionSettingsInput : [no documentation found] /// diff --git a/Sources/Services/AWSBackup/BackupClientProtocol.swift b/Sources/Services/AWSBackup/BackupClientProtocol.swift index e4c221804e0..e1591cff58d 100644 --- a/Sources/Services/AWSBackup/BackupClientProtocol.swift +++ b/Sources/Services/AWSBackup/BackupClientProtocol.swift @@ -1402,7 +1402,7 @@ public protocol BackupClientProtocol { func updateRecoveryPointLifecycle(input: UpdateRecoveryPointLifecycleInput) async throws -> UpdateRecoveryPointLifecycleOutput /// Performs the `UpdateRegionSettings` operation on the `CryoControllerUserManager` service. /// - /// Updates the current service opt-in settings for the Region. If service-opt-in is enabled for a service, Backup tries to protect that service's resources in this Region, when the resource is included in an on-demand backup or scheduled backup plan. Otherwise, Backup does not try to protect that service's resources in this Region. Use the DescribeRegionSettings API to determine the resource types that are supported. + /// Updates the current service opt-in settings for the Region. Use the DescribeRegionSettings API to determine the resource types that are supported. /// /// - Parameter UpdateRegionSettingsInput : [no documentation found] /// diff --git a/Sources/Services/AWSBackup/Paginators.swift b/Sources/Services/AWSBackup/Paginators.swift index 6db2cd7d053..c46b645aec4 100644 --- a/Sources/Services/AWSBackup/Paginators.swift +++ b/Sources/Services/AWSBackup/Paginators.swift @@ -572,6 +572,7 @@ extension ListRestoreJobsInput: ClientRuntime.PaginateToken { byCompleteBefore: self.byCompleteBefore, byCreatedAfter: self.byCreatedAfter, byCreatedBefore: self.byCreatedBefore, + byResourceType: self.byResourceType, byRestoreTestingPlanArn: self.byRestoreTestingPlanArn, byStatus: self.byStatus, maxResults: self.maxResults, diff --git a/Sources/Services/AWSBackup/models/Models.swift b/Sources/Services/AWSBackup/models/Models.swift index 6a225bc9a38..1457d0fb13c 100644 --- a/Sources/Services/AWSBackup/models/Models.swift +++ b/Sources/Services/AWSBackup/models/Models.swift @@ -6511,6 +6511,7 @@ extension DescribeRecoveryPointOutput: ClientRuntime.HttpResponseBinding { self.status = output.status self.statusMessage = output.statusMessage self.storageClass = output.storageClass + self.vaultType = output.vaultType } else { self.backupSizeInBytes = nil self.backupVaultArn = nil @@ -6535,6 +6536,7 @@ extension DescribeRecoveryPointOutput: ClientRuntime.HttpResponseBinding { self.status = nil self.statusMessage = nil self.storageClass = nil + self.vaultType = nil } } } @@ -6586,6 +6588,8 @@ public struct DescribeRecoveryPointOutput: Swift.Equatable { public var statusMessage: Swift.String? /// Specifies the storage class of the recovery point. Valid values are WARM or COLD. public var storageClass: BackupClientTypes.StorageClass? + /// This is the type of vault in which the described recovery point is stored. + public var vaultType: BackupClientTypes.VaultType? public init( backupSizeInBytes: Swift.Int? = nil, @@ -6610,7 +6614,8 @@ public struct DescribeRecoveryPointOutput: Swift.Equatable { sourceBackupVaultArn: Swift.String? = nil, status: BackupClientTypes.RecoveryPointStatus? = nil, statusMessage: Swift.String? = nil, - storageClass: BackupClientTypes.StorageClass? = nil + storageClass: BackupClientTypes.StorageClass? = nil, + vaultType: BackupClientTypes.VaultType? = nil ) { self.backupSizeInBytes = backupSizeInBytes @@ -6636,6 +6641,7 @@ public struct DescribeRecoveryPointOutput: Swift.Equatable { self.status = status self.statusMessage = statusMessage self.storageClass = storageClass + self.vaultType = vaultType } } @@ -6663,6 +6669,7 @@ struct DescribeRecoveryPointOutputBody: Swift.Equatable { let compositeMemberIdentifier: Swift.String? let isParent: Swift.Bool let resourceName: Swift.String? + let vaultType: BackupClientTypes.VaultType? } extension DescribeRecoveryPointOutputBody: Swift.Decodable { @@ -6690,6 +6697,7 @@ extension DescribeRecoveryPointOutputBody: Swift.Decodable { case status = "Status" case statusMessage = "StatusMessage" case storageClass = "StorageClass" + case vaultType = "VaultType" } public init(from decoder: Swift.Decoder) throws { @@ -6740,6 +6748,8 @@ extension DescribeRecoveryPointOutputBody: Swift.Decodable { isParent = isParentDecoded let resourceNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceName) resourceName = resourceNameDecoded + let vaultTypeDecoded = try containerValues.decodeIfPresent(BackupClientTypes.VaultType.self, forKey: .vaultType) + vaultType = vaultTypeDecoded } } @@ -10081,6 +10091,8 @@ public struct ListBackupJobsInput: Swift.Equatable { /// /// * Aurora for Amazon Aurora /// + /// * CloudFormation for CloudFormation + /// /// * DocumentDB for Amazon DocumentDB (with MongoDB compatibility) /// /// * DynamoDB for Amazon DynamoDB @@ -10095,12 +10107,18 @@ public struct ListBackupJobsInput: Swift.Equatable { /// /// * Neptune for Amazon Neptune /// + /// * Redshift for Amazon Redshift + /// /// * RDS for Amazon Relational Database Service /// + /// * SAP HANA on Amazon EC2 for SAP HANA databases + /// /// * Storage Gateway for Storage Gateway /// /// * S3 for Amazon S3 /// + /// * Timestream for Amazon Timestream + /// /// * VirtualMachine for virtual machines public var byResourceType: Swift.String? /// Returns only backup jobs that are in the specified state. @@ -11138,6 +11156,8 @@ public struct ListCopyJobsInput: Swift.Equatable { /// /// * Aurora for Amazon Aurora /// + /// * CloudFormation for CloudFormation + /// /// * DocumentDB for Amazon DocumentDB (with MongoDB compatibility) /// /// * DynamoDB for Amazon DynamoDB @@ -11152,12 +11172,18 @@ public struct ListCopyJobsInput: Swift.Equatable { /// /// * Neptune for Amazon Neptune /// + /// * Redshift for Amazon Redshift + /// /// * RDS for Amazon Relational Database Service /// + /// * SAP HANA on Amazon EC2 for SAP HANA databases + /// /// * Storage Gateway for Storage Gateway /// /// * S3 for Amazon S3 /// + /// * Timestream for Amazon Timestream + /// /// * VirtualMachine for virtual machines public var byResourceType: Swift.String? /// Returns only copy jobs that are in the specified state. @@ -11842,7 +11868,39 @@ public struct ListRecoveryPointsByBackupVaultInput: Swift.Equatable { public var byParentRecoveryPointArn: Swift.String? /// Returns only recovery points that match the specified resource Amazon Resource Name (ARN). public var byResourceArn: Swift.String? - /// Returns only recovery points that match the specified resource type. + /// Returns only recovery points that match the specified resource type(s): + /// + /// * Aurora for Amazon Aurora + /// + /// * CloudFormation for CloudFormation + /// + /// * DocumentDB for Amazon DocumentDB (with MongoDB compatibility) + /// + /// * DynamoDB for Amazon DynamoDB + /// + /// * EBS for Amazon Elastic Block Store + /// + /// * EC2 for Amazon Elastic Compute Cloud + /// + /// * EFS for Amazon Elastic File System + /// + /// * FSx for Amazon FSx + /// + /// * Neptune for Amazon Neptune + /// + /// * Redshift for Amazon Redshift + /// + /// * RDS for Amazon Relational Database Service + /// + /// * SAP HANA on Amazon EC2 for SAP HANA databases + /// + /// * Storage Gateway for Storage Gateway + /// + /// * S3 for Amazon S3 + /// + /// * Timestream for Amazon Timestream + /// + /// * VirtualMachine for virtual machines public var byResourceType: Swift.String? /// The maximum number of items to be returned. public var maxResults: Swift.Int? @@ -12815,6 +12873,10 @@ extension ListRestoreJobsInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { var items = [ClientRuntime.URLQueryItem]() + if let byResourceType = byResourceType { + let byResourceTypeQueryItem = ClientRuntime.URLQueryItem(name: "resourceType".urlPercentEncoding(), value: Swift.String(byResourceType).urlPercentEncoding()) + items.append(byResourceTypeQueryItem) + } if let byCreatedBefore = byCreatedBefore { let byCreatedBeforeQueryItem = ClientRuntime.URLQueryItem(name: "createdBefore".urlPercentEncoding(), value: Swift.String(TimestampFormatter(format: .dateTime).string(from: byCreatedBefore)).urlPercentEncoding()) items.append(byCreatedBeforeQueryItem) @@ -12873,6 +12935,40 @@ public struct ListRestoreJobsInput: Swift.Equatable { public var byCreatedAfter: ClientRuntime.Date? /// Returns only restore jobs that were created before the specified date. public var byCreatedBefore: ClientRuntime.Date? + /// Include this parameter to return only restore jobs for the specified resources: + /// + /// * Aurora for Amazon Aurora + /// + /// * CloudFormation for CloudFormation + /// + /// * DocumentDB for Amazon DocumentDB (with MongoDB compatibility) + /// + /// * DynamoDB for Amazon DynamoDB + /// + /// * EBS for Amazon Elastic Block Store + /// + /// * EC2 for Amazon Elastic Compute Cloud + /// + /// * EFS for Amazon Elastic File System + /// + /// * FSx for Amazon FSx + /// + /// * Neptune for Amazon Neptune + /// + /// * Redshift for Amazon Redshift + /// + /// * RDS for Amazon Relational Database Service + /// + /// * SAP HANA on Amazon EC2 for SAP HANA databases + /// + /// * Storage Gateway for Storage Gateway + /// + /// * S3 for Amazon S3 + /// + /// * Timestream for Amazon Timestream + /// + /// * VirtualMachine for virtual machines + public var byResourceType: Swift.String? /// This returns only restore testing jobs that match the specified resource Amazon Resource Name (ARN). public var byRestoreTestingPlanArn: Swift.String? /// Returns only restore jobs associated with the specified job status. @@ -12888,6 +12984,7 @@ public struct ListRestoreJobsInput: Swift.Equatable { byCompleteBefore: ClientRuntime.Date? = nil, byCreatedAfter: ClientRuntime.Date? = nil, byCreatedBefore: ClientRuntime.Date? = nil, + byResourceType: Swift.String? = nil, byRestoreTestingPlanArn: Swift.String? = nil, byStatus: BackupClientTypes.RestoreJobStatus? = nil, maxResults: Swift.Int? = nil, @@ -12899,6 +12996,7 @@ public struct ListRestoreJobsInput: Swift.Equatable { self.byCompleteBefore = byCompleteBefore self.byCreatedAfter = byCreatedAfter self.byCreatedBefore = byCreatedBefore + self.byResourceType = byResourceType self.byRestoreTestingPlanArn = byRestoreTestingPlanArn self.byStatus = byStatus self.maxResults = maxResults @@ -14025,6 +14123,7 @@ extension BackupClientTypes.RecoveryPointByBackupVault: Swift.Codable { case sourceBackupVaultArn = "SourceBackupVaultArn" case status = "Status" case statusMessage = "StatusMessage" + case vaultType = "VaultType" } public func encode(to encoder: Swift.Encoder) throws { @@ -14095,6 +14194,9 @@ extension BackupClientTypes.RecoveryPointByBackupVault: Swift.Codable { if let statusMessage = self.statusMessage { try encodeContainer.encode(statusMessage, forKey: .statusMessage) } + if let vaultType = self.vaultType { + try encodeContainer.encode(vaultType.rawValue, forKey: .vaultType) + } } public init(from decoder: Swift.Decoder) throws { @@ -14143,6 +14245,8 @@ extension BackupClientTypes.RecoveryPointByBackupVault: Swift.Codable { isParent = isParentDecoded let resourceNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceName) resourceName = resourceNameDecoded + let vaultTypeDecoded = try containerValues.decodeIfPresent(BackupClientTypes.VaultType.self, forKey: .vaultType) + vaultType = vaultTypeDecoded } } @@ -14193,6 +14297,8 @@ extension BackupClientTypes { public var status: BackupClientTypes.RecoveryPointStatus? /// A message explaining the reason of the recovery point deletion failure. public var statusMessage: Swift.String? + /// This is the type of vault in which the described recovery point is stored. + public var vaultType: BackupClientTypes.VaultType? public init( backupSizeInBytes: Swift.Int? = nil, @@ -14216,7 +14322,8 @@ extension BackupClientTypes { resourceType: Swift.String? = nil, sourceBackupVaultArn: Swift.String? = nil, status: BackupClientTypes.RecoveryPointStatus? = nil, - statusMessage: Swift.String? = nil + statusMessage: Swift.String? = nil, + vaultType: BackupClientTypes.VaultType? = nil ) { self.backupSizeInBytes = backupSizeInBytes @@ -14241,6 +14348,7 @@ extension BackupClientTypes { self.sourceBackupVaultArn = sourceBackupVaultArn self.status = status self.statusMessage = statusMessage + self.vaultType = vaultType } } @@ -18496,7 +18604,7 @@ extension UpdateRegionSettingsInput: ClientRuntime.URLPathProvider { public struct UpdateRegionSettingsInput: Swift.Equatable { /// Enables or disables full Backup management of backups for a resource type. To enable full Backup management for DynamoDB along with [ Backup's advanced DynamoDB backup features](https://docs.aws.amazon.com/aws-backup/latest/devguide/advanced-ddb-backup.html), follow the procedure to [ enable advanced DynamoDB backup programmatically](https://docs.aws.amazon.com/aws-backup/latest/devguide/advanced-ddb-backup.html#advanced-ddb-backup-enable-cli). public var resourceTypeManagementPreference: [Swift.String:Swift.Bool]? - /// Updates the list of services along with the opt-in preferences for the Region. + /// Updates the list of services along with the opt-in preferences for the Region. If resource assignments are only based on tags, then service opt-in settings are applied. If a resource type is explicitly assigned to a backup plan, such as Amazon S3, Amazon EC2, or Amazon RDS, it will be included in the backup even if the opt-in is not enabled for that particular service. If both a resource type and tags are specified in a resource assignment, the resource type specified in the backup plan takes priority over the tag condition. Service opt-in settings are disregarded in this situation. public var resourceTypeOptInPreference: [Swift.String:Swift.Bool]? public init( diff --git a/Sources/Services/AWSBillingconductor/BillingconductorClient.swift b/Sources/Services/AWSBillingconductor/BillingconductorClient.swift index 1758f9ed6e9..9ab8ebeba9e 100644 --- a/Sources/Services/AWSBillingconductor/BillingconductorClient.swift +++ b/Sources/Services/AWSBillingconductor/BillingconductorClient.swift @@ -788,6 +788,56 @@ extension BillingconductorClient: BillingconductorClientProtocol { return result } + /// Performs the `GetBillingGroupCostReport` operation on the `AWSBillingConductor` service. + /// + /// Retrieves the margin summary report, which includes the Amazon Web Services cost and charged amount (pro forma cost) by Amazon Web Service for a specific billing group. + /// + /// - Parameter GetBillingGroupCostReportInput : [no documentation found] + /// + /// - Returns: `GetBillingGroupCostReportOutput` : [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` : An unexpected error occurred while processing a request. + /// - `ResourceNotFoundException` : The request references a resource that doesn't exist. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input doesn't match with the constraints specified by Amazon Web Services. + public func getBillingGroupCostReport(input: GetBillingGroupCostReportInput) async throws -> GetBillingGroupCostReportOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "getBillingGroupCostReport") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "billingconductor") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "getBillingGroupCostReport") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(GetBillingGroupCostReportOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `ListAccountAssociations` operation on the `AWSBillingConductor` service. /// /// This is a paginated call to list linked accounts that are linked to the payer account for the specified time period. If no information is provided, the current billing period is used. The response will optionally include the billing group that's associated with the linked account. diff --git a/Sources/Services/AWSBillingconductor/BillingconductorClientProtocol.swift b/Sources/Services/AWSBillingconductor/BillingconductorClientProtocol.swift index cae09a5606d..dc97c99eda2 100644 --- a/Sources/Services/AWSBillingconductor/BillingconductorClientProtocol.swift +++ b/Sources/Services/AWSBillingconductor/BillingconductorClientProtocol.swift @@ -2,7 +2,7 @@ import ClientRuntime -/// Amazon Web Services Billing Conductor is a fully managed service that you can use to customize a [pro forma](https://docs.aws.amazon.com/billingconductor/latest/userguide/understanding-eb.html#eb-other-definitions) version of your billing data each month, to accurately show or chargeback your end customers. Amazon Web Services Billing Conductor doesn't change the way you're billed by Amazon Web Services each month by design. Instead, it provides you with a mechanism to configure, generate, and display rates to certain customers over a given billing period. You can also analyze the difference between the rates you apply to your accounting groupings relative to your actual rates from Amazon Web Services. As a result of your Amazon Web Services Billing Conductor configuration, the payer account can also see the custom rate applied on the billing details page of the [Amazon Web Services Billing console](https://console.aws.amazon.com/billing), or configure a cost and usage report per billing group. This documentation shows how you can configure Amazon Web Services Billing Conductor using its API. For more information about using the [Amazon Web Services Billing Conductor](https://console.aws.amazon.com/billingconductor/) user interface, see the [ Amazon Web Services Billing Conductor User Guide](https://docs.aws.amazon.com/billingconductor/latest/userguide/what-is-billingconductor.html). +/// Amazon Web Services Billing Conductor is a fully managed service that you can use to customize a [proforma](https://docs.aws.amazon.com/billingconductor/latest/userguide/understanding-eb.html#eb-other-definitions) version of your billing data each month, to accurately show or chargeback your end customers. Amazon Web Services Billing Conductor doesn't change the way you're billed by Amazon Web Services each month by design. Instead, it provides you with a mechanism to configure, generate, and display rates to certain customers over a given billing period. You can also analyze the difference between the rates you apply to your accounting groupings relative to your actual rates from Amazon Web Services. As a result of your Amazon Web Services Billing Conductor configuration, the payer account can also see the custom rate applied on the billing details page of the [Amazon Web Services Billing console](https://console.aws.amazon.com/billing), or configure a cost and usage report per billing group. This documentation shows how you can configure Amazon Web Services Billing Conductor using its API. For more information about using the [Amazon Web Services Billing Conductor](https://console.aws.amazon.com/billingconductor/) user interface, see the [ Amazon Web Services Billing Conductor User Guide](https://docs.aws.amazon.com/billingconductor/latest/userguide/what-is-billingconductor.html). public protocol BillingconductorClientProtocol { /// Performs the `AssociateAccounts` operation on the `AWSBillingConductor` service. /// @@ -255,6 +255,23 @@ public protocol BillingconductorClientProtocol { /// - `ThrottlingException` : The request was denied due to request throttling. /// - `ValidationException` : The input doesn't match with the constraints specified by Amazon Web Services. func disassociatePricingRules(input: DisassociatePricingRulesInput) async throws -> DisassociatePricingRulesOutput + /// Performs the `GetBillingGroupCostReport` operation on the `AWSBillingConductor` service. + /// + /// Retrieves the margin summary report, which includes the Amazon Web Services cost and charged amount (pro forma cost) by Amazon Web Service for a specific billing group. + /// + /// - Parameter GetBillingGroupCostReportInput : [no documentation found] + /// + /// - Returns: `GetBillingGroupCostReportOutput` : [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` : An unexpected error occurred while processing a request. + /// - `ResourceNotFoundException` : The request references a resource that doesn't exist. + /// - `ThrottlingException` : The request was denied due to request throttling. + /// - `ValidationException` : The input doesn't match with the constraints specified by Amazon Web Services. + func getBillingGroupCostReport(input: GetBillingGroupCostReportInput) async throws -> GetBillingGroupCostReportOutput /// Performs the `ListAccountAssociations` operation on the `AWSBillingConductor` service. /// /// This is a paginated call to list linked accounts that are linked to the payer account for the specified time period. If no information is provided, the current billing period is used. The response will optionally include the billing group that's associated with the linked account. diff --git a/Sources/Services/AWSBillingconductor/Paginators.swift b/Sources/Services/AWSBillingconductor/Paginators.swift index 7b628d04dea..5402bbfef0b 100644 --- a/Sources/Services/AWSBillingconductor/Paginators.swift +++ b/Sources/Services/AWSBillingconductor/Paginators.swift @@ -2,6 +2,39 @@ import ClientRuntime +extension BillingconductorClient { + /// Paginate over `[GetBillingGroupCostReportOutput]` 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 `[GetBillingGroupCostReportInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `GetBillingGroupCostReportOutput` + public func getBillingGroupCostReportPaginated(input: GetBillingGroupCostReportInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.getBillingGroupCostReport(input:)) + } +} + +extension GetBillingGroupCostReportInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> GetBillingGroupCostReportInput { + return GetBillingGroupCostReportInput( + arn: self.arn, + billingPeriodRange: self.billingPeriodRange, + groupBy: self.groupBy, + maxResults: self.maxResults, + nextToken: token + )} +} + +extension PaginatorSequence where OperationStackInput == GetBillingGroupCostReportInput, OperationStackOutput == GetBillingGroupCostReportOutput { + /// This paginator transforms the `AsyncSequence` returned by `getBillingGroupCostReportPaginated` + /// to access the nested member `[BillingconductorClientTypes.BillingGroupCostReportResultElement]` + /// - Returns: `[BillingconductorClientTypes.BillingGroupCostReportResultElement]` + public func billingGroupCostReportResults() async throws -> [BillingconductorClientTypes.BillingGroupCostReportResultElement] { + return try await self.asyncCompactMap { item in item.billingGroupCostReportResults } + } +} extension BillingconductorClient { /// Paginate over `[ListAccountAssociationsOutput]` results. /// diff --git a/Sources/Services/AWSBillingconductor/models/Models.swift b/Sources/Services/AWSBillingconductor/models/Models.swift index b225aac3663..d849973faf5 100644 --- a/Sources/Services/AWSBillingconductor/models/Models.swift +++ b/Sources/Services/AWSBillingconductor/models/Models.swift @@ -577,6 +577,51 @@ extension BillingconductorClientTypes { } +extension BillingconductorClientTypes.Attribute: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case key = "Key" + case value = "Value" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let key = self.key { + try encodeContainer.encode(key, forKey: .key) + } + 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 keyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .key) + key = keyDecoded + let valueDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .value) + value = valueDecoded + } +} + +extension BillingconductorClientTypes { + /// The key-value pair that represents the attribute by which the BillingGroupCostReportResults are grouped. For example, if you want a service-level breakdown for Amazon Simple Storage Service (Amazon S3) of the billing group, the attribute will be a key-value pair of "PRODUCT_NAME" and "S3". + public struct Attribute: Swift.Equatable { + /// The key in a key-value pair that describes the margin summary. + public var key: Swift.String? + /// The value in a key-value pair that describes the margin summary. + public var value: Swift.String? + + public init( + key: Swift.String? = nil, + value: Swift.String? = nil + ) + { + self.key = key + self.value = value + } + } + +} + extension BatchAssociateResourcesToCustomLineItemInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case billingPeriodRange = "BillingPeriodRange" @@ -1001,6 +1046,113 @@ extension BillingconductorClientTypes { } +extension BillingconductorClientTypes.BillingGroupCostReportResultElement: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case awsCost = "AWSCost" + case arn = "Arn" + case attributes = "Attributes" + case currency = "Currency" + case margin = "Margin" + case marginPercentage = "MarginPercentage" + case proformaCost = "ProformaCost" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let awsCost = self.awsCost { + try encodeContainer.encode(awsCost, forKey: .awsCost) + } + if let arn = self.arn { + try encodeContainer.encode(arn, forKey: .arn) + } + if let attributes = attributes { + var attributesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .attributes) + for attribute0 in attributes { + try attributesContainer.encode(attribute0) + } + } + if let currency = self.currency { + try encodeContainer.encode(currency, forKey: .currency) + } + if let margin = self.margin { + try encodeContainer.encode(margin, forKey: .margin) + } + if let marginPercentage = self.marginPercentage { + try encodeContainer.encode(marginPercentage, forKey: .marginPercentage) + } + if let proformaCost = self.proformaCost { + try encodeContainer.encode(proformaCost, forKey: .proformaCost) + } + } + + 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 awsCostDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .awsCost) + awsCost = awsCostDecoded + let proformaCostDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .proformaCost) + proformaCost = proformaCostDecoded + let marginDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .margin) + margin = marginDecoded + let marginPercentageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .marginPercentage) + marginPercentage = marginPercentageDecoded + let currencyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .currency) + currency = currencyDecoded + let attributesContainer = try containerValues.decodeIfPresent([BillingconductorClientTypes.Attribute?].self, forKey: .attributes) + var attributesDecoded0:[BillingconductorClientTypes.Attribute]? = nil + if let attributesContainer = attributesContainer { + attributesDecoded0 = [BillingconductorClientTypes.Attribute]() + for structure0 in attributesContainer { + if let structure0 = structure0 { + attributesDecoded0?.append(structure0) + } + } + } + attributes = attributesDecoded0 + } +} + +extension BillingconductorClientTypes { + /// A paginated call to retrieve a list of summary reports of actual Amazon Web Services charges and the calculated Amazon Web Services charges, broken down by attributes. + public struct BillingGroupCostReportResultElement: Swift.Equatable { + /// The Amazon Resource Number (ARN) that uniquely identifies the billing group. + public var arn: Swift.String? + /// The list of key-value pairs that represent the attributes by which the BillingGroupCostReportResults are grouped. For example, if you want the Amazon S3 service-level breakdown of a billing group for November 2023, the attributes list will contain a key-value pair of "PRODUCT_NAME" and "S3" and a key-value pair of "BILLING_PERIOD" and "Nov 2023". + public var attributes: [BillingconductorClientTypes.Attribute]? + /// The actual Amazon Web Services charges for the billing group. + public var awsCost: Swift.String? + /// The displayed currency. + public var currency: Swift.String? + /// The billing group margin. + public var margin: Swift.String? + /// The percentage of the billing group margin. + public var marginPercentage: Swift.String? + /// The hypothetical Amazon Web Services charges based on the associated pricing plan of a billing group. + public var proformaCost: Swift.String? + + public init( + arn: Swift.String? = nil, + attributes: [BillingconductorClientTypes.Attribute]? = nil, + awsCost: Swift.String? = nil, + currency: Swift.String? = nil, + margin: Swift.String? = nil, + marginPercentage: Swift.String? = nil, + proformaCost: Swift.String? = nil + ) + { + self.arn = arn + self.attributes = attributes + self.awsCost = awsCost + self.currency = currency + self.margin = margin + self.marginPercentage = marginPercentage + self.proformaCost = proformaCost + } + } + +} + extension BillingconductorClientTypes.BillingGroupListElement: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case accountGrouping = "AccountGrouping" @@ -1173,6 +1325,53 @@ extension BillingconductorClientTypes { } } +extension BillingconductorClientTypes.BillingPeriodRange: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case exclusiveEndBillingPeriod = "ExclusiveEndBillingPeriod" + case inclusiveStartBillingPeriod = "InclusiveStartBillingPeriod" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let exclusiveEndBillingPeriod = self.exclusiveEndBillingPeriod { + try encodeContainer.encode(exclusiveEndBillingPeriod, forKey: .exclusiveEndBillingPeriod) + } + if let inclusiveStartBillingPeriod = self.inclusiveStartBillingPeriod { + try encodeContainer.encode(inclusiveStartBillingPeriod, forKey: .inclusiveStartBillingPeriod) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let inclusiveStartBillingPeriodDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .inclusiveStartBillingPeriod) + inclusiveStartBillingPeriod = inclusiveStartBillingPeriodDecoded + let exclusiveEndBillingPeriodDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .exclusiveEndBillingPeriod) + exclusiveEndBillingPeriod = exclusiveEndBillingPeriodDecoded + } +} + +extension BillingconductorClientTypes { + /// A time range for which the margin summary is effective. The time range can be up to 12 months. + public struct BillingPeriodRange: Swift.Equatable { + /// The exclusive end billing period that defines a billing period range for the margin summary. For example, if you choose a billing period that starts in October 2023 and ends in December 2023, the margin summary will only include data from October 2023 and November 2023. + /// This member is required. + public var exclusiveEndBillingPeriod: Swift.String? + /// The inclusive start billing period that defines a billing period range for the margin summary. + /// This member is required. + public var inclusiveStartBillingPeriod: Swift.String? + + public init( + exclusiveEndBillingPeriod: Swift.String? = nil, + inclusiveStartBillingPeriod: Swift.String? = nil + ) + { + self.exclusiveEndBillingPeriod = exclusiveEndBillingPeriod + self.inclusiveStartBillingPeriod = inclusiveStartBillingPeriod + } + } + +} + extension BillingconductorClientTypes.ComputationPreference: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case pricingPlanArn = "PricingPlanArn" @@ -3057,7 +3256,7 @@ extension DeleteCustomLineItemOutput: ClientRuntime.HttpResponseBinding { } public struct DeleteCustomLineItemOutput: Swift.Equatable { - /// Then ARN of the deleted custom line item. + /// The ARN of the deleted custom line item. public var arn: Swift.String? public init( @@ -3644,6 +3843,220 @@ extension BillingconductorClientTypes { } +extension GetBillingGroupCostReportInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn = "Arn" + case billingPeriodRange = "BillingPeriodRange" + case groupBy = "GroupBy" + case maxResults = "MaxResults" + case nextToken = "NextToken" + } + + 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 billingPeriodRange = self.billingPeriodRange { + try encodeContainer.encode(billingPeriodRange, forKey: .billingPeriodRange) + } + if let groupBy = groupBy { + var groupByContainer = encodeContainer.nestedUnkeyedContainer(forKey: .groupBy) + for groupbyattributename0 in groupBy { + try groupByContainer.encode(groupbyattributename0.rawValue) + } + } + if let maxResults = self.maxResults { + try encodeContainer.encode(maxResults, forKey: .maxResults) + } + if let nextToken = self.nextToken { + try encodeContainer.encode(nextToken, forKey: .nextToken) + } + } +} + +extension GetBillingGroupCostReportInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/get-billing-group-cost-report" + } +} + +public struct GetBillingGroupCostReportInput: Swift.Equatable { + /// The Amazon Resource Number (ARN) that uniquely identifies the billing group. + /// This member is required. + public var arn: Swift.String? + /// A time range for which the margin summary is effective. You can specify up to 12 months. + public var billingPeriodRange: BillingconductorClientTypes.BillingPeriodRange? + /// A list of strings that specify the attributes that are used to break down costs in the margin summary reports for the billing group. For example, you can view your costs by the Amazon Web Service name or the billing period. + public var groupBy: [BillingconductorClientTypes.GroupByAttributeName]? + /// The maximum number of margin summary reports to retrieve. + public var maxResults: Swift.Int? + /// The pagination token used on subsequent calls to get reports. + public var nextToken: Swift.String? + + public init( + arn: Swift.String? = nil, + billingPeriodRange: BillingconductorClientTypes.BillingPeriodRange? = nil, + groupBy: [BillingconductorClientTypes.GroupByAttributeName]? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.arn = arn + self.billingPeriodRange = billingPeriodRange + self.groupBy = groupBy + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct GetBillingGroupCostReportInputBody: Swift.Equatable { + let arn: Swift.String? + let billingPeriodRange: BillingconductorClientTypes.BillingPeriodRange? + let groupBy: [BillingconductorClientTypes.GroupByAttributeName]? + let maxResults: Swift.Int? + let nextToken: Swift.String? +} + +extension GetBillingGroupCostReportInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn = "Arn" + case billingPeriodRange = "BillingPeriodRange" + case groupBy = "GroupBy" + case maxResults = "MaxResults" + case nextToken = "NextToken" + } + + 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 billingPeriodRangeDecoded = try containerValues.decodeIfPresent(BillingconductorClientTypes.BillingPeriodRange.self, forKey: .billingPeriodRange) + billingPeriodRange = billingPeriodRangeDecoded + let groupByContainer = try containerValues.decodeIfPresent([BillingconductorClientTypes.GroupByAttributeName?].self, forKey: .groupBy) + var groupByDecoded0:[BillingconductorClientTypes.GroupByAttributeName]? = nil + if let groupByContainer = groupByContainer { + groupByDecoded0 = [BillingconductorClientTypes.GroupByAttributeName]() + for string0 in groupByContainer { + if let string0 = string0 { + groupByDecoded0?.append(string0) + } + } + } + groupBy = groupByDecoded0 + 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 GetBillingGroupCostReportOutput: 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: GetBillingGroupCostReportOutputBody = try responseDecoder.decode(responseBody: data) + self.billingGroupCostReportResults = output.billingGroupCostReportResults + self.nextToken = output.nextToken + } else { + self.billingGroupCostReportResults = nil + self.nextToken = nil + } + } +} + +public struct GetBillingGroupCostReportOutput: Swift.Equatable { + /// The list of margin summary reports. + public var billingGroupCostReportResults: [BillingconductorClientTypes.BillingGroupCostReportResultElement]? + /// The pagination token used on subsequent calls to get reports. + public var nextToken: Swift.String? + + public init( + billingGroupCostReportResults: [BillingconductorClientTypes.BillingGroupCostReportResultElement]? = nil, + nextToken: Swift.String? = nil + ) + { + self.billingGroupCostReportResults = billingGroupCostReportResults + self.nextToken = nextToken + } +} + +struct GetBillingGroupCostReportOutputBody: Swift.Equatable { + let billingGroupCostReportResults: [BillingconductorClientTypes.BillingGroupCostReportResultElement]? + let nextToken: Swift.String? +} + +extension GetBillingGroupCostReportOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case billingGroupCostReportResults = "BillingGroupCostReportResults" + case nextToken = "NextToken" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let billingGroupCostReportResultsContainer = try containerValues.decodeIfPresent([BillingconductorClientTypes.BillingGroupCostReportResultElement?].self, forKey: .billingGroupCostReportResults) + var billingGroupCostReportResultsDecoded0:[BillingconductorClientTypes.BillingGroupCostReportResultElement]? = nil + if let billingGroupCostReportResultsContainer = billingGroupCostReportResultsContainer { + billingGroupCostReportResultsDecoded0 = [BillingconductorClientTypes.BillingGroupCostReportResultElement]() + for structure0 in billingGroupCostReportResultsContainer { + if let structure0 = structure0 { + billingGroupCostReportResultsDecoded0?.append(structure0) + } + } + } + billingGroupCostReportResults = billingGroupCostReportResultsDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum GetBillingGroupCostReportOutputError: 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 "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 BillingconductorClientTypes { + public enum GroupByAttributeName: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case billingPeriod + case productName + case sdkUnknown(Swift.String) + + public static var allCases: [GroupByAttributeName] { + return [ + .billingPeriod, + .productName, + .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 .billingPeriod: return "BILLING_PERIOD" + case .productName: return "PRODUCT_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 = GroupByAttributeName(rawValue: rawValue) ?? GroupByAttributeName.sdkUnknown(rawValue) + } + } +} + extension InternalServerException { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { if let retryAfterSecondsHeaderValue = httpResponse.headers.value(for: "Retry-After") { diff --git a/Sources/Services/AWSChimeSDKMeetings/ChimeSDKMeetingsClient.swift b/Sources/Services/AWSChimeSDKMeetings/ChimeSDKMeetingsClient.swift index 61dd5ccbb16..09de010ed7e 100644 --- a/Sources/Services/AWSChimeSDKMeetings/ChimeSDKMeetingsClient.swift +++ b/Sources/Services/AWSChimeSDKMeetings/ChimeSDKMeetingsClient.swift @@ -126,6 +126,10 @@ extension ChimeSDKMeetingsClient: ChimeSDKMeetingsClientProtocol { /// /// Updates AttendeeCapabilities except the capabilities listed in an ExcludedAttendeeIds table. You use the capabilities with a set of values that control what the capabilities can do, such as SendReceive data. For more information about those values, see . When using capabilities, be aware of these corner cases: /// + /// * If you specify MeetingFeatures:Video:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Video will be rejected with ValidationError 400. + /// + /// * If you specify MeetingFeatures:Content:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Content will be rejected with ValidationError 400. + /// /// * You can't set content capabilities to SendReceive or Receive unless you also set video capabilities to SendReceive or Receive. If you don't set the video capability to receive, the response will contain an HTTP 400 Bad Request status code. However, you can set your video capability to receive and you set your content capability to not receive. /// /// * When you change an audio capability from None or Receive to Send or SendReceive , and if the attendee left their microphone unmuted, audio will flow from the attendee to the other meeting participants. @@ -644,7 +648,7 @@ extension ChimeSDKMeetingsClient: ChimeSDKMeetingsClientProtocol { /// Performs the `StartMeetingTranscription` operation on the `ChimeMeetingsSDKService` service. /// - /// Starts transcription for the specified meetingId. For more information, refer to [ Using Amazon Chime SDK live transcription ](https://docs.aws.amazon.com/chime-sdk/latest/dg/meeting-transcription.html) in the Amazon Chime SDK Developer Guide. If you specify an invalid configuration, a TranscriptFailed event will be sent with the contents of the BadRequestException generated by Amazon Transcribe. For more information on each parameter and which combinations are valid, refer to the [StartStreamTranscription](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartStreamTranscription.html) API in the Amazon Transcribe Developer Guide. Amazon Chime SDK live transcription is powered by Amazon Transcribe. Use of Amazon Transcribe is subject to the [AWS Service Terms](https://aws.amazon.com/service-terms/), including the terms specific to the AWS Machine Learning and Artificial Intelligence Services. + /// Starts transcription for the specified meetingId. For more information, refer to [ Using Amazon Chime SDK live transcription ](https://docs.aws.amazon.com/chime-sdk/latest/dg/meeting-transcription.html) in the Amazon Chime SDK Developer Guide. If you specify an invalid configuration, a TranscriptFailed event will be sent with the contents of the BadRequestException generated by Amazon Transcribe. For more information on each parameter and which combinations are valid, refer to the [StartStreamTranscription](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartStreamTranscription.html) API in the Amazon Transcribe Developer Guide. By default, Amazon Transcribe may use and store audio content processed by the service to develop and improve Amazon Web Services AI/ML services as further described in section 50 of the [Amazon Web Services Service Terms](https://aws.amazon.com/service-terms/). Using Amazon Transcribe may be subject to federal and state laws or regulations regarding the recording or interception of electronic communications. It is your and your end users’ responsibility to comply with all applicable laws regarding the recording, including properly notifying all participants in a recorded session or communication that the session or communication is being recorded, and obtaining all necessary consents. You can opt out from Amazon Web Services using audio content to develop and improve AWS AI/ML services by configuring an AI services opt out policy using Amazon Web Services Organizations. /// /// - Parameter StartMeetingTranscriptionInput : [no documentation found] /// @@ -699,7 +703,7 @@ extension ChimeSDKMeetingsClient: ChimeSDKMeetingsClientProtocol { /// Performs the `StopMeetingTranscription` operation on the `ChimeMeetingsSDKService` service. /// - /// Stops transcription for the specified meetingId. For more information, refer to [ Using Amazon Chime SDK live transcription ](https://docs.aws.amazon.com/chime-sdk/latest/dg/meeting-transcription.html) in the Amazon Chime SDK Developer Guide. Amazon Chime SDK live transcription is powered by Amazon Transcribe. Use of Amazon Transcribe is subject to the [AWS Service Terms](https://aws.amazon.com/service-terms/), including the terms specific to the AWS Machine Learning and Artificial Intelligence Services. + /// Stops transcription for the specified meetingId. For more information, refer to [ Using Amazon Chime SDK live transcription ](https://docs.aws.amazon.com/chime-sdk/latest/dg/meeting-transcription.html) in the Amazon Chime SDK Developer Guide. By default, Amazon Transcribe may use and store audio content processed by the service to develop and improve Amazon Web Services AI/ML services as further described in section 50 of the [Amazon Web Services Service Terms](https://aws.amazon.com/service-terms/). Using Amazon Transcribe may be subject to federal and state laws or regulations regarding the recording or interception of electronic communications. It is your and your end users’ responsibility to comply with all applicable laws regarding the recording, including properly notifying all participants in a recorded session or communication that the session or communication is being recorded, and obtaining all necessary consents. You can opt out from Amazon Web Services using audio content to develop and improve Amazon Web Services AI/ML services by configuring an AI services opt out policy using Amazon Web Services Organizations. /// /// - Parameter StopMeetingTranscriptionInput : [no documentation found] /// @@ -809,7 +813,7 @@ extension ChimeSDKMeetingsClient: ChimeSDKMeetingsClientProtocol { /// /// * To remove tags from a resource, you need the necessary permissions for the service that the resource belongs to as well as permissions for removing tags. For more information, see the documentation for the service whose resource you want to untag. /// - /// * You can only tag resources that are located in the specified AWS Region for the calling AWS account. + /// * You can only tag resources that are located in the specified Amazon Web Services Region for the calling Amazon Web Services account. /// /// /// Minimum permissions In addition to the tag:UntagResources permission required by this operation, you must also have the remove tags permission defined by the service that created the resource. For example, to remove the tags from an Amazon EC2 instance using the UntagResources operation, you must have both of the following permissions: tag:UntagResource @@ -869,6 +873,10 @@ extension ChimeSDKMeetingsClient: ChimeSDKMeetingsClientProtocol { /// /// The capabilities that you want to update. You use the capabilities with a set of values that control what the capabilities can do, such as SendReceive data. For more information about those values, see . When using capabilities, be aware of these corner cases: /// + /// * If you specify MeetingFeatures:Video:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Video will be rejected with ValidationError 400. + /// + /// * If you specify MeetingFeatures:Content:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Content will be rejected with ValidationError 400. + /// /// * You can't set content capabilities to SendReceive or Receive unless you also set video capabilities to SendReceive or Receive. If you don't set the video capability to receive, the response will contain an HTTP 400 Bad Request status code. However, you can set your video capability to receive and you set your content capability to not receive. /// /// * When you change an audio capability from None or Receive to Send or SendReceive , and if the attendee left their microphone unmuted, audio will flow from the attendee to the other meeting participants. diff --git a/Sources/Services/AWSChimeSDKMeetings/ChimeSDKMeetingsClientProtocol.swift b/Sources/Services/AWSChimeSDKMeetings/ChimeSDKMeetingsClientProtocol.swift index a335885a3f4..b7fc548673f 100644 --- a/Sources/Services/AWSChimeSDKMeetings/ChimeSDKMeetingsClientProtocol.swift +++ b/Sources/Services/AWSChimeSDKMeetings/ChimeSDKMeetingsClientProtocol.swift @@ -2,7 +2,7 @@ import ClientRuntime -/// The Amazon Chime SDK meetings APIs in this section allow software developers to create Amazon Chime SDK meetings, set the AWS Regions for meetings, create and manage users, and send and receive meeting notifications. For more information about the meeting APIs, see [Amazon Chime SDK meetings](https://docs.aws.amazon.com/chime/latest/APIReference/API_Operations_Amazon_Chime_SDK_Meetings.html). +/// The Amazon Chime SDK meetings APIs in this section allow software developers to create Amazon Chime SDK meetings, set the Amazon Web Services Regions for meetings, create and manage users, and send and receive meeting notifications. For more information about the meeting APIs, see [Amazon Chime SDK meetings](https://docs.aws.amazon.com/chime/latest/APIReference/API_Operations_Amazon_Chime_SDK_Meetings.html). public protocol ChimeSDKMeetingsClientProtocol { /// Performs the `BatchCreateAttendee` operation on the `ChimeMeetingsSDKService` service. /// @@ -29,6 +29,10 @@ public protocol ChimeSDKMeetingsClientProtocol { /// /// Updates AttendeeCapabilities except the capabilities listed in an ExcludedAttendeeIds table. You use the capabilities with a set of values that control what the capabilities can do, such as SendReceive data. For more information about those values, see . When using capabilities, be aware of these corner cases: /// + /// * If you specify MeetingFeatures:Video:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Video will be rejected with ValidationError 400. + /// + /// * If you specify MeetingFeatures:Content:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Content will be rejected with ValidationError 400. + /// /// * You can't set content capabilities to SendReceive or Receive unless you also set video capabilities to SendReceive or Receive. If you don't set the video capability to receive, the response will contain an HTTP 400 Bad Request status code. However, you can set your video capability to receive and you set your content capability to not receive. /// /// * When you change an audio capability from None or Receive to Send or SendReceive , and if the attendee left their microphone unmuted, audio will flow from the attendee to the other meeting participants. @@ -229,7 +233,7 @@ public protocol ChimeSDKMeetingsClientProtocol { func listTagsForResource(input: ListTagsForResourceInput) async throws -> ListTagsForResourceOutput /// Performs the `StartMeetingTranscription` operation on the `ChimeMeetingsSDKService` service. /// - /// Starts transcription for the specified meetingId. For more information, refer to [ Using Amazon Chime SDK live transcription ](https://docs.aws.amazon.com/chime-sdk/latest/dg/meeting-transcription.html) in the Amazon Chime SDK Developer Guide. If you specify an invalid configuration, a TranscriptFailed event will be sent with the contents of the BadRequestException generated by Amazon Transcribe. For more information on each parameter and which combinations are valid, refer to the [StartStreamTranscription](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartStreamTranscription.html) API in the Amazon Transcribe Developer Guide. Amazon Chime SDK live transcription is powered by Amazon Transcribe. Use of Amazon Transcribe is subject to the [AWS Service Terms](https://aws.amazon.com/service-terms/), including the terms specific to the AWS Machine Learning and Artificial Intelligence Services. + /// Starts transcription for the specified meetingId. For more information, refer to [ Using Amazon Chime SDK live transcription ](https://docs.aws.amazon.com/chime-sdk/latest/dg/meeting-transcription.html) in the Amazon Chime SDK Developer Guide. If you specify an invalid configuration, a TranscriptFailed event will be sent with the contents of the BadRequestException generated by Amazon Transcribe. For more information on each parameter and which combinations are valid, refer to the [StartStreamTranscription](https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartStreamTranscription.html) API in the Amazon Transcribe Developer Guide. By default, Amazon Transcribe may use and store audio content processed by the service to develop and improve Amazon Web Services AI/ML services as further described in section 50 of the [Amazon Web Services Service Terms](https://aws.amazon.com/service-terms/). Using Amazon Transcribe may be subject to federal and state laws or regulations regarding the recording or interception of electronic communications. It is your and your end users’ responsibility to comply with all applicable laws regarding the recording, including properly notifying all participants in a recorded session or communication that the session or communication is being recorded, and obtaining all necessary consents. You can opt out from Amazon Web Services using audio content to develop and improve AWS AI/ML services by configuring an AI services opt out policy using Amazon Web Services Organizations. /// /// - Parameter StartMeetingTranscriptionInput : [no documentation found] /// @@ -250,7 +254,7 @@ public protocol ChimeSDKMeetingsClientProtocol { func startMeetingTranscription(input: StartMeetingTranscriptionInput) async throws -> StartMeetingTranscriptionOutput /// Performs the `StopMeetingTranscription` operation on the `ChimeMeetingsSDKService` service. /// - /// Stops transcription for the specified meetingId. For more information, refer to [ Using Amazon Chime SDK live transcription ](https://docs.aws.amazon.com/chime-sdk/latest/dg/meeting-transcription.html) in the Amazon Chime SDK Developer Guide. Amazon Chime SDK live transcription is powered by Amazon Transcribe. Use of Amazon Transcribe is subject to the [AWS Service Terms](https://aws.amazon.com/service-terms/), including the terms specific to the AWS Machine Learning and Artificial Intelligence Services. + /// Stops transcription for the specified meetingId. For more information, refer to [ Using Amazon Chime SDK live transcription ](https://docs.aws.amazon.com/chime-sdk/latest/dg/meeting-transcription.html) in the Amazon Chime SDK Developer Guide. By default, Amazon Transcribe may use and store audio content processed by the service to develop and improve Amazon Web Services AI/ML services as further described in section 50 of the [Amazon Web Services Service Terms](https://aws.amazon.com/service-terms/). Using Amazon Transcribe may be subject to federal and state laws or regulations regarding the recording or interception of electronic communications. It is your and your end users’ responsibility to comply with all applicable laws regarding the recording, including properly notifying all participants in a recorded session or communication that the session or communication is being recorded, and obtaining all necessary consents. You can opt out from Amazon Web Services using audio content to develop and improve Amazon Web Services AI/ML services by configuring an AI services opt out policy using Amazon Web Services Organizations. /// /// - Parameter StopMeetingTranscriptionInput : [no documentation found] /// @@ -295,7 +299,7 @@ public protocol ChimeSDKMeetingsClientProtocol { /// /// * To remove tags from a resource, you need the necessary permissions for the service that the resource belongs to as well as permissions for removing tags. For more information, see the documentation for the service whose resource you want to untag. /// - /// * You can only tag resources that are located in the specified AWS Region for the calling AWS account. + /// * You can only tag resources that are located in the specified Amazon Web Services Region for the calling Amazon Web Services account. /// /// /// Minimum permissions In addition to the tag:UntagResources permission required by this operation, you must also have the remove tags permission defined by the service that created the resource. For example, to remove the tags from an Amazon EC2 instance using the UntagResources operation, you must have both of the following permissions: tag:UntagResource @@ -321,6 +325,10 @@ public protocol ChimeSDKMeetingsClientProtocol { /// /// The capabilities that you want to update. You use the capabilities with a set of values that control what the capabilities can do, such as SendReceive data. For more information about those values, see . When using capabilities, be aware of these corner cases: /// + /// * If you specify MeetingFeatures:Video:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Video will be rejected with ValidationError 400. + /// + /// * If you specify MeetingFeatures:Content:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Content will be rejected with ValidationError 400. + /// /// * You can't set content capabilities to SendReceive or Receive unless you also set video capabilities to SendReceive or Receive. If you don't set the video capability to receive, the response will contain an HTTP 400 Bad Request status code. However, you can set your video capability to receive and you set your content capability to not receive. /// /// * When you change an audio capability from None or Receive to Send or SendReceive , and if the attendee left their microphone unmuted, audio will flow from the attendee to the other meeting participants. diff --git a/Sources/Services/AWSChimeSDKMeetings/models/Models.swift b/Sources/Services/AWSChimeSDKMeetings/models/Models.swift index a336ba83fce..af9418b5af0 100644 --- a/Sources/Services/AWSChimeSDKMeetings/models/Models.swift +++ b/Sources/Services/AWSChimeSDKMeetings/models/Models.swift @@ -51,6 +51,10 @@ extension ChimeSDKMeetingsClientTypes { public var attendeeId: Swift.String? /// The capabilities assigned to an attendee: audio, video, or content. You use the capabilities with a set of values that control what the capabilities can do, such as SendReceive data. For more information about those values, see . When using capabilities, be aware of these corner cases: /// + /// * If you specify MeetingFeatures:Video:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Video will be rejected with ValidationError 400. + /// + /// * If you specify MeetingFeatures:Content:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Content will be rejected with ValidationError 400. + /// /// * You can't set content capabilities to SendReceive or Receive unless you also set video capabilities to SendReceive or Receive. If you don't set the video capability to receive, the response will contain an HTTP 400 Bad Request status code. However, you can set your video capability to receive and you set your content capability to not receive. /// /// * When you change an audio capability from None or Receive to Send or SendReceive , and if the attendee left their microphone unmuted, audio will flow from the attendee to the other meeting participants. @@ -110,13 +114,17 @@ extension ChimeSDKMeetingsClientTypes.AttendeeCapabilities: Swift.Codable { } extension ChimeSDKMeetingsClientTypes { - /// The media capabilities of an attendee: audio, video, or content. You use the capabilities with a set of values that control what the capabilities can do, such as SendReceive data. For more information about those values, see . When using capabilities, be aware of these corner cases: + /// The media capabilities of an attendee: audio, video, or content. You use the capabilities with a set of values that control what the capabilities can do, such as SendReceive data. For more information, refer to and . When using capabilities, be aware of these corner cases: + /// + /// * If you specify MeetingFeatures:Video:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Video will be rejected with ValidationError 400. + /// + /// * If you specify MeetingFeatures:Content:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Content will be rejected with ValidationError 400. /// /// * You can't set content capabilities to SendReceive or Receive unless you also set video capabilities to SendReceive or Receive. If you don't set the video capability to receive, the response will contain an HTTP 400 Bad Request status code. However, you can set your video capability to receive and you set your content capability to not receive. /// - /// * When you change an audio capability from None or Receive to Send or SendReceive , and if the attendee left their microphone unmuted, audio will flow from the attendee to the other meeting participants. + /// * When you change an audio capability from None or Receive to Send or SendReceive , and an attendee unmutes their microphone, audio flows from the attendee to the other meeting participants. /// - /// * When you change a video or content capability from None or Receive to Send or SendReceive , and if the attendee turned on their video or content streams, remote attendees can receive those streams, but only after media renegotiation between the client and the Amazon Chime back-end server. + /// * When you change a video or content capability from None or Receive to Send or SendReceive , and the attendee turns on their video or content streams, remote attendees can receive those streams, but only after media renegotiation between the client and the Amazon Chime back-end server. public struct AttendeeCapabilities: Swift.Equatable { /// The audio capability assigned to an attendee. /// This member is required. @@ -142,6 +150,41 @@ extension ChimeSDKMeetingsClientTypes { } +extension ChimeSDKMeetingsClientTypes.AttendeeFeatures: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxCount = "MaxCount" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let maxCount = self.maxCount { + try encodeContainer.encode(maxCount, forKey: .maxCount) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let maxCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxCount) + maxCount = maxCountDecoded + } +} + +extension ChimeSDKMeetingsClientTypes { + /// Lists the maximum number of attendees allowed into the meeting. If you specify FHD for MeetingFeatures:Video:MaxResolution, or if you specify UHD for MeetingFeatures:Content:MaxResolution, the maximum number of attendees changes from the default of 250 to 25. + public struct AttendeeFeatures: Swift.Equatable { + /// The maximum number of attendees allowed into the meeting. + public var maxCount: Swift.Int? + + public init( + maxCount: Swift.Int? = nil + ) + { + self.maxCount = maxCount + } + } + +} + extension ChimeSDKMeetingsClientTypes.AttendeeIdItem: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case attendeeId = "AttendeeId" @@ -645,6 +688,76 @@ extension ConflictExceptionBody: Swift.Decodable { } } +extension ChimeSDKMeetingsClientTypes.ContentFeatures: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResolution = "MaxResolution" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let maxResolution = self.maxResolution { + try encodeContainer.encode(maxResolution.rawValue, forKey: .maxResolution) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let maxResolutionDecoded = try containerValues.decodeIfPresent(ChimeSDKMeetingsClientTypes.ContentResolution.self, forKey: .maxResolution) + maxResolution = maxResolutionDecoded + } +} + +extension ChimeSDKMeetingsClientTypes { + /// Lists the content (screen share) features for the meeting. Applies to all attendees. If you specify MeetingFeatures:Content:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Content will be rejected with ValidationError 400. + public struct ContentFeatures: Swift.Equatable { + /// The maximum resolution for the meeting content. Defaults to FHD. To use UHD, you must also provide a MeetingFeatures:Attendee:MaxCount value and override the default size limit of 250 attendees. + public var maxResolution: ChimeSDKMeetingsClientTypes.ContentResolution? + + public init( + maxResolution: ChimeSDKMeetingsClientTypes.ContentResolution? = nil + ) + { + self.maxResolution = maxResolution + } + } + +} + +extension ChimeSDKMeetingsClientTypes { + public enum ContentResolution: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case fhd + case `none` + case uhd + case sdkUnknown(Swift.String) + + public static var allCases: [ContentResolution] { + return [ + .fhd, + .none, + .uhd, + .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 .fhd: return "FHD" + case .none: return "None" + case .uhd: return "UHD" + 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 = ContentResolution(rawValue: rawValue) ?? ContentResolution.sdkUnknown(rawValue) + } + } +} + extension ChimeSDKMeetingsClientTypes.CreateAttendeeError: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case errorCode = "ErrorCode" @@ -739,6 +852,10 @@ extension CreateAttendeeInput: ClientRuntime.URLPathProvider { public struct CreateAttendeeInput: Swift.Equatable { /// The capabilities (audio, video, or content) that you want to grant an attendee. If you don't specify capabilities, all users have send and receive capabilities on all media channels by default. You use the capabilities with a set of values that control what the capabilities can do, such as SendReceive data. For more information about those values, see . When using capabilities, be aware of these corner cases: /// + /// * If you specify MeetingFeatures:Video:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Video will be rejected with ValidationError 400. + /// + /// * If you specify MeetingFeatures:Content:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Content will be rejected with ValidationError 400. + /// /// * You can't set content capabilities to SendReceive or Receive unless you also set video capabilities to SendReceive or Receive. If you don't set the video capability to receive, the response will contain an HTTP 400 Bad Request status code. However, you can set your video capability to receive and you set your content capability to not receive. /// /// * When you change an audio capability from None or Receive to Send or SendReceive , and if the attendee left their microphone unmuted, audio will flow from the attendee to the other meeting participants. @@ -963,7 +1080,7 @@ public struct CreateMeetingInput: Swift.Equatable { /// The external meeting ID. Pattern: [-_&@+=,(){}\[\]\/«».:|'"#a-zA-Z0-9À-ÿ\s]* Values that begin with aws: are reserved. You can't configure a value that uses this prefix. Case insensitive. /// This member is required. public var externalMeetingId: Swift.String? - /// The Region in which to create the meeting. Available values: af-south-1, ap-northeast-1, ap-northeast-2, ap-south-1, ap-southeast-1, ap-southeast-2, ca-central-1, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, sa-east-1, us-east-1, us-east-2, us-west-1, us-west-2. Available values in AWS GovCloud (US) Regions: us-gov-east-1, us-gov-west-1. + /// The Region in which to create the meeting. Available values: af-south-1, ap-northeast-1, ap-northeast-2, ap-south-1, ap-southeast-1, ap-southeast-2, ca-central-1, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, sa-east-1, us-east-1, us-east-2, us-west-1, us-west-2. Available values in Amazon Web Services GovCloud (US) Regions: us-gov-east-1, us-gov-west-1. /// This member is required. public var mediaRegion: Swift.String? /// Lists the audio and video features enabled for a meeting, such as echo reduction. @@ -980,7 +1097,7 @@ public struct CreateMeetingInput: Swift.Equatable { /// /// * Each resource can have up to 50 tags. For other limits, see [Tag Naming and Usage Conventions](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html#tag-conventions) in the AWS General Reference. /// - /// * You can only tag resources that are located in the specified AWS Region for the AWS account. + /// * You can only tag resources that are located in the specified Amazon Web Services Region for the Amazon Web Services account. /// /// * To add tags to a resource, you need the necessary permissions for the service that the resource belongs to as well as permissions for adding tags. For more information, see the documentation for each service. /// @@ -1227,7 +1344,7 @@ public struct CreateMeetingWithAttendeesInput: Swift.Equatable { /// The external meeting ID. Pattern: [-_&@+=,(){}\[\]\/«».:|'"#a-zA-Z0-9À-ÿ\s]* Values that begin with aws: are reserved. You can't configure a value that uses this prefix. Case insensitive. /// This member is required. public var externalMeetingId: Swift.String? - /// The Region in which to create the meeting. Available values: af-south-1, ap-northeast-1, ap-northeast-2, ap-south-1, ap-southeast-1, ap-southeast-2, ca-central-1, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, sa-east-1, us-east-1, us-east-2, us-west-1, us-west-2. Available values in AWS GovCloud (US) Regions: us-gov-east-1, us-gov-west-1. + /// The Region in which to create the meeting. Available values: af-south-1, ap-northeast-1, ap-northeast-2, ap-south-1, ap-southeast-1, ap-southeast-2, ca-central-1, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, sa-east-1, us-east-1, us-east-2, us-west-1, us-west-2. Available values in Amazon Web Services GovCloud (US) Regions: us-gov-east-1, us-gov-west-1. /// This member is required. public var mediaRegion: Swift.String? /// Lists the audio and video features enabled for a meeting, such as echo reduction. @@ -1625,7 +1742,7 @@ extension ChimeSDKMeetingsClientTypes { /// The language code specified for the Amazon Transcribe Medical engine. /// This member is required. public var languageCode: ChimeSDKMeetingsClientTypes.TranscribeMedicalLanguageCode? - /// The AWS Region passed to Amazon Transcribe Medical. If you don't specify a Region, Amazon Chime uses the meeting's Region. + /// The Amazon Web Services Region passed to Amazon Transcribe Medical. If you don't specify a Region, Amazon Chime uses the meeting's Region. public var region: ChimeSDKMeetingsClientTypes.TranscribeMedicalRegion? /// The specialty specified for the Amazon Transcribe Medical engine. /// This member is required. @@ -1788,7 +1905,7 @@ extension ChimeSDKMeetingsClientTypes { public var piiEntityTypes: Swift.String? /// Specify a preferred language from the subset of languages codes you specified in LanguageOptions. You can only use this parameter if you include IdentifyLanguage and LanguageOptions. public var preferredLanguage: ChimeSDKMeetingsClientTypes.TranscribeLanguageCode? - /// The AWS Region in which to use Amazon Transcribe. If you don't specify a Region, then the [MediaRegion](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeeting.html) of the meeting is used. However, if Amazon Transcribe is not available in the MediaRegion, then a TranscriptFailed event is sent. Use auto to use Amazon Transcribe in a Region near the meeting’s MediaRegion. For more information, refer to [Choosing a transcription Region](https://docs.aws.amazon.com/chime-sdk/latest/dg/transcription-options.html#choose-region) in the Amazon Chime SDK Developer Guide. + /// The Amazon Web Services Region in which to use Amazon Transcribe. If you don't specify a Region, then the [MediaRegion](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_CreateMeeting.html) of the meeting is used. However, if Amazon Transcribe is not available in the MediaRegion, then a TranscriptFailed event is sent. Use auto to use Amazon Transcribe in a Region near the meeting’s MediaRegion. For more information, refer to [Choosing a transcription Region](https://docs.aws.amazon.com/chime-sdk/latest/dg/transcription-options.html#choose-region) in the Amazon Chime SDK Developer Guide. public var region: ChimeSDKMeetingsClientTypes.TranscribeRegion? /// Specify how you want your vocabulary filter applied to your transcript. To replace words with ***, choose mask. To delete words, choose remove. To flag words without changing them, choose tag. public var vocabularyFilterMethod: ChimeSDKMeetingsClientTypes.TranscribeVocabularyFilterMethod? @@ -2523,15 +2640,15 @@ extension ChimeSDKMeetingsClientTypes { public var audioHostUrl: Swift.String? /// The event ingestion URL. public var eventIngestionUrl: Swift.String? - /// The screen data URL. + /// The screen data URL. This parameter is deprecated and no longer used by the Amazon Chime SDK. public var screenDataUrl: Swift.String? - /// The screen sharing URL. + /// The screen sharing URL. This parameter is deprecated and no longer used by the Amazon Chime SDK. public var screenSharingUrl: Swift.String? - /// The screen viewing URL. + /// The screen viewing URL. This parameter is deprecated and no longer used by the Amazon Chime SDK. public var screenViewingUrl: Swift.String? /// The signaling URL. public var signalingUrl: Swift.String? - /// The turn control URL. + /// The turn control URL. This parameter is deprecated and no longer used by the Amazon Chime SDK. public var turnControlUrl: Swift.String? public init( @@ -2649,7 +2766,7 @@ extension ChimeSDKMeetingsClientTypes { public var externalMeetingId: Swift.String? /// The media placement for the meeting. public var mediaPlacement: ChimeSDKMeetingsClientTypes.MediaPlacement? - /// The Region in which you create the meeting. Available values: af-south-1, ap-northeast-1, ap-northeast-2, ap-south-1, ap-southeast-1, ap-southeast-2, ca-central-1, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, sa-east-1, us-east-1, us-east-2, us-west-1, us-west-2. Available values in AWS GovCloud (US) Regions: us-gov-east-1, us-gov-west-1. + /// The Region in which you create the meeting. Available values: af-south-1, ap-northeast-1, ap-northeast-2, ap-south-1, ap-southeast-1, ap-southeast-2, ca-central-1, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, sa-east-1, us-east-1, us-east-2, us-west-1, us-west-2. Available values in Amazon Web Services GovCloud (US) Regions: us-gov-east-1, us-gov-west-1. public var mediaRegion: Swift.String? /// The ARN of the meeting. public var meetingArn: Swift.String? @@ -2724,34 +2841,64 @@ extension ChimeSDKMeetingsClientTypes { extension ChimeSDKMeetingsClientTypes.MeetingFeaturesConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case attendee = "Attendee" case audio = "Audio" + case content = "Content" + case video = "Video" } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let attendee = self.attendee { + try encodeContainer.encode(attendee, forKey: .attendee) + } if let audio = self.audio { try encodeContainer.encode(audio, forKey: .audio) } + if let content = self.content { + try encodeContainer.encode(content, forKey: .content) + } + if let video = self.video { + try encodeContainer.encode(video, forKey: .video) + } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let audioDecoded = try containerValues.decodeIfPresent(ChimeSDKMeetingsClientTypes.AudioFeatures.self, forKey: .audio) audio = audioDecoded + let videoDecoded = try containerValues.decodeIfPresent(ChimeSDKMeetingsClientTypes.VideoFeatures.self, forKey: .video) + video = videoDecoded + let contentDecoded = try containerValues.decodeIfPresent(ChimeSDKMeetingsClientTypes.ContentFeatures.self, forKey: .content) + content = contentDecoded + let attendeeDecoded = try containerValues.decodeIfPresent(ChimeSDKMeetingsClientTypes.AttendeeFeatures.self, forKey: .attendee) + attendee = attendeeDecoded } } extension ChimeSDKMeetingsClientTypes { /// The configuration settings of the features available to a meeting. public struct MeetingFeaturesConfiguration: Swift.Equatable { + /// The configuration settings for the attendee features available to a meeting. + public var attendee: ChimeSDKMeetingsClientTypes.AttendeeFeatures? /// The configuration settings for the audio features available to a meeting. public var audio: ChimeSDKMeetingsClientTypes.AudioFeatures? + /// The configuration settings for the content features available to a meeting. + public var content: ChimeSDKMeetingsClientTypes.ContentFeatures? + /// The configuration settings for the video features available to a meeting. + public var video: ChimeSDKMeetingsClientTypes.VideoFeatures? public init( - audio: ChimeSDKMeetingsClientTypes.AudioFeatures? = nil + attendee: ChimeSDKMeetingsClientTypes.AttendeeFeatures? = nil, + audio: ChimeSDKMeetingsClientTypes.AudioFeatures? = nil, + content: ChimeSDKMeetingsClientTypes.ContentFeatures? = nil, + video: ChimeSDKMeetingsClientTypes.VideoFeatures? = nil ) { + self.attendee = attendee self.audio = audio + self.content = content + self.video = video } } @@ -2870,7 +3017,7 @@ extension ChimeSDKMeetingsClientTypes.NotificationsConfiguration: Swift.CustomDe extension ChimeSDKMeetingsClientTypes { /// The configuration for resource targets to receive notifications when meeting and attendee events occur. public struct NotificationsConfiguration: Swift.Equatable { - /// The ARN of the AWS Lambda function in the notifications configuration. + /// The ARN of the Amazon Web Services Lambda function in the notifications configuration. public var lambdaFunctionArn: Swift.String? /// The ARN of the SNS topic. public var snsTopicArn: Swift.String? @@ -4480,3 +4627,73 @@ enum UpdateAttendeeCapabilitiesOutputError: ClientRuntime.HttpResponseErrorBindi } } } + +extension ChimeSDKMeetingsClientTypes.VideoFeatures: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResolution = "MaxResolution" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let maxResolution = self.maxResolution { + try encodeContainer.encode(maxResolution.rawValue, forKey: .maxResolution) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let maxResolutionDecoded = try containerValues.decodeIfPresent(ChimeSDKMeetingsClientTypes.VideoResolution.self, forKey: .maxResolution) + maxResolution = maxResolutionDecoded + } +} + +extension ChimeSDKMeetingsClientTypes { + /// The video features set for the meeting. Applies to all attendees. If you specify MeetingFeatures:Video:MaxResolution:None when you create a meeting, all API requests that include SendReceive, Send, or Receive for AttendeeCapabilities:Video will be rejected with ValidationError 400. + public struct VideoFeatures: Swift.Equatable { + /// The maximum video resolution for the meeting. Applies to all attendees. Defaults to HD. To use FHD, you must also provide a MeetingFeatures:Attendee:MaxCount value and override the default size limit of 250 attendees. + public var maxResolution: ChimeSDKMeetingsClientTypes.VideoResolution? + + public init( + maxResolution: ChimeSDKMeetingsClientTypes.VideoResolution? = nil + ) + { + self.maxResolution = maxResolution + } + } + +} + +extension ChimeSDKMeetingsClientTypes { + public enum VideoResolution: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case fhd + case hd + case `none` + case sdkUnknown(Swift.String) + + public static var allCases: [VideoResolution] { + return [ + .fhd, + .hd, + .none, + .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 .fhd: return "FHD" + case .hd: return "HD" + case .none: return "None" + 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 = VideoResolution(rawValue: rawValue) ?? VideoResolution.sdkUnknown(rawValue) + } + } +} diff --git a/Sources/Services/AWSCleanRoomsML/CleanRoomsMLClientProtocol.swift b/Sources/Services/AWSCleanRoomsML/CleanRoomsMLClientProtocol.swift index e9f73068b44..4cc0ac6bccd 100644 --- a/Sources/Services/AWSCleanRoomsML/CleanRoomsMLClientProtocol.swift +++ b/Sources/Services/AWSCleanRoomsML/CleanRoomsMLClientProtocol.swift @@ -2,7 +2,7 @@ import ClientRuntime -/// API Reference for Amazon Web Services Clean Rooms ML. +/// Welcome to the Amazon Web Services Clean Rooms ML API Reference. Amazon Web Services Clean Rooms ML provides a privacy-enhancing method for two parties to identify similar users in their data without the need to share their data with each other. The first party brings the training data to Clean Rooms so that they can create and configure an audience model (lookalike model) and associate it with a collaboration. The second party then brings their seed data to Clean Rooms and generates an audience (lookalike segment) that resembles the training data. To learn more about Amazon Web Services Clean Rooms ML concepts, procedures, and best practices, see the [Clean Rooms User Guide](https://docs.aws.amazon.com/clean-rooms/latest/userguide/machine-learning.html). To learn more about SQL commands, functions, and conditions supported in Clean Rooms, see the [Clean Rooms SQL Reference](https://docs.aws.amazon.com/clean-rooms/latest/sql-reference/sql-reference.html). public protocol CleanRoomsMLClientProtocol { /// Performs the `CreateAudienceModel` operation on the `AWSStarkControlService` service. /// diff --git a/Sources/Services/AWSCleanRoomsML/models/Models.swift b/Sources/Services/AWSCleanRoomsML/models/Models.swift index 8128921d6aa..903416097fc 100644 --- a/Sources/Services/AWSCleanRoomsML/models/Models.swift +++ b/Sources/Services/AWSCleanRoomsML/models/Models.swift @@ -1508,7 +1508,7 @@ public struct CreateConfiguredAudienceModelInput: Swift.Equatable { public var audienceModelArn: Swift.String? /// Configure the list of output sizes of audiences that can be created using this configured audience model. A request to [StartAudienceGenerationJob] that uses this configured audience model must have an audienceSize selected from this list. You can use the ABSOLUTE[AudienceSize] to configure out audience sizes using the count of identifiers in the output. You can use the Percentage[AudienceSize] to configure sizes in the range 1-100 percent. public var audienceSizeConfig: CleanRoomsMLClientTypes.AudienceSizeConfig? - /// Configure how the service tags audience generation jobs created using this configured audience model. If you specify NONE, the tags from the [StartAudienceGenerationJob] request determine the tags of the audience generation job. If you specify FROM_PARENT_RESOURCE, the audience generation job inherits the tags from the configured audience model, by default. Tags in the [StartAudienceGenerationJob] will override the default. + /// Configure how the service tags audience generation jobs created using this configured audience model. If you specify NONE, the tags from the [StartAudienceGenerationJob] request determine the tags of the audience generation job. If you specify FROM_PARENT_RESOURCE, the audience generation job inherits the tags from the configured audience model, by default. Tags in the [StartAudienceGenerationJob] will override the default. When the client is in a different account than the configured audience model, the tags from the client are never applied to a resource in the caller's account. public var childResourceTagOnCreatePolicy: CleanRoomsMLClientTypes.TagOnCreatePolicy? /// The description of the configured audience model. public var description: Swift.String? diff --git a/Sources/Services/AWSCloud9/models/Models.swift b/Sources/Services/AWSCloud9/models/Models.swift index 60709b49d63..186119114ae 100644 --- a/Sources/Services/AWSCloud9/models/Models.swift +++ b/Sources/Services/AWSCloud9/models/Models.swift @@ -331,12 +331,14 @@ public struct CreateEnvironmentEC2Input: Swift.Equatable { public var description: 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 identifier for the Amazon Machine Image (AMI) that's used to create the EC2 instance. To choose an AMI for the instance, you must specify a valid AMI alias or a valid Amazon EC2 Systems Manager (SSM) path. From December 04, 2023, you will be required to include the imageId parameter for the CreateEnvironmentEC2 action. This change will be reflected across all direct methods of communicating with the API, such as Amazon Web Services SDK, Amazon Web Services CLI and Amazon Web Services CloudFormation. This change will only affect direct API consumers, and not Cloud9 console users. From January 22, 2024, Amazon Linux (AL1) will be removed from the list of available image IDs for Cloud9. This is necessary as AL1 will reach the end of maintenance support in December 2023, and as a result will no longer receive security updates. We recommend using Amazon Linux 2 as the AMI to create your environment as it is fully supported. This change will only affect direct API consumers, and not Cloud9 console users. Since Ubuntu 18.04 has ended standard support as of May 31, 2023, we recommend you choose Ubuntu 22.04. AMI aliases + /// The identifier for the Amazon Machine Image (AMI) that's used to create the EC2 instance. To choose an AMI for the instance, you must specify a valid AMI alias or a valid Amazon EC2 Systems Manager (SSM) path. From December 04, 2023, you will be required to include the imageId parameter for the CreateEnvironmentEC2 action. This change will be reflected across all direct methods of communicating with the API, such as Amazon Web Services SDK, Amazon Web Services CLI and Amazon Web Services CloudFormation. This change will only affect direct API consumers, and not Cloud9 console users. From January 22, 2024, Amazon Linux (AL1) will be removed from the list of available image IDs for Cloud9. This is necessary as AL1 will reach the end of maintenance support in December 2023, and as a result will no longer receive security updates. We recommend using Amazon Linux 2023 as the AMI to create your environment as it is fully supported. This change will only affect direct API consumers, and not Cloud9 console users. Since Ubuntu 18.04 has ended standard support as of May 31, 2023, we recommend you choose Ubuntu 22.04. AMI aliases /// /// * Amazon Linux: amazonlinux-1-x86_64 /// /// * Amazon Linux 2: amazonlinux-2-x86_64 /// + /// * Amazon Linux 2023 (recommended): amazonlinux-2023-x86_64 + /// /// * Ubuntu 18.04: ubuntu-18.04-x86_64 /// /// * Ubuntu 22.04: ubuntu-22.04-x86_64 @@ -348,6 +350,8 @@ public struct CreateEnvironmentEC2Input: Swift.Equatable { /// /// * Amazon Linux 2: resolve:ssm:/aws/service/cloud9/amis/amazonlinux-2-x86_64 /// + /// * Amazon Linux 2023 (recommended): resolve:ssm:/aws/service/cloud9/amis/amazonlinux-2023-x86_64 + /// /// * Ubuntu 18.04: resolve:ssm:/aws/service/cloud9/amis/ubuntu-18.04-x86_64 /// /// * Ubuntu 22.04: resolve:ssm:/aws/service/cloud9/amis/ubuntu-22.04-x86_64 diff --git a/Sources/Services/AWSCloudFormation/models/Models.swift b/Sources/Services/AWSCloudFormation/models/Models.swift index 5488881d814..caa58e96206 100644 --- a/Sources/Services/AWSCloudFormation/models/Models.swift +++ b/Sources/Services/AWSCloudFormation/models/Models.swift @@ -1555,7 +1555,7 @@ extension CloudFormationClientTypes { public var description: Swift.String? /// If the change set execution status is AVAILABLE, you can execute the change set. If you can't execute the change set, the status indicates why. For example, a change set might be in an UNAVAILABLE state because CloudFormation is still creating it or in an OBSOLETE state because the stack was already updated. public var executionStatus: CloudFormationClientTypes.ExecutionStatus? - /// Indicates if the stack set imports resources that already exist. + /// Indicates if the change set imports resources that already exist. public var importExistingResources: Swift.Bool? /// Specifies the current setting of IncludeNestedStacks for the change set. public var includeNestedStacks: Swift.Bool? @@ -2041,7 +2041,7 @@ public struct CreateChangeSetInput: Swift.Equatable { public var clientToken: Swift.String? /// A description to help you identify this change set. public var description: Swift.String? - /// Indicates if the stack set imports resources that already exist. This parameter can only import resources that have custom names in templates. For more information, see [name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) in the CloudFormation User Guide. To import resources that do not accept custom names, such as EC2 instances, use the resource import feature instead. For more information, see [Bringing existing resources into CloudFormation management](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import.html) in the CloudFormation User Guide. + /// Indicates if the change set imports resources that already exist. This parameter can only import resources that have custom names in templates. For more information, see [name type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) in the CloudFormation User Guide. To import resources that do not accept custom names, such as EC2 instances, use the resource import feature instead. For more information, see [Bringing existing resources into CloudFormation management](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import.html) in the CloudFormation User Guide. public var importExistingResources: Swift.Bool? /// Creates a change set for the all nested stacks specified in the template. The default behavior of this action is set to False. To include nested sets in a change set, specify True. public var includeNestedStacks: Swift.Bool? @@ -4904,7 +4904,7 @@ public struct DescribeChangeSetOutput: Swift.Equatable { public var description: Swift.String? /// If the change set execution status is AVAILABLE, you can execute the change set. If you can't execute the change set, the status indicates why. For example, a change set might be in an UNAVAILABLE state because CloudFormation is still creating it or in an OBSOLETE state because the stack was already updated. public var executionStatus: CloudFormationClientTypes.ExecutionStatus? - /// Indicates if the stack set imports resources that already exist. This parameter can only import resources that have [custom names](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) in templates. To import resources that do not accept custom names, such as EC2 instances, use the [resource import](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import.html) feature instead. + /// Indicates if the change set imports resources that already exist. This parameter can only import resources that have [custom names](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) in templates. To import resources that do not accept custom names, such as EC2 instances, use the [resource import](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import.html) feature instead. public var importExistingResources: Swift.Bool? /// Verifies if IncludeNestedStacks is set to True. public var includeNestedStacks: Swift.Bool? diff --git a/Sources/Services/AWSCloudWatch/models/Models.swift b/Sources/Services/AWSCloudWatch/models/Models.swift index 7ea1c91e4bf..853060b5124 100644 --- a/Sources/Services/AWSCloudWatch/models/Models.swift +++ b/Sources/Services/AWSCloudWatch/models/Models.swift @@ -4538,7 +4538,7 @@ public struct GetMetricStreamOutput: Swift.Equatable { public var lastUpdateDate: ClientRuntime.Date? /// The name of the metric stream. public var name: Swift.String? - /// The output format for the stream. Valid values are json and opentelemetry0.7. For more information about metric stream output formats, see [Metric streams output formats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html). + /// The output format for the stream. Valid values are json, opentelemetry1.0, and opentelemetry0.7. For more information about metric stream output formats, see [Metric streams output formats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html). public var outputFormat: CloudWatchClientTypes.MetricStreamOutputFormat? /// The ARN of the IAM role that is used by this metric stream. public var roleArn: Swift.String? @@ -7829,7 +7829,7 @@ extension CloudWatchClientTypes { public var lastUpdateDate: ClientRuntime.Date? /// The name of the metric stream. public var name: Swift.String? - /// The output format of this metric stream. Valid values are json and opentelemetry0.7. + /// The output format of this metric stream. Valid values are json, opentelemetry1.0, and opentelemetry0.7. public var outputFormat: CloudWatchClientTypes.MetricStreamOutputFormat? /// The current state of this stream. Valid values are running and stopped. public var state: Swift.String? @@ -7931,12 +7931,14 @@ extension CloudWatchClientTypes { public enum MetricStreamOutputFormat: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case json case openTelemetry07 + case openTelemetry10 case sdkUnknown(Swift.String) public static var allCases: [MetricStreamOutputFormat] { return [ .json, .openTelemetry07, + .openTelemetry10, .sdkUnknown("") ] } @@ -7948,6 +7950,7 @@ extension CloudWatchClientTypes { switch self { case .json: return "json" case .openTelemetry07: return "opentelemetry0.7" + case .openTelemetry10: return "opentelemetry1.0" case let .sdkUnknown(s): return s } } @@ -8039,7 +8042,7 @@ extension CloudWatchClientTypes.MetricStreamStatisticsConfiguration: Swift.Codab extension CloudWatchClientTypes { /// By default, a metric stream always sends the MAX, MIN, SUM, and SAMPLECOUNT statistics for each metric that is streamed. This structure contains information for one metric that includes additional statistics in the stream. For more information about statistics, see CloudWatch, listed in [ CloudWatch statistics definitions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html). public struct MetricStreamStatisticsConfiguration: Swift.Equatable { - /// The list of additional statistics that are to be streamed for the metrics listed in the IncludeMetrics array in this structure. This list can include as many as 20 statistics. If the OutputFormat for the stream is opentelemetry0.7, the only valid values are p?? percentile statistics such as p90, p99 and so on. If the OutputFormat for the stream is json, the valid values include the abbreviations for all of the statistics listed in [ CloudWatch statistics definitions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html). For example, this includes tm98, wm90, PR(:300), and so on. + /// The list of additional statistics that are to be streamed for the metrics listed in the IncludeMetrics array in this structure. This list can include as many as 20 statistics. If the OutputFormat for the stream is opentelemetry1.0 or opentelemetry0.7, the only valid values are p?? percentile statistics such as p90, p99 and so on. If the OutputFormat for the stream is json, the valid values include the abbreviations for all of the statistics listed in [ CloudWatch statistics definitions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html). For example, this includes tm98, wm90, PR(:300), and so on. /// This member is required. public var additionalStatistics: [Swift.String]? /// An array of metric name and namespace pairs that stream the additional statistics listed in the value of the AdditionalStatistics parameter. There can be as many as 100 pairs in the array. All metrics that match the combination of metric name and namespace will be streamed with the additional statistics, no matter their dimensions. @@ -9366,9 +9369,9 @@ public struct PutMetricAlarmInput: Swift.Equatable { /// /// * arn:aws:ssm-incidents::account-id:responseplan/response-plan-name public var insufficientDataActions: [Swift.String]? - /// The name for the metric associated with the alarm. For each PutMetricAlarm operation, you must specify either MetricName or a Metrics array. If you are creating an alarm based on a math expression, you cannot specify this parameter, or any of the Dimensions, Period, Namespace, Statistic, or ExtendedStatistic parameters. Instead, you specify all this information in the Metrics array. + /// The name for the metric associated with the alarm. For each PutMetricAlarm operation, you must specify either MetricName or a Metrics array. If you are creating an alarm based on a math expression, you cannot specify this parameter, or any of the Namespace, Dimensions, Period, Unit, Statistic, or ExtendedStatistic parameters. Instead, you specify all this information in the Metrics array. public var metricName: Swift.String? - /// An array of MetricDataQuery structures that enable you to create an alarm based on the result of a metric math expression. For each PutMetricAlarm operation, you must specify either MetricName or a Metrics array. Each item in the Metrics array either retrieves a metric or performs a math expression. One item in the Metrics array is the expression that the alarm watches. You designate this expression by setting ReturnData to true for this object in the array. For more information, see [MetricDataQuery](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDataQuery.html). If you use the Metrics parameter, you cannot include the MetricName, Dimensions, Period, Namespace, Statistic, or ExtendedStatistic parameters of PutMetricAlarm in the same operation. Instead, you retrieve the metrics you are using in your math expression as part of the Metrics array. + /// An array of MetricDataQuery structures that enable you to create an alarm based on the result of a metric math expression. For each PutMetricAlarm operation, you must specify either MetricName or a Metrics array. Each item in the Metrics array either retrieves a metric or performs a math expression. One item in the Metrics array is the expression that the alarm watches. You designate this expression by setting ReturnData to true for this object in the array. For more information, see [MetricDataQuery](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDataQuery.html). If you use the Metrics parameter, you cannot include the Namespace, MetricName, Dimensions, Period, Unit, Statistic, or ExtendedStatistic parameters of PutMetricAlarm in the same operation. Instead, you retrieve the metrics you are using in your math expression as part of the Metrics array. public var metrics: [CloudWatchClientTypes.MetricDataQuery]? /// The namespace for the metric associated specified in MetricName. public var namespace: Swift.String? @@ -9419,7 +9422,7 @@ public struct PutMetricAlarmInput: Swift.Equatable { public var thresholdMetricId: Swift.String? /// Sets how this alarm is to handle missing data points. If TreatMissingData is omitted, the default behavior of missing is used. For more information, see [Configuring How CloudWatch Alarms Treats Missing Data](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data). Valid Values: breaching | notBreaching | ignore | missing Alarms that evaluate metrics in the AWS/DynamoDB namespace always ignore missing data even if you choose a different option for TreatMissingData. When an AWS/DynamoDB metric has missing data, alarms that evaluate that metric remain in their current state. public var treatMissingData: Swift.String? - /// The unit of measure for the statistic. For example, the units for the Amazon EC2 NetworkIn metric are Bytes because NetworkIn tracks the number of bytes that an instance receives on all network interfaces. You can also specify a unit when you create a custom metric. Units help provide conceptual meaning to your data. Metric data points that specify a unit of measure, such as Percent, are aggregated separately. If you don't specify Unit, CloudWatch retrieves all unit types that have been published for the metric and attempts to evaluate the alarm. Usually, metrics are published with only one unit, so the alarm works as intended. However, if the metric is published with multiple types of units and you don't specify a unit, the alarm's behavior is not defined and it behaves unpredictably. We recommend omitting Unit so that you don't inadvertently specify an incorrect unit that is not published for this metric. Doing so causes the alarm to be stuck in the INSUFFICIENT DATA state. + /// The unit of measure for the statistic. For example, the units for the Amazon EC2 NetworkIn metric are Bytes because NetworkIn tracks the number of bytes that an instance receives on all network interfaces. You can also specify a unit when you create a custom metric. Units help provide conceptual meaning to your data. Metric data points that specify a unit of measure, such as Percent, are aggregated separately. If you are creating an alarm based on a metric math expression, you can specify the unit for each metric (if needed) within the objects in the Metrics array. If you don't specify Unit, CloudWatch retrieves all unit types that have been published for the metric and attempts to evaluate the alarm. Usually, metrics are published with only one unit, so the alarm works as intended. However, if the metric is published with multiple types of units and you don't specify a unit, the alarm's behavior is not defined and it behaves unpredictably. We recommend omitting Unit so that you don't inadvertently specify an incorrect unit that is not published for this metric. Doing so causes the alarm to be stuck in the INSUFFICIENT DATA state. public var unit: CloudWatchClientTypes.StandardUnit? public init( @@ -9891,7 +9894,7 @@ public struct PutMetricStreamInput: Swift.Equatable { /// If you are creating a new metric stream, this is the name for the new stream. The name must be different than the names of other metric streams in this account and Region. If you are updating a metric stream, specify the name of that stream here. Valid characters are A-Z, a-z, 0-9, "-" and "_". /// This member is required. public var name: Swift.String? - /// The output format for the stream. Valid values are json and opentelemetry0.7. For more information about metric stream output formats, see [ Metric streams output formats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html). + /// The output format for the stream. Valid values are json, opentelemetry1.0, and opentelemetry0.7. For more information about metric stream output formats, see [ Metric streams output formats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html). /// This member is required. public var outputFormat: CloudWatchClientTypes.MetricStreamOutputFormat? /// The ARN of an IAM role that this metric stream will use to access Amazon Kinesis Data Firehose resources. This IAM role must already exist and must be in the same account as the metric stream. This IAM role must include the following permissions: @@ -9901,7 +9904,7 @@ public struct PutMetricStreamInput: Swift.Equatable { /// * firehose:PutRecordBatch /// This member is required. public var roleArn: Swift.String? - /// By default, a metric stream always sends the MAX, MIN, SUM, and SAMPLECOUNT statistics for each metric that is streamed. You can use this parameter to have the metric stream also send additional statistics in the stream. This array can have up to 100 members. For each entry in this array, you specify one or more metrics and the list of additional statistics to stream for those metrics. The additional statistics that you can stream depend on the stream's OutputFormat. If the OutputFormat is json, you can stream any additional statistic that is supported by CloudWatch, listed in [ CloudWatch statistics definitions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html). If the OutputFormat is opentelemetry0.7, you can stream percentile statistics such as p95, p99.9, and so on. + /// By default, a metric stream always sends the MAX, MIN, SUM, and SAMPLECOUNT statistics for each metric that is streamed. You can use this parameter to have the metric stream also send additional statistics in the stream. This array can have up to 100 members. For each entry in this array, you specify one or more metrics and the list of additional statistics to stream for those metrics. The additional statistics that you can stream depend on the stream's OutputFormat. If the OutputFormat is json, you can stream any additional statistic that is supported by CloudWatch, listed in [ CloudWatch statistics definitions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html). If the OutputFormat is opentelemetry1.0 or opentelemetry0.7, you can stream percentile statistics such as p95, p99.9, and so on. public var statisticsConfigurations: [CloudWatchClientTypes.MetricStreamStatisticsConfiguration]? /// A list of key-value pairs to associate with the metric stream. You can associate as many as 50 tags with a metric stream. Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values. You can use this parameter only when you are creating a new metric stream. If you are using this operation to update an existing metric stream, any tags you specify in this parameter are ignored. To change the tags of an existing metric stream, use [TagResource](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_TagResource.html) or [UntagResource](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_UntagResource.html). public var tags: [CloudWatchClientTypes.Tag]? diff --git a/Sources/Services/AWSCloudWatchLogs/CloudWatchLogsClient.swift b/Sources/Services/AWSCloudWatchLogs/CloudWatchLogsClient.swift index adb569fe5a6..4dd535fab8a 100644 --- a/Sources/Services/AWSCloudWatchLogs/CloudWatchLogsClient.swift +++ b/Sources/Services/AWSCloudWatchLogs/CloudWatchLogsClient.swift @@ -182,7 +182,7 @@ extension CloudWatchLogsClient: CloudWatchLogsClientProtocol { /// /// * Create a delivery destination, which is a logical object that represents the actual delivery destination. For more information, see [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html). /// - /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. + /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. /// /// * Use CreateDelivery to create a delivery by pairing exactly one delivery source and one delivery destination. /// @@ -1704,7 +1704,7 @@ extension CloudWatchLogsClient: CloudWatchLogsClientProtocol { /// Performs the `DescribeQueryDefinitions` operation on the `Logs_20140328` service. /// - /// This operation returns a paginated list of your saved CloudWatch Logs Insights query definitions. You can use the queryDefinitionNamePrefix parameter to limit the results to only the query definitions that have names that start with a certain string. + /// This operation returns a paginated list of your saved CloudWatch Logs Insights query definitions. You can retrieve query definitions from the current account or from a source account that is linked to the current account. You can use the queryDefinitionNamePrefix parameter to limit the results to only the query definitions that have names that start with a certain string. /// /// - Parameter DescribeQueryDefinitionsInput : [no documentation found] /// @@ -2760,7 +2760,7 @@ extension CloudWatchLogsClient: CloudWatchLogsClientProtocol { /// /// * Use PutDeliveryDestination to create a delivery destination, which is a logical object that represents the actual delivery destination. /// - /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. + /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. /// /// * Use CreateDelivery to create a delivery by pairing exactly one delivery source and one delivery destination. For more information, see [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html). /// @@ -2884,7 +2884,7 @@ extension CloudWatchLogsClient: CloudWatchLogsClientProtocol { /// /// * Use PutDeliveryDestination to create a delivery destination, which is a logical object that represents the actual delivery destination. For more information, see [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html). /// - /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. + /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. /// /// * Use CreateDelivery to create a delivery by pairing exactly one delivery source and one delivery destination. For more information, see [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html). /// @@ -3371,6 +3371,68 @@ extension CloudWatchLogsClient: CloudWatchLogsClientProtocol { return result } + /// Performs the `StartLiveTail` operation on the `Logs_20140328` service. + /// + /// Starts a Live Tail streaming session for one or more log groups. A Live Tail session returns a stream of log events that have been recently ingested in the log groups. For more information, see [Use Live Tail to view logs in near real time](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogs_LiveTail.html). The response to this operation is a response stream, over which the server sends live log events and the client receives them. The following objects are sent over the stream: + /// + /// * A single [LiveTailSessionStart](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_LiveTailSessionStart.html) object is sent at the start of the session. + /// + /// * Every second, a [LiveTailSessionUpdate](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_LiveTailSessionUpdate.html) object is sent. Each of these objects contains an array of the actual log events. If no new log events were ingested in the past second, the LiveTailSessionUpdate object will contain an empty array. The array of log events contained in a LiveTailSessionUpdate can include as many as 500 log events. If the number of log events matching the request exceeds 500 per second, the log events are sampled down to 500 log events to be included in each LiveTailSessionUpdate object. If your client consumes the log events slower than the server produces them, CloudWatch Logs buffers up to 10 LiveTailSessionUpdate events or 5000 log events, after which it starts dropping the oldest events. + /// + /// * A [SessionStreamingException](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_SessionStreamingException.html) object is returned if an unknown error occurs on the server side. + /// + /// * A [SessionTimeoutException](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_SessionTimeoutException.html) object is returned when the session times out, after it has been kept open for three hours. + /// + /// + /// You can end a session before it times out by closing the session stream or by closing the client that is receiving the stream. The session also ends if the established connection between the client and the server breaks. + /// + /// - Parameter StartLiveTailInput : [no documentation found] + /// + /// - Returns: `StartLiveTailOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have sufficient permissions to perform this action. + /// - `InvalidOperationException` : The operation is not valid on the specified resource. + /// - `InvalidParameterException` : A parameter is specified incorrectly. + /// - `LimitExceededException` : You have reached the maximum number of resources that can be created. + /// - `ResourceNotFoundException` : The specified resource does not exist. + public func startLiveTail(input: StartLiveTailInput) async throws -> StartLiveTailOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "startLiveTail") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "logs") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "startLiveTail") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware(hostPrefix: "streaming-")) + 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: "Logs_20140328.StartLiveTail")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(StartLiveTailOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `StartQuery` operation on the `Logs_20140328` service. /// /// Schedules a query of a log group using CloudWatch Logs Insights. You specify the log group and time range to query and the query string to use. For more information, see [CloudWatch Logs Insights Query Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html). After you run a query using StartQuery, the query results are stored by CloudWatch Logs. You can use [GetQueryResults](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_GetQueryResults.html) to retrieve the results of a query, using the queryId that StartQuery returns. If you have associated a KMS key with the query results in this account, then [StartQuery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_StartQuery.html) uses that key to encrypt the results when it stores them. If no key is associated with query results, the query results are encrypted with the default CloudWatch Logs encryption method. Queries time out after 60 minutes of runtime. If your queries are timing out, reduce the time range being searched or partition your query into a number of queries. If you are using CloudWatch cross-account observability, you can use this operation in a monitoring account to start a query in a linked source account. For more information, see [CloudWatch cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html). For a cross-account StartQuery operation, the query definition must be defined in the monitoring account. You can have up to 30 concurrent CloudWatch Logs insights queries, including queries that have been added to dashboards. diff --git a/Sources/Services/AWSCloudWatchLogs/CloudWatchLogsClientProtocol.swift b/Sources/Services/AWSCloudWatchLogs/CloudWatchLogsClientProtocol.swift index 33b7c5f50fd..6a423c288cc 100644 --- a/Sources/Services/AWSCloudWatchLogs/CloudWatchLogsClientProtocol.swift +++ b/Sources/Services/AWSCloudWatchLogs/CloudWatchLogsClientProtocol.swift @@ -57,7 +57,7 @@ public protocol CloudWatchLogsClientProtocol { /// /// * Create a delivery destination, which is a logical object that represents the actual delivery destination. For more information, see [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html). /// - /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. + /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. /// /// * Use CreateDelivery to create a delivery by pairing exactly one delivery source and one delivery destination. /// @@ -559,7 +559,7 @@ public protocol CloudWatchLogsClientProtocol { func describeQueries(input: DescribeQueriesInput) async throws -> DescribeQueriesOutput /// Performs the `DescribeQueryDefinitions` operation on the `Logs_20140328` service. /// - /// This operation returns a paginated list of your saved CloudWatch Logs Insights query definitions. You can use the queryDefinitionNamePrefix parameter to limit the results to only the query definitions that have names that start with a certain string. + /// This operation returns a paginated list of your saved CloudWatch Logs Insights query definitions. You can retrieve query definitions from the current account or from a source account that is linked to the current account. You can use the queryDefinitionNamePrefix parameter to limit the results to only the query definitions that have names that start with a certain string. /// /// - Parameter DescribeQueryDefinitionsInput : [no documentation found] /// @@ -901,7 +901,7 @@ public protocol CloudWatchLogsClientProtocol { /// /// * Use PutDeliveryDestination to create a delivery destination, which is a logical object that represents the actual delivery destination. /// - /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. + /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. /// /// * Use CreateDelivery to create a delivery by pairing exactly one delivery source and one delivery destination. For more information, see [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html). /// @@ -957,7 +957,7 @@ public protocol CloudWatchLogsClientProtocol { /// /// * Use PutDeliveryDestination to create a delivery destination, which is a logical object that represents the actual delivery destination. For more information, see [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html). /// - /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. + /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. /// /// * Use CreateDelivery to create a delivery by pairing exactly one delivery source and one delivery destination. For more information, see [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html). /// @@ -1137,6 +1137,34 @@ public protocol CloudWatchLogsClientProtocol { /// - `ResourceNotFoundException` : The specified resource does not exist. /// - `ServiceUnavailableException` : The service cannot complete the request. func putSubscriptionFilter(input: PutSubscriptionFilterInput) async throws -> PutSubscriptionFilterOutput + /// Performs the `StartLiveTail` operation on the `Logs_20140328` service. + /// + /// Starts a Live Tail streaming session for one or more log groups. A Live Tail session returns a stream of log events that have been recently ingested in the log groups. For more information, see [Use Live Tail to view logs in near real time](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogs_LiveTail.html). The response to this operation is a response stream, over which the server sends live log events and the client receives them. The following objects are sent over the stream: + /// + /// * A single [LiveTailSessionStart](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_LiveTailSessionStart.html) object is sent at the start of the session. + /// + /// * Every second, a [LiveTailSessionUpdate](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_LiveTailSessionUpdate.html) object is sent. Each of these objects contains an array of the actual log events. If no new log events were ingested in the past second, the LiveTailSessionUpdate object will contain an empty array. The array of log events contained in a LiveTailSessionUpdate can include as many as 500 log events. If the number of log events matching the request exceeds 500 per second, the log events are sampled down to 500 log events to be included in each LiveTailSessionUpdate object. If your client consumes the log events slower than the server produces them, CloudWatch Logs buffers up to 10 LiveTailSessionUpdate events or 5000 log events, after which it starts dropping the oldest events. + /// + /// * A [SessionStreamingException](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_SessionStreamingException.html) object is returned if an unknown error occurs on the server side. + /// + /// * A [SessionTimeoutException](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_SessionTimeoutException.html) object is returned when the session times out, after it has been kept open for three hours. + /// + /// + /// You can end a session before it times out by closing the session stream or by closing the client that is receiving the stream. The session also ends if the established connection between the client and the server breaks. + /// + /// - Parameter StartLiveTailInput : [no documentation found] + /// + /// - Returns: `StartLiveTailOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have sufficient permissions to perform this action. + /// - `InvalidOperationException` : The operation is not valid on the specified resource. + /// - `InvalidParameterException` : A parameter is specified incorrectly. + /// - `LimitExceededException` : You have reached the maximum number of resources that can be created. + /// - `ResourceNotFoundException` : The specified resource does not exist. + func startLiveTail(input: StartLiveTailInput) async throws -> StartLiveTailOutput /// Performs the `StartQuery` operation on the `Logs_20140328` service. /// /// Schedules a query of a log group using CloudWatch Logs Insights. You specify the log group and time range to query and the query string to use. For more information, see [CloudWatch Logs Insights Query Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html). After you run a query using StartQuery, the query results are stored by CloudWatch Logs. You can use [GetQueryResults](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_GetQueryResults.html) to retrieve the results of a query, using the queryId that StartQuery returns. If you have associated a KMS key with the query results in this account, then [StartQuery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_StartQuery.html) uses that key to encrypt the results when it stores them. If no key is associated with query results, the query results are encrypted with the default CloudWatch Logs encryption method. Queries time out after 60 minutes of runtime. If your queries are timing out, reduce the time range being searched or partition your query into a number of queries. If you are using CloudWatch cross-account observability, you can use this operation in a monitoring account to start a query in a linked source account. For more information, see [CloudWatch cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html). For a cross-account StartQuery operation, the query definition must be defined in the monitoring account. You can have up to 30 concurrent CloudWatch Logs insights queries, including queries that have been added to dashboards. diff --git a/Sources/Services/AWSCloudWatchLogs/models/Models.swift b/Sources/Services/AWSCloudWatchLogs/models/Models.swift index 63fbb667ebc..966026cdf14 100644 --- a/Sources/Services/AWSCloudWatchLogs/models/Models.swift +++ b/Sources/Services/AWSCloudWatchLogs/models/Models.swift @@ -1210,7 +1210,7 @@ public struct CreateLogAnomalyDetectorInput: Swift.Equatable { public var filterPattern: Swift.String? /// Optionally assigns a KMS key to secure this anomaly detector and its findings. If a key is assigned, the anomalies found and the model used by this detector are encrypted at rest with the key. If a key is assigned to an anomaly detector, a user must have permissions for both this key and for the anomaly detector to retrieve information about the anomalies that it finds. For more information about using a KMS key and to see the required IAM policy, see [Use a KMS key with an anomaly detector](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/LogsAnomalyDetection-KMS.html). public var kmsKeyId: Swift.String? - /// An array containing the ARNs of the log groups that this anomaly detector will watch. You must specify at least one ARN. + /// An array containing the ARN of the log group that this anomaly detector will watch. You can specify only one log group ARN. /// This member is required. public var logGroupArnList: [Swift.String]? /// An optional list of key-value pairs to associate with the resource. For more information about tagging, see [Tagging Amazon Web Services resources](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) @@ -1393,7 +1393,7 @@ public struct CreateLogGroupInput: Swift.Equatable { /// * The Infrequent Access log class supports a subset of CloudWatch Logs features and incurs lower costs. /// /// - /// If you omit this parameter, the default of STANDARD is used. For details about the features supported by each class, see [Log classes](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch_Logs_Log_Classes.html) + /// If you omit this parameter, the default of STANDARD is used. After a log group is created, its class can't be changed. For details about the features supported by each class, see [Log classes](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch_Logs_Log_Classes.html) public var logGroupClass: CloudWatchLogsClientTypes.LogGroupClass? /// A name for the log group. /// This member is required. @@ -2994,7 +2994,7 @@ extension CloudWatchLogsClientTypes { /// /// * Create a delivery destination, which is a logical object that represents the actual delivery destination. /// - /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. + /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. /// /// * Create a delivery by pairing exactly one delivery source and one delivery destination. For more information, see [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html). /// @@ -3185,7 +3185,7 @@ extension CloudWatchLogsClientTypes { /// /// * Create a delivery destination, which is a logical object that represents the actual delivery destination. For more information, see [PutDeliveryDestination](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html). /// - /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. + /// * If you are delivering logs cross-account, you must use [PutDeliveryDestinationPolicy](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html) in the destination account to assign an IAM policy to the destination. This policy allows delivery to that destination. /// /// * Create a delivery by pairing exactly one delivery source and one delivery destination. For more information, see [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html). /// @@ -8254,6 +8254,294 @@ enum ListTagsLogGroupOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension CloudWatchLogsClientTypes.LiveTailSessionLogEvent: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case ingestionTime + case logGroupIdentifier + case logStreamName + case message + case timestamp + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let ingestionTime = self.ingestionTime { + try encodeContainer.encode(ingestionTime, forKey: .ingestionTime) + } + if let logGroupIdentifier = self.logGroupIdentifier { + try encodeContainer.encode(logGroupIdentifier, forKey: .logGroupIdentifier) + } + if let logStreamName = self.logStreamName { + try encodeContainer.encode(logStreamName, forKey: .logStreamName) + } + if let message = self.message { + try encodeContainer.encode(message, forKey: .message) + } + if let timestamp = self.timestamp { + try encodeContainer.encode(timestamp, forKey: .timestamp) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let logStreamNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .logStreamName) + logStreamName = logStreamNameDecoded + let logGroupIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .logGroupIdentifier) + logGroupIdentifier = logGroupIdentifierDecoded + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + let timestampDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .timestamp) + timestamp = timestampDecoded + let ingestionTimeDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .ingestionTime) + ingestionTime = ingestionTimeDecoded + } +} + +extension CloudWatchLogsClientTypes { + /// This object contains the information for one log event returned in a Live Tail stream. + public struct LiveTailSessionLogEvent: Swift.Equatable { + /// The timestamp specifying when this log event was ingested into the log group. + public var ingestionTime: Swift.Int? + /// The name or ARN of the log group that ingested this log event. + public var logGroupIdentifier: Swift.String? + /// The name of the log stream that ingested this log event. + public var logStreamName: Swift.String? + /// The log event message text. + public var message: Swift.String? + /// The timestamp specifying when this log event was created. + public var timestamp: Swift.Int? + + public init( + ingestionTime: Swift.Int? = nil, + logGroupIdentifier: Swift.String? = nil, + logStreamName: Swift.String? = nil, + message: Swift.String? = nil, + timestamp: Swift.Int? = nil + ) + { + self.ingestionTime = ingestionTime + self.logGroupIdentifier = logGroupIdentifier + self.logStreamName = logStreamName + self.message = message + self.timestamp = timestamp + } + } + +} + +extension CloudWatchLogsClientTypes.LiveTailSessionMetadata: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case sampled + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if sampled != false { + try encodeContainer.encode(sampled, forKey: .sampled) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let sampledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .sampled) ?? false + sampled = sampledDecoded + } +} + +extension CloudWatchLogsClientTypes { + /// This object contains the metadata for one LiveTailSessionUpdate structure. It indicates whether that update includes only a sample of 500 log events out of a larger number of ingested log events, or if it contains all of the matching log events ingested during that second of time. + public struct LiveTailSessionMetadata: Swift.Equatable { + /// If this is true, then more than 500 log events matched the request for this update, and the sessionResults includes a sample of 500 of those events. If this is false, then 500 or fewer log events matched the request for this update, so no sampling was necessary. In this case, the sessionResults array includes all log events that matched your request during this time. + public var sampled: Swift.Bool + + public init( + sampled: Swift.Bool = false + ) + { + self.sampled = sampled + } + } + +} + +extension CloudWatchLogsClientTypes.LiveTailSessionStart: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case logEventFilterPattern + case logGroupIdentifiers + case logStreamNamePrefixes + case logStreamNames + case requestId + case sessionId + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let logEventFilterPattern = self.logEventFilterPattern { + try encodeContainer.encode(logEventFilterPattern, forKey: .logEventFilterPattern) + } + if let logGroupIdentifiers = logGroupIdentifiers { + var logGroupIdentifiersContainer = encodeContainer.nestedUnkeyedContainer(forKey: .logGroupIdentifiers) + for loggroupidentifier0 in logGroupIdentifiers { + try logGroupIdentifiersContainer.encode(loggroupidentifier0) + } + } + if let logStreamNamePrefixes = logStreamNamePrefixes { + var logStreamNamePrefixesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .logStreamNamePrefixes) + for logstreamname0 in logStreamNamePrefixes { + try logStreamNamePrefixesContainer.encode(logstreamname0) + } + } + if let logStreamNames = logStreamNames { + var logStreamNamesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .logStreamNames) + for logstreamname0 in logStreamNames { + try logStreamNamesContainer.encode(logstreamname0) + } + } + if let requestId = self.requestId { + try encodeContainer.encode(requestId, forKey: .requestId) + } + if let sessionId = self.sessionId { + try encodeContainer.encode(sessionId, forKey: .sessionId) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) + requestId = requestIdDecoded + let sessionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sessionId) + sessionId = sessionIdDecoded + let logGroupIdentifiersContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .logGroupIdentifiers) + var logGroupIdentifiersDecoded0:[Swift.String]? = nil + if let logGroupIdentifiersContainer = logGroupIdentifiersContainer { + logGroupIdentifiersDecoded0 = [Swift.String]() + for string0 in logGroupIdentifiersContainer { + if let string0 = string0 { + logGroupIdentifiersDecoded0?.append(string0) + } + } + } + logGroupIdentifiers = logGroupIdentifiersDecoded0 + let logStreamNamesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .logStreamNames) + var logStreamNamesDecoded0:[Swift.String]? = nil + if let logStreamNamesContainer = logStreamNamesContainer { + logStreamNamesDecoded0 = [Swift.String]() + for string0 in logStreamNamesContainer { + if let string0 = string0 { + logStreamNamesDecoded0?.append(string0) + } + } + } + logStreamNames = logStreamNamesDecoded0 + let logStreamNamePrefixesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .logStreamNamePrefixes) + var logStreamNamePrefixesDecoded0:[Swift.String]? = nil + if let logStreamNamePrefixesContainer = logStreamNamePrefixesContainer { + logStreamNamePrefixesDecoded0 = [Swift.String]() + for string0 in logStreamNamePrefixesContainer { + if let string0 = string0 { + logStreamNamePrefixesDecoded0?.append(string0) + } + } + } + logStreamNamePrefixes = logStreamNamePrefixesDecoded0 + let logEventFilterPatternDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .logEventFilterPattern) + logEventFilterPattern = logEventFilterPatternDecoded + } +} + +extension CloudWatchLogsClientTypes { + /// This object contains information about this Live Tail session, including the log groups included and the log stream filters, if any. + public struct LiveTailSessionStart: Swift.Equatable { + /// An optional pattern to filter the results to include only log events that match the pattern. For example, a filter pattern of error 404 displays only log events that include both error and 404. For more information about filter pattern syntax, see [Filter and Pattern Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html). + public var logEventFilterPattern: Swift.String? + /// An array of the names and ARNs of the log groups included in this Live Tail session. + public var logGroupIdentifiers: [Swift.String]? + /// If your StartLiveTail operation request included a logStreamNamePrefixes parameter that filtered the session to only include log streams that have names that start with certain prefixes, these prefixes are listed here. + public var logStreamNamePrefixes: [Swift.String]? + /// If your StartLiveTail operation request included a logStreamNames parameter that filtered the session to only include certain log streams, these streams are listed here. + public var logStreamNames: [Swift.String]? + /// The unique ID generated by CloudWatch Logs to identify this Live Tail session request. + public var requestId: Swift.String? + /// The unique ID generated by CloudWatch Logs to identify this Live Tail session. + public var sessionId: Swift.String? + + public init( + logEventFilterPattern: Swift.String? = nil, + logGroupIdentifiers: [Swift.String]? = nil, + logStreamNamePrefixes: [Swift.String]? = nil, + logStreamNames: [Swift.String]? = nil, + requestId: Swift.String? = nil, + sessionId: Swift.String? = nil + ) + { + self.logEventFilterPattern = logEventFilterPattern + self.logGroupIdentifiers = logGroupIdentifiers + self.logStreamNamePrefixes = logStreamNamePrefixes + self.logStreamNames = logStreamNames + self.requestId = requestId + self.sessionId = sessionId + } + } + +} + +extension CloudWatchLogsClientTypes.LiveTailSessionUpdate: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case sessionMetadata + case sessionResults + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let sessionMetadata = self.sessionMetadata { + try encodeContainer.encode(sessionMetadata, forKey: .sessionMetadata) + } + if let sessionResults = sessionResults { + var sessionResultsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .sessionResults) + for livetailsessionlogevent0 in sessionResults { + try sessionResultsContainer.encode(livetailsessionlogevent0) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let sessionMetadataDecoded = try containerValues.decodeIfPresent(CloudWatchLogsClientTypes.LiveTailSessionMetadata.self, forKey: .sessionMetadata) + sessionMetadata = sessionMetadataDecoded + let sessionResultsContainer = try containerValues.decodeIfPresent([CloudWatchLogsClientTypes.LiveTailSessionLogEvent?].self, forKey: .sessionResults) + var sessionResultsDecoded0:[CloudWatchLogsClientTypes.LiveTailSessionLogEvent]? = nil + if let sessionResultsContainer = sessionResultsContainer { + sessionResultsDecoded0 = [CloudWatchLogsClientTypes.LiveTailSessionLogEvent]() + for structure0 in sessionResultsContainer { + if let structure0 = structure0 { + sessionResultsDecoded0?.append(structure0) + } + } + } + sessionResults = sessionResultsDecoded0 + } +} + +extension CloudWatchLogsClientTypes { + /// This object contains the log events and metadata for a Live Tail session. + public struct LiveTailSessionUpdate: Swift.Equatable { + /// This object contains the session metadata for a Live Tail session. + public var sessionMetadata: CloudWatchLogsClientTypes.LiveTailSessionMetadata? + /// An array, where each member of the array includes the information for one log event in the Live Tail session. A sessionResults array can include as many as 500 log events. If the number of log events matching the request exceeds 500 per second, the log events are sampled down to 500 log events to be included in each sessionUpdate structure. + public var sessionResults: [CloudWatchLogsClientTypes.LiveTailSessionLogEvent]? + + public init( + sessionMetadata: CloudWatchLogsClientTypes.LiveTailSessionMetadata? = nil, + sessionResults: [CloudWatchLogsClientTypes.LiveTailSessionLogEvent]? = nil + ) + { + self.sessionMetadata = sessionMetadata + self.sessionResults = sessionResults + } + } + +} + extension CloudWatchLogsClientTypes.LogGroup: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case arn @@ -11778,6 +12066,92 @@ extension ServiceUnavailableExceptionBody: Swift.Decodable { } } +extension SessionStreamingException: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let message = self.properties.message { + try encodeContainer.encode(message, forKey: .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) + properties.message = messageDecoded + } +} + +/// his exception is returned if an unknown error occurs during a Live Tail session. +public struct SessionStreamingException: 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 { "SessionStreamingException" } + 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 + } +} + +extension SessionTimeoutException: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let message = self.properties.message { + try encodeContainer.encode(message, forKey: .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) + properties.message = messageDecoded + } +} + +/// This exception is returned in a Live Tail stream when the Live Tail session times out. Live Tail sessions time out after three hours. +public struct SessionTimeoutException: 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 { "SessionTimeoutException" } + 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 + } +} + extension CloudWatchLogsClientTypes { public enum StandardUnit: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case bits @@ -11885,6 +12259,212 @@ extension CloudWatchLogsClientTypes { } } +extension StartLiveTailInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case logEventFilterPattern + case logGroupIdentifiers + case logStreamNamePrefixes + case logStreamNames + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let logEventFilterPattern = self.logEventFilterPattern { + try encodeContainer.encode(logEventFilterPattern, forKey: .logEventFilterPattern) + } + if let logGroupIdentifiers = logGroupIdentifiers { + var logGroupIdentifiersContainer = encodeContainer.nestedUnkeyedContainer(forKey: .logGroupIdentifiers) + for loggroupidentifier0 in logGroupIdentifiers { + try logGroupIdentifiersContainer.encode(loggroupidentifier0) + } + } + if let logStreamNamePrefixes = logStreamNamePrefixes { + var logStreamNamePrefixesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .logStreamNamePrefixes) + for logstreamname0 in logStreamNamePrefixes { + try logStreamNamePrefixesContainer.encode(logstreamname0) + } + } + if let logStreamNames = logStreamNames { + var logStreamNamesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .logStreamNames) + for logstreamname0 in logStreamNames { + try logStreamNamesContainer.encode(logstreamname0) + } + } + } +} + +extension StartLiveTailInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct StartLiveTailInput: Swift.Equatable { + /// An optional pattern to use to filter the results to include only log events that match the pattern. For example, a filter pattern of error 404 causes only log events that include both error and 404 to be included in the Live Tail stream. Regular expression filter patterns are supported. For more information about filter pattern syntax, see [Filter and Pattern Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html). + public var logEventFilterPattern: Swift.String? + /// An array where each item in the array is a log group to include in the Live Tail session. Specify each log group by its ARN. If you specify an ARN, the ARN can't end with an asterisk (*). You can include up to 10 log groups. + /// This member is required. + public var logGroupIdentifiers: [Swift.String]? + /// If you specify this parameter, then only log events in the log streams that have names that start with the prefixes that you specify here are included in the Live Tail session. You can specify this parameter only if you specify only one log group in logGroupIdentifiers. + public var logStreamNamePrefixes: [Swift.String]? + /// If you specify this parameter, then only log events in the log streams that you specify here are included in the Live Tail session. You can specify this parameter only if you specify only one log group in logGroupIdentifiers. + public var logStreamNames: [Swift.String]? + + public init( + logEventFilterPattern: Swift.String? = nil, + logGroupIdentifiers: [Swift.String]? = nil, + logStreamNamePrefixes: [Swift.String]? = nil, + logStreamNames: [Swift.String]? = nil + ) + { + self.logEventFilterPattern = logEventFilterPattern + self.logGroupIdentifiers = logGroupIdentifiers + self.logStreamNamePrefixes = logStreamNamePrefixes + self.logStreamNames = logStreamNames + } +} + +struct StartLiveTailInputBody: Swift.Equatable { + let logGroupIdentifiers: [Swift.String]? + let logStreamNames: [Swift.String]? + let logStreamNamePrefixes: [Swift.String]? + let logEventFilterPattern: Swift.String? +} + +extension StartLiveTailInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case logEventFilterPattern + case logGroupIdentifiers + case logStreamNamePrefixes + case logStreamNames + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let logGroupIdentifiersContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .logGroupIdentifiers) + var logGroupIdentifiersDecoded0:[Swift.String]? = nil + if let logGroupIdentifiersContainer = logGroupIdentifiersContainer { + logGroupIdentifiersDecoded0 = [Swift.String]() + for string0 in logGroupIdentifiersContainer { + if let string0 = string0 { + logGroupIdentifiersDecoded0?.append(string0) + } + } + } + logGroupIdentifiers = logGroupIdentifiersDecoded0 + let logStreamNamesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .logStreamNames) + var logStreamNamesDecoded0:[Swift.String]? = nil + if let logStreamNamesContainer = logStreamNamesContainer { + logStreamNamesDecoded0 = [Swift.String]() + for string0 in logStreamNamesContainer { + if let string0 = string0 { + logStreamNamesDecoded0?.append(string0) + } + } + } + logStreamNames = logStreamNamesDecoded0 + let logStreamNamePrefixesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .logStreamNamePrefixes) + var logStreamNamePrefixesDecoded0:[Swift.String]? = nil + if let logStreamNamePrefixesContainer = logStreamNamePrefixesContainer { + logStreamNamePrefixesDecoded0 = [Swift.String]() + for string0 in logStreamNamePrefixesContainer { + if let string0 = string0 { + logStreamNamePrefixesDecoded0?.append(string0) + } + } + } + logStreamNamePrefixes = logStreamNamePrefixesDecoded0 + let logEventFilterPatternDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .logEventFilterPattern) + logEventFilterPattern = logEventFilterPatternDecoded + } +} + +extension StartLiveTailOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + if case let .stream(stream) = httpResponse.body, let responseDecoder = decoder { + let messageDecoder = AWSClientRuntime.AWSEventStream.AWSMessageDecoder() + let decoderStream = ClientRuntime.EventStream.DefaultMessageDecoderStream(stream: stream, messageDecoder: messageDecoder, responseDecoder: responseDecoder) + self.responseStream = decoderStream.toAsyncStream() + } else { + self.responseStream = nil + } + } +} + +public struct StartLiveTailOutput: Swift.Equatable { + /// An object that includes the stream returned by your request. It can include both log events and exceptions. + public var responseStream: AsyncThrowingStream? + + public init( + responseStream: AsyncThrowingStream? = nil + ) + { + self.responseStream = responseStream + } +} + +enum StartLiveTailOutputError: 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 "InvalidOperationException": return try await InvalidOperationException(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 "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 CloudWatchLogsClientTypes.StartLiveTailResponseStream: ClientRuntime.MessageUnmarshallable { + public init(message: ClientRuntime.EventStream.Message, decoder: ClientRuntime.ResponseDecoder) throws { + switch try message.type() { + case .event(let params): + switch params.eventType { + case "sessionStart": + self = .sessionstart(try decoder.decode(responseBody: message.payload)) + case "sessionUpdate": + self = .sessionupdate(try decoder.decode(responseBody: message.payload)) + default: + self = .sdkUnknown("error processing event stream, unrecognized event: \(params.eventType)") + } + case .exception(let params): + let makeError: (ClientRuntime.EventStream.Message, ClientRuntime.EventStream.MessageType.ExceptionParams) throws -> Swift.Error = { message, params in + switch params.exceptionType { + case "SessionTimeoutException": + return try decoder.decode(responseBody: message.payload) as SessionTimeoutException + case "SessionStreamingException": + return try decoder.decode(responseBody: message.payload) as SessionStreamingException + default: + let httpResponse = HttpResponse(body: .data(message.payload), statusCode: .ok) + return AWSClientRuntime.UnknownAWSHTTPServiceError(httpResponse: httpResponse, message: "error processing event stream, unrecognized ':exceptionType': \(params.exceptionType); contentType: \(params.contentType ?? "nil")", requestID: nil, typeName: nil) + } + } + let error = try makeError(message, params) + throw error + case .error(let params): + let httpResponse = HttpResponse(body: .data(message.payload), statusCode: .ok) + throw AWSClientRuntime.UnknownAWSHTTPServiceError(httpResponse: httpResponse, message: "error processing event stream, unrecognized ':errorType': \(params.errorCode); message: \(params.message ?? "nil")", requestID: nil, typeName: nil) + case .unknown(messageType: let messageType): + throw ClientRuntime.ClientError.unknownError("unrecognized event stream message ':message-type': \(messageType)") + } + } +} + +extension CloudWatchLogsClientTypes { + /// This object includes the stream returned by your [StartLiveTail](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_StartLiveTail.html) request. + public enum StartLiveTailResponseStream: Swift.Equatable { + /// This object contains information about this Live Tail session, including the log groups included and the log stream filters, if any. + case sessionstart(CloudWatchLogsClientTypes.LiveTailSessionStart) + /// This object contains the log events and session metadata. + case sessionupdate(CloudWatchLogsClientTypes.LiveTailSessionUpdate) + case sdkUnknown(Swift.String) + } + +} + extension StartQueryInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case endTime diff --git a/Sources/Services/AWSCodeDeploy/CodeDeployClient.swift b/Sources/Services/AWSCodeDeploy/CodeDeployClient.swift index ef538a29739..3a4b2ba31a1 100644 --- a/Sources/Services/AWSCodeDeploy/CodeDeployClient.swift +++ b/Sources/Services/AWSCodeDeploy/CodeDeployClient.swift @@ -704,6 +704,7 @@ extension CodeDeployClient: CodeDeployClientProtocol { /// - `InvalidDeploymentConfigNameException` : The deployment configuration name was specified in an invalid format. /// - `InvalidMinimumHealthyHostValueException` : The minimum healthy instance value was specified in an invalid format. /// - `InvalidTrafficRoutingConfigurationException` : The configuration that specifies how traffic is routed during a deployment is invalid. + /// - `InvalidZonalDeploymentConfigurationException` : The ZonalConfig object is not valid. public func createDeploymentConfig(input: CreateDeploymentConfigInput) async throws -> CreateDeploymentConfigOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1805,6 +1806,7 @@ extension CodeDeployClient: CodeDeployClientProtocol { /// - `InvalidInstanceStatusException` : The specified instance status does not exist. /// - `InvalidInstanceTypeException` : An invalid instance type was specified for instances in a blue/green deployment. Valid values include "Blue" for an original environment and "Green" for a replacement environment. /// - `InvalidNextTokenException` : The next token was specified in an invalid format. + /// - `InvalidTargetFilterNameException` : The target filter name is invalid. public func listDeploymentTargets(input: ListDeploymentTargetsInput) async throws -> ListDeploymentTargetsOutput { let context = ClientRuntime.HttpContextBuilder() diff --git a/Sources/Services/AWSCodeDeploy/CodeDeployClientProtocol.swift b/Sources/Services/AWSCodeDeploy/CodeDeployClientProtocol.swift index f551584847e..534aff71722 100644 --- a/Sources/Services/AWSCodeDeploy/CodeDeployClientProtocol.swift +++ b/Sources/Services/AWSCodeDeploy/CodeDeployClientProtocol.swift @@ -288,6 +288,7 @@ public protocol CodeDeployClientProtocol { /// - `InvalidDeploymentConfigNameException` : The deployment configuration name was specified in an invalid format. /// - `InvalidMinimumHealthyHostValueException` : The minimum healthy instance value was specified in an invalid format. /// - `InvalidTrafficRoutingConfigurationException` : The configuration that specifies how traffic is routed during a deployment is invalid. + /// - `InvalidZonalDeploymentConfigurationException` : The ZonalConfig object is not valid. func createDeploymentConfig(input: CreateDeploymentConfigInput) async throws -> CreateDeploymentConfigOutput /// Performs the `CreateDeploymentGroup` operation on the `CodeDeploy_20141006` service. /// @@ -698,6 +699,7 @@ public protocol CodeDeployClientProtocol { /// - `InvalidInstanceStatusException` : The specified instance status does not exist. /// - `InvalidInstanceTypeException` : An invalid instance type was specified for instances in a blue/green deployment. Valid values include "Blue" for an original environment and "Green" for a replacement environment. /// - `InvalidNextTokenException` : The next token was specified in an invalid format. + /// - `InvalidTargetFilterNameException` : The target filter name is invalid. func listDeploymentTargets(input: ListDeploymentTargetsInput) async throws -> ListDeploymentTargetsOutput /// Performs the `ListGitHubAccountTokenNames` operation on the `CodeDeploy_20141006` service. /// diff --git a/Sources/Services/AWSCodeDeploy/models/Models.swift b/Sources/Services/AWSCodeDeploy/models/Models.swift index 6f12852252b..73a85ef5a54 100644 --- a/Sources/Services/AWSCodeDeploy/models/Models.swift +++ b/Sources/Services/AWSCodeDeploy/models/Models.swift @@ -818,6 +818,7 @@ extension CodeDeployClientTypes.AutoScalingGroup: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case hook case name + case terminationHook } public func encode(to encoder: Swift.Encoder) throws { @@ -828,6 +829,9 @@ extension CodeDeployClientTypes.AutoScalingGroup: Swift.Codable { if let name = self.name { try encodeContainer.encode(name, forKey: .name) } + if let terminationHook = self.terminationHook { + try encodeContainer.encode(terminationHook, forKey: .terminationHook) + } } public init(from decoder: Swift.Decoder) throws { @@ -836,24 +840,30 @@ extension CodeDeployClientTypes.AutoScalingGroup: Swift.Codable { name = nameDecoded let hookDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .hook) hook = hookDecoded + let terminationHookDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .terminationHook) + terminationHook = terminationHookDecoded } } extension CodeDeployClientTypes { /// Information about an Auto Scaling group. public struct AutoScalingGroup: Swift.Equatable { - /// An Auto Scaling lifecycle event hook name. + /// The name of the launch hook that CodeDeploy installed into the Auto Scaling group. For more information about the launch hook, see [How Amazon EC2 Auto Scaling works with CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-auto-scaling.html#integrations-aws-auto-scaling-behaviors) in the CodeDeploy User Guide. public var hook: Swift.String? /// The Auto Scaling group name. public var name: Swift.String? + /// The name of the termination hook that CodeDeploy installed into the Auto Scaling group. For more information about the termination hook, see [Enabling termination deployments during Auto Scaling scale-in events](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-auto-scaling.html#integrations-aws-auto-scaling-behaviors-hook-enable) in the CodeDeploy User Guide. + public var terminationHook: Swift.String? public init( hook: Swift.String? = nil, - name: Swift.String? = nil + name: Swift.String? = nil, + terminationHook: Swift.String? = nil ) { self.hook = hook self.name = name + self.terminationHook = terminationHook } } @@ -1474,6 +1484,7 @@ extension BatchGetDeploymentTargetsInput: ClientRuntime.URLPathProvider { public struct BatchGetDeploymentTargetsInput: Swift.Equatable { /// The unique ID of a deployment. + /// This member is required. public var deploymentId: Swift.String? /// The unique IDs of the deployment targets. The compute platform of the deployment determines the type of the targets and their formats. The maximum number of deployment target IDs you can specify is 25. /// @@ -1484,6 +1495,7 @@ public struct BatchGetDeploymentTargetsInput: Swift.Equatable { /// * For deployments that use the Amazon ECS compute platform, the target IDs are pairs of Amazon ECS clusters and services specified using the format :. Their target type is ecsTarget. /// /// * For deployments that are deployed with CloudFormation, the target IDs are CloudFormation stack IDs. Their target type is cloudFormationTarget. + /// This member is required. public var targetIds: [Swift.String]? public init( @@ -2483,6 +2495,7 @@ extension CreateDeploymentConfigInput: Swift.Encodable { case deploymentConfigName case minimumHealthyHosts case trafficRoutingConfig + case zonalConfig } public func encode(to encoder: Swift.Encoder) throws { @@ -2499,6 +2512,9 @@ extension CreateDeploymentConfigInput: Swift.Encodable { if let trafficRoutingConfig = self.trafficRoutingConfig { try encodeContainer.encode(trafficRoutingConfig, forKey: .trafficRoutingConfig) } + if let zonalConfig = self.zonalConfig { + try encodeContainer.encode(zonalConfig, forKey: .zonalConfig) + } } } @@ -2526,18 +2542,22 @@ public struct CreateDeploymentConfigInput: Swift.Equatable { public var minimumHealthyHosts: CodeDeployClientTypes.MinimumHealthyHosts? /// The configuration that specifies how the deployment traffic is routed. public var trafficRoutingConfig: CodeDeployClientTypes.TrafficRoutingConfig? + /// Configure the ZonalConfig object if you want CodeDeploy to deploy your application to one [Availability Zone](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones) at a time, within an Amazon Web Services Region. For more information about the zonal configuration feature, see [zonal configuration](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations-create.html#zonal-config) in the CodeDeploy User Guide. + public var zonalConfig: CodeDeployClientTypes.ZonalConfig? public init( computePlatform: CodeDeployClientTypes.ComputePlatform? = nil, deploymentConfigName: Swift.String? = nil, minimumHealthyHosts: CodeDeployClientTypes.MinimumHealthyHosts? = nil, - trafficRoutingConfig: CodeDeployClientTypes.TrafficRoutingConfig? = nil + trafficRoutingConfig: CodeDeployClientTypes.TrafficRoutingConfig? = nil, + zonalConfig: CodeDeployClientTypes.ZonalConfig? = nil ) { self.computePlatform = computePlatform self.deploymentConfigName = deploymentConfigName self.minimumHealthyHosts = minimumHealthyHosts self.trafficRoutingConfig = trafficRoutingConfig + self.zonalConfig = zonalConfig } } @@ -2546,6 +2566,7 @@ struct CreateDeploymentConfigInputBody: Swift.Equatable { let minimumHealthyHosts: CodeDeployClientTypes.MinimumHealthyHosts? let trafficRoutingConfig: CodeDeployClientTypes.TrafficRoutingConfig? let computePlatform: CodeDeployClientTypes.ComputePlatform? + let zonalConfig: CodeDeployClientTypes.ZonalConfig? } extension CreateDeploymentConfigInputBody: Swift.Decodable { @@ -2554,6 +2575,7 @@ extension CreateDeploymentConfigInputBody: Swift.Decodable { case deploymentConfigName case minimumHealthyHosts case trafficRoutingConfig + case zonalConfig } public init(from decoder: Swift.Decoder) throws { @@ -2566,6 +2588,8 @@ extension CreateDeploymentConfigInputBody: Swift.Decodable { trafficRoutingConfig = trafficRoutingConfigDecoded let computePlatformDecoded = try containerValues.decodeIfPresent(CodeDeployClientTypes.ComputePlatform.self, forKey: .computePlatform) computePlatform = computePlatformDecoded + let zonalConfigDecoded = try containerValues.decodeIfPresent(CodeDeployClientTypes.ZonalConfig.self, forKey: .zonalConfig) + zonalConfig = zonalConfigDecoded } } @@ -2622,6 +2646,7 @@ enum CreateDeploymentConfigOutputError: ClientRuntime.HttpResponseErrorBinding { case "InvalidDeploymentConfigNameException": return try await InvalidDeploymentConfigNameException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InvalidMinimumHealthyHostValueException": return try await InvalidMinimumHealthyHostValueException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InvalidTrafficRoutingConfigurationException": return try await InvalidTrafficRoutingConfigurationException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidZonalDeploymentConfigurationException": return try await InvalidZonalDeploymentConfigurationException(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) } } @@ -2646,6 +2671,7 @@ extension CreateDeploymentGroupInput: Swift.Encodable { case outdatedInstancesStrategy case serviceRoleArn case tags + case terminationHookEnabled case triggerConfigurations } @@ -2717,6 +2743,9 @@ extension CreateDeploymentGroupInput: Swift.Encodable { try tagsContainer.encode(tag0) } } + if let terminationHookEnabled = self.terminationHookEnabled { + try encodeContainer.encode(terminationHookEnabled, forKey: .terminationHookEnabled) + } if let triggerConfigurations = triggerConfigurations { var triggerConfigurationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .triggerConfigurations) for triggerconfig0 in triggerConfigurations { @@ -2771,6 +2800,8 @@ public struct CreateDeploymentGroupInput: Swift.Equatable { public var serviceRoleArn: Swift.String? /// The metadata that you apply to CodeDeploy deployment groups to help you organize and categorize them. Each tag consists of a key and an optional value, both of which you define. public var tags: [CodeDeployClientTypes.Tag]? + /// This parameter only applies if you are using CodeDeploy with Amazon EC2 Auto Scaling. For more information, see [Integrating CodeDeploy with Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-auto-scaling.html) in the CodeDeploy User Guide. Set terminationHookEnabled to true to have CodeDeploy install a termination hook into your Auto Scaling group when you create a deployment group. When this hook is installed, CodeDeploy will perform termination deployments. For information about termination deployments, see [Enabling termination deployments during Auto Scaling scale-in events](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-auto-scaling.html#integrations-aws-auto-scaling-behaviors-hook-enable) in the CodeDeploy User Guide. For more information about Auto Scaling scale-in events, see the [Scale in](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-in) topic in the Amazon EC2 Auto Scaling User Guide. + public var terminationHookEnabled: Swift.Bool? /// Information about triggers to create when the deployment group is created. For examples, see [Create a Trigger for an CodeDeploy Event](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-notify-sns.html) in the CodeDeploy User Guide. public var triggerConfigurations: [CodeDeployClientTypes.TriggerConfig]? @@ -2792,6 +2823,7 @@ public struct CreateDeploymentGroupInput: Swift.Equatable { outdatedInstancesStrategy: CodeDeployClientTypes.OutdatedInstancesStrategy? = nil, serviceRoleArn: Swift.String? = nil, tags: [CodeDeployClientTypes.Tag]? = nil, + terminationHookEnabled: Swift.Bool? = nil, triggerConfigurations: [CodeDeployClientTypes.TriggerConfig]? = nil ) { @@ -2812,6 +2844,7 @@ public struct CreateDeploymentGroupInput: Swift.Equatable { self.outdatedInstancesStrategy = outdatedInstancesStrategy self.serviceRoleArn = serviceRoleArn self.tags = tags + self.terminationHookEnabled = terminationHookEnabled self.triggerConfigurations = triggerConfigurations } } @@ -2835,6 +2868,7 @@ struct CreateDeploymentGroupInputBody: Swift.Equatable { let ecsServices: [CodeDeployClientTypes.ECSService]? let onPremisesTagSet: CodeDeployClientTypes.OnPremisesTagSet? let tags: [CodeDeployClientTypes.Tag]? + let terminationHookEnabled: Swift.Bool? } extension CreateDeploymentGroupInputBody: Swift.Decodable { @@ -2856,6 +2890,7 @@ extension CreateDeploymentGroupInputBody: Swift.Decodable { case outdatedInstancesStrategy case serviceRoleArn case tags + case terminationHookEnabled case triggerConfigurations } @@ -2951,6 +2986,8 @@ extension CreateDeploymentGroupInputBody: Swift.Decodable { } } tags = tagsDecoded0 + let terminationHookEnabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .terminationHookEnabled) + terminationHookEnabled = terminationHookEnabledDecoded } } @@ -3965,6 +4002,7 @@ extension CodeDeployClientTypes.DeploymentConfigInfo: Swift.Codable { case deploymentConfigName case minimumHealthyHosts case trafficRoutingConfig + case zonalConfig } public func encode(to encoder: Swift.Encoder) throws { @@ -3987,6 +4025,9 @@ extension CodeDeployClientTypes.DeploymentConfigInfo: Swift.Codable { if let trafficRoutingConfig = self.trafficRoutingConfig { try encodeContainer.encode(trafficRoutingConfig, forKey: .trafficRoutingConfig) } + if let zonalConfig = self.zonalConfig { + try encodeContainer.encode(zonalConfig, forKey: .zonalConfig) + } } public init(from decoder: Swift.Decoder) throws { @@ -4003,6 +4044,8 @@ extension CodeDeployClientTypes.DeploymentConfigInfo: Swift.Codable { computePlatform = computePlatformDecoded let trafficRoutingConfigDecoded = try containerValues.decodeIfPresent(CodeDeployClientTypes.TrafficRoutingConfig.self, forKey: .trafficRoutingConfig) trafficRoutingConfig = trafficRoutingConfigDecoded + let zonalConfigDecoded = try containerValues.decodeIfPresent(CodeDeployClientTypes.ZonalConfig.self, forKey: .zonalConfig) + zonalConfig = zonalConfigDecoded } } @@ -4017,10 +4060,12 @@ extension CodeDeployClientTypes { public var deploymentConfigId: Swift.String? /// The deployment configuration name. public var deploymentConfigName: Swift.String? - /// Information about the number or percentage of minimum healthy instance. + /// Information about the number or percentage of minimum healthy instances. public var minimumHealthyHosts: CodeDeployClientTypes.MinimumHealthyHosts? /// The configuration that specifies how the deployment traffic is routed. Used for deployments with a Lambda or Amazon ECS compute platform only. public var trafficRoutingConfig: CodeDeployClientTypes.TrafficRoutingConfig? + /// Information about a zonal configuration. + public var zonalConfig: CodeDeployClientTypes.ZonalConfig? public init( computePlatform: CodeDeployClientTypes.ComputePlatform? = nil, @@ -4028,7 +4073,8 @@ extension CodeDeployClientTypes { deploymentConfigId: Swift.String? = nil, deploymentConfigName: Swift.String? = nil, minimumHealthyHosts: CodeDeployClientTypes.MinimumHealthyHosts? = nil, - trafficRoutingConfig: CodeDeployClientTypes.TrafficRoutingConfig? = nil + trafficRoutingConfig: CodeDeployClientTypes.TrafficRoutingConfig? = nil, + zonalConfig: CodeDeployClientTypes.ZonalConfig? = nil ) { self.computePlatform = computePlatform @@ -4037,6 +4083,7 @@ extension CodeDeployClientTypes { self.deploymentConfigName = deploymentConfigName self.minimumHealthyHosts = minimumHealthyHosts self.trafficRoutingConfig = trafficRoutingConfig + self.zonalConfig = zonalConfig } } @@ -4157,6 +4204,7 @@ extension DeploymentConfigNameRequiredExceptionBody: Swift.Decodable { extension CodeDeployClientTypes { public enum DeploymentCreator: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case autoscaling + case autoscalingtermination case cloudformation case cloudformationrollback case codedeploy @@ -4168,6 +4216,7 @@ extension CodeDeployClientTypes { public static var allCases: [DeploymentCreator] { return [ .autoscaling, + .autoscalingtermination, .cloudformation, .cloudformationrollback, .codedeploy, @@ -4184,6 +4233,7 @@ extension CodeDeployClientTypes { public var rawValue: Swift.String { switch self { case .autoscaling: return "autoscaling" + case .autoscalingtermination: return "autoscalingTermination" case .cloudformation: return "CloudFormation" case .cloudformationrollback: return "CloudFormationRollback" case .codedeploy: return "CodeDeploy" @@ -4392,6 +4442,7 @@ extension CodeDeployClientTypes.DeploymentGroupInfo: Swift.Codable { case outdatedInstancesStrategy case serviceRoleArn case targetRevision + case terminationHookEnabled case triggerConfigurations } @@ -4472,6 +4523,9 @@ extension CodeDeployClientTypes.DeploymentGroupInfo: Swift.Codable { if let targetRevision = self.targetRevision { try encodeContainer.encode(targetRevision, forKey: .targetRevision) } + if terminationHookEnabled != false { + try encodeContainer.encode(terminationHookEnabled, forKey: .terminationHookEnabled) + } if let triggerConfigurations = triggerConfigurations { var triggerConfigurationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .triggerConfigurations) for triggerconfig0 in triggerConfigurations { @@ -4571,6 +4625,8 @@ extension CodeDeployClientTypes.DeploymentGroupInfo: Swift.Codable { } } ecsServices = ecsServicesDecoded0 + let terminationHookEnabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .terminationHookEnabled) ?? false + terminationHookEnabled = terminationHookEnabledDecoded } } @@ -4619,6 +4675,8 @@ extension CodeDeployClientTypes { public var serviceRoleArn: Swift.String? /// Information about the deployment group's target revision, including type and location. public var targetRevision: CodeDeployClientTypes.RevisionLocation? + /// Indicates whether the deployment group was configured to have CodeDeploy install a termination hook into an Auto Scaling group. For more information about the termination hook, see [How Amazon EC2 Auto Scaling works with CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-auto-scaling.html#integrations-aws-auto-scaling-behaviors) in the CodeDeploy User Guide. + public var terminationHookEnabled: Swift.Bool /// Information about triggers associated with the deployment group. public var triggerConfigurations: [CodeDeployClientTypes.TriggerConfig]? @@ -4644,6 +4702,7 @@ extension CodeDeployClientTypes { outdatedInstancesStrategy: CodeDeployClientTypes.OutdatedInstancesStrategy? = nil, serviceRoleArn: Swift.String? = nil, targetRevision: CodeDeployClientTypes.RevisionLocation? = nil, + terminationHookEnabled: Swift.Bool = false, triggerConfigurations: [CodeDeployClientTypes.TriggerConfig]? = nil ) { @@ -4668,6 +4727,7 @@ extension CodeDeployClientTypes { self.outdatedInstancesStrategy = outdatedInstancesStrategy self.serviceRoleArn = serviceRoleArn self.targetRevision = targetRevision + self.terminationHookEnabled = terminationHookEnabled self.triggerConfigurations = triggerConfigurations } } @@ -7761,8 +7821,10 @@ extension GetDeploymentTargetInput: ClientRuntime.URLPathProvider { public struct GetDeploymentTargetInput: Swift.Equatable { /// The unique ID of a deployment. + /// This member is required. public var deploymentId: Swift.String? /// The unique ID of a deployment target. + /// This member is required. public var targetId: Swift.String? public init( @@ -12229,6 +12291,62 @@ extension InvalidUpdateOutdatedInstancesOnlyValueExceptionBody: Swift.Decodable } } +extension InvalidZonalDeploymentConfigurationException { + 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: InvalidZonalDeploymentConfigurationExceptionBody = 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 ZonalConfig object is not valid. +public struct InvalidZonalDeploymentConfigurationException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + /// The message that corresponds to the exception thrown by CodeDeploy. + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "InvalidZonalDeploymentConfigurationException" } + 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 InvalidZonalDeploymentConfigurationExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension InvalidZonalDeploymentConfigurationExceptionBody: 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 CodeDeployClientTypes.LambdaFunctionInfo: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case currentVersion @@ -13605,6 +13723,7 @@ extension ListDeploymentTargetsInput: ClientRuntime.URLPathProvider { public struct ListDeploymentTargetsInput: Swift.Equatable { /// The unique ID of a deployment. + /// This member is required. public var deploymentId: Swift.String? /// A token identifier returned from the previous ListDeploymentTargets call. It can be used to return the next set of deployment targets in the list. public var nextToken: Swift.String? @@ -13739,6 +13858,7 @@ enum ListDeploymentTargetsOutputError: ClientRuntime.HttpResponseErrorBinding { case "InvalidInstanceStatusException": return try await InvalidInstanceStatusException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InvalidInstanceTypeException": return try await InvalidInstanceTypeException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InvalidNextTokenException": return try await InvalidNextTokenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidTargetFilterNameException": return try await InvalidTargetFilterNameException(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) } } @@ -14523,7 +14643,7 @@ extension CodeDeployClientTypes.MinimumHealthyHosts: Swift.Codable { } extension CodeDeployClientTypes { - /// Information about minimum healthy instance. + /// Information about the minimum number of healthy instances. public struct MinimumHealthyHosts: Swift.Equatable { /// The minimum healthy instance type: /// @@ -14549,6 +14669,83 @@ extension CodeDeployClientTypes { } +extension CodeDeployClientTypes.MinimumHealthyHostsPerZone: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case type + case value + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + if value != 0 { + try encodeContainer.encode(value, forKey: .value) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(CodeDeployClientTypes.MinimumHealthyHostsPerZoneType.self, forKey: .type) + type = typeDecoded + let valueDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .value) ?? 0 + value = valueDecoded + } +} + +extension CodeDeployClientTypes { + /// Information about the minimum number of healthy instances per Availability Zone. + public struct MinimumHealthyHostsPerZone: Swift.Equatable { + /// The type associated with the MinimumHealthyHostsPerZone option. + public var type: CodeDeployClientTypes.MinimumHealthyHostsPerZoneType? + /// The value associated with the MinimumHealthyHostsPerZone option. + public var value: Swift.Int + + public init( + type: CodeDeployClientTypes.MinimumHealthyHostsPerZoneType? = nil, + value: Swift.Int = 0 + ) + { + self.type = type + self.value = value + } + } + +} + +extension CodeDeployClientTypes { + public enum MinimumHealthyHostsPerZoneType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case fleetPercent + case hostCount + case sdkUnknown(Swift.String) + + public static var allCases: [MinimumHealthyHostsPerZoneType] { + return [ + .fleetPercent, + .hostCount, + .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 .fleetPercent: return "FLEET_PERCENT" + case .hostCount: return "HOST_COUNT" + 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 = MinimumHealthyHostsPerZoneType(rawValue: rawValue) ?? MinimumHealthyHostsPerZoneType.sdkUnknown(rawValue) + } + } +} + extension CodeDeployClientTypes { public enum MinimumHealthyHostsType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case fleetPercent @@ -17688,6 +17885,7 @@ extension UpdateDeploymentGroupInput: Swift.Encodable { case onPremisesTagSet case outdatedInstancesStrategy case serviceRoleArn + case terminationHookEnabled case triggerConfigurations } @@ -17756,6 +17954,9 @@ extension UpdateDeploymentGroupInput: Swift.Encodable { if let serviceRoleArn = self.serviceRoleArn { try encodeContainer.encode(serviceRoleArn, forKey: .serviceRoleArn) } + if let terminationHookEnabled = self.terminationHookEnabled { + try encodeContainer.encode(terminationHookEnabled, forKey: .terminationHookEnabled) + } if let triggerConfigurations = triggerConfigurations { var triggerConfigurationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .triggerConfigurations) for triggerconfig0 in triggerConfigurations { @@ -17813,6 +18014,8 @@ public struct UpdateDeploymentGroupInput: Swift.Equatable { public var outdatedInstancesStrategy: CodeDeployClientTypes.OutdatedInstancesStrategy? /// A replacement ARN for the service role, if you want to change it. public var serviceRoleArn: Swift.String? + /// This parameter only applies if you are using CodeDeploy with Amazon EC2 Auto Scaling. For more information, see [Integrating CodeDeploy with Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-auto-scaling.html) in the CodeDeploy User Guide. Set terminationHookEnabled to true to have CodeDeploy install a termination hook into your Auto Scaling group when you update a deployment group. When this hook is installed, CodeDeploy will perform termination deployments. For information about termination deployments, see [Enabling termination deployments during Auto Scaling scale-in events](https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-auto-scaling.html#integrations-aws-auto-scaling-behaviors-hook-enable) in the CodeDeploy User Guide. For more information about Auto Scaling scale-in events, see the [Scale in](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-in) topic in the Amazon EC2 Auto Scaling User Guide. + public var terminationHookEnabled: Swift.Bool? /// Information about triggers to change when the deployment group is updated. For examples, see [Edit a Trigger in a CodeDeploy Deployment Group](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-notify-edit.html) in the CodeDeploy User Guide. public var triggerConfigurations: [CodeDeployClientTypes.TriggerConfig]? @@ -17834,6 +18037,7 @@ public struct UpdateDeploymentGroupInput: Swift.Equatable { onPremisesTagSet: CodeDeployClientTypes.OnPremisesTagSet? = nil, outdatedInstancesStrategy: CodeDeployClientTypes.OutdatedInstancesStrategy? = nil, serviceRoleArn: Swift.String? = nil, + terminationHookEnabled: Swift.Bool? = nil, triggerConfigurations: [CodeDeployClientTypes.TriggerConfig]? = nil ) { @@ -17854,6 +18058,7 @@ public struct UpdateDeploymentGroupInput: Swift.Equatable { self.onPremisesTagSet = onPremisesTagSet self.outdatedInstancesStrategy = outdatedInstancesStrategy self.serviceRoleArn = serviceRoleArn + self.terminationHookEnabled = terminationHookEnabled self.triggerConfigurations = triggerConfigurations } } @@ -17877,6 +18082,7 @@ struct UpdateDeploymentGroupInputBody: Swift.Equatable { let ec2TagSet: CodeDeployClientTypes.EC2TagSet? let ecsServices: [CodeDeployClientTypes.ECSService]? let onPremisesTagSet: CodeDeployClientTypes.OnPremisesTagSet? + let terminationHookEnabled: Swift.Bool? } extension UpdateDeploymentGroupInputBody: Swift.Decodable { @@ -17898,6 +18104,7 @@ extension UpdateDeploymentGroupInputBody: Swift.Decodable { case onPremisesTagSet case outdatedInstancesStrategy case serviceRoleArn + case terminationHookEnabled case triggerConfigurations } @@ -17984,6 +18191,8 @@ extension UpdateDeploymentGroupInputBody: Swift.Decodable { ecsServices = ecsServicesDecoded0 let onPremisesTagSetDecoded = try containerValues.decodeIfPresent(CodeDeployClientTypes.OnPremisesTagSet.self, forKey: .onPremisesTagSet) onPremisesTagSet = onPremisesTagSetDecoded + let terminationHookEnabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .terminationHookEnabled) + terminationHookEnabled = terminationHookEnabledDecoded } } @@ -18077,3 +18286,58 @@ enum UpdateDeploymentGroupOutputError: ClientRuntime.HttpResponseErrorBinding { } } } + +extension CodeDeployClientTypes.ZonalConfig: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case firstZoneMonitorDurationInSeconds + case minimumHealthyHostsPerZone + case monitorDurationInSeconds + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let firstZoneMonitorDurationInSeconds = self.firstZoneMonitorDurationInSeconds { + try encodeContainer.encode(firstZoneMonitorDurationInSeconds, forKey: .firstZoneMonitorDurationInSeconds) + } + if let minimumHealthyHostsPerZone = self.minimumHealthyHostsPerZone { + try encodeContainer.encode(minimumHealthyHostsPerZone, forKey: .minimumHealthyHostsPerZone) + } + if let monitorDurationInSeconds = self.monitorDurationInSeconds { + try encodeContainer.encode(monitorDurationInSeconds, forKey: .monitorDurationInSeconds) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let firstZoneMonitorDurationInSecondsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .firstZoneMonitorDurationInSeconds) + firstZoneMonitorDurationInSeconds = firstZoneMonitorDurationInSecondsDecoded + let monitorDurationInSecondsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .monitorDurationInSeconds) + monitorDurationInSeconds = monitorDurationInSecondsDecoded + let minimumHealthyHostsPerZoneDecoded = try containerValues.decodeIfPresent(CodeDeployClientTypes.MinimumHealthyHostsPerZone.self, forKey: .minimumHealthyHostsPerZone) + minimumHealthyHostsPerZone = minimumHealthyHostsPerZoneDecoded + } +} + +extension CodeDeployClientTypes { + /// Configure the ZonalConfig object if you want CodeDeploy to deploy your application to one [Availability Zone](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones) at a time, within an Amazon Web Services Region. By deploying to one Availability Zone at a time, you can expose your deployment to a progressively larger audience as confidence in the deployment's performance and viability grows. If you don't configure the ZonalConfig object, CodeDeploy deploys your application to a random selection of hosts across a Region. For more information about the zonal configuration feature, see [zonal configuration](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations-create.html#zonal-config) in the CodeDeploy User Guide. + public struct ZonalConfig: Swift.Equatable { + /// The period of time, in seconds, that CodeDeploy must wait after completing a deployment to the first Availability Zone. CodeDeploy will wait this amount of time before starting a deployment to the second Availability Zone. You might set this option if you want to allow extra bake time for the first Availability Zone. If you don't specify a value for firstZoneMonitorDurationInSeconds, then CodeDeploy uses the monitorDurationInSeconds value for the first Availability Zone. For more information about the zonal configuration feature, see [zonal configuration](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations-create.html#zonal-config) in the CodeDeploy User Guide. + public var firstZoneMonitorDurationInSeconds: Swift.Int? + /// The number or percentage of instances that must remain available per Availability Zone during a deployment. This option works in conjunction with the MinimumHealthyHosts option. For more information, see [About the minimum number of healthy hosts per Availability Zone](https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-health.html#minimum-healthy-hosts-az) in the CodeDeploy User Guide. If you don't specify the minimumHealthyHostsPerZone option, then CodeDeploy uses a default value of 0 percent. For more information about the zonal configuration feature, see [zonal configuration](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations-create.html#zonal-config) in the CodeDeploy User Guide. + public var minimumHealthyHostsPerZone: CodeDeployClientTypes.MinimumHealthyHostsPerZone? + /// The period of time, in seconds, that CodeDeploy must wait after completing a deployment to an Availability Zone. CodeDeploy will wait this amount of time before starting a deployment to the next Availability Zone. Consider adding a monitor duration to give the deployment some time to prove itself (or 'bake') in one Availability Zone before it is released in the next zone. If you don't specify a monitorDurationInSeconds, CodeDeploy starts deploying to the next Availability Zone immediately. For more information about the zonal configuration feature, see [zonal configuration](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations-create.html#zonal-config) in the CodeDeploy User Guide. + public var monitorDurationInSeconds: Swift.Int? + + public init( + firstZoneMonitorDurationInSeconds: Swift.Int? = nil, + minimumHealthyHostsPerZone: CodeDeployClientTypes.MinimumHealthyHostsPerZone? = nil, + monitorDurationInSeconds: Swift.Int? = nil + ) + { + self.firstZoneMonitorDurationInSeconds = firstZoneMonitorDurationInSeconds + self.minimumHealthyHostsPerZone = minimumHealthyHostsPerZone + self.monitorDurationInSeconds = monitorDurationInSeconds + } + } + +} diff --git a/Sources/Services/AWSCognitoIdentityProvider/CognitoIdentityProviderClient.swift b/Sources/Services/AWSCognitoIdentityProvider/CognitoIdentityProviderClient.swift index 0ac31893770..ccf745c92e2 100644 --- a/Sources/Services/AWSCognitoIdentityProvider/CognitoIdentityProviderClient.swift +++ b/Sources/Services/AWSCognitoIdentityProvider/CognitoIdentityProviderClient.swift @@ -125,7 +125,7 @@ extension CognitoIdentityProviderClient: CognitoIdentityProviderClientProtocol { /// Performs the `AdminAddUserToGroup` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Adds the specified user to the specified group. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more + /// Adds a user to a group. A user who is in a group can present a preferred-role claim to an identity pool, and populates a cognito:groups claim to their access and identity tokens. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more /// /// * [Signing Amazon Web Services API Requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) /// @@ -181,7 +181,7 @@ extension CognitoIdentityProviderClient: CognitoIdentityProviderClientProtocol { /// Performs the `AdminConfirmSignUp` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Confirms user registration as an admin without using a confirmation code. Works on any user. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more + /// This IAM-authenticated API operation provides a code that Amazon Cognito sent to your user when they signed up in your user pool. After your user enters their code, they confirm ownership of the email address or phone number that they provided, and their user account becomes active. Depending on your user pool configuration, your users will receive their confirmation code in an email or SMS message. Local users who signed up in your user pool are the only type of user who can confirm sign-up with a code. Users who federate through an external identity provider (IdP) have already been confirmed by their IdP. Administrator-created users confirm their accounts when they respond to their invitation email message and choose a password. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more /// /// * [Signing Amazon Web Services API Requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) /// @@ -937,7 +937,7 @@ extension CognitoIdentityProviderClient: CognitoIdentityProviderClientProtocol { /// Performs the `AdminListGroupsForUser` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Lists the groups that the user belongs to. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more + /// Lists the groups that a user belongs to. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more /// /// * [Signing Amazon Web Services API Requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) /// @@ -1169,7 +1169,7 @@ extension CognitoIdentityProviderClient: CognitoIdentityProviderClientProtocol { /// Performs the `AdminRespondToAuthChallenge` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Responds to an authentication challenge, as an administrator. This action might generate an SMS text message. Starting June 1, 2021, US telecom carriers require you to register an origination phone number before you can send SMS messages to US phone numbers. If you use SMS text messages in Amazon Cognito, you must register a phone number with [Amazon Pinpoint](https://console.aws.amazon.com/pinpoint/home/). Amazon Cognito uses the registered number automatically. Otherwise, Amazon Cognito users who must receive SMS messages might not be able to sign up, activate their accounts, or sign in. If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Service, Amazon Simple Notification Service might place your account in the SMS sandbox. In [sandbox mode](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) , you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see [ SMS message settings for Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sms-settings.html) in the Amazon Cognito Developer Guide. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more + /// Some API operations in a user pool generate a challenge, like a prompt for an MFA code, for device authentication that bypasses MFA, or for a custom authentication challenge. An AdminRespondToAuthChallenge API request provides the answer to that challenge, like a code or a secure remote password (SRP). The parameters of a response to an authentication challenge vary with the type of challenge. For more information about custom authentication challenges, see [Custom authentication challenge Lambda triggers](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-challenge.html). This action might generate an SMS text message. Starting June 1, 2021, US telecom carriers require you to register an origination phone number before you can send SMS messages to US phone numbers. If you use SMS text messages in Amazon Cognito, you must register a phone number with [Amazon Pinpoint](https://console.aws.amazon.com/pinpoint/home/). Amazon Cognito uses the registered number automatically. Otherwise, Amazon Cognito users who must receive SMS messages might not be able to sign up, activate their accounts, or sign in. If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Service, Amazon Simple Notification Service might place your account in the SMS sandbox. In [sandbox mode](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) , you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see [ SMS message settings for Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sms-settings.html) in the Amazon Cognito Developer Guide. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more /// /// * [Signing Amazon Web Services API Requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) /// @@ -1585,7 +1585,16 @@ extension CognitoIdentityProviderClient: CognitoIdentityProviderClientProtocol { /// Performs the `AdminUserGlobalSignOut` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Signs out a user from all devices. AdminUserGlobalSignOut invalidates all identity, access and refresh tokens that Amazon Cognito has issued to a user. A user can still use a hosted UI cookie to retrieve new tokens for the duration of the 1-hour cookie validity period. Your app isn't aware that a user's access token is revoked unless it attempts to authorize a user pools API request with an access token that contains the scope aws.cognito.signin.user.admin. Your app might otherwise accept access tokens until they expire. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more + /// Invalidates the identity, access, and refresh tokens that Amazon Cognito issued to a user. Call this operation with your administrative credentials when your user signs out of your app. This results in the following behavior. + /// + /// * Amazon Cognito no longer accepts token-authorized user operations that you authorize with a signed-out user's access tokens. For more information, see [Using the Amazon Cognito user pools API and user pool endpoints](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). Amazon Cognito returns an Access Token has been revoked error when your app attempts to authorize a user pools API request with a revoked access token that contains the scope aws.cognito.signin.user.admin. + /// + /// * Amazon Cognito no longer accepts a signed-out user's ID token in a [GetId ](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetId.html) request to an identity pool with ServerSideTokenCheck enabled for its user pool IdP configuration in [CognitoIdentityProvider](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_CognitoIdentityProvider.html). + /// + /// * Amazon Cognito no longer accepts a signed-out user's refresh tokens in refresh requests. + /// + /// + /// Other requests might be valid until your user's token expires. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more /// /// * [Signing Amazon Web Services API Requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) /// @@ -1856,7 +1865,7 @@ extension CognitoIdentityProviderClient: CognitoIdentityProviderClientProtocol { /// Performs the `ConfirmSignUp` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Confirms registration of a new user. Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). + /// This public API operation provides a code that Amazon Cognito sent to your user when they signed up in your user pool via the [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) API operation. After your user enters their code, they confirm ownership of the email address or phone number that they provided, and their user account becomes active. Depending on your user pool configuration, your users will receive their confirmation code in an email or SMS message. Local users who signed up in your user pool are the only type of user who can confirm sign-up with a code. Users who federate through an external identity provider (IdP) have already been confirmed by their IdP. Administrator-created users, users created with the [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) API operation, confirm their accounts when they respond to their invitation email message and choose a password. They do not receive a confirmation code. Instead, they receive a temporary password. Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). /// /// - Parameter ConfirmSignUpInput : Represents the request to confirm registration of a user. /// @@ -3715,7 +3724,16 @@ extension CognitoIdentityProviderClient: CognitoIdentityProviderClientProtocol { /// Performs the `GlobalSignOut` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Signs out a user from all devices. GlobalSignOut invalidates all identity, access and refresh tokens that Amazon Cognito has issued to a user. A user can still use a hosted UI cookie to retrieve new tokens for the duration of the 1-hour cookie validity period. Your app isn't aware that a user's access token is revoked unless it attempts to authorize a user pools API request with an access token that contains the scope aws.cognito.signin.user.admin. Your app might otherwise accept access tokens until they expire. Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). + /// Invalidates the identity, access, and refresh tokens that Amazon Cognito issued to a user. Call this operation when your user signs out of your app. This results in the following behavior. + /// + /// * Amazon Cognito no longer accepts token-authorized user operations that you authorize with a signed-out user's access tokens. For more information, see [Using the Amazon Cognito user pools API and user pool endpoints](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). Amazon Cognito returns an Access Token has been revoked error when your app attempts to authorize a user pools API request with a revoked access token that contains the scope aws.cognito.signin.user.admin. + /// + /// * Amazon Cognito no longer accepts a signed-out user's ID token in a [GetId ](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetId.html) request to an identity pool with ServerSideTokenCheck enabled for its user pool IdP configuration in [CognitoIdentityProvider](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_CognitoIdentityProvider.html). + /// + /// * Amazon Cognito no longer accepts a signed-out user's refresh tokens in refresh requests. + /// + /// + /// Other requests might be valid until your user's token expires. Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). /// /// - Parameter GlobalSignOutInput : Represents the request to sign out all devices. /// @@ -4421,7 +4439,7 @@ extension CognitoIdentityProviderClient: CognitoIdentityProviderClientProtocol { /// Performs the `RespondToAuthChallenge` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Responds to the authentication challenge. Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). This action might generate an SMS text message. Starting June 1, 2021, US telecom carriers require you to register an origination phone number before you can send SMS messages to US phone numbers. If you use SMS text messages in Amazon Cognito, you must register a phone number with [Amazon Pinpoint](https://console.aws.amazon.com/pinpoint/home/). Amazon Cognito uses the registered number automatically. Otherwise, Amazon Cognito users who must receive SMS messages might not be able to sign up, activate their accounts, or sign in. If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Service, Amazon Simple Notification Service might place your account in the SMS sandbox. In [sandbox mode](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) , you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see [ SMS message settings for Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sms-settings.html) in the Amazon Cognito Developer Guide. + /// Some API operations in a user pool generate a challenge, like a prompt for an MFA code, for device authentication that bypasses MFA, or for a custom authentication challenge. A RespondToAuthChallenge API request provides the answer to that challenge, like a code or a secure remote password (SRP). The parameters of a response to an authentication challenge vary with the type of challenge. For more information about custom authentication challenges, see [Custom authentication challenge Lambda triggers](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-challenge.html). Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). This action might generate an SMS text message. Starting June 1, 2021, US telecom carriers require you to register an origination phone number before you can send SMS messages to US phone numbers. If you use SMS text messages in Amazon Cognito, you must register a phone number with [Amazon Pinpoint](https://console.aws.amazon.com/pinpoint/home/). Amazon Cognito uses the registered number automatically. Otherwise, Amazon Cognito users who must receive SMS messages might not be able to sign up, activate their accounts, or sign in. If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Service, Amazon Simple Notification Service might place your account in the SMS sandbox. In [sandbox mode](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) , you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see [ SMS message settings for Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sms-settings.html) in the Amazon Cognito Developer Guide. /// /// - Parameter RespondToAuthChallengeInput : The request to respond to an authentication challenge. /// @@ -5373,7 +5391,7 @@ extension CognitoIdentityProviderClient: CognitoIdentityProviderClientProtocol { /// Performs the `UpdateUserAttributes` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Allows a user to update a specific attribute (one at a time). Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). This action might generate an SMS text message. Starting June 1, 2021, US telecom carriers require you to register an origination phone number before you can send SMS messages to US phone numbers. If you use SMS text messages in Amazon Cognito, you must register a phone number with [Amazon Pinpoint](https://console.aws.amazon.com/pinpoint/home/). Amazon Cognito uses the registered number automatically. Otherwise, Amazon Cognito users who must receive SMS messages might not be able to sign up, activate their accounts, or sign in. If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Service, Amazon Simple Notification Service might place your account in the SMS sandbox. In [sandbox mode](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) , you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see [ SMS message settings for Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sms-settings.html) in the Amazon Cognito Developer Guide. + /// With this operation, your users can update one or more of their attributes with their own credentials. You authorize this API request with the user's access token. To delete an attribute from your user, submit the attribute in your API request with a blank value. Custom attribute values in this request must include the custom: prefix. Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). This action might generate an SMS text message. Starting June 1, 2021, US telecom carriers require you to register an origination phone number before you can send SMS messages to US phone numbers. If you use SMS text messages in Amazon Cognito, you must register a phone number with [Amazon Pinpoint](https://console.aws.amazon.com/pinpoint/home/). Amazon Cognito uses the registered number automatically. Otherwise, Amazon Cognito users who must receive SMS messages might not be able to sign up, activate their accounts, or sign in. If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Service, Amazon Simple Notification Service might place your account in the SMS sandbox. In [sandbox mode](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) , you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see [ SMS message settings for Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sms-settings.html) in the Amazon Cognito Developer Guide. /// /// - Parameter UpdateUserAttributesInput : Represents the request to update user attributes. /// diff --git a/Sources/Services/AWSCognitoIdentityProvider/CognitoIdentityProviderClientProtocol.swift b/Sources/Services/AWSCognitoIdentityProvider/CognitoIdentityProviderClientProtocol.swift index 219b03d99a1..44da627a60a 100644 --- a/Sources/Services/AWSCognitoIdentityProvider/CognitoIdentityProviderClientProtocol.swift +++ b/Sources/Services/AWSCognitoIdentityProvider/CognitoIdentityProviderClientProtocol.swift @@ -2,7 +2,16 @@ import ClientRuntime -/// With the Amazon Cognito user pools API, you can set up user pools and app clients, and authenticate users. To authenticate users from third-party identity providers (IdPs) in this API, you can [link IdP users to native user profiles](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-federation-consolidate-users.html). Learn more about the authentication and authorization of federated users in the [Using the Amazon Cognito user pools API and user pool endpoints](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html). This API reference provides detailed information about API operations and object types in Amazon Cognito. At the bottom of the page for each API operation and object, under See Also, you can learn how to use it in an Amazon Web Services SDK in the language of your choice. Along with resource management operations, the Amazon Cognito user pools API includes classes of operations and authorization models for client-side and server-side user operations. For more information, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html) in the Amazon Cognito Developer Guide. You can also start reading about the CognitoIdentityProvider client in the following SDK guides. +/// With the Amazon Cognito user pools API, you can configure user pools and authenticate users. To authenticate users from third-party identity providers (IdPs) in this API, you can [link IdP users to native user profiles](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-federation-consolidate-users.html). Learn more about the authentication and authorization of federated users at [Adding user pool sign-in through a third party](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-federation.html) and in the [User pool federation endpoints and hosted UI reference](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html). This API reference provides detailed information about API operations and object types in Amazon Cognito. Along with resource management operations, the Amazon Cognito user pools API includes classes of operations and authorization models for client-side and server-side authentication of users. You can interact with operations in the Amazon Cognito user pools API as any of the following subjects. +/// +/// * An administrator who wants to configure user pools, app clients, users, groups, or other user pool functions. +/// +/// * A server-side app, like a web application, that wants to use its Amazon Web Services privileges to manage, authenticate, or authorize a user. +/// +/// * A client-side app, like a mobile app, that wants to make unauthenticated requests to manage, authenticate, or authorize a user. +/// +/// +/// For more information, see [Using the Amazon Cognito user pools API and user pool endpoints](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html) in the Amazon Cognito Developer Guide. With your Amazon Web Services SDK, you can build the logic to support operational flows in every use case for this API. You can also make direct REST API requests to [Amazon Cognito user pools service endpoints](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html#cognito_identity_your_user_pools_region). The following links can get you started with the CognitoIdentityProvider client in other supported Amazon Web Services SDKs. /// /// * [Amazon Web Services Command Line Interface](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/index.html#cli-aws-cognito-idp) /// @@ -49,7 +58,7 @@ public protocol CognitoIdentityProviderClientProtocol { func addCustomAttributes(input: AddCustomAttributesInput) async throws -> AddCustomAttributesOutput /// Performs the `AdminAddUserToGroup` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Adds the specified user to the specified group. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more + /// Adds a user to a group. A user who is in a group can present a preferred-role claim to an identity pool, and populates a cognito:groups claim to their access and identity tokens. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more /// /// * [Signing Amazon Web Services API Requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) /// @@ -71,7 +80,7 @@ public protocol CognitoIdentityProviderClientProtocol { func adminAddUserToGroup(input: AdminAddUserToGroupInput) async throws -> AdminAddUserToGroupOutput /// Performs the `AdminConfirmSignUp` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Confirms user registration as an admin without using a confirmation code. Works on any user. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more + /// This IAM-authenticated API operation provides a code that Amazon Cognito sent to your user when they signed up in your user pool. After your user enters their code, they confirm ownership of the email address or phone number that they provided, and their user account becomes active. Depending on your user pool configuration, your users will receive their confirmation code in an email or SMS message. Local users who signed up in your user pool are the only type of user who can confirm sign-up with a code. Users who federate through an external identity provider (IdP) have already been confirmed by their IdP. Administrator-created users confirm their accounts when they respond to their invitation email message and choose a password. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more /// /// * [Signing Amazon Web Services API Requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) /// @@ -385,7 +394,7 @@ public protocol CognitoIdentityProviderClientProtocol { func adminListDevices(input: AdminListDevicesInput) async throws -> AdminListDevicesOutput /// Performs the `AdminListGroupsForUser` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Lists the groups that the user belongs to. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more + /// Lists the groups that a user belongs to. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more /// /// * [Signing Amazon Web Services API Requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) /// @@ -481,7 +490,7 @@ public protocol CognitoIdentityProviderClientProtocol { func adminResetUserPassword(input: AdminResetUserPasswordInput) async throws -> AdminResetUserPasswordOutput /// Performs the `AdminRespondToAuthChallenge` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Responds to an authentication challenge, as an administrator. This action might generate an SMS text message. Starting June 1, 2021, US telecom carriers require you to register an origination phone number before you can send SMS messages to US phone numbers. If you use SMS text messages in Amazon Cognito, you must register a phone number with [Amazon Pinpoint](https://console.aws.amazon.com/pinpoint/home/). Amazon Cognito uses the registered number automatically. Otherwise, Amazon Cognito users who must receive SMS messages might not be able to sign up, activate their accounts, or sign in. If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Service, Amazon Simple Notification Service might place your account in the SMS sandbox. In [sandbox mode](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) , you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see [ SMS message settings for Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sms-settings.html) in the Amazon Cognito Developer Guide. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more + /// Some API operations in a user pool generate a challenge, like a prompt for an MFA code, for device authentication that bypasses MFA, or for a custom authentication challenge. An AdminRespondToAuthChallenge API request provides the answer to that challenge, like a code or a secure remote password (SRP). The parameters of a response to an authentication challenge vary with the type of challenge. For more information about custom authentication challenges, see [Custom authentication challenge Lambda triggers](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-challenge.html). This action might generate an SMS text message. Starting June 1, 2021, US telecom carriers require you to register an origination phone number before you can send SMS messages to US phone numbers. If you use SMS text messages in Amazon Cognito, you must register a phone number with [Amazon Pinpoint](https://console.aws.amazon.com/pinpoint/home/). Amazon Cognito uses the registered number automatically. Otherwise, Amazon Cognito users who must receive SMS messages might not be able to sign up, activate their accounts, or sign in. If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Service, Amazon Simple Notification Service might place your account in the SMS sandbox. In [sandbox mode](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) , you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see [ SMS message settings for Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sms-settings.html) in the Amazon Cognito Developer Guide. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more /// /// * [Signing Amazon Web Services API Requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) /// @@ -659,7 +668,16 @@ public protocol CognitoIdentityProviderClientProtocol { func adminUpdateUserAttributes(input: AdminUpdateUserAttributesInput) async throws -> AdminUpdateUserAttributesOutput /// Performs the `AdminUserGlobalSignOut` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Signs out a user from all devices. AdminUserGlobalSignOut invalidates all identity, access and refresh tokens that Amazon Cognito has issued to a user. A user can still use a hosted UI cookie to retrieve new tokens for the duration of the 1-hour cookie validity period. Your app isn't aware that a user's access token is revoked unless it attempts to authorize a user pools API request with an access token that contains the scope aws.cognito.signin.user.admin. Your app might otherwise accept access tokens until they expire. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more + /// Invalidates the identity, access, and refresh tokens that Amazon Cognito issued to a user. Call this operation with your administrative credentials when your user signs out of your app. This results in the following behavior. + /// + /// * Amazon Cognito no longer accepts token-authorized user operations that you authorize with a signed-out user's access tokens. For more information, see [Using the Amazon Cognito user pools API and user pool endpoints](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). Amazon Cognito returns an Access Token has been revoked error when your app attempts to authorize a user pools API request with a revoked access token that contains the scope aws.cognito.signin.user.admin. + /// + /// * Amazon Cognito no longer accepts a signed-out user's ID token in a [GetId ](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetId.html) request to an identity pool with ServerSideTokenCheck enabled for its user pool IdP configuration in [CognitoIdentityProvider](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_CognitoIdentityProvider.html). + /// + /// * Amazon Cognito no longer accepts a signed-out user's refresh tokens in refresh requests. + /// + /// + /// Other requests might be valid until your user's token expires. Amazon Cognito evaluates Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy. Learn more /// /// * [Signing Amazon Web Services API Requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) /// @@ -776,7 +794,7 @@ public protocol CognitoIdentityProviderClientProtocol { func confirmForgotPassword(input: ConfirmForgotPasswordInput) async throws -> ConfirmForgotPasswordOutput /// Performs the `ConfirmSignUp` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Confirms registration of a new user. Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). + /// This public API operation provides a code that Amazon Cognito sent to your user when they signed up in your user pool via the [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) API operation. After your user enters their code, they confirm ownership of the email address or phone number that they provided, and their user account becomes active. Depending on your user pool configuration, your users will receive their confirmation code in an email or SMS message. Local users who signed up in your user pool are the only type of user who can confirm sign-up with a code. Users who federate through an external identity provider (IdP) have already been confirmed by their IdP. Administrator-created users, users created with the [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) API operation, confirm their accounts when they respond to their invitation email message and choose a password. They do not receive a confirmation code. Instead, they receive a temporary password. Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). /// /// - Parameter ConfirmSignUpInput : Represents the request to confirm registration of a user. /// @@ -1477,7 +1495,16 @@ public protocol CognitoIdentityProviderClientProtocol { func getUserPoolMfaConfig(input: GetUserPoolMfaConfigInput) async throws -> GetUserPoolMfaConfigOutput /// Performs the `GlobalSignOut` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Signs out a user from all devices. GlobalSignOut invalidates all identity, access and refresh tokens that Amazon Cognito has issued to a user. A user can still use a hosted UI cookie to retrieve new tokens for the duration of the 1-hour cookie validity period. Your app isn't aware that a user's access token is revoked unless it attempts to authorize a user pools API request with an access token that contains the scope aws.cognito.signin.user.admin. Your app might otherwise accept access tokens until they expire. Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). + /// Invalidates the identity, access, and refresh tokens that Amazon Cognito issued to a user. Call this operation when your user signs out of your app. This results in the following behavior. + /// + /// * Amazon Cognito no longer accepts token-authorized user operations that you authorize with a signed-out user's access tokens. For more information, see [Using the Amazon Cognito user pools API and user pool endpoints](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). Amazon Cognito returns an Access Token has been revoked error when your app attempts to authorize a user pools API request with a revoked access token that contains the scope aws.cognito.signin.user.admin. + /// + /// * Amazon Cognito no longer accepts a signed-out user's ID token in a [GetId ](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetId.html) request to an identity pool with ServerSideTokenCheck enabled for its user pool IdP configuration in [CognitoIdentityProvider](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_CognitoIdentityProvider.html). + /// + /// * Amazon Cognito no longer accepts a signed-out user's refresh tokens in refresh requests. + /// + /// + /// Other requests might be valid until your user's token expires. Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). /// /// - Parameter GlobalSignOutInput : Represents the request to sign out all devices. /// @@ -1757,7 +1784,7 @@ public protocol CognitoIdentityProviderClientProtocol { func resendConfirmationCode(input: ResendConfirmationCodeInput) async throws -> ResendConfirmationCodeOutput /// Performs the `RespondToAuthChallenge` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Responds to the authentication challenge. Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). This action might generate an SMS text message. Starting June 1, 2021, US telecom carriers require you to register an origination phone number before you can send SMS messages to US phone numbers. If you use SMS text messages in Amazon Cognito, you must register a phone number with [Amazon Pinpoint](https://console.aws.amazon.com/pinpoint/home/). Amazon Cognito uses the registered number automatically. Otherwise, Amazon Cognito users who must receive SMS messages might not be able to sign up, activate their accounts, or sign in. If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Service, Amazon Simple Notification Service might place your account in the SMS sandbox. In [sandbox mode](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) , you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see [ SMS message settings for Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sms-settings.html) in the Amazon Cognito Developer Guide. + /// Some API operations in a user pool generate a challenge, like a prompt for an MFA code, for device authentication that bypasses MFA, or for a custom authentication challenge. A RespondToAuthChallenge API request provides the answer to that challenge, like a code or a secure remote password (SRP). The parameters of a response to an authentication challenge vary with the type of challenge. For more information about custom authentication challenges, see [Custom authentication challenge Lambda triggers](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-challenge.html). Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). This action might generate an SMS text message. Starting June 1, 2021, US telecom carriers require you to register an origination phone number before you can send SMS messages to US phone numbers. If you use SMS text messages in Amazon Cognito, you must register a phone number with [Amazon Pinpoint](https://console.aws.amazon.com/pinpoint/home/). Amazon Cognito uses the registered number automatically. Otherwise, Amazon Cognito users who must receive SMS messages might not be able to sign up, activate their accounts, or sign in. If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Service, Amazon Simple Notification Service might place your account in the SMS sandbox. In [sandbox mode](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) , you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see [ SMS message settings for Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sms-settings.html) in the Amazon Cognito Developer Guide. /// /// - Parameter RespondToAuthChallengeInput : The request to respond to an authentication challenge. /// @@ -2125,7 +2152,7 @@ public protocol CognitoIdentityProviderClientProtocol { func updateResourceServer(input: UpdateResourceServerInput) async throws -> UpdateResourceServerOutput /// Performs the `UpdateUserAttributes` operation on the `AWSCognitoIdentityProviderService` service. /// - /// Allows a user to update a specific attribute (one at a time). Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). This action might generate an SMS text message. Starting June 1, 2021, US telecom carriers require you to register an origination phone number before you can send SMS messages to US phone numbers. If you use SMS text messages in Amazon Cognito, you must register a phone number with [Amazon Pinpoint](https://console.aws.amazon.com/pinpoint/home/). Amazon Cognito uses the registered number automatically. Otherwise, Amazon Cognito users who must receive SMS messages might not be able to sign up, activate their accounts, or sign in. If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Service, Amazon Simple Notification Service might place your account in the SMS sandbox. In [sandbox mode](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) , you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see [ SMS message settings for Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sms-settings.html) in the Amazon Cognito Developer Guide. + /// With this operation, your users can update one or more of their attributes with their own credentials. You authorize this API request with the user's access token. To delete an attribute from your user, submit the attribute in your API request with a blank value. Custom attribute values in this request must include the custom: prefix. Amazon Cognito doesn't evaluate Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you can't use IAM credentials to authorize requests, and you can't grant IAM permissions in policies. For more information about authorization models in Amazon Cognito, see [Using the Amazon Cognito native and OIDC APIs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html). This action might generate an SMS text message. Starting June 1, 2021, US telecom carriers require you to register an origination phone number before you can send SMS messages to US phone numbers. If you use SMS text messages in Amazon Cognito, you must register a phone number with [Amazon Pinpoint](https://console.aws.amazon.com/pinpoint/home/). Amazon Cognito uses the registered number automatically. Otherwise, Amazon Cognito users who must receive SMS messages might not be able to sign up, activate their accounts, or sign in. If you have never used SMS text messages with Amazon Cognito or any other Amazon Web Service, Amazon Simple Notification Service might place your account in the SMS sandbox. In [sandbox mode](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) , you can send messages only to verified phone numbers. After you test your app while in the sandbox environment, you can move out of the sandbox and into production. For more information, see [ SMS message settings for Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sms-settings.html) in the Amazon Cognito Developer Guide. /// /// - Parameter UpdateUserAttributesInput : Represents the request to update user attributes. /// diff --git a/Sources/Services/AWSCognitoIdentityProvider/models/Models.swift b/Sources/Services/AWSCognitoIdentityProvider/models/Models.swift index 8caf0ff3cda..af22389b6cb 100644 --- a/Sources/Services/AWSCognitoIdentityProvider/models/Models.swift +++ b/Sources/Services/AWSCognitoIdentityProvider/models/Models.swift @@ -377,13 +377,13 @@ extension AdminAddUserToGroupInput: ClientRuntime.URLPathProvider { } public struct AdminAddUserToGroupInput: Swift.Equatable { - /// The group name. + /// The name of the group that you want to add your user to. /// This member is required. public var groupName: Swift.String? /// The user pool ID for the user pool. /// This member is required. public var userPoolId: Swift.String? - /// The username for the user. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -497,7 +497,7 @@ public struct AdminConfirmSignUpInput: Swift.Equatable { /// The user pool ID for which you want to confirm user registration. /// This member is required. public var userPoolId: Swift.String? - /// The user name for which you want to confirm user registration. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -737,7 +737,7 @@ public struct AdminCreateUserInput: Swift.Equatable { /// * You can only provide a value if usernames are a valid sign-in attribute for your user pool. If your user pool only supports phone numbers or email addresses as sign-in attributes, Amazon Cognito automatically generates a username value. For more information, see [Customizing sign-in attributes](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases). /// This member is required. public var username: Swift.String? - /// The user's validation data. This is an array of name-value pairs that contain user attributes and attribute values that you can use for custom validation, such as restricting the types of user accounts that can be registered. For example, you might choose to allow or disallow user sign-up based on the user's domain. To configure custom validation, you must create a Pre Sign-up Lambda trigger for the user pool as described in the Amazon Cognito Developer Guide. The Lambda trigger receives the validation data and uses it in the validation process. The user's validation data isn't persisted. + /// Temporary user attributes that contribute to the outcomes of your pre sign-up Lambda trigger. This set of key-value pairs are for custom validation of information that you collect from your users but don't need to retain. Your Lambda function can analyze this additional data and act on it. Your function might perform external API operations like logging user attributes and validation data to Amazon CloudWatch Logs. Validation data might also affect the response that your function returns to Amazon Cognito, like automatically confirming the user if they sign up from within your network. For more information about the pre sign-up Lambda trigger, see [Pre sign-up Lambda trigger](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-sign-up.html). public var validationData: [CognitoIdentityProviderClientTypes.AttributeType]? public init( @@ -958,7 +958,7 @@ public struct AdminDeleteUserAttributesInput: Swift.Equatable { /// The user pool ID for the user pool where you want to delete user attributes. /// This member is required. public var userPoolId: Swift.String? - /// The user name of the user from which you would like to delete attributes. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -1067,7 +1067,7 @@ public struct AdminDeleteUserInput: Swift.Equatable { /// The user pool ID for the user pool where you want to delete the user. /// This member is required. public var userPoolId: Swift.String? - /// The user name of the user you want to delete. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -1248,7 +1248,7 @@ public struct AdminDisableUserInput: Swift.Equatable { /// The user pool ID for the user pool where you want to disable the user. /// This member is required. public var userPoolId: Swift.String? - /// The user name of the user you want to disable. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -1342,7 +1342,7 @@ public struct AdminEnableUserInput: Swift.Equatable { /// The user pool ID for the user pool where you want to enable the user. /// This member is required. public var userPoolId: Swift.String? - /// The user name of the user you want to enable. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -1443,7 +1443,7 @@ public struct AdminForgetDeviceInput: Swift.Equatable { /// The user pool ID. /// This member is required. public var userPoolId: Swift.String? - /// The user name. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -1550,7 +1550,7 @@ public struct AdminGetDeviceInput: Swift.Equatable { /// The user pool ID. /// This member is required. public var userPoolId: Swift.String? - /// The user name. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -1681,7 +1681,7 @@ public struct AdminGetUserInput: Swift.Equatable { /// The user pool ID for the user pool where you want to get information about the user. /// This member is required. public var userPoolId: Swift.String? - /// The user name of the user you want to retrieve. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -2012,8 +2012,6 @@ public struct AdminInitiateAuthInput: Swift.Equatable { /// /// * Define auth challenge /// - /// * Verify auth challenge - /// /// /// For more information, see [ Customizing user pool Workflows with Lambda Triggers](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html) in the Amazon Cognito Developer Guide. When you use the ClientMetadata parameter, remember that Amazon Cognito won't do the following: /// @@ -2154,7 +2152,7 @@ public struct AdminInitiateAuthOutput: Swift.Equatable { /// /// * NEW_PASSWORD_REQUIRED: For users who are required to change their passwords after successful first login. Respond to this challenge with NEW_PASSWORD and any required attributes that Amazon Cognito returned in the requiredAttributes parameter. You can also set values for attributes that aren't required by your user pool and that your app client can write. For more information, see [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html). In a NEW_PASSWORD_REQUIRED challenge response, you can't modify a required attribute that already has a value. In AdminRespondToAuthChallenge, set a value for any keys that Amazon Cognito returned in the requiredAttributes parameter, then use the AdminUpdateUserAttributes API operation to modify the value of any additional attributes. /// - /// * MFA_SETUP: For users who are required to set up an MFA factor before they can sign in. The MFA types activated for the user pool will be listed in the challenge parameters MFA_CAN_SETUP value. To set up software token MFA, use the session returned here from InitiateAuth as an input to AssociateSoftwareToken, and use the session returned by VerifySoftwareToken as an input to RespondToAuthChallenge with challenge name MFA_SETUP to complete sign-in. To set up SMS MFA, users will need help from an administrator to add a phone number to their account and then call InitiateAuth again to restart sign-in. + /// * MFA_SETUP: For users who are required to set up an MFA factor before they can sign in. The MFA types activated for the user pool will be listed in the challenge parameters MFAS_CAN_SETUP value. To set up software token MFA, use the session returned here from InitiateAuth as an input to AssociateSoftwareToken, and use the session returned by VerifySoftwareToken as an input to RespondToAuthChallenge with challenge name MFA_SETUP to complete sign-in. To set up SMS MFA, users will need help from an administrator to add a phone number to their account and then call InitiateAuth again to restart sign-in. public var challengeName: CognitoIdentityProviderClientTypes.ChallengeNameType? /// The challenge parameters. These are returned to you in the AdminInitiateAuth response if you must pass another challenge. The responses in this parameter should be used to compute inputs to the next call (AdminRespondToAuthChallenge). All challenges require USERNAME and SECRET_HASH (if applicable). The value of the USER_ID_FOR_SRP attribute is the user's actual username, not an alias (such as email address or phone number), even if you specified an alias in your call to AdminInitiateAuth. This happens because, in the AdminRespondToAuthChallenge API ChallengeResponses, the USERNAME attribute can't be an alias. public var challengeParameters: [Swift.String:Swift.String]? @@ -2379,12 +2377,12 @@ extension AdminListDevicesInput: ClientRuntime.URLPathProvider { public struct AdminListDevicesInput: Swift.Equatable { /// The limit of the devices request. public var limit: Swift.Int? - /// The pagination token. + /// This API operation returns a limited number of results. The pagination token is an identifier that you can present in an additional API request with the same parameters. When you include the pagination token, Amazon Cognito returns the next set of items after the current list. Subsequent requests return a new pagination token. By use of this token, you can paginate through the full list of items. public var paginationToken: Swift.String? /// The user pool ID. /// This member is required. public var userPoolId: Swift.String? - /// The user name. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -2448,7 +2446,7 @@ extension AdminListDevicesOutput: ClientRuntime.HttpResponseBinding { public struct AdminListDevicesOutput: Swift.Equatable { /// The devices in the list of devices response. public var devices: [CognitoIdentityProviderClientTypes.DeviceType]? - /// The pagination token. + /// The identifier that Amazon Cognito returned with the previous request to this operation. When you include a pagination token in your request, Amazon Cognito returns the next set of items in the list. By use of this token, you can paginate through the full list of items. public var paginationToken: Swift.String? public init( @@ -2550,7 +2548,7 @@ public struct AdminListGroupsForUserInput: Swift.Equatable { /// The user pool ID for the user pool. /// This member is required. public var userPoolId: Swift.String? - /// The username for the user. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -2715,7 +2713,7 @@ public struct AdminListUserAuthEventsInput: Swift.Equatable { /// The user pool ID. /// This member is required. public var userPoolId: Swift.String? - /// The user pool username or an alias. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -2876,7 +2874,7 @@ public struct AdminRemoveUserFromGroupInput: Swift.Equatable { /// The user pool ID for the user pool. /// This member is required. public var userPoolId: Swift.String? - /// The username for the user. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -2990,7 +2988,7 @@ public struct AdminResetUserPasswordInput: Swift.Equatable { /// The user pool ID for the user pool where you want to reset the user's password. /// This member is required. public var userPoolId: Swift.String? - /// The user name of the user whose password you want to reset. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -3138,20 +3136,7 @@ public struct AdminRespondToAuthChallengeInput: Swift.Equatable { /// The challenge name. For more information, see [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html). /// This member is required. public var challengeName: CognitoIdentityProviderClientTypes.ChallengeNameType? - /// The challenge responses. These are inputs corresponding to the value of ChallengeName, for example: - /// - /// * SMS_MFA: SMS_MFA_CODE, USERNAME, SECRET_HASH (if app client is configured with client secret). - /// - /// * PASSWORD_VERIFIER: PASSWORD_CLAIM_SIGNATURE, PASSWORD_CLAIM_SECRET_BLOCK, TIMESTAMP, USERNAME, SECRET_HASH (if app client is configured with client secret). PASSWORD_VERIFIER requires DEVICE_KEY when signing in with a remembered device. - /// - /// * ADMIN_NO_SRP_AUTH: PASSWORD, USERNAME, SECRET_HASH (if app client is configured with client secret). - /// - /// * NEW_PASSWORD_REQUIRED: NEW_PASSWORD, USERNAME, SECRET_HASH (if app client is configured with client secret). To set any required attributes that Amazon Cognito returned as requiredAttributes in the AdminInitiateAuth response, add a userAttributes.attributename parameter. This parameter can also set values for writable attributes that aren't required by your user pool. In a NEW_PASSWORD_REQUIRED challenge response, you can't modify a required attribute that already has a value. In AdminRespondToAuthChallenge, set a value for any keys that Amazon Cognito returned in the requiredAttributes parameter, then use the AdminUpdateUserAttributes API operation to modify the value of any additional attributes. - /// - /// * MFA_SETUP requires USERNAME, plus you must use the session value returned by VerifySoftwareToken in the Session parameter. - /// - /// - /// The value of the USERNAME attribute must be the user's actual username, not an alias (such as an email address or phone number). To make this simpler, the AdminInitiateAuth response includes the actual username value in the USERNAMEUSER_ID_FOR_SRP attribute. This happens even if you specified an alias in your call to AdminInitiateAuth. For more information about SECRET_HASH, see [Computing secret hash values](https://docs.aws.amazon.com/cognito/latest/developerguide/signing-up-users-in-your-app.html#cognito-user-pools-computing-secret-hash). For information about DEVICE_KEY, see [Working with user devices in your user pool](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-device-tracking.html). + /// The responses to the challenge that you received in the previous request. Each challenge has its own required response parameters. The following examples are partial JSON request bodies that highlight challenge-response parameters. You must provide a SECRET_HASH parameter in all challenge responses to an app client that has a client secret. SMS_MFA "ChallengeName": "SMS_MFA", "ChallengeResponses": {"SMS_MFA_CODE": "[SMS_code]", "USERNAME": "[username]"} PASSWORD_VERIFIER "ChallengeName": "PASSWORD_VERIFIER", "ChallengeResponses": {"PASSWORD_CLAIM_SIGNATURE": "[claim_signature]", "PASSWORD_CLAIM_SECRET_BLOCK": "[secret_block]", "TIMESTAMP": [timestamp], "USERNAME": "[username]"} Add "DEVICE_KEY" when you sign in with a remembered device. CUSTOM_CHALLENGE "ChallengeName": "CUSTOM_CHALLENGE", "ChallengeResponses": {"USERNAME": "[username]", "ANSWER": "[challenge_answer]"} Add "DEVICE_KEY" when you sign in with a remembered device. NEW_PASSWORD_REQUIRED "ChallengeName": "NEW_PASSWORD_REQUIRED", "ChallengeResponses": {"NEW_PASSWORD": "[new_password]", "USERNAME": "[username]"} To set any required attributes that InitiateAuth returned in an requiredAttributes parameter, add "userAttributes.[attribute_name]": "[attribute_value]". This parameter can also set values for writable attributes that aren't required by your user pool. In a NEW_PASSWORD_REQUIRED challenge response, you can't modify a required attribute that already has a value. In RespondToAuthChallenge, set a value for any keys that Amazon Cognito returned in the requiredAttributes parameter, then use the UpdateUserAttributes API operation to modify the value of any additional attributes. SOFTWARE_TOKEN_MFA "ChallengeName": "SOFTWARE_TOKEN_MFA", "ChallengeResponses": {"USERNAME": "[username]", "SOFTWARE_TOKEN_MFA_CODE": [authenticator_code]} DEVICE_SRP_AUTH "ChallengeName": "DEVICE_SRP_AUTH", "ChallengeResponses": {"USERNAME": "[username]", "DEVICE_KEY": "[device_key]", "SRP_A": "[srp_a]"} DEVICE_PASSWORD_VERIFIER "ChallengeName": "DEVICE_PASSWORD_VERIFIER", "ChallengeResponses": {"DEVICE_KEY": "[device_key]", "PASSWORD_CLAIM_SIGNATURE": "[claim_signature]", "PASSWORD_CLAIM_SECRET_BLOCK": "[secret_block]", "TIMESTAMP": [timestamp], "USERNAME": "[username]"} MFA_SETUP "ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]"}, "SESSION": "[Session ID from VerifySoftwareToken]" SELECT_MFA_TYPE "ChallengeName": "SELECT_MFA_TYPE", "ChallengeResponses": {"USERNAME": "[username]", "ANSWER": "[SMS_MFA or SOFTWARE_TOKEN_MFA]"} For more information about SECRET_HASH, see [Computing secret hash values](https://docs.aws.amazon.com/cognito/latest/developerguide/signing-up-users-in-your-app.html#cognito-user-pools-computing-secret-hash). For information about DEVICE_KEY, see [Working with user devices in your user pool](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-device-tracking.html). public var challengeResponses: [Swift.String:Swift.String]? /// The app client ID. /// This member is required. @@ -3434,7 +3419,7 @@ public struct AdminSetUserMFAPreferenceInput: Swift.Equatable { /// The user pool ID. /// This member is required. public var userPoolId: Swift.String? - /// The user pool username or alias. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -3552,7 +3537,7 @@ public struct AdminSetUserPasswordInput: Swift.Equatable { /// The user pool ID for the user pool where you want to set the user's password. /// This member is required. public var userPoolId: Swift.String? - /// The user name of the user whose password you want to set. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -3668,7 +3653,7 @@ public struct AdminSetUserSettingsInput: Swift.Equatable { /// The ID of the user pool that contains the user whose options you're setting. /// This member is required. public var userPoolId: Swift.String? - /// The user name of the user whose options you're setting. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -3789,7 +3774,7 @@ public struct AdminUpdateAuthEventFeedbackInput: Swift.Equatable { /// The user pool ID. /// This member is required. public var userPoolId: Swift.String? - /// The user pool username. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -3908,7 +3893,7 @@ public struct AdminUpdateDeviceStatusInput: Swift.Equatable { /// The user pool ID. /// This member is required. public var userPoolId: Swift.String? - /// The user name. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -4040,7 +4025,7 @@ public struct AdminUpdateUserAttributesInput: Swift.Equatable { /// The user pool ID for the user pool where you want to update user attributes. /// This member is required. public var userPoolId: Swift.String? - /// The user name of the user for whom you want to update user attributes. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -4171,7 +4156,7 @@ public struct AdminUserGlobalSignOutInput: Swift.Equatable { /// The user pool ID. /// This member is required. public var userPoolId: Swift.String? - /// The user name. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -5843,7 +5828,7 @@ public struct ConfirmForgotPasswordInput: Swift.Equatable { public var secretHash: Swift.String? /// Contextual data about your user session, such as the device fingerprint, IP address, or location. Amazon Cognito advanced security evaluates the risk of an authentication event based on the context that your app generates and passes to Amazon Cognito when it makes API requests. public var userContextData: CognitoIdentityProviderClientTypes.UserContextDataType? - /// The user name of the user for whom you want to enter a code to retrieve a forgotten password. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -6038,7 +6023,7 @@ public struct ConfirmSignUpInput: Swift.Equatable { public var secretHash: Swift.String? /// Contextual data about your user session, such as the device fingerprint, IP address, or location. Amazon Cognito advanced security evaluates the risk of an authentication event based on the context that your app generates and passes to Amazon Cognito when it makes API requests. public var userContextData: CognitoIdentityProviderClientTypes.UserContextDataType? - /// The user name of the user whose registration you want to confirm. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -7179,7 +7164,7 @@ public struct CreateUserPoolClientInput: Swift.Equatable { /// /// * LEGACY - This represents the early behavior of Amazon Cognito where user existence related errors aren't prevented. public var preventUserExistenceErrors: CognitoIdentityProviderClientTypes.PreventUserExistenceErrorTypes? - /// The read attributes. + /// The list of user attributes that you want your app client to have read-only access to. After your user authenticates in your app, their access token authorizes them to read their own attribute value for any attribute in this list. An example of this kind of activity is when your user selects a link to view their profile information. Your app makes a [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) API request to retrieve and display your user's profile data. When you don't specify the ReadAttributes for your app client, your app can read the values of email_verified, phone_number_verified, and the Standard attributes of your user pool. When your user pool has read access to these default attributes, ReadAttributes doesn't return any information. Amazon Cognito only populates ReadAttributes in the API response if you have specified your own custom set of read attributes. public var readAttributes: [Swift.String]? /// The refresh token time limit. After this limit expires, your user can't use their refresh token. To specify the time unit for RefreshTokenValidity as seconds, minutes, hours, or days, set a TokenValidityUnits value in your API request. For example, when you set RefreshTokenValidity as 10 and TokenValidityUnits as days, your user can refresh their session and retrieve new access and ID tokens for 10 days. The default time unit for RefreshTokenValidity in an API request is days. You can't set RefreshTokenValidity to 0. If you do, Amazon Cognito overrides the value with the default value of 30 days. Valid range is displayed below in seconds. If you don't specify otherwise in the configuration of your app client, your refresh tokens are valid for 30 days. public var refreshTokenValidity: Swift.Int? @@ -7190,7 +7175,7 @@ public struct CreateUserPoolClientInput: Swift.Equatable { /// The user pool ID for the user pool where you want to create a user pool client. /// This member is required. public var userPoolId: Swift.String? - /// The user pool attributes that the app client can write to. If your app client allows users to sign in through an IdP, this array must include all attributes that you have mapped to IdP attributes. Amazon Cognito updates mapped attributes when users sign in to your application through an IdP. If your app client does not have write access to a mapped attribute, Amazon Cognito throws an error when it tries to update the attribute. For more information, see [Specifying IdP Attribute Mappings for Your user pool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html). + /// The list of user attributes that you want your app client to have write access to. After your user authenticates in your app, their access token authorizes them to set or modify their own attribute value for any attribute in this list. An example of this kind of activity is when you present your user with a form to update their profile information and they change their last name. Your app then makes an [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) API request and sets family_name to the new value. When you don't specify the WriteAttributes for your app client, your app can write the values of the Standard attributes of your user pool. When your user pool has write access to these default attributes, WriteAttributes doesn't return any information. Amazon Cognito only populates WriteAttributes in the API response if you have specified your own custom set of write attributes. If your app client allows users to sign in through an IdP, this array must include all attributes that you have mapped to IdP attributes. Amazon Cognito updates mapped attributes when users sign in to your application through an IdP. If your app client does not have write access to a mapped attribute, Amazon Cognito throws an error when it tries to update the attribute. For more information, see [Specifying IdP Attribute Mappings for Your user pool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html). public var writeAttributes: [Swift.String]? public init( @@ -8097,12 +8082,12 @@ extension CognitoIdentityProviderClientTypes.CustomEmailLambdaVersionConfigType: } extension CognitoIdentityProviderClientTypes { - /// A custom email sender Lambda configuration type. + /// The properties of a custom email sender Lambda trigger. public struct CustomEmailLambdaVersionConfigType: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the Lambda function that Amazon Cognito activates to send email notifications to users. + /// The Amazon Resource Name (ARN) of the function that you want to assign to your Lambda trigger. /// This member is required. public var lambdaArn: Swift.String? - /// Signature of the "request" attribute in the "event" information Amazon Cognito passes to your custom email Lambda function. The only supported value is V1_0. + /// The user pool trigger version of the request that Amazon Cognito sends to your Lambda function. Higher-numbered versions add fields that support new features. You must use a LambdaVersion of V1_0 with a custom sender function. /// This member is required. public var lambdaVersion: CognitoIdentityProviderClientTypes.CustomEmailSenderLambdaVersionType? @@ -8173,12 +8158,12 @@ extension CognitoIdentityProviderClientTypes.CustomSMSLambdaVersionConfigType: S } extension CognitoIdentityProviderClientTypes { - /// A custom SMS sender Lambda configuration type. + /// The properties of a custom SMS sender Lambda trigger. public struct CustomSMSLambdaVersionConfigType: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the Lambda function that Amazon Cognito activates to send SMS notifications to users. + /// The Amazon Resource Name (ARN) of the function that you want to assign to your Lambda trigger. /// This member is required. public var lambdaArn: Swift.String? - /// Signature of the "request" attribute in the "event" information that Amazon Cognito passes to your custom SMS Lambda function. The only supported value is V1_0. + /// The user pool trigger version of the request that Amazon Cognito sends to your Lambda function. Higher-numbered versions add fields that support new features. You must use a LambdaVersion of V1_0 with a custom sender function. /// This member is required. public var lambdaVersion: CognitoIdentityProviderClientTypes.CustomSMSSenderLambdaVersionType? @@ -11091,7 +11076,7 @@ public struct ForgotPasswordInput: Swift.Equatable { public var secretHash: Swift.String? /// Contextual data about your user session, such as the device fingerprint, IP address, or location. Amazon Cognito advanced security evaluates the risk of an authentication event based on the context that your app generates and passes to Amazon Cognito when it makes API requests. public var userContextData: CognitoIdentityProviderClientTypes.UserContextDataType? - /// The user name of the user for whom you want to enter a code to reset a forgotten password. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -13175,8 +13160,6 @@ public struct InitiateAuthInput: Swift.Equatable { /// /// * Define auth challenge /// - /// * Verify auth challenge - /// /// /// For more information, see [ Customizing user pool Workflows with Lambda Triggers](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html) in the Amazon Cognito Developer Guide. When you use the ClientMetadata parameter, remember that Amazon Cognito won't do the following: /// @@ -13288,7 +13271,7 @@ extension InitiateAuthOutput: ClientRuntime.HttpResponseBinding { public struct InitiateAuthOutput: Swift.Equatable { /// The result of the authentication response. This result is only returned if the caller doesn't need to pass another challenge. If the caller does need to pass another challenge before it gets tokens, ChallengeName, ChallengeParameters, and Session are returned. public var authenticationResult: CognitoIdentityProviderClientTypes.AuthenticationResultType? - /// The name of the challenge that you're responding to with this call. This name is returned in the AdminInitiateAuth response if you must pass another challenge. Valid values include the following: All of the following challenges require USERNAME and SECRET_HASH (if applicable) in the parameters. + /// The name of the challenge that you're responding to with this call. This name is returned in the InitiateAuth response if you must pass another challenge. Valid values include the following: All of the following challenges require USERNAME and SECRET_HASH (if applicable) in the parameters. /// /// * SMS_MFA: Next challenge is to supply an SMS_MFA_CODE, delivered via SMS. /// @@ -13302,7 +13285,7 @@ public struct InitiateAuthOutput: Swift.Equatable { /// /// * NEW_PASSWORD_REQUIRED: For users who are required to change their passwords after successful first login. Respond to this challenge with NEW_PASSWORD and any required attributes that Amazon Cognito returned in the requiredAttributes parameter. You can also set values for attributes that aren't required by your user pool and that your app client can write. For more information, see [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html). In a NEW_PASSWORD_REQUIRED challenge response, you can't modify a required attribute that already has a value. In RespondToAuthChallenge, set a value for any keys that Amazon Cognito returned in the requiredAttributes parameter, then use the UpdateUserAttributes API operation to modify the value of any additional attributes. /// - /// * MFA_SETUP: For users who are required to setup an MFA factor before they can sign in. The MFA types activated for the user pool will be listed in the challenge parameters MFA_CAN_SETUP value. To set up software token MFA, use the session returned here from InitiateAuth as an input to AssociateSoftwareToken. Use the session returned by VerifySoftwareToken as an input to RespondToAuthChallenge with challenge name MFA_SETUP to complete sign-in. To set up SMS MFA, an administrator should help the user to add a phone number to their account, and then the user should call InitiateAuth again to restart sign-in. + /// * MFA_SETUP: For users who are required to setup an MFA factor before they can sign in. The MFA types activated for the user pool will be listed in the challenge parameters MFAS_CAN_SETUP value. To set up software token MFA, use the session returned here from InitiateAuth as an input to AssociateSoftwareToken. Use the session returned by VerifySoftwareToken as an input to RespondToAuthChallenge with challenge name MFA_SETUP to complete sign-in. To set up SMS MFA, an administrator should help the user to add a phone number to their account, and then the user should call InitiateAuth again to restart sign-in. public var challengeName: CognitoIdentityProviderClientTypes.ChallengeNameType? /// The challenge parameters. These are returned in the InitiateAuth response if you must pass another challenge. The responses in this parameter should be used to compute inputs to the next call (RespondToAuthChallenge). All challenges require USERNAME and SECRET_HASH (if applicable). public var challengeParameters: [Swift.String:Swift.String]? @@ -13901,6 +13884,7 @@ extension CognitoIdentityProviderClientTypes.LambdaConfigType: Swift.Codable { case preAuthentication = "PreAuthentication" case preSignUp = "PreSignUp" case preTokenGeneration = "PreTokenGeneration" + case preTokenGenerationConfig = "PreTokenGenerationConfig" case userMigration = "UserMigration" case verifyAuthChallengeResponse = "VerifyAuthChallengeResponse" } @@ -13940,6 +13924,9 @@ extension CognitoIdentityProviderClientTypes.LambdaConfigType: Swift.Codable { if let preTokenGeneration = self.preTokenGeneration { try encodeContainer.encode(preTokenGeneration, forKey: .preTokenGeneration) } + if let preTokenGenerationConfig = self.preTokenGenerationConfig { + try encodeContainer.encode(preTokenGenerationConfig, forKey: .preTokenGenerationConfig) + } if let userMigration = self.userMigration { try encodeContainer.encode(userMigration, forKey: .userMigration) } @@ -13968,6 +13955,8 @@ extension CognitoIdentityProviderClientTypes.LambdaConfigType: Swift.Codable { verifyAuthChallengeResponse = verifyAuthChallengeResponseDecoded let preTokenGenerationDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .preTokenGeneration) preTokenGeneration = preTokenGenerationDecoded + let preTokenGenerationConfigDecoded = try containerValues.decodeIfPresent(CognitoIdentityProviderClientTypes.PreTokenGenerationVersionConfigType.self, forKey: .preTokenGenerationConfig) + preTokenGenerationConfig = preTokenGenerationConfigDecoded let userMigrationDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userMigration) userMigration = userMigrationDecoded let customSMSSenderDecoded = try containerValues.decodeIfPresent(CognitoIdentityProviderClientTypes.CustomSMSLambdaVersionConfigType.self, forKey: .customSMSSender) @@ -14002,8 +13991,10 @@ extension CognitoIdentityProviderClientTypes { public var preAuthentication: Swift.String? /// A pre-registration Lambda trigger. public var preSignUp: Swift.String? - /// A Lambda trigger that is invoked before token generation. + /// The Amazon Resource Name (ARN) of the function that you want to assign to your Lambda trigger. Set this parameter for legacy purposes. If you also set an ARN in PreTokenGenerationConfig, its value must be identical to PreTokenGeneration. For new instances of pre token generation triggers, set the LambdaArn of PreTokenGenerationConfig. You can set public var preTokenGeneration: Swift.String? + /// The detailed configuration of a pre token generation trigger. If you also set an ARN in PreTokenGeneration, its value must be identical to PreTokenGenerationConfig. + public var preTokenGenerationConfig: CognitoIdentityProviderClientTypes.PreTokenGenerationVersionConfigType? /// The user migration Lambda config type. public var userMigration: Swift.String? /// Verifies the authentication challenge response. @@ -14021,6 +14012,7 @@ extension CognitoIdentityProviderClientTypes { preAuthentication: Swift.String? = nil, preSignUp: Swift.String? = nil, preTokenGeneration: Swift.String? = nil, + preTokenGenerationConfig: CognitoIdentityProviderClientTypes.PreTokenGenerationVersionConfigType? = nil, userMigration: Swift.String? = nil, verifyAuthChallengeResponse: Swift.String? = nil ) @@ -14036,6 +14028,7 @@ extension CognitoIdentityProviderClientTypes { self.preAuthentication = preAuthentication self.preSignUp = preSignUp self.preTokenGeneration = preTokenGeneration + self.preTokenGenerationConfig = preTokenGenerationConfig self.userMigration = userMigration self.verifyAuthChallengeResponse = verifyAuthChallengeResponse } @@ -14138,7 +14131,7 @@ public struct ListDevicesInput: Swift.Equatable { public var accessToken: Swift.String? /// The limit of the device request. public var limit: Swift.Int? - /// The pagination token for the list request. + /// This API operation returns a limited number of results. The pagination token is an identifier that you can present in an additional API request with the same parameters. When you include the pagination token, Amazon Cognito returns the next set of items after the current list. Subsequent requests return a new pagination token. By use of this token, you can paginate through the full list of items. public var paginationToken: Swift.String? public init( @@ -14195,7 +14188,7 @@ extension ListDevicesOutput: ClientRuntime.HttpResponseBinding { public struct ListDevicesOutput: Swift.Equatable { /// The devices returned in the list devices response. public var devices: [CognitoIdentityProviderClientTypes.DeviceType]? - /// The pagination token for the list device response. + /// The identifier that Amazon Cognito returned with the previous request to this operation. When you include a pagination token in your request, Amazon Cognito returns the next set of items in the list. By use of this token, you can paginate through the full list of items. public var paginationToken: Swift.String? public init( @@ -14841,7 +14834,7 @@ public struct ListUserImportJobsInput: Swift.Equatable { /// The maximum number of import jobs you want the request to return. /// This member is required. public var maxResults: Swift.Int? - /// An identifier that was returned from the previous call to ListUserImportJobs, which can be used to return the next set of import jobs in the list. + /// This API operation returns a limited number of results. The pagination token is an identifier that you can present in an additional API request with the same parameters. When you include the pagination token, Amazon Cognito returns the next set of items after the current list. Subsequent requests return a new pagination token. By use of this token, you can paginate through the full list of items. public var paginationToken: Swift.String? /// The user pool ID for the user pool that the users are being imported into. /// This member is required. @@ -14899,7 +14892,7 @@ extension ListUserImportJobsOutput: ClientRuntime.HttpResponseBinding { /// Represents the response from the server to the request to list the user import jobs. public struct ListUserImportJobsOutput: Swift.Equatable { - /// An identifier that can be used to return the next set of user import jobs in the list. + /// The identifier that Amazon Cognito returned with the previous request to this operation. When you include a pagination token in your request, Amazon Cognito returns the next set of items in the list. By use of this token, you can paginate through the full list of items. public var paginationToken: Swift.String? /// The user import jobs. public var userImportJobs: [CognitoIdentityProviderClientTypes.UserImportJobType]? @@ -15276,7 +15269,7 @@ public struct ListUsersInGroupInput: Swift.Equatable { /// The name of the group. /// This member is required. public var groupName: Swift.String? - /// The limit of the request to list users. + /// The maximum number of users that you want to retrieve before pagination. public var limit: Swift.Int? /// An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. public var nextToken: Swift.String? @@ -15343,7 +15336,7 @@ extension ListUsersInGroupOutput: ClientRuntime.HttpResponseBinding { public struct ListUsersInGroupOutput: Swift.Equatable { /// An identifier that you can use in a later request to return the next set of items in the list. public var nextToken: Swift.String? - /// The users returned in the request to list users. + /// A list of users in the group, and their attributes. public var users: [CognitoIdentityProviderClientTypes.UserType]? public init( @@ -15440,7 +15433,7 @@ extension ListUsersInput: ClientRuntime.URLPathProvider { /// Represents the request to list users. public struct ListUsersInput: Swift.Equatable { - /// A JSON array of user attribute names, for example given_name, that you want Amazon Cognito to include in the response for each user. When you don't provide an AttributesToGet parameter, Amazon Cognito returns all attributes for each user. + /// A JSON array of user attribute names, for example given_name, that you want Amazon Cognito to include in the response for each user. When you don't provide an AttributesToGet parameter, Amazon Cognito returns all attributes for each user. Use AttributesToGet with required attributes in your user pool, or in conjunction with Filter. Amazon Cognito returns an error if not all users in the results have set a value for the attribute you request. Attributes that you can't filter on, including custom attributes, must have a value set in every user profile before an AttributesToGet parameter returns results. public var attributesToGet: [Swift.String]? /// A filter string of the form "AttributeName Filter-Type "AttributeValue"". Quotation marks within the filter string must be escaped using the backslash (\) character. For example, "family_name = \"Reddy\"". /// @@ -15478,7 +15471,7 @@ public struct ListUsersInput: Swift.Equatable { public var filter: Swift.String? /// Maximum number of users to be returned. public var limit: Swift.Int? - /// An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. + /// This API operation returns a limited number of results. The pagination token is an identifier that you can present in an additional API request with the same parameters. When you include the pagination token, Amazon Cognito returns the next set of items after the current list. Subsequent requests return a new pagination token. By use of this token, you can paginate through the full list of items. public var paginationToken: Swift.String? /// The user pool ID for the user pool on which the search should be performed. /// This member is required. @@ -15557,7 +15550,7 @@ extension ListUsersOutput: ClientRuntime.HttpResponseBinding { /// The response from the request to list users. public struct ListUsersOutput: Swift.Equatable { - /// An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list. + /// The identifier that Amazon Cognito returned with the previous request to this operation. When you include a pagination token in your request, Amazon Cognito returns the next set of items in the list. By use of this token, you can paginate through the full list of items. public var paginationToken: Swift.String? /// A list of the user pool users, and their attributes, that match your query. Amazon Cognito creates a profile in your user pool for each native user in your user pool, and each unique user ID from your third-party identity providers (IdPs). When you link users with the [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html) API operation, the output of ListUsers displays both the IdP user and the native user that you linked. You can identify IdP users in the Users object of this API response by the IdP prefix that Amazon Cognito appends to Username. public var users: [CognitoIdentityProviderClientTypes.UserType]? @@ -16334,7 +16327,7 @@ extension CognitoIdentityProviderClientTypes { public var requireSymbols: Swift.Bool /// In the password policy that you have set, refers to whether you have required users to use at least one uppercase letter in their password. public var requireUppercase: Swift.Bool - /// The number of days a temporary password is valid in the password policy. If the user doesn't sign in during this time, an administrator must reset their password. When you set TemporaryPasswordValidityDays for a user pool, you can no longer set a value for the legacy UnusedAccountValidityDays parameter in that user pool. + /// The number of days a temporary password is valid in the password policy. If the user doesn't sign in during this time, an administrator must reset their password. Defaults to 7. If you submit a value of 0, Amazon Cognito treats it as a null value and sets TemporaryPasswordValidityDays to its default value. When you set TemporaryPasswordValidityDays for a user pool, you can no longer set a value for the legacy UnusedAccountValidityDays parameter in that user pool. public var temporaryPasswordValidityDays: Swift.Int public init( @@ -16413,6 +16406,85 @@ extension PasswordResetRequiredExceptionBody: Swift.Decodable { } } +extension CognitoIdentityProviderClientTypes { + public enum PreTokenGenerationLambdaVersionType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case v10 + case v20 + case sdkUnknown(Swift.String) + + public static var allCases: [PreTokenGenerationLambdaVersionType] { + return [ + .v10, + .v20, + .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 .v10: return "V1_0" + case .v20: return "V2_0" + 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 = PreTokenGenerationLambdaVersionType(rawValue: rawValue) ?? PreTokenGenerationLambdaVersionType.sdkUnknown(rawValue) + } + } +} + +extension CognitoIdentityProviderClientTypes.PreTokenGenerationVersionConfigType: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case lambdaArn = "LambdaArn" + case lambdaVersion = "LambdaVersion" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let lambdaArn = self.lambdaArn { + try encodeContainer.encode(lambdaArn, forKey: .lambdaArn) + } + if let lambdaVersion = self.lambdaVersion { + try encodeContainer.encode(lambdaVersion.rawValue, forKey: .lambdaVersion) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let lambdaVersionDecoded = try containerValues.decodeIfPresent(CognitoIdentityProviderClientTypes.PreTokenGenerationLambdaVersionType.self, forKey: .lambdaVersion) + lambdaVersion = lambdaVersionDecoded + let lambdaArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lambdaArn) + lambdaArn = lambdaArnDecoded + } +} + +extension CognitoIdentityProviderClientTypes { + /// The properties of a pre token generation Lambda trigger. + public struct PreTokenGenerationVersionConfigType: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the function that you want to assign to your Lambda trigger. This parameter and the PreTokenGeneration property of LambdaConfig have the same value. For new instances of pre token generation triggers, set LambdaArn. + /// This member is required. + public var lambdaArn: Swift.String? + /// The user pool trigger version of the request that Amazon Cognito sends to your Lambda function. Higher-numbered versions add fields that support new features. + /// This member is required. + public var lambdaVersion: CognitoIdentityProviderClientTypes.PreTokenGenerationLambdaVersionType? + + public init( + lambdaArn: Swift.String? = nil, + lambdaVersion: CognitoIdentityProviderClientTypes.PreTokenGenerationLambdaVersionType? = nil + ) + { + self.lambdaArn = lambdaArn + self.lambdaVersion = lambdaVersion + } + } + +} + extension PreconditionNotMetException { 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(), @@ -16769,7 +16841,7 @@ public struct ResendConfirmationCodeInput: Swift.Equatable { public var secretHash: Swift.String? /// Contextual data about your user session, such as the device fingerprint, IP address, or location. Amazon Cognito advanced security evaluates the risk of an authentication event based on the context that your app generates and passes to Amazon Cognito when it makes API requests. public var userContextData: CognitoIdentityProviderClientTypes.UserContextDataType? - /// The username attribute of the user to whom you want to resend a confirmation code. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -17143,24 +17215,7 @@ public struct RespondToAuthChallengeInput: Swift.Equatable { /// The challenge name. For more information, see [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html). ADMIN_NO_SRP_AUTH isn't a valid value. /// This member is required. public var challengeName: CognitoIdentityProviderClientTypes.ChallengeNameType? - /// The challenge responses. These are inputs corresponding to the value of ChallengeName, for example: SECRET_HASH (if app client is configured with client secret) applies to all of the inputs that follow (including SOFTWARE_TOKEN_MFA). - /// - /// * SMS_MFA: SMS_MFA_CODE, USERNAME. - /// - /// * PASSWORD_VERIFIER: PASSWORD_CLAIM_SIGNATURE, PASSWORD_CLAIM_SECRET_BLOCK, TIMESTAMP, USERNAME. PASSWORD_VERIFIER requires DEVICE_KEY when you sign in with a remembered device. - /// - /// * NEW_PASSWORD_REQUIRED: NEW_PASSWORD, USERNAME, SECRET_HASH (if app client is configured with client secret). To set any required attributes that Amazon Cognito returned as requiredAttributes in the InitiateAuth response, add a userAttributes.attributename parameter. This parameter can also set values for writable attributes that aren't required by your user pool. In a NEW_PASSWORD_REQUIRED challenge response, you can't modify a required attribute that already has a value. In RespondToAuthChallenge, set a value for any keys that Amazon Cognito returned in the requiredAttributes parameter, then use the UpdateUserAttributes API operation to modify the value of any additional attributes. - /// - /// * SOFTWARE_TOKEN_MFA: USERNAME and SOFTWARE_TOKEN_MFA_CODE are required attributes. - /// - /// * DEVICE_SRP_AUTH requires USERNAME, DEVICE_KEY, SRP_A (and SECRET_HASH). - /// - /// * DEVICE_PASSWORD_VERIFIER requires everything that PASSWORD_VERIFIER requires, plus DEVICE_KEY. - /// - /// * MFA_SETUP requires USERNAME, plus you must use the session value returned by VerifySoftwareToken in the Session parameter. - /// - /// - /// For more information about SECRET_HASH, see [Computing secret hash values](https://docs.aws.amazon.com/cognito/latest/developerguide/signing-up-users-in-your-app.html#cognito-user-pools-computing-secret-hash). For information about DEVICE_KEY, see [Working with user devices in your user pool](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-device-tracking.html). + /// The responses to the challenge that you received in the previous request. Each challenge has its own required response parameters. The following examples are partial JSON request bodies that highlight challenge-response parameters. You must provide a SECRET_HASH parameter in all challenge responses to an app client that has a client secret. SMS_MFA "ChallengeName": "SMS_MFA", "ChallengeResponses": {"SMS_MFA_CODE": "[SMS_code]", "USERNAME": "[username]"} PASSWORD_VERIFIER "ChallengeName": "PASSWORD_VERIFIER", "ChallengeResponses": {"PASSWORD_CLAIM_SIGNATURE": "[claim_signature]", "PASSWORD_CLAIM_SECRET_BLOCK": "[secret_block]", "TIMESTAMP": [timestamp], "USERNAME": "[username]"} Add "DEVICE_KEY" when you sign in with a remembered device. CUSTOM_CHALLENGE "ChallengeName": "CUSTOM_CHALLENGE", "ChallengeResponses": {"USERNAME": "[username]", "ANSWER": "[challenge_answer]"} Add "DEVICE_KEY" when you sign in with a remembered device. NEW_PASSWORD_REQUIRED "ChallengeName": "NEW_PASSWORD_REQUIRED", "ChallengeResponses": {"NEW_PASSWORD": "[new_password]", "USERNAME": "[username]"} To set any required attributes that InitiateAuth returned in an requiredAttributes parameter, add "userAttributes.[attribute_name]": "[attribute_value]". This parameter can also set values for writable attributes that aren't required by your user pool. In a NEW_PASSWORD_REQUIRED challenge response, you can't modify a required attribute that already has a value. In RespondToAuthChallenge, set a value for any keys that Amazon Cognito returned in the requiredAttributes parameter, then use the UpdateUserAttributes API operation to modify the value of any additional attributes. SOFTWARE_TOKEN_MFA "ChallengeName": "SOFTWARE_TOKEN_MFA", "ChallengeResponses": {"USERNAME": "[username]", "SOFTWARE_TOKEN_MFA_CODE": [authenticator_code]} DEVICE_SRP_AUTH "ChallengeName": "DEVICE_SRP_AUTH", "ChallengeResponses": {"USERNAME": "[username]", "DEVICE_KEY": "[device_key]", "SRP_A": "[srp_a]"} DEVICE_PASSWORD_VERIFIER "ChallengeName": "DEVICE_PASSWORD_VERIFIER", "ChallengeResponses": {"DEVICE_KEY": "[device_key]", "PASSWORD_CLAIM_SIGNATURE": "[claim_signature]", "PASSWORD_CLAIM_SECRET_BLOCK": "[secret_block]", "TIMESTAMP": [timestamp], "USERNAME": "[username]"} MFA_SETUP "ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]"}, "SESSION": "[Session ID from VerifySoftwareToken]" SELECT_MFA_TYPE "ChallengeName": "SELECT_MFA_TYPE", "ChallengeResponses": {"USERNAME": "[username]", "ANSWER": "[SMS_MFA or SOFTWARE_TOKEN_MFA]"} For more information about SECRET_HASH, see [Computing secret hash values](https://docs.aws.amazon.com/cognito/latest/developerguide/signing-up-users-in-your-app.html#cognito-user-pools-computing-secret-hash). For information about DEVICE_KEY, see [Working with user devices in your user pool](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-device-tracking.html). public var challengeResponses: [Swift.String:Swift.String]? /// The app client ID. /// This member is required. @@ -17809,13 +17864,13 @@ extension CognitoIdentityProviderClientTypes.SchemaAttributeType: Swift.Codable extension CognitoIdentityProviderClientTypes { /// A list of the user attributes and their properties in your user pool. The attribute schema contains standard attributes, custom attributes with a custom: prefix, and developer attributes with a dev: prefix. For more information, see [User pool attributes](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html). Developer-only attributes are a legacy feature of user pools, are read-only to all app clients. You can create and update developer-only attributes only with IAM-authenticated API operations. Use app client read/write permissions instead. public struct SchemaAttributeType: Swift.Equatable { - /// The data format of the values for your attribute. + /// The data format of the values for your attribute. When you choose an AttributeDataType, Amazon Cognito validates the input against the data type. A custom attribute value in your user's ID token is always a string, for example "custom:isMember" : "true" or "custom:YearsAsMember" : "12". public var attributeDataType: CognitoIdentityProviderClientTypes.AttributeDataType? /// You should use [WriteAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserPoolClientType.html#CognitoUserPools-Type-UserPoolClientType-WriteAttributes) in the user pool client to control how attributes can be mutated for new use cases instead of using DeveloperOnlyAttribute. Specifies whether the attribute type is developer only. This attribute can only be modified by an administrator. Users won't be able to modify this attribute using their access token. For example, DeveloperOnlyAttribute can be modified using AdminUpdateUserAttributes but can't be updated using UpdateUserAttributes. public var developerOnlyAttribute: Swift.Bool? /// Specifies whether the value of the attribute can be changed. Any user pool attribute whose value you map from an IdP attribute must be mutable, with a parameter value of true. Amazon Cognito updates mapped attributes when users sign in to your application through an IdP. If an attribute is immutable, Amazon Cognito throws an error when it attempts to update the attribute. For more information, see [Specifying Identity Provider Attribute Mappings for Your User Pool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html). public var mutable: Swift.Bool? - /// The name of your user pool attribute, for example username or custom:costcenter. + /// The name of your user pool attribute. When you create or update a user pool, adding a schema attribute creates a custom or developer-only attribute. When you add an attribute with a Name value of MyAttribute, Amazon Cognito creates the custom attribute custom:MyAttribute. When DeveloperOnlyAttribute is true, Amazon Cognito creates your attribute as dev:MyAttribute. In an operation that describes a user pool, Amazon Cognito returns this value as value for standard attributes, custom:value for custom attributes, and dev:value for developer-only attributes.. public var name: Swift.String? /// Specifies the constraints for an attribute of the number type. public var numberAttributeConstraints: CognitoIdentityProviderClientTypes.NumberAttributeConstraintsType? @@ -18809,10 +18864,10 @@ public struct SignUpInput: Swift.Equatable { public var userAttributes: [CognitoIdentityProviderClientTypes.AttributeType]? /// Contextual data about your user session, such as the device fingerprint, IP address, or location. Amazon Cognito advanced security evaluates the risk of an authentication event based on the context that your app generates and passes to Amazon Cognito when it makes API requests. public var userContextData: CognitoIdentityProviderClientTypes.UserContextDataType? - /// The user name of the user you want to register. + /// The username of the user that you want to sign up. The value of this parameter is typically a username, but can be any alias attribute in your user pool. /// This member is required. public var username: Swift.String? - /// The validation data in the request to register a user. + /// Temporary user attributes that contribute to the outcomes of your pre sign-up Lambda trigger. This set of key-value pairs are for custom validation of information that you collect from your users but don't need to retain. Your Lambda function can analyze this additional data and act on it. Your function might perform external API operations like logging user attributes and validation data to Amazon CloudWatch Logs. Validation data might also affect the response that your function returns to Amazon Cognito, like automatically confirming the user if they sign up from within your network. For more information about the pre sign-up Lambda trigger, see [Pre sign-up Lambda trigger](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-sign-up.html). public var validationData: [CognitoIdentityProviderClientTypes.AttributeType]? public init( @@ -20439,7 +20494,7 @@ public struct UpdateAuthEventFeedbackInput: Swift.Equatable { /// The user pool ID. /// This member is required. public var userPoolId: Swift.String? - /// The user pool username. + /// The username of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, you can also use their sub in this request. /// This member is required. public var username: Swift.String? @@ -21526,7 +21581,7 @@ public struct UpdateUserPoolClientInput: Swift.Equatable { /// /// * LEGACY - This represents the early behavior of Amazon Cognito where user existence related errors aren't prevented. public var preventUserExistenceErrors: CognitoIdentityProviderClientTypes.PreventUserExistenceErrorTypes? - /// The read-only attributes of the user pool. + /// The list of user attributes that you want your app client to have read-only access to. After your user authenticates in your app, their access token authorizes them to read their own attribute value for any attribute in this list. An example of this kind of activity is when your user selects a link to view their profile information. Your app makes a [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) API request to retrieve and display your user's profile data. When you don't specify the ReadAttributes for your app client, your app can read the values of email_verified, phone_number_verified, and the Standard attributes of your user pool. When your user pool has read access to these default attributes, ReadAttributes doesn't return any information. Amazon Cognito only populates ReadAttributes in the API response if you have specified your own custom set of read attributes. public var readAttributes: [Swift.String]? /// The refresh token time limit. After this limit expires, your user can't use their refresh token. To specify the time unit for RefreshTokenValidity as seconds, minutes, hours, or days, set a TokenValidityUnits value in your API request. For example, when you set RefreshTokenValidity as 10 and TokenValidityUnits as days, your user can refresh their session and retrieve new access and ID tokens for 10 days. The default time unit for RefreshTokenValidity in an API request is days. You can't set RefreshTokenValidity to 0. If you do, Amazon Cognito overrides the value with the default value of 30 days. Valid range is displayed below in seconds. If you don't specify otherwise in the configuration of your app client, your refresh tokens are valid for 30 days. public var refreshTokenValidity: Swift.Int? @@ -21537,7 +21592,7 @@ public struct UpdateUserPoolClientInput: Swift.Equatable { /// The user pool ID for the user pool where you want to update the user pool client. /// This member is required. public var userPoolId: Swift.String? - /// The writeable attributes of the user pool. + /// The list of user attributes that you want your app client to have write access to. After your user authenticates in your app, their access token authorizes them to set or modify their own attribute value for any attribute in this list. An example of this kind of activity is when you present your user with a form to update their profile information and they change their last name. Your app then makes an [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) API request and sets family_name to the new value. When you don't specify the WriteAttributes for your app client, your app can write the values of the Standard attributes of your user pool. When your user pool has write access to these default attributes, WriteAttributes doesn't return any information. Amazon Cognito only populates WriteAttributes in the API response if you have specified your own custom set of write attributes. If your app client allows users to sign in through an IdP, this array must include all attributes that you have mapped to IdP attributes. Amazon Cognito updates mapped attributes when users sign in to your application through an IdP. If your app client does not have write access to a mapped attribute, Amazon Cognito throws an error when it tries to update the attribute. For more information, see [Specifying IdP Attribute Mappings for Your user pool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html). public var writeAttributes: [Swift.String]? public init( @@ -23324,7 +23379,7 @@ extension CognitoIdentityProviderClientTypes { /// /// * LEGACY - This represents the old behavior of Amazon Cognito where user existence related errors aren't prevented. public var preventUserExistenceErrors: CognitoIdentityProviderClientTypes.PreventUserExistenceErrorTypes? - /// The Read-only attributes. + /// The list of user attributes that you want your app client to have read-only access to. After your user authenticates in your app, their access token authorizes them to read their own attribute value for any attribute in this list. An example of this kind of activity is when your user selects a link to view their profile information. Your app makes a [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) API request to retrieve and display your user's profile data. When you don't specify the ReadAttributes for your app client, your app can read the values of email_verified, phone_number_verified, and the Standard attributes of your user pool. When your user pool has read access to these default attributes, ReadAttributes doesn't return any information. Amazon Cognito only populates ReadAttributes in the API response if you have specified your own custom set of read attributes. public var readAttributes: [Swift.String]? /// The refresh token time limit. After this limit expires, your user can't use their refresh token. To specify the time unit for RefreshTokenValidity as seconds, minutes, hours, or days, set a TokenValidityUnits value in your API request. For example, when you set RefreshTokenValidity as 10 and TokenValidityUnits as days, your user can refresh their session and retrieve new access and ID tokens for 10 days. The default time unit for RefreshTokenValidity in an API request is days. You can't set RefreshTokenValidity to 0. If you do, Amazon Cognito overrides the value with the default value of 30 days. Valid range is displayed below in seconds. If you don't specify otherwise in the configuration of your app client, your refresh tokens are valid for 30 days. public var refreshTokenValidity: Swift.Int @@ -23334,7 +23389,7 @@ extension CognitoIdentityProviderClientTypes { public var tokenValidityUnits: CognitoIdentityProviderClientTypes.TokenValidityUnitsType? /// The user pool ID for the user pool client. public var userPoolId: Swift.String? - /// The writeable attributes. + /// The list of user attributes that you want your app client to have write access to. After your user authenticates in your app, their access token authorizes them to set or modify their own attribute value for any attribute in this list. An example of this kind of activity is when you present your user with a form to update their profile information and they change their last name. Your app then makes an [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) API request and sets family_name to the new value. When you don't specify the WriteAttributes for your app client, your app can write the values of the Standard attributes of your user pool. When your user pool has write access to these default attributes, WriteAttributes doesn't return any information. Amazon Cognito only populates WriteAttributes in the API response if you have specified your own custom set of write attributes. If your app client allows users to sign in through an IdP, this array must include all attributes that you have mapped to IdP attributes. Amazon Cognito updates mapped attributes when users sign in to your application through an IdP. If your app client does not have write access to a mapped attribute, Amazon Cognito throws an error when it tries to update the attribute. For more information, see [Specifying IdP Attribute Mappings for Your user pool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html). public var writeAttributes: [Swift.String]? public init( @@ -23938,7 +23993,7 @@ extension CognitoIdentityProviderClientTypes { public var smsConfigurationFailure: Swift.String? /// This parameter is no longer used. See [VerificationMessageTemplateType](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerificationMessageTemplateType.html). public var smsVerificationMessage: Swift.String? - /// The status of a user pool. + /// This parameter is no longer used. @available(*, deprecated, message: "This property is no longer available.") public var status: CognitoIdentityProviderClientTypes.StatusType? /// The settings for updates to user attributes. These settings include the property AttributesRequireVerificationBeforeUpdate, a user-pool setting that tells Amazon Cognito how to handle changes to the value of your users' email address and phone number attributes. For more information, see [ Verifying updates to email addresses and phone numbers](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-email-phone-verification.html#user-pool-settings-verifications-verify-attribute-updates). diff --git a/Sources/Services/AWSComprehend/ComprehendClient.swift b/Sources/Services/AWSComprehend/ComprehendClient.swift index f613e28ecd9..50b59f64c02 100644 --- a/Sources/Services/AWSComprehend/ComprehendClient.swift +++ b/Sources/Services/AWSComprehend/ComprehendClient.swift @@ -132,7 +132,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func batchDetectEntities(input: BatchDetectEntitiesInput) async throws -> BatchDetectEntitiesOutput { let context = ClientRuntime.HttpContextBuilder() @@ -183,7 +183,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func batchDetectKeyPhrases(input: BatchDetectKeyPhrasesInput) async throws -> BatchDetectKeyPhrasesOutput { let context = ClientRuntime.HttpContextBuilder() @@ -234,7 +234,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func batchDetectSentiment(input: BatchDetectSentimentInput) async throws -> BatchDetectSentimentOutput { let context = ClientRuntime.HttpContextBuilder() @@ -285,7 +285,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func batchDetectSyntax(input: BatchDetectSyntaxInput) async throws -> BatchDetectSyntaxOutput { let context = ClientRuntime.HttpContextBuilder() @@ -336,7 +336,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func batchDetectTargetedSentiment(input: BatchDetectTargetedSentimentInput) async throws -> BatchDetectTargetedSentimentOutput { let context = ClientRuntime.HttpContextBuilder() @@ -376,12 +376,12 @@ extension ComprehendClient: ComprehendClientProtocol { /// /// Creates a classification request to analyze a single document in real-time. ClassifyDocument supports the following model types: /// - /// * Custom classifier - a custom model that you have created and trained. For input, you can provide plain text, a single-page document (PDF, Word, or image), or Textract API output. For more information, see [Custom classification](https://docs.aws.amazon.com/comprehend/latest/dg/how-document-classification.html) in the Amazon Comprehend Developer Guide. + /// * Custom classifier - a custom model that you have created and trained. For input, you can provide plain text, a single-page document (PDF, Word, or image), or Amazon Textract API output. For more information, see [Custom classification](https://docs.aws.amazon.com/comprehend/latest/dg/how-document-classification.html) in the Amazon Comprehend Developer Guide. /// - /// * Prompt classifier - Amazon Comprehend provides a model for classifying prompts. For input, you provide English plain text input. For prompt classification, the response includes only the Classes field. For more information about prompt classifiers, see [Prompt classifiers](https://docs.aws.amazon.com/comprehend/latest/dg/prompt-classification.html) in the Amazon Comprehend Developer Guide. + /// * Prompt safety classifier - Amazon Comprehend provides a pre-trained model for classifying input prompts for generative AI applications. For input, you provide English plain text input. For prompt safety classification, the response includes only the Classes field. For more information about prompt safety classifiers, see [Prompt safety classification](https://docs.aws.amazon.com/comprehend/latest/dg/trust-safety.html#prompt-classification) in the Amazon Comprehend Developer Guide. /// /// - /// If the system detects errors while processing a page in the input document, the API response includes an entry in Errors that describes the errors. If the system detects a document-level error in your input document, the API returns an InvalidRequestException error response. For details about this exception, see [ Errors in semi-structured documents](https://docs.aws.amazon.com/comprehend/latest/dg/idp-inputs-sync-err.html) in the Comprehend Developer Guide. + /// If the system detects errors while processing a page in the input document, the API response includes an Errors field that describes the errors. If the system detects a document-level error in your input document, the API returns an InvalidRequestException error response. For details about this exception, see [ Errors in semi-structured documents](https://docs.aws.amazon.com/comprehend/latest/dg/idp-inputs-sync-err.html) in the Comprehend Developer Guide. /// /// - Parameter ClassifyDocumentInput : [no documentation found] /// @@ -443,7 +443,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func containsPiiEntities(input: ContainsPiiEntitiesInput) async throws -> ContainsPiiEntitiesOutput { let context = ClientRuntime.HttpContextBuilder() @@ -551,7 +551,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `ResourceLimitExceededException` : The maximum number of resources per account has been exceeded. Review the resources, and then try your request again. /// - `TooManyRequestsException` : The number of requests exceeds the limit. Resubmit your request later. /// - `TooManyTagsException` : The request contains more tags than can be associated with a resource (50 tags per resource). The maximum number of tags includes both existing tags and those included in your current request. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func createDocumentClassifier(input: CreateDocumentClassifierInput) async throws -> CreateDocumentClassifierOutput { let context = ClientRuntime.HttpContextBuilder() @@ -661,7 +661,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `ResourceLimitExceededException` : The maximum number of resources per account has been exceeded. Review the resources, and then try your request again. /// - `TooManyRequestsException` : The number of requests exceeds the limit. Resubmit your request later. /// - `TooManyTagsException` : The request contains more tags than can be associated with a resource (50 tags per resource). The maximum number of tags includes both existing tags and those included in your current request. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func createEntityRecognizer(input: CreateEntityRecognizerInput) async throws -> CreateEntityRecognizerOutput { let context = ClientRuntime.HttpContextBuilder() @@ -718,7 +718,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `ResourceUnavailableException` : The specified resource is not available. Check the resource and try your request again. /// - `TooManyRequestsException` : The number of requests exceeds the limit. Resubmit your request later. /// - `TooManyTagsException` : The request contains more tags than can be associated with a resource (50 tags per resource). The maximum number of tags includes both existing tags and those included in your current request. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func createFlywheel(input: CreateFlywheelInput) async throws -> CreateFlywheelOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1874,7 +1874,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `InvalidRequestException` : The request is invalid. /// - `ResourceUnavailableException` : The specified resource is not available. Check the resource and try your request again. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func detectEntities(input: DetectEntitiesInput) async throws -> DetectEntitiesOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1924,7 +1924,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func detectKeyPhrases(input: DetectKeyPhrasesInput) async throws -> DetectKeyPhrasesOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1974,7 +1974,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func detectPiiEntities(input: DetectPiiEntitiesInput) async throws -> DetectPiiEntitiesOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2024,7 +2024,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func detectSentiment(input: DetectSentimentInput) async throws -> DetectSentimentOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2074,7 +2074,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func detectSyntax(input: DetectSyntaxInput) async throws -> DetectSyntaxOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2124,7 +2124,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func detectTargetedSentiment(input: DetectTargetedSentimentInput) async throws -> DetectTargetedSentimentOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2162,7 +2162,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// Performs the `DetectToxicContent` operation on the `Comprehend_20171127` service. /// - /// Performs toxicity analysis on the list of text strings that you provide as input. The analysis uses the order of strings in the list to determine context when predicting toxicity. The API response contains a results list that matches the size of the input list. For more information about toxicity detection, see [Toxicity detection](https://docs.aws.amazon.com/comprehend/latest/dg/toxicity-detection.html) in the Amazon Comprehend Developer Guide + /// Performs toxicity analysis on the list of text strings that you provide as input. The API response contains a results list that matches the size of the input list. For more information about toxicity detection, see [Toxicity detection](https://docs.aws.amazon.com/comprehend/latest/dg/toxicity-detection.html) in the Amazon Comprehend Developer Guide. /// /// - Parameter DetectToxicContentInput : [no documentation found] /// @@ -2174,7 +2174,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public func detectToxicContent(input: DetectToxicContentInput) async throws -> DetectToxicContentOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3214,7 +3214,7 @@ extension ComprehendClient: ComprehendClientProtocol { /// Performs the `StartDocumentClassificationJob` operation on the `Comprehend_20171127` service. /// - /// Starts an asynchronous document classification job. Use the DescribeDocumentClassificationJob operation to track the progress of the job. + /// Starts an asynchronous document classification job using a custom classification model. Use the DescribeDocumentClassificationJob operation to track the progress of the job. /// /// - Parameter StartDocumentClassificationJobInput : [no documentation found] /// diff --git a/Sources/Services/AWSComprehend/ComprehendClientProtocol.swift b/Sources/Services/AWSComprehend/ComprehendClientProtocol.swift index 87fbc4d42d2..d987c01a276 100644 --- a/Sources/Services/AWSComprehend/ComprehendClientProtocol.swift +++ b/Sources/Services/AWSComprehend/ComprehendClientProtocol.swift @@ -35,7 +35,7 @@ public protocol ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func batchDetectEntities(input: BatchDetectEntitiesInput) async throws -> BatchDetectEntitiesOutput /// Performs the `BatchDetectKeyPhrases` operation on the `Comprehend_20171127` service. /// @@ -52,7 +52,7 @@ public protocol ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func batchDetectKeyPhrases(input: BatchDetectKeyPhrasesInput) async throws -> BatchDetectKeyPhrasesOutput /// Performs the `BatchDetectSentiment` operation on the `Comprehend_20171127` service. /// @@ -69,7 +69,7 @@ public protocol ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func batchDetectSentiment(input: BatchDetectSentimentInput) async throws -> BatchDetectSentimentOutput /// Performs the `BatchDetectSyntax` operation on the `Comprehend_20171127` service. /// @@ -86,7 +86,7 @@ public protocol ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func batchDetectSyntax(input: BatchDetectSyntaxInput) async throws -> BatchDetectSyntaxOutput /// Performs the `BatchDetectTargetedSentiment` operation on the `Comprehend_20171127` service. /// @@ -103,18 +103,18 @@ public protocol ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func batchDetectTargetedSentiment(input: BatchDetectTargetedSentimentInput) async throws -> BatchDetectTargetedSentimentOutput /// Performs the `ClassifyDocument` operation on the `Comprehend_20171127` service. /// /// Creates a classification request to analyze a single document in real-time. ClassifyDocument supports the following model types: /// - /// * Custom classifier - a custom model that you have created and trained. For input, you can provide plain text, a single-page document (PDF, Word, or image), or Textract API output. For more information, see [Custom classification](https://docs.aws.amazon.com/comprehend/latest/dg/how-document-classification.html) in the Amazon Comprehend Developer Guide. + /// * Custom classifier - a custom model that you have created and trained. For input, you can provide plain text, a single-page document (PDF, Word, or image), or Amazon Textract API output. For more information, see [Custom classification](https://docs.aws.amazon.com/comprehend/latest/dg/how-document-classification.html) in the Amazon Comprehend Developer Guide. /// - /// * Prompt classifier - Amazon Comprehend provides a model for classifying prompts. For input, you provide English plain text input. For prompt classification, the response includes only the Classes field. For more information about prompt classifiers, see [Prompt classifiers](https://docs.aws.amazon.com/comprehend/latest/dg/prompt-classification.html) in the Amazon Comprehend Developer Guide. + /// * Prompt safety classifier - Amazon Comprehend provides a pre-trained model for classifying input prompts for generative AI applications. For input, you provide English plain text input. For prompt safety classification, the response includes only the Classes field. For more information about prompt safety classifiers, see [Prompt safety classification](https://docs.aws.amazon.com/comprehend/latest/dg/trust-safety.html#prompt-classification) in the Amazon Comprehend Developer Guide. /// /// - /// If the system detects errors while processing a page in the input document, the API response includes an entry in Errors that describes the errors. If the system detects a document-level error in your input document, the API returns an InvalidRequestException error response. For details about this exception, see [ Errors in semi-structured documents](https://docs.aws.amazon.com/comprehend/latest/dg/idp-inputs-sync-err.html) in the Comprehend Developer Guide. + /// If the system detects errors while processing a page in the input document, the API response includes an Errors field that describes the errors. If the system detects a document-level error in your input document, the API returns an InvalidRequestException error response. For details about this exception, see [ Errors in semi-structured documents](https://docs.aws.amazon.com/comprehend/latest/dg/idp-inputs-sync-err.html) in the Comprehend Developer Guide. /// /// - Parameter ClassifyDocumentInput : [no documentation found] /// @@ -142,7 +142,7 @@ public protocol ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func containsPiiEntities(input: ContainsPiiEntitiesInput) async throws -> ContainsPiiEntitiesOutput /// Performs the `CreateDataset` operation on the `Comprehend_20171127` service. /// @@ -181,7 +181,7 @@ public protocol ComprehendClientProtocol { /// - `ResourceLimitExceededException` : The maximum number of resources per account has been exceeded. Review the resources, and then try your request again. /// - `TooManyRequestsException` : The number of requests exceeds the limit. Resubmit your request later. /// - `TooManyTagsException` : The request contains more tags than can be associated with a resource (50 tags per resource). The maximum number of tags includes both existing tags and those included in your current request. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func createDocumentClassifier(input: CreateDocumentClassifierInput) async throws -> CreateDocumentClassifierOutput /// Performs the `CreateEndpoint` operation on the `Comprehend_20171127` service. /// @@ -221,7 +221,7 @@ public protocol ComprehendClientProtocol { /// - `ResourceLimitExceededException` : The maximum number of resources per account has been exceeded. Review the resources, and then try your request again. /// - `TooManyRequestsException` : The number of requests exceeds the limit. Resubmit your request later. /// - `TooManyTagsException` : The request contains more tags than can be associated with a resource (50 tags per resource). The maximum number of tags includes both existing tags and those included in your current request. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func createEntityRecognizer(input: CreateEntityRecognizerInput) async throws -> CreateEntityRecognizerOutput /// Performs the `CreateFlywheel` operation on the `Comprehend_20171127` service. /// @@ -243,7 +243,7 @@ public protocol ComprehendClientProtocol { /// - `ResourceUnavailableException` : The specified resource is not available. Check the resource and try your request again. /// - `TooManyRequestsException` : The number of requests exceeds the limit. Resubmit your request later. /// - `TooManyTagsException` : The request contains more tags than can be associated with a resource (50 tags per resource). The maximum number of tags includes both existing tags and those included in your current request. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func createFlywheel(input: CreateFlywheelInput) async throws -> CreateFlywheelOutput /// Performs the `DeleteDocumentClassifier` operation on the `Comprehend_20171127` service. /// @@ -616,7 +616,7 @@ public protocol ComprehendClientProtocol { /// - `InvalidRequestException` : The request is invalid. /// - `ResourceUnavailableException` : The specified resource is not available. Check the resource and try your request again. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func detectEntities(input: DetectEntitiesInput) async throws -> DetectEntitiesOutput /// Performs the `DetectKeyPhrases` operation on the `Comprehend_20171127` service. /// @@ -632,7 +632,7 @@ public protocol ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func detectKeyPhrases(input: DetectKeyPhrasesInput) async throws -> DetectKeyPhrasesOutput /// Performs the `DetectPiiEntities` operation on the `Comprehend_20171127` service. /// @@ -648,7 +648,7 @@ public protocol ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func detectPiiEntities(input: DetectPiiEntitiesInput) async throws -> DetectPiiEntitiesOutput /// Performs the `DetectSentiment` operation on the `Comprehend_20171127` service. /// @@ -664,7 +664,7 @@ public protocol ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func detectSentiment(input: DetectSentimentInput) async throws -> DetectSentimentOutput /// Performs the `DetectSyntax` operation on the `Comprehend_20171127` service. /// @@ -680,7 +680,7 @@ public protocol ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func detectSyntax(input: DetectSyntaxInput) async throws -> DetectSyntaxOutput /// Performs the `DetectTargetedSentiment` operation on the `Comprehend_20171127` service. /// @@ -696,11 +696,11 @@ public protocol ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func detectTargetedSentiment(input: DetectTargetedSentimentInput) async throws -> DetectTargetedSentimentOutput /// Performs the `DetectToxicContent` operation on the `Comprehend_20171127` service. /// - /// Performs toxicity analysis on the list of text strings that you provide as input. The analysis uses the order of strings in the list to determine context when predicting toxicity. The API response contains a results list that matches the size of the input list. For more information about toxicity detection, see [Toxicity detection](https://docs.aws.amazon.com/comprehend/latest/dg/toxicity-detection.html) in the Amazon Comprehend Developer Guide + /// Performs toxicity analysis on the list of text strings that you provide as input. The API response contains a results list that matches the size of the input list. For more information about toxicity detection, see [Toxicity detection](https://docs.aws.amazon.com/comprehend/latest/dg/toxicity-detection.html) in the Amazon Comprehend Developer Guide. /// /// - Parameter DetectToxicContentInput : [no documentation found] /// @@ -712,7 +712,7 @@ public protocol ComprehendClientProtocol { /// - `InternalServerException` : An internal server error occurred. Retry your request. /// - `InvalidRequestException` : The request is invalid. /// - `TextSizeLimitExceededException` : The size of the input text exceeds the limit. Use a smaller document. - /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. + /// - `UnsupportedLanguageException` : Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. func detectToxicContent(input: DetectToxicContentInput) async throws -> DetectToxicContentOutput /// Performs the `ImportModel` operation on the `Comprehend_20171127` service. /// @@ -1038,7 +1038,7 @@ public protocol ComprehendClientProtocol { func putResourcePolicy(input: PutResourcePolicyInput) async throws -> PutResourcePolicyOutput /// Performs the `StartDocumentClassificationJob` operation on the `Comprehend_20171127` service. /// - /// Starts an asynchronous document classification job. Use the DescribeDocumentClassificationJob operation to track the progress of the job. + /// Starts an asynchronous document classification job using a custom classification model. Use the DescribeDocumentClassificationJob operation to track the progress of the job. /// /// - Parameter StartDocumentClassificationJobInput : [no documentation found] /// diff --git a/Sources/Services/AWSComprehend/models/Models.swift b/Sources/Services/AWSComprehend/models/Models.swift index 09dcfe568a4..eecfe426c35 100644 --- a/Sources/Services/AWSComprehend/models/Models.swift +++ b/Sources/Services/AWSComprehend/models/Models.swift @@ -2130,11 +2130,11 @@ extension ClassifyDocumentInput: ClientRuntime.URLPathProvider { } public struct ClassifyDocumentInput: Swift.Equatable { - /// Use the Bytes parameter to input a text, PDF, Word or image file. When you classify a document using a custom model, you can also use the Bytes parameter to input an Amazon Textract DetectDocumentText or AnalyzeDocument output file. To classify a document using the prompt classifier, use the Text parameter for input. Provide the input document as a sequence of base64-encoded bytes. If your code uses an Amazon Web Services SDK to classify documents, the SDK may encode the document file bytes for you. The maximum length of this field depends on the input document type. For details, see [ Inputs for real-time custom analysis](https://docs.aws.amazon.com/comprehend/latest/dg/idp-inputs-sync.html) in the Comprehend Developer Guide. If you use the Bytes parameter, do not use the Text parameter. + /// Use the Bytes parameter to input a text, PDF, Word or image file. When you classify a document using a custom model, you can also use the Bytes parameter to input an Amazon Textract DetectDocumentText or AnalyzeDocument output file. To classify a document using the prompt safety classifier, use the Text parameter for input. Provide the input document as a sequence of base64-encoded bytes. If your code uses an Amazon Web Services SDK to classify documents, the SDK may encode the document file bytes for you. The maximum length of this field depends on the input document type. For details, see [ Inputs for real-time custom analysis](https://docs.aws.amazon.com/comprehend/latest/dg/idp-inputs-sync.html) in the Comprehend Developer Guide. If you use the Bytes parameter, do not use the Text parameter. public var bytes: ClientRuntime.Data? /// Provides configuration parameters to override the default actions for extracting text from PDF documents and image files. public var documentReaderConfig: ComprehendClientTypes.DocumentReaderConfig? - /// The Amazon Resource Number (ARN) of the endpoint. For prompt classification, Amazon Comprehend provides the endpoint ARN: zzz. For custom classification, you create an endpoint for your custom model. For more information, see [Using Amazon Comprehend endpoints](https://docs.aws.amazon.com/comprehend/latest/dg/using-endpoints.html). + /// The Amazon Resource Number (ARN) of the endpoint. For prompt safety classification, Amazon Comprehend provides the endpoint ARN. For more information about prompt safety classifiers, see [Prompt safety classification](https://docs.aws.amazon.com/comprehend/latest/dg/trust-safety.html#prompt-classification) in the Amazon Comprehend Developer Guide For custom classification, you create an endpoint for your custom model. For more information, see [Using Amazon Comprehend endpoints](https://docs.aws.amazon.com/comprehend/latest/dg/using-endpoints.html). /// This member is required. public var endpointArn: Swift.String? /// The document text to be analyzed. If you enter text using this parameter, do not use the Bytes parameter. @@ -2211,7 +2211,7 @@ extension ClassifyDocumentOutput: ClientRuntime.HttpResponseBinding { } public struct ClassifyDocumentOutput: Swift.Equatable { - /// The classes used by the document being analyzed. These are used for multi-class trained models. Individual classes are mutually exclusive and each document is expected to have only a single class assigned to it. For example, an animal can be a dog or a cat, but not both at the same time. For prompt classification, the response includes a single class (UNDESIRED_PROMPT), along with a confidence score. A higher confidence score indicates that the input prompt is undesired in nature. + /// The classes used by the document being analyzed. These are used for models trained in multi-class mode. Individual classes are mutually exclusive and each document is expected to have only a single class assigned to it. For example, an animal can be a dog or a cat, but not both at the same time. For prompt safety classification, the response includes only two classes (SAFE_PROMPT and UNSAFE_PROMPT), along with a confidence score for each class. The value range of the score is zero to one, where one is the highest confidence. public var classes: [ComprehendClientTypes.DocumentClass]? /// Extraction information about the document. This field is present in the response only if your request includes the Byte parameter. public var documentMetadata: ComprehendClientTypes.DocumentMetadata? @@ -2219,7 +2219,7 @@ public struct ClassifyDocumentOutput: Swift.Equatable { public var documentType: [ComprehendClientTypes.DocumentTypeListItem]? /// Page-level errors that the system detected while processing the input document. The field is empty if the system encountered no errors. public var errors: [ComprehendClientTypes.ErrorsListItem]? - /// The labels used the document being analyzed. These are used for multi-label trained models. Individual labels represent different categories that are related in some manner and are not mutually exclusive. For example, a movie can be just an action movie, or it can be an action movie, a science fiction movie, and a comedy, all at the same time. + /// The labels used in the document being analyzed. These are used for multi-label trained models. Individual labels represent different categories that are related in some manner and are not mutually exclusive. For example, a movie can be just an action movie, or it can be an action movie, a science fiction movie, and a comedy, all at the same time. public var labels: [ComprehendClientTypes.DocumentLabel]? /// Warnings detected while processing the input document. The response includes a warning if there is a mismatch between the input document type and the model type associated with the endpoint that you specified. The response can also include warnings for individual pages that have a mismatch. The field is empty if the system generated no warnings. public var warnings: [ComprehendClientTypes.WarningsListItem]? @@ -2792,7 +2792,7 @@ public struct CreateDocumentClassifierInput: Swift.Equatable { /// The language of the input documents. You can specify any of the languages supported by Amazon Comprehend. All documents must be in the same language. /// This member is required. public var languageCode: ComprehendClientTypes.LanguageCode? - /// Indicates the mode in which the classifier will be trained. The classifier can be trained in multi-class mode, which identifies one and only one class for each document, or multi-label mode, which identifies one or more labels for each document. In multi-label mode, multiple labels for an individual document are separated by a delimiter. The default delimiter between labels is a pipe (|). + /// Indicates the mode in which the classifier will be trained. The classifier can be trained in multi-class (single-label) mode or multi-label mode. Multi-class mode identifies a single class label for each document and multi-label mode identifies one or more class labels for each document. Multiple labels for an individual document are separated by a delimiter. The default delimiter between labels is a pipe (|). public var mode: ComprehendClientTypes.DocumentClassifierMode? /// ID for the KMS key that Amazon Comprehend uses to encrypt trained custom models. The ModelKmsKeyId can be either of the following formats: /// @@ -7512,7 +7512,7 @@ public struct DetectToxicContentInput: Swift.Equatable { /// The language of the input text. Currently, English is the only supported language. /// This member is required. public var languageCode: ComprehendClientTypes.LanguageCode? - /// A list of up to 10 text strings. The maximum size for the list is 10 KB. + /// A list of up to 10 text strings. Each string has a maximum size of 1 KB, and the maximum size of the list is 10 KB. /// This member is required. public var textSegments: [ComprehendClientTypes.TextSegment]? @@ -8816,11 +8816,7 @@ extension ComprehendClientTypes { } extension ComprehendClientTypes { - /// Specifies the type of Amazon Textract features to apply. If you chose TEXTRACT_ANALYZE_DOCUMENT as the read action, you must specify one or both of the following values: - /// - /// * TABLES - Returns additional information about any tables that are detected in the input document. - /// - /// * FORMS - Returns additional information about any forms that are detected in the input document. + /// TABLES or FORMS public enum DocumentReadFeatureTypes: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case forms case tables @@ -8954,9 +8950,9 @@ extension ComprehendClientTypes { public var documentReadMode: ComprehendClientTypes.DocumentReadMode? /// Specifies the type of Amazon Textract features to apply. If you chose TEXTRACT_ANALYZE_DOCUMENT as the read action, you must specify one or both of the following values: /// - /// * TABLES - Returns information about any tables that are detected in the input document. + /// * TABLES - Returns additional information about any tables that are detected in the input document. /// - /// * FORMS - Returns information and the data from any forms that are detected in the input document. + /// * FORMS - Returns additional information about any forms that are detected in the input document. public var featureTypes: [ComprehendClientTypes.DocumentReadFeatureTypes]? public init( @@ -11012,7 +11008,7 @@ extension ComprehendClientTypes.EntityTypesListItem: Swift.Codable { extension ComprehendClientTypes { /// An entity type within a labeled training dataset that Amazon Comprehend uses to train a custom entity recognizer. public struct EntityTypesListItem: Swift.Equatable { - /// An entity type within a labeled training dataset that Amazon Comprehend uses to train a custom entity recognizer. Entity types must not contain the following invalid characters: \n (line break), \\n (escaped line break, \r (carriage return), \\r (escaped carriage return), \t (tab), \\t (escaped tab), space, and , (comma). + /// An entity type within a labeled training dataset that Amazon Comprehend uses to train a custom entity recognizer. Entity types must not contain the following invalid characters: \n (line break), \\n (escaped line break, \r (carriage return), \\r (escaped carriage return), \t (tab), \\t (escaped tab), and , (comma). /// This member is required. public var type: Swift.String? @@ -12465,17 +12461,23 @@ extension ComprehendClientTypes.InvalidRequestDetail: Swift.Codable { } extension ComprehendClientTypes { - /// Provides additional detail about why the request failed: - /// - /// * Document size is too large - Check the size of your file and resubmit the request. - /// - /// * Document type is not supported - Check the file type and resubmit the request. - /// - /// * Too many pages in the document - Check the number of pages in your file and resubmit the request. - /// - /// * Access denied to Amazon Textract - Verify that your account has permission to use Amazon Textract API operations and resubmit the request. + /// Provides additional detail about why the request failed. public struct InvalidRequestDetail: Swift.Equatable { - /// Reason code is INVALID_DOCUMENT. + /// Reason codes include the following values: + /// + /// * DOCUMENT_SIZE_EXCEEDED - Document size is too large. Check the size of your file and resubmit the request. + /// + /// * UNSUPPORTED_DOC_TYPE - Document type is not supported. Check the file type and resubmit the request. + /// + /// * PAGE_LIMIT_EXCEEDED - Too many pages in the document. Check the number of pages in your file and resubmit the request. + /// + /// * TEXTRACT_ACCESS_DENIED - Access denied to Amazon Textract. Verify that your account has permission to use Amazon Textract API operations and resubmit the request. + /// + /// * NOT_TEXTRACT_JSON - Document is not Amazon Textract JSON format. Verify the format and resubmit the request. + /// + /// * MISMATCHED_TOTAL_PAGE_COUNT - Check the number of pages in your file and resubmit the request. + /// + /// * INVALID_DOCUMENT - Invalid document. Check the file and resubmit the request. public var reason: ComprehendClientTypes.InvalidRequestDetailReason? public init( @@ -12549,15 +12551,7 @@ extension InvalidRequestException { public struct InvalidRequestException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { public struct Properties { - /// Provides additional detail about why the request failed: - /// - /// * Document size is too large - Check the size of your file and resubmit the request. - /// - /// * Document type is not supported - Check the file type and resubmit the request. - /// - /// * Too many pages in the document - Check the number of pages in your file and resubmit the request. - /// - /// * Access denied to Amazon Textract - Verify that your account has permission to use Amazon Textract API operations and resubmit the request. + /// Provides additional detail about why the request failed. public internal(set) var detail: ComprehendClientTypes.InvalidRequestDetail? = nil public internal(set) var message: Swift.String? = nil public internal(set) var reason: ComprehendClientTypes.InvalidRequestReason? = nil @@ -22223,11 +22217,11 @@ extension ComprehendClientTypes.ToxicLabels: Swift.Codable { } extension ComprehendClientTypes { - /// Toxicity analysis result for one string. For more information about toxicity detection, see [Toxicity detection](https://docs.aws.amazon.com/comprehend/latest/dg/toxicity-detection.html) in the Amazon Comprehend Developer Guide + /// Toxicity analysis result for one string. For more information about toxicity detection, see [Toxicity detection](https://docs.aws.amazon.com/comprehend/latest/dg/toxicity-detection.html) in the Amazon Comprehend Developer Guide. public struct ToxicLabels: Swift.Equatable { /// Array of toxic content types identified in the string. public var labels: [ComprehendClientTypes.ToxicContent]? - /// Overall toxicity score for the string. + /// Overall toxicity score for the string. Value range is zero to one, where one is the highest confidence. public var toxicity: Swift.Float? public init( @@ -22257,7 +22251,7 @@ extension UnsupportedLanguageException { } } -/// Amazon Comprehend can't process the language of the input text. For custom entity recognition APIs, only English, Spanish, French, Italian, German, or Portuguese are accepted. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. +/// Amazon Comprehend can't process the language of the input text. For a list of supported languages, [Supported languages](https://docs.aws.amazon.com/comprehend/latest/dg/supported-languages.html) in the Comprehend Developer Guide. public struct UnsupportedLanguageException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { public struct Properties { diff --git a/Sources/Services/AWSConnect/ConnectClient.swift b/Sources/Services/AWSConnect/ConnectClient.swift index 9f515bf22ca..753ef1bdefa 100644 --- a/Sources/Services/AWSConnect/ConnectClient.swift +++ b/Sources/Services/AWSConnect/ConnectClient.swift @@ -7618,6 +7618,59 @@ extension ConnectClient: ConnectClientProtocol { return result } + /// Performs the `PauseContact` operation on the `AmazonConnectService` service. + /// + /// Allows pausing an ongoing task contact. + /// + /// - Parameter PauseContactInput : [no documentation found] + /// + /// - Returns: `PauseContactOutput` : [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. + /// - `ConflictException` : Operation cannot be performed at this time as there is a conflict with another operation or contact state. + /// - `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. + /// - `LimitExceededException` : The allowed limit for the resource has been exceeded. + /// - `ResourceNotFoundException` : The specified resource was not found. + /// - `ThrottlingException` : The throttling limit has been exceeded. + public func pauseContact(input: PauseContactInput) async throws -> PauseContactOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "pauseContact") + .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: "pauseContact") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(PauseContactOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `PutUserStatus` operation on the `AmazonConnectService` service. /// /// Changes the current status of a user or agent in Amazon Connect. If the agent is currently handling a contact, this sets the agent's next status. For more information, see [Agent status](https://docs.aws.amazon.com/connect/latest/adminguide/metrics-agent-status.html) and [Set your next status](https://docs.aws.amazon.com/connect/latest/adminguide/set-next-status.html) in the Amazon Connect Administrator Guide. @@ -7774,6 +7827,58 @@ extension ConnectClient: ConnectClientProtocol { return result } + /// Performs the `ResumeContact` operation on the `AmazonConnectService` service. + /// + /// Allows resuming a task contact in a paused state. + /// + /// - Parameter ResumeContactInput : [no documentation found] + /// + /// - Returns: `ResumeContactOutput` : [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. + /// - `ConflictException` : Operation cannot be performed at this time as there is a conflict with another operation or contact state. + /// - `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 resumeContact(input: ResumeContactInput) async throws -> ResumeContactOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "resumeContact") + .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: "resumeContact") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(ResumeContactOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `ResumeContactRecording` operation on the `AmazonConnectService` service. /// /// 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. @@ -9028,6 +9133,56 @@ extension ConnectClient: ConnectClientProtocol { return result } + /// Performs the `TagContact` operation on the `AmazonConnectService` service. + /// + /// Adds the specified tags to the contact resource. For more information about this API is used, see [Set up granular billing for a detailed view of your Amazon Connect usage](https://docs.aws.amazon.com/connect/latest/adminguide/granular-billing.html). + /// + /// - Parameter TagContactInput : [no documentation found] + /// + /// - Returns: `TagContactOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `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 tagContact(input: TagContactInput) async throws -> TagContactOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "tagContact") + .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: "tagContact") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(TagContactOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `TagResource` operation on the `AmazonConnectService` service. /// /// Adds the specified tags to the specified resource. Some of the supported resource types are agents, routing profiles, queues, quick connects, contact flows, agent statuses, hours of operation, phone numbers, security profiles, and task templates. For a complete list, see [Tagging resources in Amazon Connect](https://docs.aws.amazon.com/connect/latest/adminguide/tagging.html). For sample policies that use tags, see [Amazon Connect Identity-Based Policy Examples](https://docs.aws.amazon.com/connect/latest/adminguide/security_iam_id-based-policy-examples.html) in the Amazon Connect Administrator Guide. @@ -9141,6 +9296,54 @@ extension ConnectClient: ConnectClientProtocol { return result } + /// Performs the `UntagContact` operation on the `AmazonConnectService` service. + /// + /// Removes the specified tags from the contact resource. For more information about this API is used, see [Set up granular billing for a detailed view of your Amazon Connect usage](https://docs.aws.amazon.com/connect/latest/adminguide/granular-billing.html). + /// + /// - Parameter UntagContactInput : [no documentation found] + /// + /// - Returns: `UntagContactOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `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 untagContact(input: UntagContactInput) async throws -> UntagContactOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .delete) + .withServiceName(value: serviceName) + .withOperation(value: "untagContact") + .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: "untagContact") + 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(UntagContactOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `UntagResource` operation on the `AmazonConnectService` service. /// /// Removes the specified tags from the specified resource. diff --git a/Sources/Services/AWSConnect/ConnectClientProtocol.swift b/Sources/Services/AWSConnect/ConnectClientProtocol.swift index 6cd3c2e770d..5014746341d 100644 --- a/Sources/Services/AWSConnect/ConnectClientProtocol.swift +++ b/Sources/Services/AWSConnect/ConnectClientProtocol.swift @@ -2705,6 +2705,26 @@ public protocol ConnectClientProtocol { /// - `ServiceQuotaExceededException` : The service quota has been exceeded. /// - `ThrottlingException` : The throttling limit has been exceeded. func monitorContact(input: MonitorContactInput) async throws -> MonitorContactOutput + /// Performs the `PauseContact` operation on the `AmazonConnectService` service. + /// + /// Allows pausing an ongoing task contact. + /// + /// - Parameter PauseContactInput : [no documentation found] + /// + /// - Returns: `PauseContactOutput` : [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. + /// - `ConflictException` : Operation cannot be performed at this time as there is a conflict with another operation or contact state. + /// - `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. + /// - `LimitExceededException` : The allowed limit for the resource has been exceeded. + /// - `ResourceNotFoundException` : The specified resource was not found. + /// - `ThrottlingException` : The throttling limit has been exceeded. + func pauseContact(input: PauseContactInput) async throws -> PauseContactOutput /// Performs the `PutUserStatus` operation on the `AmazonConnectService` service. /// /// Changes the current status of a user or agent in Amazon Connect. If the agent is currently handling a contact, this sets the agent's next status. For more information, see [Agent status](https://docs.aws.amazon.com/connect/latest/adminguide/metrics-agent-status.html) and [Set your next status](https://docs.aws.amazon.com/connect/latest/adminguide/set-next-status.html) in the Amazon Connect Administrator Guide. @@ -2762,6 +2782,25 @@ public protocol ConnectClientProtocol { /// - `ServiceQuotaExceededException` : The service quota has been exceeded. /// - `ThrottlingException` : The throttling limit has been exceeded. func replicateInstance(input: ReplicateInstanceInput) async throws -> ReplicateInstanceOutput + /// Performs the `ResumeContact` operation on the `AmazonConnectService` service. + /// + /// Allows resuming a task contact in a paused state. + /// + /// - Parameter ResumeContactInput : [no documentation found] + /// + /// - Returns: `ResumeContactOutput` : [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. + /// - `ConflictException` : Operation cannot be performed at this time as there is a conflict with another operation or contact state. + /// - `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 resumeContact(input: ResumeContactInput) async throws -> ResumeContactOutput /// Performs the `ResumeContactRecording` operation on the `AmazonConnectService` service. /// /// 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. @@ -3218,6 +3257,23 @@ public protocol ConnectClientProtocol { /// - `InvalidRequestException` : The request is not valid. /// - `ResourceNotFoundException` : The specified resource was not found. func suspendContactRecording(input: SuspendContactRecordingInput) async throws -> SuspendContactRecordingOutput + /// Performs the `TagContact` operation on the `AmazonConnectService` service. + /// + /// Adds the specified tags to the contact resource. For more information about this API is used, see [Set up granular billing for a detailed view of your Amazon Connect usage](https://docs.aws.amazon.com/connect/latest/adminguide/granular-billing.html). + /// + /// - Parameter TagContactInput : [no documentation found] + /// + /// - Returns: `TagContactOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `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 tagContact(input: TagContactInput) async throws -> TagContactOutput /// Performs the `TagResource` operation on the `AmazonConnectService` service. /// /// Adds the specified tags to the specified resource. Some of the supported resource types are agents, routing profiles, queues, quick connects, contact flows, agent statuses, hours of operation, phone numbers, security profiles, and task templates. For a complete list, see [Tagging resources in Amazon Connect](https://docs.aws.amazon.com/connect/latest/adminguide/tagging.html). For sample policies that use tags, see [Amazon Connect Identity-Based Policy Examples](https://docs.aws.amazon.com/connect/latest/adminguide/security_iam_id-based-policy-examples.html) in the Amazon Connect Administrator Guide. @@ -3264,6 +3320,23 @@ public protocol ConnectClientProtocol { /// - `ServiceQuotaExceededException` : The service quota has been exceeded. /// - `ThrottlingException` : The throttling limit has been exceeded. func transferContact(input: TransferContactInput) async throws -> TransferContactOutput + /// Performs the `UntagContact` operation on the `AmazonConnectService` service. + /// + /// Removes the specified tags from the contact resource. For more information about this API is used, see [Set up granular billing for a detailed view of your Amazon Connect usage](https://docs.aws.amazon.com/connect/latest/adminguide/granular-billing.html). + /// + /// - Parameter UntagContactInput : [no documentation found] + /// + /// - Returns: `UntagContactOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `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 untagContact(input: UntagContactInput) async throws -> UntagContactOutput /// Performs the `UntagResource` operation on the `AmazonConnectService` service. /// /// Removes the specified tags from the specified resource. diff --git a/Sources/Services/AWSConnect/models/Models.swift b/Sources/Services/AWSConnect/models/Models.swift index decbda6da06..70e5653b026 100644 --- a/Sources/Services/AWSConnect/models/Models.swift +++ b/Sources/Services/AWSConnect/models/Models.swift @@ -96,17 +96,23 @@ extension ConnectClientTypes { extension ConnectClientTypes { public enum ActionType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case assignContactCategory + case createCase case createTask + case endAssociatedTasks case generateEventbridgeEvent case sendNotification + case updateCase case sdkUnknown(Swift.String) public static var allCases: [ActionType] { return [ .assignContactCategory, + .createCase, .createTask, + .endAssociatedTasks, .generateEventbridgeEvent, .sendNotification, + .updateCase, .sdkUnknown("") ] } @@ -117,9 +123,12 @@ extension ConnectClientTypes { public var rawValue: Swift.String { switch self { case .assignContactCategory: return "ASSIGN_CONTACT_CATEGORY" + case .createCase: return "CREATE_CASE" case .createTask: return "CREATE_TASK" + case .endAssociatedTasks: return "END_ASSOCIATED_TASKS" case .generateEventbridgeEvent: return "GENERATE_EVENTBRIDGE_EVENT" case .sendNotification: return "SEND_NOTIFICATION" + case .updateCase: return "UPDATE_CASE" case let .sdkUnknown(s): return s } } @@ -450,12 +459,16 @@ extension ConnectClientTypes { extension ConnectClientTypes.AgentInfo: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case agentPauseDurationInSeconds = "AgentPauseDurationInSeconds" case connectedToAgentTimestamp = "ConnectedToAgentTimestamp" case id = "Id" } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let agentPauseDurationInSeconds = self.agentPauseDurationInSeconds { + try encodeContainer.encode(agentPauseDurationInSeconds, forKey: .agentPauseDurationInSeconds) + } if let connectedToAgentTimestamp = self.connectedToAgentTimestamp { try encodeContainer.encodeTimestamp(connectedToAgentTimestamp, format: .epochSeconds, forKey: .connectedToAgentTimestamp) } @@ -470,22 +483,28 @@ extension ConnectClientTypes.AgentInfo: Swift.Codable { id = idDecoded let connectedToAgentTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .connectedToAgentTimestamp) connectedToAgentTimestamp = connectedToAgentTimestampDecoded + let agentPauseDurationInSecondsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .agentPauseDurationInSeconds) + agentPauseDurationInSeconds = agentPauseDurationInSecondsDecoded } } extension ConnectClientTypes { /// Information about the agent who accepted the contact. public struct AgentInfo: Swift.Equatable { + /// Agent pause duration for a contact in seconds. + public var agentPauseDurationInSeconds: Swift.Int? /// The timestamp when the contact was connected to the agent. public var connectedToAgentTimestamp: ClientRuntime.Date? /// The identifier of the agent who accepted the contact. public var id: Swift.String? public init( + agentPauseDurationInSeconds: Swift.Int? = nil, connectedToAgentTimestamp: ClientRuntime.Date? = nil, id: Swift.String? = nil ) { + self.agentPauseDurationInSeconds = agentPauseDurationInSeconds self.connectedToAgentTimestamp = connectedToAgentTimestamp self.id = id } @@ -597,7 +616,7 @@ extension ConnectClientTypes { public var name: Swift.String? /// The state of the agent status. public var state: ConnectClientTypes.AgentStatusState? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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 type of agent status. public var type: ConnectClientTypes.AgentStatusType? @@ -3697,7 +3716,7 @@ public struct ClaimPhoneNumberInput: Swift.Equatable { public var phoneNumber: Swift.String? /// The description of the phone number. public var phoneNumberDescription: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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 number inbound traffic is routed through. You must enter InstanceId or TargetArn. public var targetArn: Swift.String? @@ -3952,7 +3971,7 @@ extension ConnectClientTypes { public var phoneNumberType: ConnectClientTypes.PhoneNumberType? /// The claimed phone number ARN that was previously imported from the external service, such as Amazon Pinpoint. If it is from Amazon Pinpoint, it looks like the ARN of the phone number that was imported from Amazon Pinpoint. public var sourcePhoneNumberArn: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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 number inbound traffic is routed through. public var targetArn: Swift.String? @@ -4016,6 +4035,61 @@ extension ConnectClientTypes { } } +extension ConflictException { + 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: ConflictExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// Operation cannot be performed at this time as there is a conflict with another operation or contact state. +public struct ConflictException: 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 { "ConflictException" } + 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 ConflictExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension ConflictExceptionBody: 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 ConnectClientTypes.ConnectionData: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case attendee = "Attendee" @@ -4072,12 +4146,17 @@ extension ConnectClientTypes.Contact: Swift.Codable { case initialContactId = "InitialContactId" case initiationMethod = "InitiationMethod" case initiationTimestamp = "InitiationTimestamp" + case lastPausedTimestamp = "LastPausedTimestamp" + case lastResumedTimestamp = "LastResumedTimestamp" case lastUpdateTimestamp = "LastUpdateTimestamp" case name = "Name" case previousContactId = "PreviousContactId" case queueInfo = "QueueInfo" case relatedContactId = "RelatedContactId" case scheduledTimestamp = "ScheduledTimestamp" + case tags = "Tags" + case totalPauseCount = "TotalPauseCount" + case totalPauseDurationInSeconds = "TotalPauseDurationInSeconds" case wisdomInfo = "WisdomInfo" } @@ -4110,6 +4189,12 @@ extension ConnectClientTypes.Contact: Swift.Codable { if let initiationTimestamp = self.initiationTimestamp { try encodeContainer.encodeTimestamp(initiationTimestamp, format: .epochSeconds, forKey: .initiationTimestamp) } + if let lastPausedTimestamp = self.lastPausedTimestamp { + try encodeContainer.encodeTimestamp(lastPausedTimestamp, format: .epochSeconds, forKey: .lastPausedTimestamp) + } + if let lastResumedTimestamp = self.lastResumedTimestamp { + try encodeContainer.encodeTimestamp(lastResumedTimestamp, format: .epochSeconds, forKey: .lastResumedTimestamp) + } if let lastUpdateTimestamp = self.lastUpdateTimestamp { try encodeContainer.encodeTimestamp(lastUpdateTimestamp, format: .epochSeconds, forKey: .lastUpdateTimestamp) } @@ -4128,6 +4213,18 @@ extension ConnectClientTypes.Contact: Swift.Codable { if let scheduledTimestamp = self.scheduledTimestamp { try encodeContainer.encodeTimestamp(scheduledTimestamp, format: .epochSeconds, forKey: .scheduledTimestamp) } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, contactTagMap0) in tags { + try tagsContainer.encode(contactTagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let totalPauseCount = self.totalPauseCount { + try encodeContainer.encode(totalPauseCount, forKey: .totalPauseCount) + } + if let totalPauseDurationInSeconds = self.totalPauseDurationInSeconds { + try encodeContainer.encode(totalPauseDurationInSeconds, forKey: .totalPauseDurationInSeconds) + } if let wisdomInfo = self.wisdomInfo { try encodeContainer.encode(wisdomInfo, forKey: .wisdomInfo) } @@ -4161,12 +4258,31 @@ extension ConnectClientTypes.Contact: Swift.Codable { disconnectTimestamp = disconnectTimestampDecoded let lastUpdateTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastUpdateTimestamp) lastUpdateTimestamp = lastUpdateTimestampDecoded + let lastPausedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastPausedTimestamp) + lastPausedTimestamp = lastPausedTimestampDecoded + let lastResumedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastResumedTimestamp) + lastResumedTimestamp = lastResumedTimestampDecoded + let totalPauseCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .totalPauseCount) + totalPauseCount = totalPauseCountDecoded + let totalPauseDurationInSecondsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .totalPauseDurationInSeconds) + totalPauseDurationInSeconds = totalPauseDurationInSecondsDecoded let scheduledTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .scheduledTimestamp) scheduledTimestamp = scheduledTimestampDecoded let relatedContactIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .relatedContactId) relatedContactId = relatedContactIdDecoded let wisdomInfoDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.WisdomInfo.self, forKey: .wisdomInfo) wisdomInfo = wisdomInfoDecoded + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, contacttagvalue0) in tagsContainer { + if let contacttagvalue0 = contacttagvalue0 { + tagsDecoded0?[key0] = contacttagvalue0 + } + } + } + tags = tagsDecoded0 } } @@ -4191,6 +4307,10 @@ extension ConnectClientTypes { public var initiationMethod: ConnectClientTypes.ContactInitiationMethod? /// The date and time this contact was initiated, in UTC time. For INBOUND, this is when the contact arrived. For OUTBOUND, this is when the agent began dialing. For CALLBACK, this is when the callback contact was created. For TRANSFER and QUEUE_TRANSFER, this is when the transfer was initiated. For API, this is when the request arrived. For EXTERNAL_OUTBOUND, this is when the agent started dialing the external participant. For MONITOR, this is when the supervisor started listening to a contact. public var initiationTimestamp: ClientRuntime.Date? + /// The timestamp when the contact was last paused. + public var lastPausedTimestamp: ClientRuntime.Date? + /// The timestamp when the contact was last resumed. + public var lastResumedTimestamp: ClientRuntime.Date? /// The timestamp when contact was last updated. public var lastUpdateTimestamp: ClientRuntime.Date? /// The name of the contact. @@ -4203,6 +4323,12 @@ extension ConnectClientTypes { public var relatedContactId: Swift.String? /// The timestamp, in Unix epoch time format, at which to start running the inbound flow. public var scheduledTimestamp: ClientRuntime.Date? + /// Tags associated with the contact. This contains both Amazon Web Services generated and user-defined tags. + public var tags: [Swift.String:Swift.String]? + /// Total pause count for a contact. + public var totalPauseCount: Swift.Int? + /// Total pause duration for a contact in seconds. + public var totalPauseDurationInSeconds: Swift.Int? /// Information about Amazon Connect Wisdom. public var wisdomInfo: ConnectClientTypes.WisdomInfo? @@ -4216,12 +4342,17 @@ extension ConnectClientTypes { initialContactId: Swift.String? = nil, initiationMethod: ConnectClientTypes.ContactInitiationMethod? = nil, initiationTimestamp: ClientRuntime.Date? = nil, + lastPausedTimestamp: ClientRuntime.Date? = nil, + lastResumedTimestamp: ClientRuntime.Date? = nil, lastUpdateTimestamp: ClientRuntime.Date? = nil, name: Swift.String? = nil, previousContactId: Swift.String? = nil, queueInfo: ConnectClientTypes.QueueInfo? = nil, relatedContactId: Swift.String? = nil, scheduledTimestamp: ClientRuntime.Date? = nil, + tags: [Swift.String:Swift.String]? = nil, + totalPauseCount: Swift.Int? = nil, + totalPauseDurationInSeconds: Swift.Int? = nil, wisdomInfo: ConnectClientTypes.WisdomInfo? = nil ) { @@ -4234,12 +4365,17 @@ extension ConnectClientTypes { self.initialContactId = initialContactId self.initiationMethod = initiationMethod self.initiationTimestamp = initiationTimestamp + self.lastPausedTimestamp = lastPausedTimestamp + self.lastResumedTimestamp = lastResumedTimestamp self.lastUpdateTimestamp = lastUpdateTimestamp self.name = name self.previousContactId = previousContactId self.queueInfo = queueInfo self.relatedContactId = relatedContactId self.scheduledTimestamp = scheduledTimestamp + self.tags = tags + self.totalPauseCount = totalPauseCount + self.totalPauseDurationInSeconds = totalPauseDurationInSeconds self.wisdomInfo = wisdomInfo } } @@ -4478,7 +4614,7 @@ extension ConnectClientTypes { public var name: Swift.String? /// The type of flow. public var state: ConnectClientTypes.ContactFlowState? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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 type of the flow. For descriptions of the available types, see [Choose a flow type](https://docs.aws.amazon.com/connect/latest/adminguide/create-contact-flow.html#contact-flow-types) in the Amazon Connect Administrator Guide. public var type: ConnectClientTypes.ContactFlowType? @@ -4597,7 +4733,7 @@ extension ConnectClientTypes { public var state: ConnectClientTypes.ContactFlowModuleState? /// The status of the flow module. public var status: ConnectClientTypes.ContactFlowModuleStatus? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -5280,7 +5416,7 @@ public struct CreateAgentStatusInput: Swift.Equatable { /// The state of the status. /// This member is required. public var state: ConnectClientTypes.AgentStatusState? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -5409,6 +5545,65 @@ enum CreateAgentStatusOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension ConnectClientTypes.CreateCaseActionDefinition: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case fields = "Fields" + case templateId = "TemplateId" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let fields = fields { + var fieldsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .fields) + for fieldvalue0 in fields { + try fieldsContainer.encode(fieldvalue0) + } + } + if let templateId = self.templateId { + try encodeContainer.encode(templateId, forKey: .templateId) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let fieldsContainer = try containerValues.decodeIfPresent([ConnectClientTypes.FieldValue?].self, forKey: .fields) + var fieldsDecoded0:[ConnectClientTypes.FieldValue]? = nil + if let fieldsContainer = fieldsContainer { + fieldsDecoded0 = [ConnectClientTypes.FieldValue]() + for structure0 in fieldsContainer { + if let structure0 = structure0 { + fieldsDecoded0?.append(structure0) + } + } + } + fields = fieldsDecoded0 + let templateIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .templateId) + templateId = templateIdDecoded + } +} + +extension ConnectClientTypes { + /// The CreateCase action definition. + public struct CreateCaseActionDefinition: Swift.Equatable { + /// An array of objects with Field ID and Value data. + /// This member is required. + public var fields: [ConnectClientTypes.FieldValue]? + /// A unique identifier of a template. + /// This member is required. + public var templateId: Swift.String? + + public init( + fields: [ConnectClientTypes.FieldValue]? = nil, + templateId: Swift.String? = nil + ) + { + self.fields = fields + self.templateId = templateId + } + } + +} + extension CreateContactFlowInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case content = "Content" @@ -5462,7 +5657,7 @@ public struct CreateContactFlowInput: Swift.Equatable { /// The name of the flow. /// This member is required. public var name: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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 type of the flow. For descriptions of the available types, see [Choose a flow type](https://docs.aws.amazon.com/connect/latest/adminguide/create-contact-flow.html#contact-flow-types) in the Amazon Connect Administrator Guide. /// This member is required. @@ -5582,7 +5777,7 @@ public struct CreateContactFlowModuleInput: Swift.Equatable { /// The name of the flow module. /// This member is required. public var name: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -6023,7 +6218,7 @@ public struct CreateHoursOfOperationInput: Swift.Equatable { /// The name of the hours of operation. /// This member is required. public var name: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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 time zone of the hours of operation. /// This member is required. @@ -6166,7 +6361,7 @@ enum CreateHoursOfOperationOutputError: ClientRuntime.HttpResponseErrorBinding { extension CreateInstanceInput: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "CreateInstanceInput(clientToken: \(Swift.String(describing: clientToken)), directoryId: \(Swift.String(describing: directoryId)), identityManagementType: \(Swift.String(describing: identityManagementType)), inboundCallsEnabled: \(Swift.String(describing: inboundCallsEnabled)), outboundCallsEnabled: \(Swift.String(describing: outboundCallsEnabled)), instanceAlias: \"CONTENT_REDACTED\")"} + "CreateInstanceInput(clientToken: \(Swift.String(describing: clientToken)), directoryId: \(Swift.String(describing: directoryId)), identityManagementType: \(Swift.String(describing: identityManagementType)), inboundCallsEnabled: \(Swift.String(describing: inboundCallsEnabled)), outboundCallsEnabled: \(Swift.String(describing: outboundCallsEnabled)), tags: \(Swift.String(describing: tags)), instanceAlias: \"CONTENT_REDACTED\")"} } extension CreateInstanceInput: Swift.Encodable { @@ -6177,6 +6372,7 @@ extension CreateInstanceInput: Swift.Encodable { case inboundCallsEnabled = "InboundCallsEnabled" case instanceAlias = "InstanceAlias" case outboundCallsEnabled = "OutboundCallsEnabled" + case tags = "Tags" } public func encode(to encoder: Swift.Encoder) throws { @@ -6199,6 +6395,12 @@ extension CreateInstanceInput: Swift.Encodable { if let outboundCallsEnabled = self.outboundCallsEnabled { try encodeContainer.encode(outboundCallsEnabled, forKey: .outboundCallsEnabled) } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } } } @@ -6224,6 +6426,8 @@ public struct CreateInstanceInput: Swift.Equatable { /// Your contact center allows outbound calls. /// This member is required. public var outboundCallsEnabled: Swift.Bool? + /// 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]? public init( clientToken: Swift.String? = nil, @@ -6231,7 +6435,8 @@ public struct CreateInstanceInput: Swift.Equatable { identityManagementType: ConnectClientTypes.DirectoryType? = nil, inboundCallsEnabled: Swift.Bool? = nil, instanceAlias: Swift.String? = nil, - outboundCallsEnabled: Swift.Bool? = nil + outboundCallsEnabled: Swift.Bool? = nil, + tags: [Swift.String:Swift.String]? = nil ) { self.clientToken = clientToken @@ -6240,6 +6445,7 @@ public struct CreateInstanceInput: Swift.Equatable { self.inboundCallsEnabled = inboundCallsEnabled self.instanceAlias = instanceAlias self.outboundCallsEnabled = outboundCallsEnabled + self.tags = tags } } @@ -6250,6 +6456,7 @@ struct CreateInstanceInputBody: Swift.Equatable { let directoryId: Swift.String? let inboundCallsEnabled: Swift.Bool? let outboundCallsEnabled: Swift.Bool? + let tags: [Swift.String:Swift.String]? } extension CreateInstanceInputBody: Swift.Decodable { @@ -6260,6 +6467,7 @@ extension CreateInstanceInputBody: Swift.Decodable { case inboundCallsEnabled = "InboundCallsEnabled" case instanceAlias = "InstanceAlias" case outboundCallsEnabled = "OutboundCallsEnabled" + case tags = "Tags" } public init(from decoder: Swift.Decoder) throws { @@ -6276,6 +6484,17 @@ extension CreateInstanceInputBody: Swift.Decodable { inboundCallsEnabled = inboundCallsEnabledDecoded let outboundCallsEnabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .outboundCallsEnabled) outboundCallsEnabled = outboundCallsEnabledDecoded + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 } } @@ -6405,7 +6624,7 @@ public struct CreateIntegrationAssociationInput: Swift.Equatable { public var sourceApplicationUrl: Swift.String? /// The type of the data source. This field is only required for the EVENT integration type. public var sourceType: ConnectClientTypes.SourceType? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -6926,7 +7145,7 @@ public struct CreatePromptInput: Swift.Equatable { /// 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"} }. + /// 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]? public init( @@ -7118,7 +7337,7 @@ public struct CreateQueueInput: Swift.Equatable { public var outboundCallerConfig: ConnectClientTypes.OutboundCallerConfig? /// The quick connects available to agents who are working the queue. public var quickConnectIds: [Swift.String]? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -7317,7 +7536,7 @@ public struct CreateQuickConnectInput: Swift.Equatable { /// Configuration settings for the quick connect. /// This member is required. public var quickConnectConfig: ConnectClientTypes.QuickConnectConfig? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -7515,7 +7734,7 @@ public struct CreateRoutingProfileInput: Swift.Equatable { public var name: Swift.String? /// The inbound queues associated with the routing profile. If no queue is added, the agent can make only outbound calls. The limit of 10 array members applies to the maximum number of RoutingProfileQueueConfig objects that can be passed during a CreateRoutingProfile API request. It is different from the quota of 50 queues per routing profile per instance that is listed in [Amazon Connect service quotas](https://docs.aws.amazon.com/connect/latest/adminguide/amazon-connect-service-limits.html). public var queueConfigs: [ConnectClientTypes.RoutingProfileQueueConfig]? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -7953,7 +8172,7 @@ public struct CreateSecurityProfileInput: Swift.Equatable { public var securityProfileName: Swift.String? /// The list of resources that a security profile applies tag restrictions to in Amazon Connect. Following are acceptable ResourceNames: User | SecurityProfile | Queue | RoutingProfile public var tagRestrictedResources: [Swift.String]? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -8400,7 +8619,7 @@ public struct CreateTrafficDistributionGroupInput: Swift.Equatable { /// The name for the traffic distribution group. /// This member is required. public var name: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -8567,7 +8786,7 @@ public struct CreateUseCaseInput: Swift.Equatable { /// The identifier for the integration association. /// This member is required. public var integrationAssociationId: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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 type of use case to associate to the integration association. Each integration association can have only one of each use case type. /// This member is required. @@ -8723,7 +8942,7 @@ public struct CreateUserHierarchyGroupInput: Swift.Equatable { public var name: Swift.String? /// The identifier for the parent hierarchy group. The user hierarchy is created at level one if the parent group ID is null. public var parentGroupId: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -8921,7 +9140,7 @@ public struct CreateUserInput: Swift.Equatable { /// The identifier of the security profile for the user. /// This member is required. public var securityProfileIds: [Swift.String]? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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 user name for the account. For instances not using SAML for identity management, the user name can include up to 20 characters. If you are using SAML for identity management, the user name can include up to 64 characters from [a-zA-Z0-9_-.\@]+. /// This member is required. @@ -9466,7 +9685,7 @@ public struct CreateVocabularyInput: Swift.Equatable { /// The language code of the vocabulary entries. For a list of languages and their corresponding language codes, see [What is Amazon Transcribe?](https://docs.aws.amazon.com/transcribe/latest/dg/transcribe-whatis.html) /// This member is required. public var languageCode: ConnectClientTypes.VocabularyLanguageCode? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? /// A unique name of the custom vocabulary. /// This member is required. @@ -15262,6 +15481,26 @@ extension ConnectClientTypes { } +extension ConnectClientTypes.EmptyFieldValue: Swift.Codable { + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.singleValueContainer() + try container.encode([String:String]()) + } + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension ConnectClientTypes { + /// An empty value. + public struct EmptyFieldValue: Swift.Equatable { + + public init() { } + } + +} + extension ConnectClientTypes.EncryptionConfig: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case encryptionType = "EncryptionType" @@ -15338,6 +15577,26 @@ extension ConnectClientTypes { } } +extension ConnectClientTypes.EndAssociatedTasksActionDefinition: Swift.Codable { + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.singleValueContainer() + try container.encode([String:String]()) + } + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension ConnectClientTypes { + /// End associated tasks related to a case. + public struct EndAssociatedTasksActionDefinition: Swift.Equatable { + + public init() { } + } + +} + extension ConnectClientTypes.Endpoint: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case address = "Address" @@ -15613,7 +15872,7 @@ extension ConnectClientTypes { /// The status of the contact evaluation. /// This member is required. public var status: ConnectClientTypes.EvaluationStatus? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -15939,7 +16198,7 @@ extension ConnectClientTypes { /// The status of the evaluation form. /// This member is required. public var status: ConnectClientTypes.EvaluationFormVersionStatus? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? /// A title of the evaluation form. /// This member is required. @@ -17615,6 +17874,8 @@ extension ConnectClientTypes { extension ConnectClientTypes { public enum EventSourceName: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case oncasecreate + case oncaseupdate case oncontactevaluationsubmit case onmetricdataupdate case onpostcallanalysisavailable @@ -17628,6 +17889,8 @@ extension ConnectClientTypes { public static var allCases: [EventSourceName] { return [ + .oncasecreate, + .oncaseupdate, .oncontactevaluationsubmit, .onmetricdataupdate, .onpostcallanalysisavailable, @@ -17646,6 +17909,8 @@ extension ConnectClientTypes { } public var rawValue: Swift.String { switch self { + case .oncasecreate: return "OnCaseCreate" + case .oncaseupdate: return "OnCaseUpdate" case .oncontactevaluationsubmit: return "OnContactEvaluationSubmit" case .onmetricdataupdate: return "OnMetricDataUpdate" case .onpostcallanalysisavailable: return "OnPostCallAnalysisAvailable" @@ -17777,6 +18042,118 @@ extension ConnectClientTypes { } } +extension ConnectClientTypes.FieldValue: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case id = "Id" + case value = "Value" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let id = self.id { + try encodeContainer.encode(id, forKey: .id) + } + 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 idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let valueDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.FieldValueUnion.self, forKey: .value) + value = valueDecoded + } +} + +extension ConnectClientTypes { + /// Object for case field values. + public struct FieldValue: Swift.Equatable { + /// Unique identifier of a field. + /// This member is required. + public var id: Swift.String? + /// Union of potential field value types. + /// This member is required. + public var value: ConnectClientTypes.FieldValueUnion? + + public init( + id: Swift.String? = nil, + value: ConnectClientTypes.FieldValueUnion? = nil + ) + { + self.id = id + self.value = value + } + } + +} + +extension ConnectClientTypes.FieldValueUnion: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case booleanValue = "BooleanValue" + case doubleValue = "DoubleValue" + case emptyValue = "EmptyValue" + case stringValue = "StringValue" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if booleanValue != false { + try encodeContainer.encode(booleanValue, forKey: .booleanValue) + } + if let doubleValue = self.doubleValue { + try encodeContainer.encode(doubleValue, forKey: .doubleValue) + } + if let emptyValue = self.emptyValue { + try encodeContainer.encode(emptyValue, forKey: .emptyValue) + } + if let stringValue = self.stringValue { + try encodeContainer.encode(stringValue, forKey: .stringValue) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let booleanValueDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .booleanValue) ?? false + booleanValue = booleanValueDecoded + let doubleValueDecoded = try containerValues.decodeIfPresent(Swift.Double.self, forKey: .doubleValue) + doubleValue = doubleValueDecoded + let emptyValueDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.EmptyFieldValue.self, forKey: .emptyValue) + emptyValue = emptyValueDecoded + let stringValueDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .stringValue) + stringValue = stringValueDecoded + } +} + +extension ConnectClientTypes { + /// Object to store union of Field values. + public struct FieldValueUnion: Swift.Equatable { + /// A Boolean number value type. + public var booleanValue: Swift.Bool + /// a Double number value type. + public var doubleValue: Swift.Double? + /// An empty value. + public var emptyValue: ConnectClientTypes.EmptyFieldValue? + /// String value type. + public var stringValue: Swift.String? + + public init( + booleanValue: Swift.Bool = false, + doubleValue: Swift.Double? = nil, + emptyValue: ConnectClientTypes.EmptyFieldValue? = nil, + stringValue: Swift.String? = nil + ) + { + self.booleanValue = booleanValue + self.doubleValue = doubleValue + self.emptyValue = emptyValue + self.stringValue = stringValue + } + } + +} + extension ConnectClientTypes.FilterV2: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case filterKey = "FilterKey" @@ -19131,7 +19508,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, Feature, contact/segmentAttributes/connect:Subtype 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_ANSWER_RATE Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AGENT_NON_ADHERENT_TIME 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, Feature, contact/segmentAttributes/connect:Subtype AVG_AFTER_CONTACT_WORK_TIME Unit: Seconds Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, Feature, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype AVG_HANDLE_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype AVG_HOLDS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype AVG_INTERACTION_TIME Unit: Seconds Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype AVG_QUEUE_ANSWER_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype Feature is a valid filter but not a valid grouping. AVG_RESOLUTION_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype CONTACTS_ABANDONED Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype CONTACTS_CREATED Unit: Count Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype CONTACTS_ON_HOLD_AGENT_DISCONNECT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_ON_HOLD_CUSTOMER_DISCONNECT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_PUT_ON_HOLD Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_TRANSFERRED_OUT_EXTERNAL Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_TRANSFERRED_OUT_INTERNAL Unit: Percent 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, contact/segmentAttributes/connect:Subtype CONTACTS_RESOLVED_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype CONTACTS_TRANSFERRED_OUT_FROM_QUEUE Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype MAX_QUEUED_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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_AFTER_CONTACT_WORK_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_CONNECTING_TIME_AGENT Unit: Seconds Valid metric filter key: INITIATION_METHOD. This metric only supports the following filter keys 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. SUM_CONTACT_FLOW_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_CONTACT_TIME_AGENT Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_CONTACTS_ANSWERED_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype SUM_ERROR_STATUS_TIME_AGENT Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_HANDLE_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_HOLD_TIME Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_IDLE_TIME_AGENT Unit: Seconds Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy SUM_INTERACTION_AND_HOLD_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_INTERACTION_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_NON_PRODUCTIVE_TIME_AGENT Unit: Seconds Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy SUM_ONLINE_TIME_AGENT Unit: Seconds Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy SUM_RETRY_CALLBACK_ATTEMPTS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype + /// 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, Feature, contact/segmentAttributes/connect:Subtype 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_ANSWER_RATE Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AGENT_NON_ADHERENT_TIME 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, Feature, contact/segmentAttributes/connect:Subtype AVG_ACTIVE_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_AFTER_CONTACT_WORK_TIME Unit: Seconds Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype 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_AGENT_PAUSE_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy AVG_CONTACT_DURATION Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype 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, Feature, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype AVG_HANDLE_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype AVG_HOLDS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype AVG_INTERACTION_TIME Unit: Seconds Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype AVG_QUEUE_ANSWER_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype Feature is a valid filter but not a valid grouping. AVG_RESOLUTION_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype CONTACTS_ABANDONED Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype CONTACTS_CREATED Unit: Count Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype CONTACTS_ON_HOLD_AGENT_DISCONNECT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_ON_HOLD_CUSTOMER_DISCONNECT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_PUT_ON_HOLD Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_TRANSFERRED_OUT_EXTERNAL Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy CONTACTS_TRANSFERRED_OUT_INTERNAL Unit: Percent 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, contact/segmentAttributes/connect:Subtype CONTACTS_RESOLVED_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype CONTACTS_TRANSFERRED_OUT_FROM_QUEUE Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype MAX_QUEUED_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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_AFTER_CONTACT_WORK_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_CONNECTING_TIME_AGENT Unit: Seconds Valid metric filter key: INITIATION_METHOD. This metric only supports the following filter keys 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. SUM_CONTACT_FLOW_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_CONTACT_TIME_AGENT Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_CONTACTS_ANSWERED_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype 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, contact/segmentAttributes/connect:Subtype 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, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype SUM_ERROR_STATUS_TIME_AGENT Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_HANDLE_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_HOLD_TIME Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_IDLE_TIME_AGENT Unit: Seconds Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy SUM_INTERACTION_AND_HOLD_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_INTERACTION_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy SUM_NON_PRODUCTIVE_TIME_AGENT Unit: Seconds Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy SUM_ONLINE_TIME_AGENT Unit: Seconds Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy SUM_RETRY_CALLBACK_ATTEMPTS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype /// 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. @@ -19550,7 +19927,7 @@ public struct GetTaskTemplateOutput: Swift.Equatable { public var name: Swift.String? /// Marks a template as ACTIVE or INACTIVE for a task to refer to it. Tasks can only be created from ACTIVE templates. If a template is marked as INACTIVE, then a task that refers to this template cannot be created. public var status: ConnectClientTypes.TaskTemplateStatus? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -19933,7 +20310,7 @@ extension ConnectClientTypes { public var levelId: Swift.String? /// The name of the hierarchy group. public var name: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -20945,7 +21322,7 @@ extension ConnectClientTypes { 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"} }. + /// 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 time zone for the hours of operation. public var timeZone: Swift.String? @@ -21425,7 +21802,7 @@ public struct ImportPhoneNumberInput: Swift.Equatable { /// The claimed phone number ARN being imported from the external service, such as Amazon Pinpoint. If it is from Amazon Pinpoint, it looks like the ARN of the phone number to import from Amazon Pinpoint. /// This member is required. public var sourcePhoneNumberArn: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -21564,6 +21941,7 @@ extension ConnectClientTypes.Instance: Swift.Codable { case outboundCallsEnabled = "OutboundCallsEnabled" case serviceRole = "ServiceRole" case statusReason = "StatusReason" + case tags = "Tags" } public func encode(to encoder: Swift.Encoder) throws { @@ -21601,6 +21979,12 @@ extension ConnectClientTypes.Instance: Swift.Codable { if let statusReason = self.statusReason { try encodeContainer.encode(statusReason, forKey: .statusReason) } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } } public init(from decoder: Swift.Decoder) throws { @@ -21627,12 +22011,23 @@ extension ConnectClientTypes.Instance: Swift.Codable { outboundCallsEnabled = outboundCallsEnabledDecoded let instanceAccessUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceAccessUrl) instanceAccessUrl = instanceAccessUrlDecoded + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 } } extension ConnectClientTypes.Instance: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "Instance(arn: \(Swift.String(describing: arn)), createdTime: \(Swift.String(describing: createdTime)), id: \(Swift.String(describing: id)), identityManagementType: \(Swift.String(describing: identityManagementType)), inboundCallsEnabled: \(Swift.String(describing: inboundCallsEnabled)), instanceAccessUrl: \(Swift.String(describing: instanceAccessUrl)), instanceStatus: \(Swift.String(describing: instanceStatus)), outboundCallsEnabled: \(Swift.String(describing: outboundCallsEnabled)), serviceRole: \(Swift.String(describing: serviceRole)), statusReason: \(Swift.String(describing: statusReason)), instanceAlias: \"CONTENT_REDACTED\")"} + "Instance(arn: \(Swift.String(describing: arn)), createdTime: \(Swift.String(describing: createdTime)), id: \(Swift.String(describing: id)), identityManagementType: \(Swift.String(describing: identityManagementType)), inboundCallsEnabled: \(Swift.String(describing: inboundCallsEnabled)), instanceAccessUrl: \(Swift.String(describing: instanceAccessUrl)), instanceStatus: \(Swift.String(describing: instanceStatus)), outboundCallsEnabled: \(Swift.String(describing: outboundCallsEnabled)), serviceRole: \(Swift.String(describing: serviceRole)), statusReason: \(Swift.String(describing: statusReason)), tags: \(Swift.String(describing: tags)), instanceAlias: \"CONTENT_REDACTED\")"} } extension ConnectClientTypes { @@ -21660,6 +22055,8 @@ extension ConnectClientTypes { public var serviceRole: Swift.String? /// Relevant details why the instance was not successfully created. public var statusReason: ConnectClientTypes.InstanceStatusReason? + /// The tags of an instance. + public var tags: [Swift.String:Swift.String]? public init( arn: Swift.String? = nil, @@ -21672,7 +22069,8 @@ extension ConnectClientTypes { instanceStatus: ConnectClientTypes.InstanceStatus? = nil, outboundCallsEnabled: Swift.Bool? = nil, serviceRole: Swift.String? = nil, - statusReason: ConnectClientTypes.InstanceStatusReason? = nil + statusReason: ConnectClientTypes.InstanceStatusReason? = nil, + tags: [Swift.String:Swift.String]? = nil ) { self.arn = arn @@ -21686,6 +22084,7 @@ extension ConnectClientTypes { self.outboundCallsEnabled = outboundCallsEnabled self.serviceRole = serviceRole self.statusReason = statusReason + self.tags = tags } } @@ -30144,7 +30543,7 @@ extension ConnectClientTypes { public struct NotificationRecipientType: Swift.Equatable { /// A list of user IDs. public var userIds: [Swift.String]? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. Amazon Connect users with the specified tags will be notified. + /// The tags used to organize, track, or control access for this resource. For example, { "Tags": {"key1":"value1", "key2":"value2"} }. Amazon Connect users with the specified tags will be notified. public var userTags: [Swift.String:Swift.String]? public init( @@ -30829,6 +31228,107 @@ extension ConnectClientTypes { } +extension PauseContactInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case contactFlowId = "ContactFlowId" + case contactId = "ContactId" + case instanceId = "InstanceId" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let contactFlowId = self.contactFlowId { + try encodeContainer.encode(contactFlowId, forKey: .contactFlowId) + } + if let contactId = self.contactId { + try encodeContainer.encode(contactId, forKey: .contactId) + } + if let instanceId = self.instanceId { + try encodeContainer.encode(instanceId, forKey: .instanceId) + } + } +} + +extension PauseContactInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/contact/pause" + } +} + +public struct PauseContactInput: Swift.Equatable { + /// The identifier of the flow. + public var contactFlowId: Swift.String? + /// The identifier of the contact. + /// This member is required. + public var contactId: Swift.String? + /// The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance. + /// This member is required. + public var instanceId: Swift.String? + + public init( + contactFlowId: Swift.String? = nil, + contactId: Swift.String? = nil, + instanceId: Swift.String? = nil + ) + { + self.contactFlowId = contactFlowId + self.contactId = contactId + self.instanceId = instanceId + } +} + +struct PauseContactInputBody: Swift.Equatable { + let contactId: Swift.String? + let instanceId: Swift.String? + let contactFlowId: Swift.String? +} + +extension PauseContactInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case contactFlowId = "ContactFlowId" + case contactId = "ContactId" + case instanceId = "InstanceId" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let contactIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .contactId) + contactId = contactIdDecoded + let instanceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceId) + instanceId = instanceIdDecoded + let contactFlowIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .contactFlowId) + contactFlowId = contactFlowIdDecoded + } +} + +extension PauseContactOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct PauseContactOutput: Swift.Equatable { + + public init() { } +} + +enum PauseContactOutputError: 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 "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 "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) + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) + } + } +} + extension ConnectClientTypes.PersistentChat: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case rehydrationType = "RehydrationType" @@ -32011,7 +32511,7 @@ extension ConnectClientTypes { public var promptARN: Swift.String? /// A unique identifier for the prompt. public var promptId: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -32609,7 +33109,7 @@ extension ConnectClientTypes { public var queueId: Swift.String? /// The status of the queue. public var status: ConnectClientTypes.QueueStatus? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -33146,7 +33646,7 @@ extension ConnectClientTypes { public var quickConnectConfig: ConnectClientTypes.QuickConnectConfig? /// The identifier for the quick connect. public var quickConnectId: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -35445,6 +35945,106 @@ extension ConnectClientTypes { } } +extension ResumeContactInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case contactFlowId = "ContactFlowId" + case contactId = "ContactId" + case instanceId = "InstanceId" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let contactFlowId = self.contactFlowId { + try encodeContainer.encode(contactFlowId, forKey: .contactFlowId) + } + if let contactId = self.contactId { + try encodeContainer.encode(contactId, forKey: .contactId) + } + if let instanceId = self.instanceId { + try encodeContainer.encode(instanceId, forKey: .instanceId) + } + } +} + +extension ResumeContactInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/contact/resume" + } +} + +public struct ResumeContactInput: Swift.Equatable { + /// The identifier of the flow. + public var contactFlowId: Swift.String? + /// The identifier of the contact. + /// This member is required. + public var contactId: Swift.String? + /// The identifier of the Amazon Connect instance. You can find the instanceId in the ARN of the instance. + /// This member is required. + public var instanceId: Swift.String? + + public init( + contactFlowId: Swift.String? = nil, + contactId: Swift.String? = nil, + instanceId: Swift.String? = nil + ) + { + self.contactFlowId = contactFlowId + self.contactId = contactId + self.instanceId = instanceId + } +} + +struct ResumeContactInputBody: Swift.Equatable { + let contactId: Swift.String? + let instanceId: Swift.String? + let contactFlowId: Swift.String? +} + +extension ResumeContactInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case contactFlowId = "ContactFlowId" + case contactId = "ContactId" + case instanceId = "InstanceId" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let contactIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .contactId) + contactId = contactIdDecoded + let instanceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceId) + instanceId = instanceIdDecoded + let contactFlowIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .contactFlowId) + contactFlowId = contactFlowIdDecoded + } +} + +extension ResumeContactOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct ResumeContactOutput: Swift.Equatable { + + public init() { } +} + +enum ResumeContactOutputError: 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 "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 ResumeContactRecordingInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case contactId = "ContactId" @@ -35692,7 +36292,7 @@ extension ConnectClientTypes { public var routingProfileArn: Swift.String? /// The identifier of the routing profile. public var routingProfileId: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -36298,7 +36898,7 @@ extension ConnectClientTypes { /// A unique identifier for the rule. /// This member is required. public var ruleId: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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 event source to trigger the rule. /// This member is required. @@ -36338,9 +36938,12 @@ extension ConnectClientTypes.RuleAction: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case actionType = "ActionType" case assignContactCategoryAction = "AssignContactCategoryAction" + case createCaseAction = "CreateCaseAction" + case endAssociatedTasksAction = "EndAssociatedTasksAction" case eventBridgeAction = "EventBridgeAction" case sendNotificationAction = "SendNotificationAction" case taskAction = "TaskAction" + case updateCaseAction = "UpdateCaseAction" } public func encode(to encoder: Swift.Encoder) throws { @@ -36351,6 +36954,12 @@ extension ConnectClientTypes.RuleAction: Swift.Codable { if let assignContactCategoryAction = self.assignContactCategoryAction { try encodeContainer.encode(assignContactCategoryAction, forKey: .assignContactCategoryAction) } + if let createCaseAction = self.createCaseAction { + try encodeContainer.encode(createCaseAction, forKey: .createCaseAction) + } + if let endAssociatedTasksAction = self.endAssociatedTasksAction { + try encodeContainer.encode(endAssociatedTasksAction, forKey: .endAssociatedTasksAction) + } if let eventBridgeAction = self.eventBridgeAction { try encodeContainer.encode(eventBridgeAction, forKey: .eventBridgeAction) } @@ -36360,6 +36969,9 @@ extension ConnectClientTypes.RuleAction: Swift.Codable { if let taskAction = self.taskAction { try encodeContainer.encode(taskAction, forKey: .taskAction) } + if let updateCaseAction = self.updateCaseAction { + try encodeContainer.encode(updateCaseAction, forKey: .updateCaseAction) + } } public init(from decoder: Swift.Decoder) throws { @@ -36374,6 +36986,12 @@ extension ConnectClientTypes.RuleAction: Swift.Codable { assignContactCategoryAction = assignContactCategoryActionDecoded let sendNotificationActionDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.SendNotificationActionDefinition.self, forKey: .sendNotificationAction) sendNotificationAction = sendNotificationActionDecoded + let createCaseActionDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.CreateCaseActionDefinition.self, forKey: .createCaseAction) + createCaseAction = createCaseActionDecoded + let updateCaseActionDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.UpdateCaseActionDefinition.self, forKey: .updateCaseAction) + updateCaseAction = updateCaseActionDecoded + let endAssociatedTasksActionDecoded = try containerValues.decodeIfPresent(ConnectClientTypes.EndAssociatedTasksActionDefinition.self, forKey: .endAssociatedTasksAction) + endAssociatedTasksAction = endAssociatedTasksActionDecoded } } @@ -36385,26 +37003,38 @@ extension ConnectClientTypes { public var actionType: ConnectClientTypes.ActionType? /// Information about the contact category action. Supported only for TriggerEventSource values: OnPostCallAnalysisAvailable | OnRealTimeCallAnalysisAvailable | OnRealTimeChatAnalysisAvailable | OnPostChatAnalysisAvailable | OnZendeskTicketCreate | OnZendeskTicketStatusUpdate | OnSalesforceCaseCreate public var assignContactCategoryAction: ConnectClientTypes.AssignContactCategoryActionDefinition? + /// Information about the create case action. Supported only for TriggerEventSource values: OnPostCallAnalysisAvailable | OnPostChatAnalysisAvailable. + public var createCaseAction: ConnectClientTypes.CreateCaseActionDefinition? + /// Information about the end associated tasks action. Supported only for TriggerEventSource values: OnCaseUpdate. + public var endAssociatedTasksAction: ConnectClientTypes.EndAssociatedTasksActionDefinition? /// Information about the EventBridge action. Supported only for TriggerEventSource values: OnPostCallAnalysisAvailable | OnRealTimeCallAnalysisAvailable | OnRealTimeChatAnalysisAvailable | OnPostChatAnalysisAvailable | OnContactEvaluationSubmit | OnMetricDataUpdate public var eventBridgeAction: ConnectClientTypes.EventBridgeActionDefinition? /// Information about the send notification action. Supported only for TriggerEventSource values: OnPostCallAnalysisAvailable | OnRealTimeCallAnalysisAvailable | OnRealTimeChatAnalysisAvailable | OnPostChatAnalysisAvailable | OnContactEvaluationSubmit | OnMetricDataUpdate public var sendNotificationAction: ConnectClientTypes.SendNotificationActionDefinition? /// Information about the task action. This field is required if TriggerEventSource is one of the following values: OnZendeskTicketCreate | OnZendeskTicketStatusUpdate | OnSalesforceCaseCreate public var taskAction: ConnectClientTypes.TaskActionDefinition? + /// Information about the update case action. Supported only for TriggerEventSource values: OnCaseCreate | OnCaseUpdate. + public var updateCaseAction: ConnectClientTypes.UpdateCaseActionDefinition? public init( actionType: ConnectClientTypes.ActionType? = nil, assignContactCategoryAction: ConnectClientTypes.AssignContactCategoryActionDefinition? = nil, + createCaseAction: ConnectClientTypes.CreateCaseActionDefinition? = nil, + endAssociatedTasksAction: ConnectClientTypes.EndAssociatedTasksActionDefinition? = nil, eventBridgeAction: ConnectClientTypes.EventBridgeActionDefinition? = nil, sendNotificationAction: ConnectClientTypes.SendNotificationActionDefinition? = nil, - taskAction: ConnectClientTypes.TaskActionDefinition? = nil + taskAction: ConnectClientTypes.TaskActionDefinition? = nil, + updateCaseAction: ConnectClientTypes.UpdateCaseActionDefinition? = nil ) { self.actionType = actionType self.assignContactCategoryAction = assignContactCategoryAction + self.createCaseAction = createCaseAction + self.endAssociatedTasksAction = endAssociatedTasksAction self.eventBridgeAction = eventBridgeAction self.sendNotificationAction = sendNotificationAction self.taskAction = taskAction + self.updateCaseAction = updateCaseAction } } @@ -38697,7 +39327,7 @@ extension ConnectClientTypes { public var securityProfileName: Swift.String? /// The list of resources that a security profile applies tag restrictions to in Amazon Connect. public var tagRestrictedResources: [Swift.String]? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -38881,7 +39511,7 @@ extension ConnectClientTypes { public var organizationResourceId: Swift.String? /// The name of the security profile. public var securityProfileName: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -39569,12 +40199,14 @@ extension ConnectClientTypes { extension ConnectClientTypes { public enum SourceType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case cases case salesforce case zendesk case sdkUnknown(Swift.String) public static var allCases: [SourceType] { return [ + .cases, .salesforce, .zendesk, .sdkUnknown("") @@ -39586,6 +40218,7 @@ extension ConnectClientTypes { } public var rawValue: Swift.String { switch self { + case .cases: return "CASES" case .salesforce: return "SALESFORCE" case .zendesk: return "ZENDESK" case let .sdkUnknown(s): return s @@ -40300,9 +40933,13 @@ extension StartOutboundVoiceContactInput: Swift.Encodable { case campaignId = "CampaignId" case clientToken = "ClientToken" case contactFlowId = "ContactFlowId" + case description = "Description" case destinationPhoneNumber = "DestinationPhoneNumber" case instanceId = "InstanceId" + case name = "Name" case queueId = "QueueId" + case references = "References" + case relatedContactId = "RelatedContactId" case sourcePhoneNumber = "SourcePhoneNumber" case trafficType = "TrafficType" } @@ -40327,15 +40964,30 @@ extension StartOutboundVoiceContactInput: Swift.Encodable { if let contactFlowId = self.contactFlowId { try encodeContainer.encode(contactFlowId, forKey: .contactFlowId) } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } if let destinationPhoneNumber = self.destinationPhoneNumber { try encodeContainer.encode(destinationPhoneNumber, forKey: .destinationPhoneNumber) } if let instanceId = self.instanceId { try encodeContainer.encode(instanceId, forKey: .instanceId) } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } if let queueId = self.queueId { try encodeContainer.encode(queueId, forKey: .queueId) } + if let references = references { + var referencesContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .references) + for (dictKey0, contactReferences0) in references { + try referencesContainer.encode(contactReferences0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let relatedContactId = self.relatedContactId { + try encodeContainer.encode(relatedContactId, forKey: .relatedContactId) + } if let sourcePhoneNumber = self.sourcePhoneNumber { try encodeContainer.encode(sourcePhoneNumber, forKey: .sourcePhoneNumber) } @@ -40363,14 +41015,22 @@ public struct StartOutboundVoiceContactInput: Swift.Equatable { /// The identifier of the flow for the outbound call. To see the ContactFlowId in the Amazon Connect admin website, on the navigation menu go to Routing, Contact Flows. Choose the flow. On the flow page, under the name of the flow, choose Show additional flow information. The ContactFlowId is the last part of the ARN, shown here in bold: arn:aws:connect:us-west-2:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/contact-flow/846ec553-a005-41c0-8341-xxxxxxxxxxxx /// This member is required. public var contactFlowId: Swift.String? + /// A description of the voice contact that is shown to an agent in the Contact Control Panel (CCP). + public var description: Swift.String? /// The phone number of the customer, in E.164 format. /// This member is required. public var destinationPhoneNumber: 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 name of a voice contact that is shown to an agent in the Contact Control Panel (CCP). + public var name: Swift.String? /// The queue for the call. If you specify a queue, the phone displayed for caller ID is the phone number specified in the queue. If you do not specify a queue, the queue defined in the flow is used. If you do not specify a queue, you must specify a source phone number. public var queueId: Swift.String? + /// A formatted URL that is shown to an agent in the Contact Control Panel (CCP). Contacts can have the following reference types at the time of creation: URL | NUMBER | STRING | DATE | EMAIL. ATTACHMENT is not a supported reference type during voice contact creation. + public var references: [Swift.String:ConnectClientTypes.Reference]? + /// The contactId that is related to this contact. Linking voice, task, or chat by using RelatedContactID copies over contact attributes from the related contact to the new contact. All updates to user-defined attributes in the new contact are limited to the individual contact ID. There are no limits to the number of contacts that can be linked by using RelatedContactId. + public var relatedContactId: Swift.String? /// The phone number associated with the Amazon Connect instance, in E.164 format. If you do not specify a source phone number, you must specify a queue. public var sourcePhoneNumber: Swift.String? /// Denotes the class of traffic. Calls with different traffic types are handled differently by Amazon Connect. The default value is GENERAL. Use CAMPAIGN if EnableAnswerMachineDetection is set to true. For all other cases, use GENERAL. @@ -40382,9 +41042,13 @@ public struct StartOutboundVoiceContactInput: Swift.Equatable { campaignId: Swift.String? = nil, clientToken: Swift.String? = nil, contactFlowId: Swift.String? = nil, + description: Swift.String? = nil, destinationPhoneNumber: Swift.String? = nil, instanceId: Swift.String? = nil, + name: Swift.String? = nil, queueId: Swift.String? = nil, + references: [Swift.String:ConnectClientTypes.Reference]? = nil, + relatedContactId: Swift.String? = nil, sourcePhoneNumber: Swift.String? = nil, trafficType: ConnectClientTypes.TrafficType? = nil ) @@ -40394,15 +41058,23 @@ public struct StartOutboundVoiceContactInput: Swift.Equatable { self.campaignId = campaignId self.clientToken = clientToken self.contactFlowId = contactFlowId + self.description = description self.destinationPhoneNumber = destinationPhoneNumber self.instanceId = instanceId + self.name = name self.queueId = queueId + self.references = references + self.relatedContactId = relatedContactId self.sourcePhoneNumber = sourcePhoneNumber self.trafficType = trafficType } } struct StartOutboundVoiceContactInputBody: Swift.Equatable { + let name: Swift.String? + let description: Swift.String? + let references: [Swift.String:ConnectClientTypes.Reference]? + let relatedContactId: Swift.String? let destinationPhoneNumber: Swift.String? let contactFlowId: Swift.String? let instanceId: Swift.String? @@ -40422,15 +41094,36 @@ extension StartOutboundVoiceContactInputBody: Swift.Decodable { case campaignId = "CampaignId" case clientToken = "ClientToken" case contactFlowId = "ContactFlowId" + case description = "Description" case destinationPhoneNumber = "DestinationPhoneNumber" case instanceId = "InstanceId" + case name = "Name" case queueId = "QueueId" + case references = "References" + case relatedContactId = "RelatedContactId" case sourcePhoneNumber = "SourcePhoneNumber" case trafficType = "TrafficType" } 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 referencesContainer = try containerValues.decodeIfPresent([Swift.String: ConnectClientTypes.Reference?].self, forKey: .references) + var referencesDecoded0: [Swift.String:ConnectClientTypes.Reference]? = nil + if let referencesContainer = referencesContainer { + referencesDecoded0 = [Swift.String:ConnectClientTypes.Reference]() + for (key0, reference0) in referencesContainer { + if let reference0 = reference0 { + referencesDecoded0?[key0] = reference0 + } + } + } + references = referencesDecoded0 + let relatedContactIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .relatedContactId) + relatedContactId = relatedContactIdDecoded let destinationPhoneNumberDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .destinationPhoneNumber) destinationPhoneNumber = destinationPhoneNumberDecoded let contactFlowIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .contactFlowId) @@ -41890,6 +42583,117 @@ extension ConnectClientTypes { } +extension TagContactInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case contactId = "ContactId" + case instanceId = "InstanceId" + case tags = "Tags" + } + + 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 instanceId = self.instanceId { + try encodeContainer.encode(instanceId, forKey: .instanceId) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, contactTagMap0) in tags { + try tagsContainer.encode(contactTagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + } +} + +extension TagContactInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/contact/tags" + } +} + +public struct TagContactInput: Swift.Equatable { + /// The identifier of the contact in this instance of Amazon Connect. + /// This member is required. + public var contactId: 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 tags to be assigned to the contact resource. For example, { "Tags": {"key1":"value1", "key2":"value2"} }. Authorization is not supported by this tag. + /// This member is required. + public var tags: [Swift.String:Swift.String]? + + public init( + contactId: Swift.String? = nil, + instanceId: Swift.String? = nil, + tags: [Swift.String:Swift.String]? = nil + ) + { + self.contactId = contactId + self.instanceId = instanceId + self.tags = tags + } +} + +struct TagContactInputBody: Swift.Equatable { + let contactId: Swift.String? + let instanceId: Swift.String? + let tags: [Swift.String:Swift.String]? +} + +extension TagContactInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case contactId = "ContactId" + case instanceId = "InstanceId" + case tags = "Tags" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let contactIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .contactId) + contactId = contactIdDecoded + 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 { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, contacttagvalue0) in tagsContainer { + if let contacttagvalue0 = contacttagvalue0 { + tagsDecoded0?[key0] = contacttagvalue0 + } + } + } + tags = tagsDecoded0 + } +} + +extension TagContactOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct TagContactOutput: Swift.Equatable { + + public init() { } +} + +enum TagContactOutputError: 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 "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 TagResourceInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case tags @@ -41919,7 +42723,7 @@ public struct TagResourceInput: Swift.Equatable { /// The Amazon Resource Name (ARN) of the resource. /// This member is required. public var resourceArn: Swift.String? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// The tags used to organize, track, or control access for this resource. For example, { "Tags": {"key1":"value1", "key2":"value2"} }. /// This member is required. public var tags: [Swift.String:Swift.String]? @@ -43039,7 +43843,7 @@ extension ConnectClientTypes { /// /// * UPDATE_IN_PROGRESS means the previous [UpdateTrafficDistribution](https://docs.aws.amazon.com/connect/latest/APIReference/API_UpdateTrafficDistribution.html) operation is still in progress and has not yet completed. public var status: ConnectClientTypes.TrafficDistributionGroupStatus? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( @@ -43486,6 +44290,92 @@ extension ConnectClientTypes { } } +extension UntagContactInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + guard let tagKeys = tagKeys else { + let message = "Creating a URL Query Item failed. tagKeys is required and must not be nil." + throw ClientRuntime.ClientError.unknownError(message) + } + tagKeys.forEach { queryItemValue in + let queryItem = ClientRuntime.URLQueryItem(name: "TagKeys".urlPercentEncoding(), value: Swift.String(queryItemValue).urlPercentEncoding()) + items.append(queryItem) + } + return items + } + } +} + +extension UntagContactInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let instanceId = instanceId else { + return nil + } + guard let contactId = contactId else { + return nil + } + return "/contact/tags/\(instanceId.urlPercentEncoding())/\(contactId.urlPercentEncoding())" + } +} + +public struct UntagContactInput: Swift.Equatable { + /// The identifier of the contact in this instance of Amazon Connect. + /// This member is required. + public var contactId: 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? + /// A list of tag keys. Existing tags on the contact whose keys are members of this list will be removed. + /// This member is required. + public var tagKeys: [Swift.String]? + + public init( + contactId: Swift.String? = nil, + instanceId: Swift.String? = nil, + tagKeys: [Swift.String]? = nil + ) + { + self.contactId = contactId + self.instanceId = instanceId + self.tagKeys = tagKeys + } +} + +struct UntagContactInputBody: Swift.Equatable { +} + +extension UntagContactInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension UntagContactOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct UntagContactOutput: Swift.Equatable { + + public init() { } +} + +enum UntagContactOutputError: 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 "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 UntagResourceInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { @@ -43702,6 +44592,54 @@ enum UpdateAgentStatusOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension ConnectClientTypes.UpdateCaseActionDefinition: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case fields = "Fields" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let fields = fields { + var fieldsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .fields) + for fieldvalue0 in fields { + try fieldsContainer.encode(fieldvalue0) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let fieldsContainer = try containerValues.decodeIfPresent([ConnectClientTypes.FieldValue?].self, forKey: .fields) + var fieldsDecoded0:[ConnectClientTypes.FieldValue]? = nil + if let fieldsContainer = fieldsContainer { + fieldsDecoded0 = [ConnectClientTypes.FieldValue]() + for structure0 in fieldsContainer { + if let structure0 = structure0 { + fieldsDecoded0?.append(structure0) + } + } + } + fields = fieldsDecoded0 + } +} + +extension ConnectClientTypes { + /// The UpdateCase action definition. + public struct UpdateCaseActionDefinition: Swift.Equatable { + /// An array of objects with Field ID and Value data. + /// This member is required. + public var fields: [ConnectClientTypes.FieldValue]? + + public init( + fields: [ConnectClientTypes.FieldValue]? = nil + ) + { + self.fields = fields + } + } + +} + extension UpdateContactAttributesInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case attributes = "Attributes" @@ -49706,7 +50644,7 @@ extension ConnectClientTypes { public var routingProfileId: Swift.String? /// The identifiers of the user's security profiles. public var securityProfileIds: [Swift.String]? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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 name of the user. public var username: Swift.String? @@ -50502,7 +51440,7 @@ extension ConnectClientTypes { /// The current state of the custom vocabulary. /// This member is required. public var state: ConnectClientTypes.VocabularyState? - /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. + /// 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]? public init( diff --git a/Sources/Services/AWSControlTower/models/Models.swift b/Sources/Services/AWSControlTower/models/Models.swift index 27792943af3..9f47626ea0a 100644 --- a/Sources/Services/AWSControlTower/models/Models.swift +++ b/Sources/Services/AWSControlTower/models/Models.swift @@ -290,7 +290,7 @@ extension CreateLandingZoneInput: ClientRuntime.URLPathProvider { } public struct CreateLandingZoneInput: Swift.Equatable { - /// The manifest.yaml file is a text file that describes your Amazon Web Services resources. For examples, review [The manifest file](https://docs.aws.amazon.com/controltower/latest/userguide/the-manifest-file). + /// The manifest JSON file is a text file that describes your Amazon Web Services resources. For examples, review [Launch your landing zone](https://docs.aws.amazon.com/controltower/latest/userguide/lz-api-launch). /// This member is required. public var manifest: ClientRuntime.Document? /// Tags to be applied to the landing zone. @@ -1797,7 +1797,7 @@ extension ControlTowerClientTypes { public var driftStatus: ControlTowerClientTypes.LandingZoneDriftStatusSummary? /// The latest available version of the landing zone. public var latestAvailableVersion: Swift.String? - /// The landing zone manifest.yaml text file that specifies the landing zone configurations. + /// The landing zone manifest JSON text file that specifies the landing zone configurations. /// This member is required. public var manifest: ClientRuntime.Document? /// The landing zone deployment status. @@ -3169,7 +3169,7 @@ public struct UpdateLandingZoneInput: Swift.Equatable { /// The unique identifier of the landing zone. /// This member is required. public var landingZoneIdentifier: Swift.String? - /// The manifest.yaml file is a text file that describes your Amazon Web Services resources. For examples, review [The manifest file](https://docs.aws.amazon.com/controltower/latest/userguide/the-manifest-file). + /// The manifest JSON file is a text file that describes your Amazon Web Services resources. For examples, review [Launch your landing zone](https://docs.aws.amazon.com/controltower/latest/userguide/lz-api-launch). /// This member is required. public var manifest: ClientRuntime.Document? /// The landing zone version, for example, 3.2. diff --git a/Sources/Services/AWSDrs/models/Models.swift b/Sources/Services/AWSDrs/models/Models.swift index 32de670a62e..67a8dc770f0 100644 --- a/Sources/Services/AWSDrs/models/Models.swift +++ b/Sources/Services/AWSDrs/models/Models.swift @@ -4253,7 +4253,7 @@ extension DisconnectSourceServerInputBody: Swift.Decodable { extension DisconnectSourceServerOutput: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "DisconnectSourceServerOutput(arn: \(Swift.String(describing: arn)), dataReplicationInfo: \(Swift.String(describing: dataReplicationInfo)), lastLaunchResult: \(Swift.String(describing: lastLaunchResult)), lifeCycle: \(Swift.String(describing: lifeCycle)), recoveryInstanceId: \(Swift.String(describing: recoveryInstanceId)), replicationDirection: \(Swift.String(describing: replicationDirection)), reversedDirectionSourceServerArn: \(Swift.String(describing: reversedDirectionSourceServerArn)), sourceCloudProperties: \(Swift.String(describing: sourceCloudProperties)), sourceNetworkID: \(Swift.String(describing: sourceNetworkID)), sourceProperties: \(Swift.String(describing: sourceProperties)), sourceServerID: \(Swift.String(describing: sourceServerID)), stagingArea: \(Swift.String(describing: stagingArea)), tags: \"CONTENT_REDACTED\")"} + "DisconnectSourceServerOutput(agentVersion: \(Swift.String(describing: agentVersion)), arn: \(Swift.String(describing: arn)), dataReplicationInfo: \(Swift.String(describing: dataReplicationInfo)), lastLaunchResult: \(Swift.String(describing: lastLaunchResult)), lifeCycle: \(Swift.String(describing: lifeCycle)), recoveryInstanceId: \(Swift.String(describing: recoveryInstanceId)), replicationDirection: \(Swift.String(describing: replicationDirection)), reversedDirectionSourceServerArn: \(Swift.String(describing: reversedDirectionSourceServerArn)), sourceCloudProperties: \(Swift.String(describing: sourceCloudProperties)), sourceNetworkID: \(Swift.String(describing: sourceNetworkID)), sourceProperties: \(Swift.String(describing: sourceProperties)), sourceServerID: \(Swift.String(describing: sourceServerID)), stagingArea: \(Swift.String(describing: stagingArea)), tags: \"CONTENT_REDACTED\")"} } extension DisconnectSourceServerOutput: ClientRuntime.HttpResponseBinding { @@ -4261,6 +4261,7 @@ extension DisconnectSourceServerOutput: ClientRuntime.HttpResponseBinding { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { let output: DisconnectSourceServerOutputBody = try responseDecoder.decode(responseBody: data) + self.agentVersion = output.agentVersion self.arn = output.arn self.dataReplicationInfo = output.dataReplicationInfo self.lastLaunchResult = output.lastLaunchResult @@ -4275,6 +4276,7 @@ extension DisconnectSourceServerOutput: ClientRuntime.HttpResponseBinding { self.stagingArea = output.stagingArea self.tags = output.tags } else { + self.agentVersion = nil self.arn = nil self.dataReplicationInfo = nil self.lastLaunchResult = nil @@ -4293,6 +4295,8 @@ extension DisconnectSourceServerOutput: ClientRuntime.HttpResponseBinding { } public struct DisconnectSourceServerOutput: Swift.Equatable { + /// The version of the DRS agent installed on the source server + public var agentVersion: Swift.String? /// The ARN of the Source Server. public var arn: Swift.String? /// The Data Replication Info of the Source Server. @@ -4321,6 +4325,7 @@ public struct DisconnectSourceServerOutput: Swift.Equatable { public var tags: [Swift.String:Swift.String]? public init( + agentVersion: Swift.String? = nil, arn: Swift.String? = nil, dataReplicationInfo: DrsClientTypes.DataReplicationInfo? = nil, lastLaunchResult: DrsClientTypes.LastLaunchResult? = nil, @@ -4336,6 +4341,7 @@ public struct DisconnectSourceServerOutput: Swift.Equatable { tags: [Swift.String:Swift.String]? = nil ) { + self.agentVersion = agentVersion self.arn = arn self.dataReplicationInfo = dataReplicationInfo self.lastLaunchResult = lastLaunchResult @@ -4366,10 +4372,12 @@ struct DisconnectSourceServerOutputBody: Swift.Equatable { let replicationDirection: DrsClientTypes.ReplicationDirection? let reversedDirectionSourceServerArn: Swift.String? let sourceNetworkID: Swift.String? + let agentVersion: Swift.String? } extension DisconnectSourceServerOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case agentVersion case arn case dataReplicationInfo case lastLaunchResult @@ -4422,6 +4430,8 @@ extension DisconnectSourceServerOutputBody: Swift.Decodable { reversedDirectionSourceServerArn = reversedDirectionSourceServerArnDecoded let sourceNetworkIDDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceNetworkID) sourceNetworkID = sourceNetworkIDDecoded + let agentVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .agentVersion) + agentVersion = agentVersionDecoded } } @@ -8544,6 +8554,7 @@ enum PutLaunchActionOutputError: ClientRuntime.HttpResponseErrorBinding { extension DrsClientTypes.RecoveryInstance: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case agentVersion case arn case dataReplicationInfo case ec2InstanceID @@ -8562,6 +8573,9 @@ extension DrsClientTypes.RecoveryInstance: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let agentVersion = self.agentVersion { + try encodeContainer.encode(agentVersion, forKey: .agentVersion) + } if let arn = self.arn { try encodeContainer.encode(arn, forKey: .arn) } @@ -8648,17 +8662,21 @@ extension DrsClientTypes.RecoveryInstance: Swift.Codable { originEnvironment = originEnvironmentDecoded let originAvailabilityZoneDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .originAvailabilityZone) originAvailabilityZone = originAvailabilityZoneDecoded + let agentVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .agentVersion) + agentVersion = agentVersionDecoded } } extension DrsClientTypes.RecoveryInstance: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "RecoveryInstance(arn: \(Swift.String(describing: arn)), dataReplicationInfo: \(Swift.String(describing: dataReplicationInfo)), ec2InstanceID: \(Swift.String(describing: ec2InstanceID)), ec2InstanceState: \(Swift.String(describing: ec2InstanceState)), failback: \(Swift.String(describing: failback)), isDrill: \(Swift.String(describing: isDrill)), jobID: \(Swift.String(describing: jobID)), originAvailabilityZone: \(Swift.String(describing: originAvailabilityZone)), originEnvironment: \(Swift.String(describing: originEnvironment)), pointInTimeSnapshotDateTime: \(Swift.String(describing: pointInTimeSnapshotDateTime)), recoveryInstanceID: \(Swift.String(describing: recoveryInstanceID)), recoveryInstanceProperties: \(Swift.String(describing: recoveryInstanceProperties)), sourceServerID: \(Swift.String(describing: sourceServerID)), tags: \"CONTENT_REDACTED\")"} + "RecoveryInstance(agentVersion: \(Swift.String(describing: agentVersion)), arn: \(Swift.String(describing: arn)), dataReplicationInfo: \(Swift.String(describing: dataReplicationInfo)), ec2InstanceID: \(Swift.String(describing: ec2InstanceID)), ec2InstanceState: \(Swift.String(describing: ec2InstanceState)), failback: \(Swift.String(describing: failback)), isDrill: \(Swift.String(describing: isDrill)), jobID: \(Swift.String(describing: jobID)), originAvailabilityZone: \(Swift.String(describing: originAvailabilityZone)), originEnvironment: \(Swift.String(describing: originEnvironment)), pointInTimeSnapshotDateTime: \(Swift.String(describing: pointInTimeSnapshotDateTime)), recoveryInstanceID: \(Swift.String(describing: recoveryInstanceID)), recoveryInstanceProperties: \(Swift.String(describing: recoveryInstanceProperties)), sourceServerID: \(Swift.String(describing: sourceServerID)), tags: \"CONTENT_REDACTED\")"} } extension DrsClientTypes { /// A Recovery Instance is a replica of a Source Server running on EC2. public struct RecoveryInstance: Swift.Equatable { + /// The version of the DRS agent installed on the recovery instance + public var agentVersion: Swift.String? /// The ARN of the Recovery Instance. public var arn: Swift.String? /// The Data Replication Info of the Recovery Instance. @@ -8689,6 +8707,7 @@ extension DrsClientTypes { public var tags: [Swift.String:Swift.String]? public init( + agentVersion: Swift.String? = nil, arn: Swift.String? = nil, dataReplicationInfo: DrsClientTypes.RecoveryInstanceDataReplicationInfo? = nil, ec2InstanceID: Swift.String? = nil, @@ -8705,6 +8724,7 @@ extension DrsClientTypes { tags: [Swift.String:Swift.String]? = nil ) { + self.agentVersion = agentVersion self.arn = arn self.dataReplicationInfo = dataReplicationInfo self.ec2InstanceID = ec2InstanceID @@ -10462,7 +10482,7 @@ extension RetryDataReplicationInputBody: Swift.Decodable { extension RetryDataReplicationOutput: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "RetryDataReplicationOutput(arn: \(Swift.String(describing: arn)), dataReplicationInfo: \(Swift.String(describing: dataReplicationInfo)), lastLaunchResult: \(Swift.String(describing: lastLaunchResult)), lifeCycle: \(Swift.String(describing: lifeCycle)), recoveryInstanceId: \(Swift.String(describing: recoveryInstanceId)), replicationDirection: \(Swift.String(describing: replicationDirection)), reversedDirectionSourceServerArn: \(Swift.String(describing: reversedDirectionSourceServerArn)), sourceCloudProperties: \(Swift.String(describing: sourceCloudProperties)), sourceNetworkID: \(Swift.String(describing: sourceNetworkID)), sourceProperties: \(Swift.String(describing: sourceProperties)), sourceServerID: \(Swift.String(describing: sourceServerID)), stagingArea: \(Swift.String(describing: stagingArea)), tags: \"CONTENT_REDACTED\")"} + "RetryDataReplicationOutput(agentVersion: \(Swift.String(describing: agentVersion)), arn: \(Swift.String(describing: arn)), dataReplicationInfo: \(Swift.String(describing: dataReplicationInfo)), lastLaunchResult: \(Swift.String(describing: lastLaunchResult)), lifeCycle: \(Swift.String(describing: lifeCycle)), recoveryInstanceId: \(Swift.String(describing: recoveryInstanceId)), replicationDirection: \(Swift.String(describing: replicationDirection)), reversedDirectionSourceServerArn: \(Swift.String(describing: reversedDirectionSourceServerArn)), sourceCloudProperties: \(Swift.String(describing: sourceCloudProperties)), sourceNetworkID: \(Swift.String(describing: sourceNetworkID)), sourceProperties: \(Swift.String(describing: sourceProperties)), sourceServerID: \(Swift.String(describing: sourceServerID)), stagingArea: \(Swift.String(describing: stagingArea)), tags: \"CONTENT_REDACTED\")"} } extension RetryDataReplicationOutput: ClientRuntime.HttpResponseBinding { @@ -10470,6 +10490,7 @@ extension RetryDataReplicationOutput: ClientRuntime.HttpResponseBinding { if let data = try await httpResponse.body.readData(), let responseDecoder = decoder { let output: RetryDataReplicationOutputBody = try responseDecoder.decode(responseBody: data) + self.agentVersion = output.agentVersion self.arn = output.arn self.dataReplicationInfo = output.dataReplicationInfo self.lastLaunchResult = output.lastLaunchResult @@ -10484,6 +10505,7 @@ extension RetryDataReplicationOutput: ClientRuntime.HttpResponseBinding { self.stagingArea = output.stagingArea self.tags = output.tags } else { + self.agentVersion = nil self.arn = nil self.dataReplicationInfo = nil self.lastLaunchResult = nil @@ -10502,6 +10524,8 @@ extension RetryDataReplicationOutput: ClientRuntime.HttpResponseBinding { } public struct RetryDataReplicationOutput: Swift.Equatable { + /// The version of the DRS agent installed on the source server + public var agentVersion: Swift.String? /// The ARN of the Source Server. public var arn: Swift.String? /// The Data Replication Info of the Source Server. @@ -10530,6 +10554,7 @@ public struct RetryDataReplicationOutput: Swift.Equatable { public var tags: [Swift.String:Swift.String]? public init( + agentVersion: Swift.String? = nil, arn: Swift.String? = nil, dataReplicationInfo: DrsClientTypes.DataReplicationInfo? = nil, lastLaunchResult: DrsClientTypes.LastLaunchResult? = nil, @@ -10545,6 +10570,7 @@ public struct RetryDataReplicationOutput: Swift.Equatable { tags: [Swift.String:Swift.String]? = nil ) { + self.agentVersion = agentVersion self.arn = arn self.dataReplicationInfo = dataReplicationInfo self.lastLaunchResult = lastLaunchResult @@ -10575,10 +10601,12 @@ struct RetryDataReplicationOutputBody: Swift.Equatable { let replicationDirection: DrsClientTypes.ReplicationDirection? let reversedDirectionSourceServerArn: Swift.String? let sourceNetworkID: Swift.String? + let agentVersion: Swift.String? } extension RetryDataReplicationOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case agentVersion case arn case dataReplicationInfo case lastLaunchResult @@ -10631,6 +10659,8 @@ extension RetryDataReplicationOutputBody: Swift.Decodable { reversedDirectionSourceServerArn = reversedDirectionSourceServerArnDecoded let sourceNetworkIDDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceNetworkID) sourceNetworkID = sourceNetworkIDDecoded + let agentVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .agentVersion) + agentVersion = agentVersionDecoded } } @@ -11283,6 +11313,7 @@ extension DrsClientTypes { extension DrsClientTypes.SourceServer: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case agentVersion case arn case dataReplicationInfo case lastLaunchResult @@ -11300,6 +11331,9 @@ extension DrsClientTypes.SourceServer: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let agentVersion = self.agentVersion { + try encodeContainer.encode(agentVersion, forKey: .agentVersion) + } if let arn = self.arn { try encodeContainer.encode(arn, forKey: .arn) } @@ -11381,16 +11415,20 @@ extension DrsClientTypes.SourceServer: Swift.Codable { reversedDirectionSourceServerArn = reversedDirectionSourceServerArnDecoded let sourceNetworkIDDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceNetworkID) sourceNetworkID = sourceNetworkIDDecoded + let agentVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .agentVersion) + agentVersion = agentVersionDecoded } } extension DrsClientTypes.SourceServer: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "SourceServer(arn: \(Swift.String(describing: arn)), dataReplicationInfo: \(Swift.String(describing: dataReplicationInfo)), lastLaunchResult: \(Swift.String(describing: lastLaunchResult)), lifeCycle: \(Swift.String(describing: lifeCycle)), recoveryInstanceId: \(Swift.String(describing: recoveryInstanceId)), replicationDirection: \(Swift.String(describing: replicationDirection)), reversedDirectionSourceServerArn: \(Swift.String(describing: reversedDirectionSourceServerArn)), sourceCloudProperties: \(Swift.String(describing: sourceCloudProperties)), sourceNetworkID: \(Swift.String(describing: sourceNetworkID)), sourceProperties: \(Swift.String(describing: sourceProperties)), sourceServerID: \(Swift.String(describing: sourceServerID)), stagingArea: \(Swift.String(describing: stagingArea)), tags: \"CONTENT_REDACTED\")"} + "SourceServer(agentVersion: \(Swift.String(describing: agentVersion)), arn: \(Swift.String(describing: arn)), dataReplicationInfo: \(Swift.String(describing: dataReplicationInfo)), lastLaunchResult: \(Swift.String(describing: lastLaunchResult)), lifeCycle: \(Swift.String(describing: lifeCycle)), recoveryInstanceId: \(Swift.String(describing: recoveryInstanceId)), replicationDirection: \(Swift.String(describing: replicationDirection)), reversedDirectionSourceServerArn: \(Swift.String(describing: reversedDirectionSourceServerArn)), sourceCloudProperties: \(Swift.String(describing: sourceCloudProperties)), sourceNetworkID: \(Swift.String(describing: sourceNetworkID)), sourceProperties: \(Swift.String(describing: sourceProperties)), sourceServerID: \(Swift.String(describing: sourceServerID)), stagingArea: \(Swift.String(describing: stagingArea)), tags: \"CONTENT_REDACTED\")"} } extension DrsClientTypes { public struct SourceServer: Swift.Equatable { + /// The version of the DRS agent installed on the source server + public var agentVersion: Swift.String? /// The ARN of the Source Server. public var arn: Swift.String? /// The Data Replication Info of the Source Server. @@ -11419,6 +11457,7 @@ extension DrsClientTypes { public var tags: [Swift.String:Swift.String]? public init( + agentVersion: Swift.String? = nil, arn: Swift.String? = nil, dataReplicationInfo: DrsClientTypes.DataReplicationInfo? = nil, lastLaunchResult: DrsClientTypes.LastLaunchResult? = nil, @@ -11434,6 +11473,7 @@ extension DrsClientTypes { tags: [Swift.String:Swift.String]? = nil ) { + self.agentVersion = agentVersion self.arn = arn self.dataReplicationInfo = dataReplicationInfo self.lastLaunchResult = lastLaunchResult diff --git a/Sources/Services/AWSEC2/models/Models.swift b/Sources/Services/AWSEC2/models/Models.swift index 04ff4664db7..56879e97717 100644 --- a/Sources/Services/AWSEC2/models/Models.swift +++ b/Sources/Services/AWSEC2/models/Models.swift @@ -96,6 +96,7 @@ extension EC2ClientTypes { public enum AcceleratorManufacturer: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case amazonWebServices case amd + case habana case nvidia case xilinx case sdkUnknown(Swift.String) @@ -104,6 +105,7 @@ extension EC2ClientTypes { return [ .amazonWebServices, .amd, + .habana, .nvidia, .xilinx, .sdkUnknown("") @@ -117,6 +119,7 @@ extension EC2ClientTypes { switch self { case .amazonWebServices: return "amazon-web-services" case .amd: return "amd" + case .habana: return "habana" case .nvidia: return "nvidia" case .xilinx: return "xilinx" case let .sdkUnknown(s): return s @@ -133,12 +136,15 @@ extension EC2ClientTypes { extension EC2ClientTypes { public enum AcceleratorName: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case a100 + case a10g + case h100 case inferentia case k520 case k80 case m60 case radeonProV520 case t4 + case t4g case v100 case vu9p case sdkUnknown(Swift.String) @@ -146,12 +152,15 @@ extension EC2ClientTypes { public static var allCases: [AcceleratorName] { return [ .a100, + .a10g, + .h100, .inferentia, .k520, .k80, .m60, .radeonProV520, .t4, + .t4g, .v100, .vu9p, .sdkUnknown("") @@ -164,12 +173,15 @@ extension EC2ClientTypes { public var rawValue: Swift.String { switch self { case .a100: return "a100" + case .a10g: return "a10g" + case .h100: return "h100" case .inferentia: return "inferentia" case .k520: return "k520" case .k80: return "k80" case .m60: return "m60" case .radeonProV520: return "radeon-pro-v520" case .t4: return "t4" + case .t4g: return "t4g" case .v100: return "v100" case .vu9p: return "vu9p" case let .sdkUnknown(s): return s @@ -2552,6 +2564,9 @@ extension AdvertiseByoipCidrInput: Swift.Encodable { if let dryRun = dryRun { try container.encode(dryRun, forKey: ClientRuntime.Key("DryRun")) } + if let networkBorderGroup = networkBorderGroup { + try container.encode(networkBorderGroup, forKey: ClientRuntime.Key("NetworkBorderGroup")) + } try container.encode("AdvertiseByoipCidr", forKey:ClientRuntime.Key("Action")) try container.encode("2016-11-15", forKey:ClientRuntime.Key("Version")) } @@ -2571,16 +2586,29 @@ public struct AdvertiseByoipCidrInput: Swift.Equatable { public var cidr: 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? + /// If you have [Local Zones](https://docs.aws.amazon.com/local-zones/latest/ug/how-local-zones-work.html) enabled, you can choose a network border group for Local Zones when you provision and advertise a BYOIPv4 CIDR. Choose the network border group carefully as the EIP and the Amazon Web Services resource it is associated with must reside in the same network border group. You can provision BYOIP address ranges to and advertise them in the following Local Zone network border groups: + /// + /// * us-east-1-dfw-2 + /// + /// * us-west-2-lax-1 + /// + /// * us-west-2-phx-2 + /// + /// + /// You cannot provision or advertise BYOIPv6 address ranges in Local Zones at this time. + public var networkBorderGroup: Swift.String? public init( asn: Swift.String? = nil, cidr: Swift.String? = nil, - dryRun: Swift.Bool? = nil + dryRun: Swift.Bool? = nil, + networkBorderGroup: Swift.String? = nil ) { self.asn = asn self.cidr = cidr self.dryRun = dryRun + self.networkBorderGroup = networkBorderGroup } } @@ -2588,6 +2616,7 @@ struct AdvertiseByoipCidrInputBody: Swift.Equatable { let cidr: Swift.String? let asn: Swift.String? let dryRun: Swift.Bool? + let networkBorderGroup: Swift.String? } extension AdvertiseByoipCidrInputBody: Swift.Decodable { @@ -2595,6 +2624,7 @@ extension AdvertiseByoipCidrInputBody: Swift.Decodable { case asn = "Asn" case cidr = "Cidr" case dryRun = "DryRun" + case networkBorderGroup = "NetworkBorderGroup" } public init(from decoder: Swift.Decoder) throws { @@ -2605,6 +2635,8 @@ extension AdvertiseByoipCidrInputBody: Swift.Decodable { asn = asnDecoded let dryRunDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .dryRun) dryRun = dryRunDecoded + let networkBorderGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .networkBorderGroup) + networkBorderGroup = networkBorderGroupDecoded } } @@ -11381,6 +11413,7 @@ extension EC2ClientTypes.ByoipCidr: Swift.Codable { case asnAssociations = "asnAssociationSet" case cidr = "cidr" case description = "description" + case networkBorderGroup = "networkBorderGroup" case state = "state" case statusMessage = "statusMessage" } @@ -11405,6 +11438,9 @@ extension EC2ClientTypes.ByoipCidr: Swift.Codable { if let description = description { try container.encode(description, forKey: ClientRuntime.Key("Description")) } + if let networkBorderGroup = networkBorderGroup { + try container.encode(networkBorderGroup, forKey: ClientRuntime.Key("NetworkBorderGroup")) + } if let state = state { try container.encode(state, forKey: ClientRuntime.Key("State")) } @@ -11442,6 +11478,8 @@ extension EC2ClientTypes.ByoipCidr: Swift.Codable { statusMessage = statusMessageDecoded let stateDecoded = try containerValues.decodeIfPresent(EC2ClientTypes.ByoipCidrState.self, forKey: .state) state = stateDecoded + let networkBorderGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .networkBorderGroup) + networkBorderGroup = networkBorderGroupDecoded } } @@ -11454,6 +11492,17 @@ extension EC2ClientTypes { public var cidr: Swift.String? /// The description of the address range. public var description: Swift.String? + /// If you have [Local Zones](https://docs.aws.amazon.com/local-zones/latest/ug/how-local-zones-work.html) enabled, you can choose a network border group for Local Zones when you provision and advertise a BYOIPv4 CIDR. Choose the network border group carefully as the EIP and the Amazon Web Services resource it is associated with must reside in the same network border group. You can provision BYOIP address ranges to and advertise them in the following Local Zone network border groups: + /// + /// * us-east-1-dfw-2 + /// + /// * us-west-2-lax-1 + /// + /// * us-west-2-phx-2 + /// + /// + /// You cannot provision or advertise BYOIPv6 address ranges in Local Zones at this time. + public var networkBorderGroup: Swift.String? /// The state of the address pool. public var state: EC2ClientTypes.ByoipCidrState? /// Upon success, contains the ID of the address pool. Otherwise, contains an error message. @@ -11463,6 +11512,7 @@ extension EC2ClientTypes { asnAssociations: [EC2ClientTypes.AsnAssociation]? = nil, cidr: Swift.String? = nil, description: Swift.String? = nil, + networkBorderGroup: Swift.String? = nil, state: EC2ClientTypes.ByoipCidrState? = nil, statusMessage: Swift.String? = nil ) @@ -11470,6 +11520,7 @@ extension EC2ClientTypes { self.asnAssociations = asnAssociations self.cidr = cidr self.description = description + self.networkBorderGroup = networkBorderGroup self.state = state self.statusMessage = statusMessage } @@ -111886,7 +111937,7 @@ extension EC2ClientTypes { public struct InstanceNetworkInterfaceSpecification: Swift.Equatable { /// Indicates whether to assign a carrier IP address to the network interface. You can only assign a carrier IP address to a network interface that is in a subnet in a Wavelength Zone. For more information about carrier IP addresses, see [Carrier IP address](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip) in the Amazon Web Services Wavelength Developer Guide. public var associateCarrierIpAddress: Swift.Bool? - /// Indicates whether to assign a public IPv4 address to an instance you launch in a VPC. The public IP address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one. You cannot specify more than one network interface in the request. If launching into a default subnet, the default value is true. + /// Indicates whether to assign a public IPv4 address to an instance you launch in a VPC. The public IP address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one. You cannot specify more than one network interface in the request. If launching into a default subnet, the default value is true. Starting on February 1, 2024, Amazon Web Services will charge for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the Public IPv4 Address tab on the [Amazon VPC pricing page](http://aws.amazon.com/vpc/pricing/). public var associatePublicIpAddress: Swift.Bool? /// A security group connection tracking specification that enables you to set the timeout for connection tracking on an Elastic network interface. For more information, see [Connection tracking timeouts](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html#connection-tracking-timeouts) in the Amazon Elastic Compute Cloud User Guide. public var connectionTrackingSpecification: EC2ClientTypes.ConnectionTrackingSpecificationRequest? @@ -112419,11 +112470,13 @@ extension EC2ClientTypes { public var acceleratorCount: EC2ClientTypes.AcceleratorCount? /// Indicates whether instance types must have accelerators by specific manufacturers. /// - /// * For instance types with NVIDIA devices, specify nvidia. + /// * For instance types with Amazon Web Services devices, specify amazon-web-services. /// /// * For instance types with AMD devices, specify amd. /// - /// * For instance types with Amazon Web Services devices, specify amazon-web-services. + /// * For instance types with Habana devices, specify habana. + /// + /// * For instance types with NVIDIA devices, specify nvidia. /// /// * For instance types with Xilinx devices, specify xilinx. /// @@ -112432,23 +112485,29 @@ extension EC2ClientTypes { public var acceleratorManufacturers: [EC2ClientTypes.AcceleratorManufacturer]? /// The accelerators that must be on the instance type. /// + /// * For instance types with NVIDIA A10G GPUs, specify a10g. + /// /// * For instance types with NVIDIA A100 GPUs, specify a100. /// - /// * For instance types with NVIDIA V100 GPUs, specify v100. + /// * For instance types with NVIDIA H100 GPUs, specify h100. /// - /// * For instance types with NVIDIA K80 GPUs, specify k80. + /// * For instance types with Amazon Web Services Inferentia chips, specify inferentia. /// - /// * For instance types with NVIDIA T4 GPUs, specify t4. + /// * For instance types with NVIDIA GRID K520 GPUs, specify k520. + /// + /// * For instance types with NVIDIA K80 GPUs, specify k80. /// /// * For instance types with NVIDIA M60 GPUs, specify m60. /// /// * For instance types with AMD Radeon Pro V520 GPUs, specify radeon-pro-v520. /// - /// * For instance types with Xilinx VU9P FPGAs, specify vu9p. + /// * For instance types with NVIDIA T4 GPUs, specify t4. /// - /// * For instance types with Amazon Web Services Inferentia chips, specify inferentia. + /// * For instance types with NVIDIA T4G GPUs, specify t4g. /// - /// * For instance types with NVIDIA GRID K520 GPUs, specify k520. + /// * For instance types with Xilinx VU9P FPGAs, specify vu9p. + /// + /// * For instance types with NVIDIA V100 GPUs, specify v100. /// /// /// Default: Any accelerator @@ -112973,11 +113032,13 @@ extension EC2ClientTypes { public var acceleratorCount: EC2ClientTypes.AcceleratorCountRequest? /// Indicates whether instance types must have accelerators by specific manufacturers. /// - /// * For instance types with NVIDIA devices, specify nvidia. + /// * For instance types with Amazon Web Services devices, specify amazon-web-services. /// /// * For instance types with AMD devices, specify amd. /// - /// * For instance types with Amazon Web Services devices, specify amazon-web-services. + /// * For instance types with Habana devices, specify habana. + /// + /// * For instance types with NVIDIA devices, specify nvidia. /// /// * For instance types with Xilinx devices, specify xilinx. /// @@ -112986,23 +113047,29 @@ extension EC2ClientTypes { public var acceleratorManufacturers: [EC2ClientTypes.AcceleratorManufacturer]? /// The accelerators that must be on the instance type. /// + /// * For instance types with NVIDIA A10G GPUs, specify a10g. + /// /// * For instance types with NVIDIA A100 GPUs, specify a100. /// - /// * For instance types with NVIDIA V100 GPUs, specify v100. + /// * For instance types with NVIDIA H100 GPUs, specify h100. /// - /// * For instance types with NVIDIA K80 GPUs, specify k80. + /// * For instance types with Amazon Web Services Inferentia chips, specify inferentia. /// - /// * For instance types with NVIDIA T4 GPUs, specify t4. + /// * For instance types with NVIDIA GRID K520 GPUs, specify k520. + /// + /// * For instance types with NVIDIA K80 GPUs, specify k80. /// /// * For instance types with NVIDIA M60 GPUs, specify m60. /// /// * For instance types with AMD Radeon Pro V520 GPUs, specify radeon-pro-v520. /// - /// * For instance types with Xilinx VU9P FPGAs, specify vu9p. + /// * For instance types with NVIDIA T4 GPUs, specify t4. /// - /// * For instance types with Amazon Web Services Inferentia chips, specify inferentia. + /// * For instance types with NVIDIA T4G GPUs, specify t4g. /// - /// * For instance types with NVIDIA GRID K520 GPUs, specify k520. + /// * For instance types with Xilinx VU9P FPGAs, specify vu9p. + /// + /// * For instance types with NVIDIA V100 GPUs, specify v100. /// /// /// Default: Any accelerator @@ -114314,6 +114381,8 @@ extension EC2ClientTypes { case c7i4xlarge case c7i8xlarge case c7iLarge + case c7iMetal24xl + case c7iMetal48xl case c7iXlarge case cc14xlarge case cc28xlarge @@ -114410,7 +114479,9 @@ extension EC2ClientTypes { case i4g8xlarge case i4gLarge case i4gXlarge + case i4i12xlarge case i4i16xlarge + case i4i24xlarge case i4i2xlarge case i4i32xlarge case i4i4xlarge @@ -114625,8 +114696,11 @@ extension EC2ClientTypes { case m7iFlexLarge case m7iFlexXlarge case m7iLarge + case m7iMetal24xl + case m7iMetal48xl case m7iXlarge case mac1Metal + case mac2M2Metal case mac2M2proMetal case mac2Metal case p216xlarge @@ -114817,6 +114891,8 @@ extension EC2ClientTypes { case r7i4xlarge case r7i8xlarge case r7iLarge + case r7iMetal24xl + case r7iMetal48xl case r7iXlarge case r7iz12xlarge case r7iz16xlarge @@ -115090,6 +115166,8 @@ extension EC2ClientTypes { .c7i4xlarge, .c7i8xlarge, .c7iLarge, + .c7iMetal24xl, + .c7iMetal48xl, .c7iXlarge, .cc14xlarge, .cc28xlarge, @@ -115186,7 +115264,9 @@ extension EC2ClientTypes { .i4g8xlarge, .i4gLarge, .i4gXlarge, + .i4i12xlarge, .i4i16xlarge, + .i4i24xlarge, .i4i2xlarge, .i4i32xlarge, .i4i4xlarge, @@ -115401,8 +115481,11 @@ extension EC2ClientTypes { .m7iFlexLarge, .m7iFlexXlarge, .m7iLarge, + .m7iMetal24xl, + .m7iMetal48xl, .m7iXlarge, .mac1Metal, + .mac2M2Metal, .mac2M2proMetal, .mac2Metal, .p216xlarge, @@ -115593,6 +115676,8 @@ extension EC2ClientTypes { .r7i4xlarge, .r7i8xlarge, .r7iLarge, + .r7iMetal24xl, + .r7iMetal48xl, .r7iXlarge, .r7iz12xlarge, .r7iz16xlarge, @@ -115871,6 +115956,8 @@ extension EC2ClientTypes { case .c7i4xlarge: return "c7i.4xlarge" case .c7i8xlarge: return "c7i.8xlarge" case .c7iLarge: return "c7i.large" + case .c7iMetal24xl: return "c7i.metal-24xl" + case .c7iMetal48xl: return "c7i.metal-48xl" case .c7iXlarge: return "c7i.xlarge" case .cc14xlarge: return "cc1.4xlarge" case .cc28xlarge: return "cc2.8xlarge" @@ -115967,7 +116054,9 @@ extension EC2ClientTypes { case .i4g8xlarge: return "i4g.8xlarge" case .i4gLarge: return "i4g.large" case .i4gXlarge: return "i4g.xlarge" + case .i4i12xlarge: return "i4i.12xlarge" case .i4i16xlarge: return "i4i.16xlarge" + case .i4i24xlarge: return "i4i.24xlarge" case .i4i2xlarge: return "i4i.2xlarge" case .i4i32xlarge: return "i4i.32xlarge" case .i4i4xlarge: return "i4i.4xlarge" @@ -116182,8 +116271,11 @@ extension EC2ClientTypes { case .m7iFlexLarge: return "m7i-flex.large" case .m7iFlexXlarge: return "m7i-flex.xlarge" case .m7iLarge: return "m7i.large" + case .m7iMetal24xl: return "m7i.metal-24xl" + case .m7iMetal48xl: return "m7i.metal-48xl" case .m7iXlarge: return "m7i.xlarge" case .mac1Metal: return "mac1.metal" + case .mac2M2Metal: return "mac2-m2.metal" case .mac2M2proMetal: return "mac2-m2pro.metal" case .mac2Metal: return "mac2.metal" case .p216xlarge: return "p2.16xlarge" @@ -116374,6 +116466,8 @@ extension EC2ClientTypes { case .r7i4xlarge: return "r7i.4xlarge" case .r7i8xlarge: return "r7i.8xlarge" case .r7iLarge: return "r7i.large" + case .r7iMetal24xl: return "r7i.metal-24xl" + case .r7iMetal48xl: return "r7i.metal-48xl" case .r7iXlarge: return "r7i.xlarge" case .r7iz12xlarge: return "r7iz.12xlarge" case .r7iz16xlarge: return "r7iz.16xlarge" @@ -123872,7 +123966,11 @@ extension EC2ClientTypes { public var httpProtocolIpv6: EC2ClientTypes.LaunchTemplateInstanceMetadataProtocolIpv6? /// The desired HTTP PUT response hop limit for instance metadata requests. The larger the number, the further instance metadata requests can travel. Default: 1 Possible values: Integers from 1 to 64 public var httpPutResponseHopLimit: Swift.Int? - /// Indicates whether IMDSv2 is optional or required. optional - When IMDSv2 is optional, you can choose to retrieve instance metadata with or without a session token in your request. If you retrieve the IAM role credentials without a token, the IMDSv1 role credentials are returned. If you retrieve the IAM role credentials using a valid session token, the IMDSv2 role credentials are returned. required - When IMDSv2 is required, you must send a session token with any instance metadata retrieval requests. In this state, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available. Default: optional + /// Indicates whether IMDSv2 is required. + /// + /// * optional - IMDSv2 is optional. You can choose whether to send a session token in your instance metadata retrieval requests. If you retrieve IAM role credentials without a session token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials using a valid session token, you receive the IMDSv2 role credentials. + /// + /// * required - IMDSv2 is required. You must send a session token in your instance metadata retrieval requests. With this option, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available. public var httpTokens: EC2ClientTypes.LaunchTemplateHttpTokensState? /// Set to enabled to allow access to instance tags from the instance metadata. Set to disabled to turn off access to instance tags from the instance metadata. For more information, see [Work with instance tags using the instance metadata](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#work-with-tags-in-IMDS). Default: disabled public var instanceMetadataTags: EC2ClientTypes.LaunchTemplateInstanceMetadataTagsState? @@ -123951,14 +124049,14 @@ extension EC2ClientTypes { public var httpProtocolIpv6: EC2ClientTypes.LaunchTemplateInstanceMetadataProtocolIpv6? /// The desired HTTP PUT response hop limit for instance metadata requests. The larger the number, the further instance metadata requests can travel. Default: 1 Possible values: Integers from 1 to 64 public var httpPutResponseHopLimit: Swift.Int? - /// IMDSv2 uses token-backed sessions. Set the use of HTTP tokens to optional (in other words, set the use of IMDSv2 to optional) or required (in other words, set the use of IMDSv2 to required). + /// Indicates whether IMDSv2 is required. /// - /// * optional - When IMDSv2 is optional, you can choose to retrieve instance metadata with or without a session token in your request. If you retrieve the IAM role credentials without a token, the IMDSv1 role credentials are returned. If you retrieve the IAM role credentials using a valid session token, the IMDSv2 role credentials are returned. + /// * optional - IMDSv2 is optional. You can choose whether to send a session token in your instance metadata retrieval requests. If you retrieve IAM role credentials without a session token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials using a valid session token, you receive the IMDSv2 role credentials. /// - /// * required - When IMDSv2 is required, you must send a session token with any instance metadata retrieval requests. In this state, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available. + /// * required - IMDSv2 is required. You must send a session token in your instance metadata retrieval requests. With this option, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available. /// /// - /// Default: optional + /// Default: If the value of ImdsSupport for the Amazon Machine Image (AMI) for your instance is v2.0, the default is required. public var httpTokens: EC2ClientTypes.LaunchTemplateHttpTokensState? /// Set to enabled to allow access to instance tags from the instance metadata. Set to disabled to turn off access to instance tags from the instance metadata. For more information, see [Work with instance tags using the instance metadata](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#work-with-tags-in-IMDS). Default: disabled public var instanceMetadataTags: EC2ClientTypes.LaunchTemplateInstanceMetadataTagsState? @@ -124357,7 +124455,7 @@ extension EC2ClientTypes { public struct LaunchTemplateInstanceNetworkInterfaceSpecification: Swift.Equatable { /// Indicates whether to associate a Carrier IP address with eth0 for a new network interface. Use this option when you launch an instance in a Wavelength Zone and want to associate a Carrier IP address with the network interface. For more information about Carrier IP addresses, see [Carrier IP addresses](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip) in the Wavelength Developer Guide. public var associateCarrierIpAddress: Swift.Bool? - /// Indicates whether to associate a public IPv4 address with eth0 for a new network interface. + /// Indicates whether to associate a public IPv4 address with eth0 for a new network interface. Starting on February 1, 2024, Amazon Web Services will charge for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the Public IPv4 Address tab on the [Amazon VPC pricing page](http://aws.amazon.com/vpc/pricing/). public var associatePublicIpAddress: Swift.Bool? /// A security group connection tracking specification that enables you to set the timeout for connection tracking on an Elastic network interface. For more information, see [Connection tracking timeouts](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html#connection-tracking-timeouts) in the Amazon Elastic Compute Cloud User Guide. public var connectionTrackingSpecification: EC2ClientTypes.ConnectionTrackingSpecification? @@ -124732,7 +124830,7 @@ extension EC2ClientTypes { public struct LaunchTemplateInstanceNetworkInterfaceSpecificationRequest: Swift.Equatable { /// Associates a Carrier IP address with eth0 for a new network interface. Use this option when you launch an instance in a Wavelength Zone and want to associate a Carrier IP address with the network interface. For more information about Carrier IP addresses, see [Carrier IP addresses](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip) in the Wavelength Developer Guide. public var associateCarrierIpAddress: Swift.Bool? - /// Associates a public IPv4 address with eth0 for a new network interface. + /// Associates a public IPv4 address with eth0 for a new network interface. Starting on February 1, 2024, Amazon Web Services will charge for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the Public IPv4 Address tab on the [Amazon VPC pricing page](http://aws.amazon.com/vpc/pricing/). public var associatePublicIpAddress: Swift.Bool? /// A security group connection tracking specification that enables you to set the timeout for connection tracking on an Elastic network interface. For more information, see [Connection tracking timeouts](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html#connection-tracking-timeouts) in the Amazon Elastic Compute Cloud User Guide. public var connectionTrackingSpecification: EC2ClientTypes.ConnectionTrackingSpecificationRequest? @@ -148482,6 +148580,7 @@ extension EC2ClientTypes { extension EC2ClientTypes.ProcessorInfo: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case manufacturer = "manufacturer" case supportedArchitectures = "supportedArchitectures" case supportedFeatures = "supportedFeatures" case sustainedClockSpeedInGhz = "sustainedClockSpeedInGhz" @@ -148489,6 +148588,9 @@ extension EC2ClientTypes.ProcessorInfo: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let manufacturer = manufacturer { + try container.encode(manufacturer, forKey: ClientRuntime.Key("Manufacturer")) + } if let supportedArchitectures = supportedArchitectures { if !supportedArchitectures.isEmpty { for (index0, architecturetype0) in supportedArchitectures.enumerated() { @@ -148560,12 +148662,16 @@ extension EC2ClientTypes.ProcessorInfo: Swift.Codable { } else { supportedFeatures = nil } + let manufacturerDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .manufacturer) + manufacturer = manufacturerDecoded } } extension EC2ClientTypes { /// Describes the processor used by the instance type. public struct ProcessorInfo: Swift.Equatable { + /// The manufacturer of the processor. + public var manufacturer: Swift.String? /// The architectures supported by the instance type. public var supportedArchitectures: [EC2ClientTypes.ArchitectureType]? /// Indicates whether the instance type supports AMD SEV-SNP. If the request returns amd-sev-snp, AMD SEV-SNP is supported. Otherwise, it is not supported. For more information, see [ AMD SEV-SNP](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sev-snp.html). @@ -148574,11 +148680,13 @@ extension EC2ClientTypes { public var sustainedClockSpeedInGhz: Swift.Double? public init( + manufacturer: Swift.String? = nil, supportedArchitectures: [EC2ClientTypes.ArchitectureType]? = nil, supportedFeatures: [EC2ClientTypes.SupportedAdditionalProcessorFeature]? = nil, sustainedClockSpeedInGhz: Swift.Double? = nil ) { + self.manufacturer = manufacturer self.supportedArchitectures = supportedArchitectures self.supportedFeatures = supportedFeatures self.sustainedClockSpeedInGhz = sustainedClockSpeedInGhz @@ -148778,6 +148886,9 @@ extension ProvisionByoipCidrInput: Swift.Encodable { if let multiRegion = multiRegion { try container.encode(multiRegion, forKey: ClientRuntime.Key("MultiRegion")) } + if let networkBorderGroup = networkBorderGroup { + try container.encode(networkBorderGroup, forKey: ClientRuntime.Key("NetworkBorderGroup")) + } if let poolTagSpecifications = poolTagSpecifications { if !poolTagSpecifications.isEmpty { for (index0, tagspecification0) in poolTagSpecifications.enumerated() { @@ -148816,6 +148927,17 @@ public struct ProvisionByoipCidrInput: Swift.Equatable { public var dryRun: Swift.Bool? /// Reserved. public var multiRegion: Swift.Bool? + /// If you have [Local Zones](https://docs.aws.amazon.com/local-zones/latest/ug/how-local-zones-work.html) enabled, you can choose a network border group for Local Zones when you provision and advertise a BYOIPv4 CIDR. Choose the network border group carefully as the EIP and the Amazon Web Services resource it is associated with must reside in the same network border group. You can provision BYOIP address ranges to and advertise them in the following Local Zone network border groups: + /// + /// * us-east-1-dfw-2 + /// + /// * us-west-2-lax-1 + /// + /// * us-west-2-phx-2 + /// + /// + /// You cannot provision or advertise BYOIPv6 address ranges in Local Zones at this time. + public var networkBorderGroup: Swift.String? /// The tags to apply to the address pool. public var poolTagSpecifications: [EC2ClientTypes.TagSpecification]? /// (IPv6 only) Indicate whether the address range will be publicly advertised to the internet. Default: true @@ -148827,6 +148949,7 @@ public struct ProvisionByoipCidrInput: Swift.Equatable { description: Swift.String? = nil, dryRun: Swift.Bool? = nil, multiRegion: Swift.Bool? = nil, + networkBorderGroup: Swift.String? = nil, poolTagSpecifications: [EC2ClientTypes.TagSpecification]? = nil, publiclyAdvertisable: Swift.Bool? = nil ) @@ -148836,6 +148959,7 @@ public struct ProvisionByoipCidrInput: Swift.Equatable { self.description = description self.dryRun = dryRun self.multiRegion = multiRegion + self.networkBorderGroup = networkBorderGroup self.poolTagSpecifications = poolTagSpecifications self.publiclyAdvertisable = publiclyAdvertisable } @@ -148849,6 +148973,7 @@ struct ProvisionByoipCidrInputBody: Swift.Equatable { let dryRun: Swift.Bool? let poolTagSpecifications: [EC2ClientTypes.TagSpecification]? let multiRegion: Swift.Bool? + let networkBorderGroup: Swift.String? } extension ProvisionByoipCidrInputBody: Swift.Decodable { @@ -148858,6 +148983,7 @@ extension ProvisionByoipCidrInputBody: Swift.Decodable { case description = "Description" case dryRun = "DryRun" case multiRegion = "MultiRegion" + case networkBorderGroup = "NetworkBorderGroup" case poolTagSpecifications = "PoolTagSpecification" case publiclyAdvertisable = "PubliclyAdvertisable" } @@ -148895,6 +149021,8 @@ extension ProvisionByoipCidrInputBody: Swift.Decodable { } let multiRegionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .multiRegion) multiRegion = multiRegionDecoded + let networkBorderGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .networkBorderGroup) + networkBorderGroup = networkBorderGroupDecoded } } @@ -154990,20 +155118,7 @@ extension EC2ClientTypes { public var securityGroupIds: [Swift.String]? /// One or more security group names. For a nondefault VPC, you must use security group IDs instead. public var securityGroups: [Swift.String]? - /// The tags to apply to the resources that are created during instance launch. You can specify tags for the following resources only: - /// - /// * Instances - /// - /// * Volumes - /// - /// * Elastic graphics - /// - /// * Spot Instance requests - /// - /// * Network interfaces - /// - /// - /// To tag a resource after it has been created, see [CreateTags](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html). To tag the launch template itself, you must use the [TagSpecification](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateLaunchTemplate.html) parameter. + /// The tags to apply to the resources that are created during instance launch. These tags are not applied to the launch template. public var tagSpecifications: [EC2ClientTypes.LaunchTemplateTagSpecificationRequest]? /// The user data to make available to the instance. You must provide base64-encoded text. User data is limited to 16 KB. For more information, see [Run commands on your Linux instance at launch](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) (Linux) or [Work with instance user data](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instancedata-add-user-data.html) (Windows) in the Amazon Elastic Compute Cloud User Guide. If you are creating the launch template for use with Batch, the user data must be provided in the [ MIME multi-part archive format](https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive). For more information, see [Amazon EC2 user data in launch templates](https://docs.aws.amazon.com/batch/latest/userguide/launch-templates.html) in the Batch User Guide. public var userData: Swift.String? diff --git a/Sources/Services/AWSEKS/EKSClient.swift b/Sources/Services/AWSEKS/EKSClient.swift index f3e866c3243..1d689a7af48 100644 --- a/Sources/Services/AWSEKS/EKSClient.swift +++ b/Sources/Services/AWSEKS/EKSClient.swift @@ -67,9 +67,58 @@ public struct EKSClientLogHandlerFactory: ClientRuntime.SDKLogHandlerFactory { } extension EKSClient: EKSClientProtocol { + /// Performs the `AssociateAccessPolicy` operation on the `AWSWesleyFrontend` service. + /// + /// Associates an access policy and its scope to an access entry. For more information about associating access policies, see [Associating and disassociating access policies to and from access entries](https://docs.aws.amazon.com/eks/latest/userguide/access-policies.html) in the Amazon EKS User Guide. + /// + /// - Parameter AssociateAccessPolicyInput : [no documentation found] + /// + /// - Returns: `AssociateAccessPolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + public func associateAccessPolicy(input: AssociateAccessPolicyInput) async throws -> AssociateAccessPolicyOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "associateAccessPolicy") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "eks") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "associateAccessPolicy") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(AssociateAccessPolicyOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `AssociateEncryptionConfig` operation on the `AWSWesleyFrontend` service. /// - /// Associate encryption configuration to an existing cluster. You can use this API to enable encryption on existing clusters which do not have encryption already enabled. This allows you to implement a defense-in-depth security strategy without migrating applications to new Amazon EKS clusters. + /// Associates an encryption configuration to an existing cluster. Use this API to enable encryption on existing clusters that don't already have encryption enabled. This allows you to implement a defense-in-depth security strategy without migrating applications to new Amazon EKS clusters. /// /// - Parameter AssociateEncryptionConfigInput : [no documentation found] /// @@ -82,7 +131,7 @@ extension EKSClient: EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func associateEncryptionConfig(input: AssociateEncryptionConfigInput) async throws -> AssociateEncryptionConfigOutput { @@ -121,7 +170,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `AssociateIdentityProviderConfig` operation on the `AWSWesleyFrontend` service. /// - /// Associate an identity provider configuration to a cluster. If you want to authenticate identities using an identity provider, you can create an identity provider configuration and associate it to your cluster. After configuring authentication to your cluster you can create Kubernetes roles and clusterroles to assign permissions to the roles, and then bind the roles to the identities using Kubernetes rolebindings and clusterrolebindings. For more information see [Using RBAC Authorization](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) in the Kubernetes documentation. + /// Associates an identity provider configuration to a cluster. If you want to authenticate identities using an identity provider, you can create an identity provider configuration and associate it to your cluster. After configuring authentication to your cluster you can create Kubernetes Role and ClusterRole objects, assign permissions to them, and then bind them to the identities using Kubernetes RoleBinding and ClusterRoleBinding objects. For more information see [Using RBAC Authorization](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) in the Kubernetes documentation. /// /// - Parameter AssociateIdentityProviderConfigInput : [no documentation found] /// @@ -134,7 +183,7 @@ extension EKSClient: EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func associateIdentityProviderConfig(input: AssociateIdentityProviderConfigInput) async throws -> AssociateIdentityProviderConfigOutput { @@ -171,6 +220,58 @@ extension EKSClient: EKSClientProtocol { return result } + /// Performs the `CreateAccessEntry` operation on the `AWSWesleyFrontend` service. + /// + /// Creates an access entry. An access entry allows an IAM principal to access your cluster. Access entries can replace the need to maintain entries in the aws-authConfigMap for authentication. You have the following options for authorizing an IAM principal to access Kubernetes objects on your cluster: Kubernetes role-based access control (RBAC), Amazon EKS, or both. Kubernetes RBAC authorization requires you to create and manage Kubernetes Role, ClusterRole, RoleBinding, and ClusterRoleBinding objects, in addition to managing access entries. If you use Amazon EKS authorization exclusively, you don't need to create and manage Kubernetes Role, ClusterRole, RoleBinding, and ClusterRoleBinding objects. For more information about access entries, see [Access entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html) in the Amazon EKS User Guide. + /// + /// - Parameter CreateAccessEntryInput : [no documentation found] + /// + /// - Returns: `CreateAccessEntryOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceInUseException` : The specified resource is in use. + /// - `ResourceLimitExceededException` : You have encountered a service limit on the specified resource. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + public func createAccessEntry(input: CreateAccessEntryInput) async throws -> CreateAccessEntryOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createAccessEntry") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "eks") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "createAccessEntry") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.IdempotencyTokenMiddleware(keyPath: \.clientRequestToken)) + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(CreateAccessEntryOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `CreateAddon` operation on the `AWSWesleyFrontend` service. /// /// Creates an Amazon EKS add-on. Amazon EKS add-ons help to automate the provisioning and lifecycle management of common operational software for Amazon EKS clusters. For more information, see [Amazon EKS add-ons](https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html) in the Amazon EKS User Guide. @@ -186,7 +287,7 @@ extension EKSClient: EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func createAddon(input: CreateAddonInput) async throws -> CreateAddonOutput { @@ -329,7 +430,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `CreateFargateProfile` operation on the `AWSWesleyFrontend` service. /// - /// Creates an Fargate profile for your Amazon EKS cluster. You must have at least one Fargate profile in a cluster to be able to run pods on Fargate. The Fargate profile allows an administrator to declare which pods run on Fargate and specify which pods run on which Fargate profile. This declaration is done through the profile’s selectors. Each profile can have up to five selectors that contain a namespace and labels. A namespace is required for every selector. The label field consists of multiple optional key-value pairs. Pods that match the selectors are scheduled on Fargate. If a to-be-scheduled pod matches any of the selectors in the Fargate profile, then that pod is run on Fargate. When you create a Fargate profile, you must specify a pod execution role to use with the pods that are scheduled with the profile. This role is added to the cluster's Kubernetes [Role Based Access Control](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) for authorization so that the kubelet that is running on the Fargate infrastructure can register with your Amazon EKS cluster so that it can appear in your cluster as a node. The pod execution role also provides IAM permissions to the Fargate infrastructure to allow read access to Amazon ECR image repositories. For more information, see [Pod Execution Role](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) in the Amazon EKS User Guide. Fargate profiles are immutable. However, you can create a new updated profile to replace an existing profile and then delete the original after the updated profile has finished creating. If any Fargate profiles in a cluster are in the DELETING status, you must wait for that Fargate profile to finish deleting before you can create any other profiles in that cluster. For more information, see [Fargate Profile](https://docs.aws.amazon.com/eks/latest/userguide/fargate-profile.html) in the Amazon EKS User Guide. + /// Creates an Fargate profile for your Amazon EKS cluster. You must have at least one Fargate profile in a cluster to be able to run pods on Fargate. The Fargate profile allows an administrator to declare which pods run on Fargate and specify which pods run on which Fargate profile. This declaration is done through the profile’s selectors. Each profile can have up to five selectors that contain a namespace and labels. A namespace is required for every selector. The label field consists of multiple optional key-value pairs. Pods that match the selectors are scheduled on Fargate. If a to-be-scheduled pod matches any of the selectors in the Fargate profile, then that pod is run on Fargate. When you create a Fargate profile, you must specify a pod execution role to use with the pods that are scheduled with the profile. This role is added to the cluster's Kubernetes [Role Based Access Control](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) for authorization so that the kubelet that is running on the Fargate infrastructure can register with your Amazon EKS cluster so that it can appear in your cluster as a node. The pod execution role also provides IAM permissions to the Fargate infrastructure to allow read access to Amazon ECR image repositories. For more information, see [Pod Execution Role](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) in the Amazon EKS User Guide. Fargate profiles are immutable. However, you can create a new updated profile to replace an existing profile and then delete the original after the updated profile has finished creating. If any Fargate profiles in a cluster are in the DELETING status, you must wait for that Fargate profile to finish deleting before you can create any other profiles in that cluster. For more information, see [Fargate profile](https://docs.aws.amazon.com/eks/latest/userguide/fargate-profile.html) in the Amazon EKS User Guide. /// /// - Parameter CreateFargateProfileInput : [no documentation found] /// @@ -381,7 +482,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `CreateNodegroup` operation on the `AWSWesleyFrontend` service. /// - /// Creates a managed node group for an Amazon EKS cluster. You can only create a node group for your cluster that is equal to the current Kubernetes version for the cluster. An Amazon EKS managed node group is an Amazon EC2 Auto Scaling group and associated Amazon EC2 instances that are managed by Amazon Web Services for an Amazon EKS cluster. For more information, see [Managed node groups](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) in the Amazon EKS User Guide. Windows AMI types are only supported for commercial Regions that support Windows Amazon EKS. + /// Creates a managed node group for an Amazon EKS cluster. You can only create a node group for your cluster that is equal to the current Kubernetes version for the cluster. All node groups are created with the latest AMI release version for the respective minor Kubernetes version of the cluster, unless you deploy a custom AMI using a launch template. For more information about using launch templates, see [Launch template support](https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html). An Amazon EKS managed node group is an Amazon EC2 Auto Scaling group and associated Amazon EC2 instances that are managed by Amazon Web Services for an Amazon EKS cluster. For more information, see [Managed node groups](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) in the Amazon EKS User Guide. Windows AMI types are only supported for commercial Amazon Web Services Regions that support Windows on Amazon EKS. /// /// - Parameter CreateNodegroupInput : [no documentation found] /// @@ -434,7 +535,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `CreatePodIdentityAssociation` operation on the `AWSWesleyFrontend` service. /// - /// Creates an EKS Pod Identity association between a service account in an Amazon EKS cluster and an IAM role with EKS Pod Identity. Use EKS Pod Identity to give temporary IAM credentials to pods and the credentials are rotated automatically. Amazon EKS Pod Identity associations provide the ability to manage credentials for your applications, similar to the way that 7EC2l instance profiles provide credentials to Amazon EC2 instances. If a pod uses a service account that has an association, Amazon EKS sets environment variables in the containers of the pod. The environment variables configure the Amazon Web Services SDKs, including the Command Line Interface, to use the EKS Pod Identity credentials. Pod Identity is a simpler method than IAM roles for service accounts, as this method doesn't use OIDC identity providers. Additionally, you can configure a role for Pod Identity once, and reuse it across clusters. + /// Creates an EKS Pod Identity association between a service account in an Amazon EKS cluster and an IAM role with EKS Pod Identity. Use EKS Pod Identity to give temporary IAM credentials to pods and the credentials are rotated automatically. Amazon EKS Pod Identity associations provide the ability to manage credentials for your applications, similar to the way that Amazon EC2 instance profiles provide credentials to Amazon EC2 instances. If a pod uses a service account that has an association, Amazon EKS sets environment variables in the containers of the pod. The environment variables configure the Amazon Web Services SDKs, including the Command Line Interface, to use the EKS Pod Identity credentials. Pod Identity is a simpler method than IAM roles for service accounts, as this method doesn't use OIDC identity providers. Additionally, you can configure a role for Pod Identity once, and reuse it across clusters. /// /// - Parameter CreatePodIdentityAssociationInput : [no documentation found] /// @@ -447,7 +548,7 @@ extension EKSClient: EKSClientProtocol { /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. /// - `ResourceLimitExceededException` : You have encountered a service limit on the specified resource. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func createPodIdentityAssociation(input: CreatePodIdentityAssociationInput) async throws -> CreatePodIdentityAssociationOutput { @@ -484,9 +585,54 @@ extension EKSClient: EKSClientProtocol { return result } + /// Performs the `DeleteAccessEntry` operation on the `AWSWesleyFrontend` service. + /// + /// Deletes an access entry. Deleting an access entry of a type other than Standard can cause your cluster to function improperly. If you delete an access entry in error, you can recreate it. + /// + /// - Parameter DeleteAccessEntryInput : [no documentation found] + /// + /// - Returns: `DeleteAccessEntryOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + public func deleteAccessEntry(input: DeleteAccessEntryInput) async throws -> DeleteAccessEntryOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .delete) + .withServiceName(value: serviceName) + .withOperation(value: "deleteAccessEntry") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "eks") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deleteAccessEntry") + 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.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(responseClosure(decoder: decoder), responseErrorClosure(DeleteAccessEntryOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `DeleteAddon` operation on the `AWSWesleyFrontend` service. /// - /// Delete an Amazon EKS add-on. When you remove the add-on, it will also be deleted from the cluster. You can always manually start an add-on on the cluster using the Kubernetes API. + /// Deletes an Amazon EKS add-on. When you remove an add-on, it's deleted from the cluster. You can always manually start an add-on on the cluster using the Kubernetes API. /// /// - Parameter DeleteAddonInput : [no documentation found] /// @@ -498,7 +644,7 @@ extension EKSClient: EKSClientProtocol { /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func deleteAddon(input: DeleteAddonInput) async throws -> DeleteAddonOutput { @@ -534,7 +680,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `DeleteCluster` operation on the `AWSWesleyFrontend` service. /// - /// Deletes the Amazon EKS cluster control plane. If you have active services in your cluster that are associated with a load balancer, you must delete those services before deleting the cluster so that the load balancers are deleted properly. Otherwise, you can have orphaned resources in your VPC that prevent you from being able to delete the VPC. For more information, see [Deleting a Cluster](https://docs.aws.amazon.com/eks/latest/userguide/delete-cluster.html) in the Amazon EKS User Guide. If you have managed node groups or Fargate profiles attached to the cluster, you must delete them first. For more information, see [DeleteNodegroup] and [DeleteFargateProfile]. + /// Deletes an Amazon EKS cluster control plane. If you have active services in your cluster that are associated with a load balancer, you must delete those services before deleting the cluster so that the load balancers are deleted properly. Otherwise, you can have orphaned resources in your VPC that prevent you from being able to delete the VPC. For more information, see [Deleting a cluster](https://docs.aws.amazon.com/eks/latest/userguide/delete-cluster.html) in the Amazon EKS User Guide. If you have managed node groups or Fargate profiles attached to the cluster, you must delete them first. For more information, see DeleteNodgroup and DeleteFargateProfile. /// /// - Parameter DeleteClusterInput : [no documentation found] /// @@ -545,7 +691,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. public func deleteCluster(input: DeleteClusterInput) async throws -> DeleteClusterOutput @@ -592,7 +738,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func deleteEksAnywhereSubscription(input: DeleteEksAnywhereSubscriptionInput) async throws -> DeleteEksAnywhereSubscriptionOutput { @@ -627,7 +773,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `DeleteFargateProfile` operation on the `AWSWesleyFrontend` service. /// - /// Deletes an Fargate profile. When you delete a Fargate profile, any pods running on Fargate that were created with the profile are deleted. If those pods match another Fargate profile, then they are scheduled on Fargate with that profile. If they no longer match any Fargate profiles, then they are not scheduled on Fargate and they may remain in a pending state. Only one Fargate profile in a cluster can be in the DELETING status at a time. You must wait for a Fargate profile to finish deleting before you can delete any other profiles in that cluster. + /// Deletes an Fargate profile. When you delete a Fargate profile, any Pod running on Fargate that was created with the profile is deleted. If the Pod matches another Fargate profile, then it is scheduled on Fargate with that profile. If it no longer matches any Fargate profiles, then it's not scheduled on Fargate and may remain in a pending state. Only one Fargate profile in a cluster can be in the DELETING status at a time. You must wait for a Fargate profile to finish deleting before you can delete any other profiles in that cluster. /// /// - Parameter DeleteFargateProfileInput : [no documentation found] /// @@ -638,7 +784,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func deleteFargateProfile(input: DeleteFargateProfileInput) async throws -> DeleteFargateProfileOutput { @@ -673,7 +819,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `DeleteNodegroup` operation on the `AWSWesleyFrontend` service. /// - /// Deletes an Amazon EKS node group for a cluster. + /// Deletes a managed node group. /// /// - Parameter DeleteNodegroupInput : [no documentation found] /// @@ -685,7 +831,7 @@ extension EKSClient: EKSClientProtocol { /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. public func deleteNodegroup(input: DeleteNodegroupInput) async throws -> DeleteNodegroupOutput @@ -732,7 +878,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func deletePodIdentityAssociation(input: DeletePodIdentityAssociationInput) async throws -> DeletePodIdentityAssociationOutput { @@ -767,7 +913,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `DeregisterCluster` operation on the `AWSWesleyFrontend` service. /// - /// Deregisters a connected cluster to remove it from the Amazon EKS control plane. + /// Deregisters a connected cluster to remove it from the Amazon EKS control plane. A connected cluster is a Kubernetes cluster that you've connected to your control plane using the [Amazon EKS Connector](https://docs.aws.amazon.com/eks/latest/userguide/eks-connector.html). /// /// - Parameter DeregisterClusterInput : [no documentation found] /// @@ -779,7 +925,7 @@ extension EKSClient: EKSClientProtocol { /// - `AccessDeniedException` : You don't have permissions to perform the requested operation. The [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) making the request must have at least one IAM permissions policy attached that grants the required permissions. For more information, see [Access management](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) in the IAM User Guide. /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. public func deregisterCluster(input: DeregisterClusterInput) async throws -> DeregisterClusterOutput @@ -813,6 +959,51 @@ extension EKSClient: EKSClientProtocol { return result } + /// Performs the `DescribeAccessEntry` operation on the `AWSWesleyFrontend` service. + /// + /// Describes an access entry. + /// + /// - Parameter DescribeAccessEntryInput : [no documentation found] + /// + /// - Returns: `DescribeAccessEntryOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + public func describeAccessEntry(input: DescribeAccessEntryInput) async throws -> DescribeAccessEntryOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "describeAccessEntry") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "eks") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "describeAccessEntry") + 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.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(responseClosure(decoder: decoder), responseErrorClosure(DescribeAccessEntryOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `DescribeAddon` operation on the `AWSWesleyFrontend` service. /// /// Describes an Amazon EKS add-on. @@ -827,7 +1018,7 @@ extension EKSClient: EKSClientProtocol { /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func describeAddon(input: DescribeAddonInput) async throws -> DescribeAddonOutput { @@ -872,7 +1063,7 @@ extension EKSClient: EKSClientProtocol { /// /// __Possible Exceptions:__ /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func describeAddonConfiguration(input: DescribeAddonConfigurationInput) async throws -> DescribeAddonConfigurationOutput { @@ -918,7 +1109,7 @@ extension EKSClient: EKSClientProtocol { /// /// __Possible Exceptions:__ /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func describeAddonVersions(input: DescribeAddonVersionsInput) async throws -> DescribeAddonVersionsOutput { @@ -954,7 +1145,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `DescribeCluster` operation on the `AWSWesleyFrontend` service. /// - /// Returns descriptive information about an Amazon EKS cluster. The API server endpoint and certificate authority data returned by this operation are required for kubelet and kubectl to communicate with your Kubernetes API server. For more information, see [Create a kubeconfig for Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html). The API server endpoint and certificate authority data aren't available until the cluster reaches the ACTIVE state. + /// Describes an Amazon EKS cluster. The API server endpoint and certificate authority data returned by this operation are required for kubelet and kubectl to communicate with your Kubernetes API server. For more information, see [Creating or updating a ]kubeconfig file for an Amazon EKS cluster(https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html). The API server endpoint and certificate authority data aren't available until the cluster reaches the ACTIVE state. /// /// - Parameter DescribeClusterInput : [no documentation found] /// @@ -964,7 +1155,7 @@ extension EKSClient: EKSClientProtocol { /// /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. public func describeCluster(input: DescribeClusterInput) async throws -> DescribeClusterOutput @@ -1010,7 +1201,7 @@ extension EKSClient: EKSClientProtocol { /// /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. public func describeEksAnywhereSubscription(input: DescribeEksAnywhereSubscriptionInput) async throws -> DescribeEksAnywhereSubscriptionOutput @@ -1046,7 +1237,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `DescribeFargateProfile` operation on the `AWSWesleyFrontend` service. /// - /// Returns descriptive information about an Fargate profile. + /// Describes an Fargate profile. /// /// - Parameter DescribeFargateProfileInput : [no documentation found] /// @@ -1057,7 +1248,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func describeFargateProfile(input: DescribeFargateProfileInput) async throws -> DescribeFargateProfileOutput { @@ -1092,7 +1283,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `DescribeIdentityProviderConfig` operation on the `AWSWesleyFrontend` service. /// - /// Returns descriptive information about an identity provider configuration. + /// Describes an identity provider configuration. /// /// - Parameter DescribeIdentityProviderConfigInput : [no documentation found] /// @@ -1103,7 +1294,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. public func describeIdentityProviderConfig(input: DescribeIdentityProviderConfigInput) async throws -> DescribeIdentityProviderConfigOutput @@ -1142,7 +1333,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `DescribeNodegroup` operation on the `AWSWesleyFrontend` service. /// - /// Returns descriptive information about an Amazon EKS node group. + /// Describes a managed node group. /// /// - Parameter DescribeNodegroupInput : [no documentation found] /// @@ -1153,7 +1344,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. public func describeNodegroup(input: DescribeNodegroupInput) async throws -> DescribeNodegroupOutput @@ -1200,7 +1391,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func describePodIdentityAssociation(input: DescribePodIdentityAssociationInput) async throws -> DescribePodIdentityAssociationOutput { @@ -1235,9 +1426,9 @@ extension EKSClient: EKSClientProtocol { /// Performs the `DescribeUpdate` operation on the `AWSWesleyFrontend` service. /// - /// Returns descriptive information about an update against your Amazon EKS cluster or associated managed node group or Amazon EKS add-on. When the status of the update is Succeeded, the update is complete. If an update fails, the status is Failed, and an error detail explains the reason for the failure. + /// Describes an update to an Amazon EKS resource. When the status of the update is Succeeded, the update is complete. If an update fails, the status is Failed, and an error detail explains the reason for the failure. /// - /// - Parameter DescribeUpdateInput : [no documentation found] + /// - Parameter DescribeUpdateInput : Describes an update request. /// /// - Returns: `DescribeUpdateOutput` : [no documentation found] /// @@ -1246,7 +1437,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func describeUpdate(input: DescribeUpdateInput) async throws -> DescribeUpdateOutput { @@ -1280,9 +1471,54 @@ extension EKSClient: EKSClientProtocol { return result } + /// Performs the `DisassociateAccessPolicy` operation on the `AWSWesleyFrontend` service. + /// + /// Disassociates an access policy from an access entry. + /// + /// - Parameter DisassociateAccessPolicyInput : [no documentation found] + /// + /// - Returns: `DisassociateAccessPolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + public func disassociateAccessPolicy(input: DisassociateAccessPolicyInput) async throws -> DisassociateAccessPolicyOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .delete) + .withServiceName(value: serviceName) + .withOperation(value: "disassociateAccessPolicy") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "eks") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "disassociateAccessPolicy") + 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.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(responseClosure(decoder: decoder), responseErrorClosure(DisassociateAccessPolicyOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `DisassociateIdentityProviderConfig` operation on the `AWSWesleyFrontend` service. /// - /// Disassociates an identity provider configuration from a cluster. If you disassociate an identity provider from your cluster, users included in the provider can no longer access the cluster. However, you can still access the cluster with [IAM principals](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html). + /// Disassociates an identity provider configuration from a cluster. If you disassociate an identity provider from your cluster, users included in the provider can no longer access the cluster. However, you can still access the cluster with IAM principals. /// /// - Parameter DisassociateIdentityProviderConfigInput : [no documentation found] /// @@ -1295,7 +1531,7 @@ extension EKSClient: EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func disassociateIdentityProviderConfig(input: DisassociateIdentityProviderConfigInput) async throws -> DisassociateIdentityProviderConfigOutput { @@ -1332,6 +1568,97 @@ extension EKSClient: EKSClientProtocol { return result } + /// Performs the `ListAccessEntries` operation on the `AWSWesleyFrontend` service. + /// + /// Lists the access entries for your cluster. + /// + /// - Parameter ListAccessEntriesInput : [no documentation found] + /// + /// - Returns: `ListAccessEntriesOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + public func listAccessEntries(input: ListAccessEntriesInput) async throws -> ListAccessEntriesOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "listAccessEntries") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "eks") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listAccessEntries") + 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListAccessEntriesOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `ListAccessPolicies` operation on the `AWSWesleyFrontend` service. + /// + /// Lists the available access policies. + /// + /// - Parameter ListAccessPoliciesInput : [no documentation found] + /// + /// - Returns: `ListAccessPoliciesOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ServerException` : These errors are usually caused by a server-side issue. + public func listAccessPolicies(input: ListAccessPoliciesInput) async throws -> ListAccessPoliciesOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "listAccessPolicies") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "eks") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listAccessPolicies") + 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListAccessPoliciesOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `ListAddons` operation on the `AWSWesleyFrontend` service. /// /// Lists the installed add-ons. @@ -1346,7 +1673,7 @@ extension EKSClient: EKSClientProtocol { /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func listAddons(input: ListAddonsInput) async throws -> ListAddonsOutput { @@ -1380,9 +1707,55 @@ extension EKSClient: EKSClientProtocol { return result } + /// Performs the `ListAssociatedAccessPolicies` operation on the `AWSWesleyFrontend` service. + /// + /// Lists the access policies associated with an access entry. + /// + /// - Parameter ListAssociatedAccessPoliciesInput : [no documentation found] + /// + /// - Returns: `ListAssociatedAccessPoliciesOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + public func listAssociatedAccessPolicies(input: ListAssociatedAccessPoliciesInput) async throws -> ListAssociatedAccessPoliciesOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "listAssociatedAccessPolicies") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "eks") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listAssociatedAccessPolicies") + 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListAssociatedAccessPoliciesOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `ListClusters` operation on the `AWSWesleyFrontend` service. /// - /// Lists the Amazon EKS clusters in your Amazon Web Services account in the specified Region. + /// Lists the Amazon EKS clusters in your Amazon Web Services account in the specified Amazon Web Services Region. /// /// - Parameter ListClustersInput : [no documentation found] /// @@ -1476,7 +1849,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `ListFargateProfiles` operation on the `AWSWesleyFrontend` service. /// - /// Lists the Fargate profiles associated with the specified cluster in your Amazon Web Services account in the specified Region. + /// Lists the Fargate profiles associated with the specified cluster in your Amazon Web Services account in the specified Amazon Web Services Region. /// /// - Parameter ListFargateProfilesInput : [no documentation found] /// @@ -1487,7 +1860,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func listFargateProfiles(input: ListFargateProfilesInput) async throws -> ListFargateProfilesOutput { @@ -1523,7 +1896,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `ListIdentityProviderConfigs` operation on the `AWSWesleyFrontend` service. /// - /// A list of identity provider configurations. + /// Lists the identity provider configurations for your cluster. /// /// - Parameter ListIdentityProviderConfigsInput : [no documentation found] /// @@ -1534,7 +1907,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. public func listIdentityProviderConfigs(input: ListIdentityProviderConfigsInput) async throws -> ListIdentityProviderConfigsOutput @@ -1571,7 +1944,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `ListNodegroups` operation on the `AWSWesleyFrontend` service. /// - /// Lists the Amazon EKS managed node groups associated with the specified cluster in your Amazon Web Services account in the specified Region. Self-managed node groups are not listed. + /// Lists the managed node groups associated with the specified cluster in your Amazon Web Services account in the specified Amazon Web Services Region. Self-managed node groups aren't listed. /// /// - Parameter ListNodegroupsInput : [no documentation found] /// @@ -1582,7 +1955,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. public func listNodegroups(input: ListNodegroupsInput) async throws -> ListNodegroupsOutput @@ -1630,7 +2003,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func listPodIdentityAssociations(input: ListPodIdentityAssociationsInput) async throws -> ListPodIdentityAssociationsOutput { @@ -1710,7 +2083,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `ListUpdates` operation on the `AWSWesleyFrontend` service. /// - /// Lists the updates associated with an Amazon EKS cluster or managed node group in your Amazon Web Services account, in the specified Region. + /// Lists the updates associated with an Amazon EKS resource in your Amazon Web Services account, in the specified Amazon Web Services Region. /// /// - Parameter ListUpdatesInput : [no documentation found] /// @@ -1721,7 +2094,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func listUpdates(input: ListUpdatesInput) async throws -> ListUpdatesOutput { @@ -1757,7 +2130,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `RegisterCluster` operation on the `AWSWesleyFrontend` service. /// - /// Connects a Kubernetes cluster to the Amazon EKS control plane. Any Kubernetes cluster can be connected to the Amazon EKS control plane to view current information about the cluster and its nodes. Cluster connection requires two steps. First, send a [RegisterClusterRequest] to add it to the Amazon EKS control plane. Second, a [Manifest](https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector/latest/eks-connector.yaml) containing the activationID and activationCode must be applied to the Kubernetes cluster through it's native provider to provide visibility. After the Manifest is updated and applied, then the connected cluster is visible to the Amazon EKS control plane. If the Manifest is not applied within three days, then the connected cluster will no longer be visible and must be deregistered. See [DeregisterCluster]. + /// Connects a Kubernetes cluster to the Amazon EKS control plane. Any Kubernetes cluster can be connected to the Amazon EKS control plane to view current information about the cluster and its nodes. Cluster connection requires two steps. First, send a [RegisterClusterRequest] to add it to the Amazon EKS control plane. Second, a [Manifest](https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector/latest/eks-connector.yaml) containing the activationID and activationCode must be applied to the Kubernetes cluster through it's native provider to provide visibility. After the manifest is updated and applied, the connected cluster is visible to the Amazon EKS control plane. If the manifest isn't applied within three days, the connected cluster will no longer be visible and must be deregistered using DeregisterCluster. /// /// - Parameter RegisterClusterInput : [no documentation found] /// @@ -1811,7 +2184,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `TagResource` operation on the `AWSWesleyFrontend` service. /// - /// Associates the specified tags to a resource with the specified resourceArn. If existing tags on a resource are not specified in the request parameters, they are not changed. When a resource is deleted, the tags associated with that resource are deleted as well. Tags that you create for Amazon EKS resources do not propagate to any other resources associated with the cluster. For example, if you tag a cluster with this operation, that tag does not automatically propagate to the subnets and nodes associated with the cluster. + /// Associates the specified tags to an Amazon EKS resource with the specified resourceArn. If existing tags on a resource are not specified in the request parameters, they aren't changed. When a resource is deleted, the tags associated with that resource are also deleted. Tags that you create for Amazon EKS resources don't propagate to any other resources associated with the cluster. For example, if you tag a cluster with this operation, that tag doesn't automatically propagate to the subnets and nodes associated with the cluster. /// /// - Parameter TagResourceInput : [no documentation found] /// @@ -1858,7 +2231,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `UntagResource` operation on the `AWSWesleyFrontend` service. /// - /// Deletes specified tags from a resource. + /// Deletes specified tags from an Amazon EKS resource. /// /// - Parameter UntagResourceInput : [no documentation found] /// @@ -1901,6 +2274,56 @@ extension EKSClient: EKSClientProtocol { return result } + /// Performs the `UpdateAccessEntry` operation on the `AWSWesleyFrontend` service. + /// + /// Updates an access entry. + /// + /// - Parameter UpdateAccessEntryInput : [no documentation found] + /// + /// - Returns: `UpdateAccessEntryOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + public func updateAccessEntry(input: UpdateAccessEntryInput) async throws -> UpdateAccessEntryOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "updateAccessEntry") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "eks") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "updateAccessEntry") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.IdempotencyTokenMiddleware(keyPath: \.clientRequestToken)) + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(UpdateAccessEntryOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `UpdateAddon` operation on the `AWSWesleyFrontend` service. /// /// Updates an Amazon EKS add-on. @@ -1916,7 +2339,7 @@ extension EKSClient: EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func updateAddon(input: UpdateAddonInput) async throws -> UpdateAddonOutput { @@ -1955,7 +2378,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `UpdateClusterConfig` operation on the `AWSWesleyFrontend` service. /// - /// Updates an Amazon EKS cluster configuration. Your cluster continues to function during the update. The response output includes an update ID that you can use to track the status of your cluster update with the [DescribeUpdate] API operation. You can use this API operation to enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see [Amazon EKS Cluster Control Plane Logs](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) in the Amazon EKS User Guide . CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For more information, see [CloudWatch Pricing](http://aws.amazon.com/cloudwatch/pricing/). You can also use this API operation to enable or disable public and private access to your cluster's Kubernetes API server endpoint. By default, public access is enabled, and private access is disabled. For more information, see [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) in the Amazon EKS User Guide . You can also use this API operation to choose different subnets and security groups for the cluster. You must specify at least two subnets that are in different Availability Zones. You can't change which VPC the subnets are from, the subnets must be in the same VPC as the subnets that the cluster was created with. For more information about the VPC requirements, see [https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) in the Amazon EKS User Guide . Cluster updates are asynchronous, and they should finish within a few minutes. During an update, the cluster status moves to UPDATING (this status transition is eventually consistent). When the update is complete (either Failed or Successful), the cluster status moves to Active. + /// Updates an Amazon EKS cluster configuration. Your cluster continues to function during the update. The response output includes an update ID that you can use to track the status of your cluster update with DescribeUpdate"/>. You can use this API operation to enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see [Amazon EKS Cluster control plane logs](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) in the Amazon EKS User Guide . CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For more information, see [CloudWatch Pricing](http://aws.amazon.com/cloudwatch/pricing/). You can also use this API operation to enable or disable public and private access to your cluster's Kubernetes API server endpoint. By default, public access is enabled, and private access is disabled. For more information, see [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) in the Amazon EKS User Guide . You can also use this API operation to choose different subnets and security groups for the cluster. You must specify at least two subnets that are in different Availability Zones. You can't change which VPC the subnets are from, the subnets must be in the same VPC as the subnets that the cluster was created with. For more information about the VPC requirements, see [https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) in the Amazon EKS User Guide . Cluster updates are asynchronous, and they should finish within a few minutes. During an update, the cluster status moves to UPDATING (this status transition is eventually consistent). When the update is complete (either Failed or Successful), the cluster status moves to Active. /// /// - Parameter UpdateClusterConfigInput : [no documentation found] /// @@ -1968,7 +2391,7 @@ extension EKSClient: EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func updateClusterConfig(input: UpdateClusterConfigInput) async throws -> UpdateClusterConfigOutput { @@ -2020,7 +2443,7 @@ extension EKSClient: EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func updateClusterVersion(input: UpdateClusterVersionInput) async throws -> UpdateClusterVersionOutput { @@ -2071,7 +2494,7 @@ extension EKSClient: EKSClientProtocol { /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func updateEksAnywhereSubscription(input: UpdateEksAnywhereSubscriptionInput) async throws -> UpdateEksAnywhereSubscriptionOutput { @@ -2123,7 +2546,7 @@ extension EKSClient: EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func updateNodegroupConfig(input: UpdateNodegroupConfigInput) async throws -> UpdateNodegroupConfigOutput { @@ -2162,7 +2585,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `UpdateNodegroupVersion` operation on the `AWSWesleyFrontend` service. /// - /// Updates the Kubernetes version or AMI version of an Amazon EKS managed node group. You can update a node group using a launch template only if the node group was originally deployed with a launch template. If you need to update a custom AMI in a node group that was deployed with a launch template, then update your custom AMI, specify the new ID in a new version of the launch template, and then update the node group to the new version of the launch template. If you update without a launch template, then you can update to the latest available AMI version of a node group's current Kubernetes version by not specifying a Kubernetes version in the request. You can update to the latest AMI version of your cluster's current Kubernetes version by specifying your cluster's Kubernetes version in the request. For information about Linux versions, see [Amazon EKS optimized Amazon Linux AMI versions](https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html) in the Amazon EKS User Guide. For information about Windows versions, see [Amazon EKS optimized Windows AMI versions](https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html) in the Amazon EKS User Guide. You cannot roll back a node group to an earlier Kubernetes version or AMI version. When a node in a managed node group is terminated due to a scaling action or update, the pods in that node are drained first. Amazon EKS attempts to drain the nodes gracefully and will fail if it is unable to do so. You can force the update if Amazon EKS is unable to drain the nodes as a result of a pod disruption budget issue. + /// Updates the Kubernetes version or AMI version of an Amazon EKS managed node group. You can update a node group using a launch template only if the node group was originally deployed with a launch template. If you need to update a custom AMI in a node group that was deployed with a launch template, then update your custom AMI, specify the new ID in a new version of the launch template, and then update the node group to the new version of the launch template. If you update without a launch template, then you can update to the latest available AMI version of a node group's current Kubernetes version by not specifying a Kubernetes version in the request. You can update to the latest AMI version of your cluster's current Kubernetes version by specifying your cluster's Kubernetes version in the request. For information about Linux versions, see [Amazon EKS optimized Amazon Linux AMI versions](https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html) in the Amazon EKS User Guide. For information about Windows versions, see [Amazon EKS optimized Windows AMI versions](https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html) in the Amazon EKS User Guide. You cannot roll back a node group to an earlier Kubernetes version or AMI version. When a node in a managed node group is terminated due to a scaling action or update, every Pod on that node is drained first. Amazon EKS attempts to drain the nodes gracefully and will fail if it is unable to do so. You can force the update if Amazon EKS is unable to drain the nodes as a result of a Pod disruption budget issue. /// /// - Parameter UpdateNodegroupVersionInput : [no documentation found] /// @@ -2175,7 +2598,7 @@ extension EKSClient: EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func updateNodegroupVersion(input: UpdateNodegroupVersionInput) async throws -> UpdateNodegroupVersionOutput { @@ -2214,7 +2637,7 @@ extension EKSClient: EKSClientProtocol { /// Performs the `UpdatePodIdentityAssociation` operation on the `AWSWesleyFrontend` service. /// - /// Updates a EKS Pod Identity association. Only the IAM role can be changed; an association can't be moved between clusters, namespaces, or service accounts. If you need to edit the namespace or service account, you need to remove the association and then create a new association with your desired settings. + /// Updates a EKS Pod Identity association. Only the IAM role can be changed; an association can't be moved between clusters, namespaces, or service accounts. If you need to edit the namespace or service account, you need to delete the association and then create a new association with your desired settings. /// /// - Parameter UpdatePodIdentityAssociationInput : [no documentation found] /// @@ -2225,7 +2648,7 @@ extension EKSClient: EKSClientProtocol { /// __Possible Exceptions:__ /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. public func updatePodIdentityAssociation(input: UpdatePodIdentityAssociationInput) async throws -> UpdatePodIdentityAssociationOutput { diff --git a/Sources/Services/AWSEKS/EKSClientProtocol.swift b/Sources/Services/AWSEKS/EKSClientProtocol.swift index 5a93672bfef..a1f89b9ddad 100644 --- a/Sources/Services/AWSEKS/EKSClientProtocol.swift +++ b/Sources/Services/AWSEKS/EKSClientProtocol.swift @@ -2,11 +2,27 @@ import ClientRuntime -/// Amazon Elastic Kubernetes Service (Amazon EKS) is a managed service that makes it easy for you to run Kubernetes on Amazon Web Services without needing to stand up or maintain your own Kubernetes control plane. Kubernetes is an open-source system for automating the deployment, scaling, and management of containerized applications. Amazon EKS runs up-to-date versions of the open-source Kubernetes software, so you can use all the existing plugins and tooling from the Kubernetes community. Applications running on Amazon EKS are fully compatible with applications running on any standard Kubernetes environment, whether running in on-premises data centers or public clouds. This means that you can easily migrate any standard Kubernetes application to Amazon EKS without any code modification required. +/// Amazon Elastic Kubernetes Service (Amazon EKS) is a managed service that makes it easy for you to run Kubernetes on Amazon Web Services without needing to setup or maintain your own Kubernetes control plane. Kubernetes is an open-source system for automating the deployment, scaling, and management of containerized applications. Amazon EKS runs up-to-date versions of the open-source Kubernetes software, so you can use all the existing plugins and tooling from the Kubernetes community. Applications running on Amazon EKS are fully compatible with applications running on any standard Kubernetes environment, whether running in on-premises data centers or public clouds. This means that you can easily migrate any standard Kubernetes application to Amazon EKS without any code modification required. public protocol EKSClientProtocol { + /// Performs the `AssociateAccessPolicy` operation on the `AWSWesleyFrontend` service. + /// + /// Associates an access policy and its scope to an access entry. For more information about associating access policies, see [Associating and disassociating access policies to and from access entries](https://docs.aws.amazon.com/eks/latest/userguide/access-policies.html) in the Amazon EKS User Guide. + /// + /// - Parameter AssociateAccessPolicyInput : [no documentation found] + /// + /// - Returns: `AssociateAccessPolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + func associateAccessPolicy(input: AssociateAccessPolicyInput) async throws -> AssociateAccessPolicyOutput /// Performs the `AssociateEncryptionConfig` operation on the `AWSWesleyFrontend` service. /// - /// Associate encryption configuration to an existing cluster. You can use this API to enable encryption on existing clusters which do not have encryption already enabled. This allows you to implement a defense-in-depth security strategy without migrating applications to new Amazon EKS clusters. + /// Associates an encryption configuration to an existing cluster. Use this API to enable encryption on existing clusters that don't already have encryption enabled. This allows you to implement a defense-in-depth security strategy without migrating applications to new Amazon EKS clusters. /// /// - Parameter AssociateEncryptionConfigInput : [no documentation found] /// @@ -19,12 +35,12 @@ public protocol EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func associateEncryptionConfig(input: AssociateEncryptionConfigInput) async throws -> AssociateEncryptionConfigOutput /// Performs the `AssociateIdentityProviderConfig` operation on the `AWSWesleyFrontend` service. /// - /// Associate an identity provider configuration to a cluster. If you want to authenticate identities using an identity provider, you can create an identity provider configuration and associate it to your cluster. After configuring authentication to your cluster you can create Kubernetes roles and clusterroles to assign permissions to the roles, and then bind the roles to the identities using Kubernetes rolebindings and clusterrolebindings. For more information see [Using RBAC Authorization](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) in the Kubernetes documentation. + /// Associates an identity provider configuration to a cluster. If you want to authenticate identities using an identity provider, you can create an identity provider configuration and associate it to your cluster. After configuring authentication to your cluster you can create Kubernetes Role and ClusterRole objects, assign permissions to them, and then bind them to the identities using Kubernetes RoleBinding and ClusterRoleBinding objects. For more information see [Using RBAC Authorization](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) in the Kubernetes documentation. /// /// - Parameter AssociateIdentityProviderConfigInput : [no documentation found] /// @@ -37,9 +53,27 @@ public protocol EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func associateIdentityProviderConfig(input: AssociateIdentityProviderConfigInput) async throws -> AssociateIdentityProviderConfigOutput + /// Performs the `CreateAccessEntry` operation on the `AWSWesleyFrontend` service. + /// + /// Creates an access entry. An access entry allows an IAM principal to access your cluster. Access entries can replace the need to maintain entries in the aws-authConfigMap for authentication. You have the following options for authorizing an IAM principal to access Kubernetes objects on your cluster: Kubernetes role-based access control (RBAC), Amazon EKS, or both. Kubernetes RBAC authorization requires you to create and manage Kubernetes Role, ClusterRole, RoleBinding, and ClusterRoleBinding objects, in addition to managing access entries. If you use Amazon EKS authorization exclusively, you don't need to create and manage Kubernetes Role, ClusterRole, RoleBinding, and ClusterRoleBinding objects. For more information about access entries, see [Access entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html) in the Amazon EKS User Guide. + /// + /// - Parameter CreateAccessEntryInput : [no documentation found] + /// + /// - Returns: `CreateAccessEntryOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceInUseException` : The specified resource is in use. + /// - `ResourceLimitExceededException` : You have encountered a service limit on the specified resource. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + func createAccessEntry(input: CreateAccessEntryInput) async throws -> CreateAccessEntryOutput /// Performs the `CreateAddon` operation on the `AWSWesleyFrontend` service. /// /// Creates an Amazon EKS add-on. Amazon EKS add-ons help to automate the provisioning and lifecycle management of common operational software for Amazon EKS clusters. For more information, see [Amazon EKS add-ons](https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html) in the Amazon EKS User Guide. @@ -55,7 +89,7 @@ public protocol EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func createAddon(input: CreateAddonInput) async throws -> CreateAddonOutput /// Performs the `CreateCluster` operation on the `AWSWesleyFrontend` service. @@ -96,7 +130,7 @@ public protocol EKSClientProtocol { func createEksAnywhereSubscription(input: CreateEksAnywhereSubscriptionInput) async throws -> CreateEksAnywhereSubscriptionOutput /// Performs the `CreateFargateProfile` operation on the `AWSWesleyFrontend` service. /// - /// Creates an Fargate profile for your Amazon EKS cluster. You must have at least one Fargate profile in a cluster to be able to run pods on Fargate. The Fargate profile allows an administrator to declare which pods run on Fargate and specify which pods run on which Fargate profile. This declaration is done through the profile’s selectors. Each profile can have up to five selectors that contain a namespace and labels. A namespace is required for every selector. The label field consists of multiple optional key-value pairs. Pods that match the selectors are scheduled on Fargate. If a to-be-scheduled pod matches any of the selectors in the Fargate profile, then that pod is run on Fargate. When you create a Fargate profile, you must specify a pod execution role to use with the pods that are scheduled with the profile. This role is added to the cluster's Kubernetes [Role Based Access Control](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) for authorization so that the kubelet that is running on the Fargate infrastructure can register with your Amazon EKS cluster so that it can appear in your cluster as a node. The pod execution role also provides IAM permissions to the Fargate infrastructure to allow read access to Amazon ECR image repositories. For more information, see [Pod Execution Role](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) in the Amazon EKS User Guide. Fargate profiles are immutable. However, you can create a new updated profile to replace an existing profile and then delete the original after the updated profile has finished creating. If any Fargate profiles in a cluster are in the DELETING status, you must wait for that Fargate profile to finish deleting before you can create any other profiles in that cluster. For more information, see [Fargate Profile](https://docs.aws.amazon.com/eks/latest/userguide/fargate-profile.html) in the Amazon EKS User Guide. + /// Creates an Fargate profile for your Amazon EKS cluster. You must have at least one Fargate profile in a cluster to be able to run pods on Fargate. The Fargate profile allows an administrator to declare which pods run on Fargate and specify which pods run on which Fargate profile. This declaration is done through the profile’s selectors. Each profile can have up to five selectors that contain a namespace and labels. A namespace is required for every selector. The label field consists of multiple optional key-value pairs. Pods that match the selectors are scheduled on Fargate. If a to-be-scheduled pod matches any of the selectors in the Fargate profile, then that pod is run on Fargate. When you create a Fargate profile, you must specify a pod execution role to use with the pods that are scheduled with the profile. This role is added to the cluster's Kubernetes [Role Based Access Control](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) for authorization so that the kubelet that is running on the Fargate infrastructure can register with your Amazon EKS cluster so that it can appear in your cluster as a node. The pod execution role also provides IAM permissions to the Fargate infrastructure to allow read access to Amazon ECR image repositories. For more information, see [Pod Execution Role](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) in the Amazon EKS User Guide. Fargate profiles are immutable. However, you can create a new updated profile to replace an existing profile and then delete the original after the updated profile has finished creating. If any Fargate profiles in a cluster are in the DELETING status, you must wait for that Fargate profile to finish deleting before you can create any other profiles in that cluster. For more information, see [Fargate profile](https://docs.aws.amazon.com/eks/latest/userguide/fargate-profile.html) in the Amazon EKS User Guide. /// /// - Parameter CreateFargateProfileInput : [no documentation found] /// @@ -114,7 +148,7 @@ public protocol EKSClientProtocol { func createFargateProfile(input: CreateFargateProfileInput) async throws -> CreateFargateProfileOutput /// Performs the `CreateNodegroup` operation on the `AWSWesleyFrontend` service. /// - /// Creates a managed node group for an Amazon EKS cluster. You can only create a node group for your cluster that is equal to the current Kubernetes version for the cluster. An Amazon EKS managed node group is an Amazon EC2 Auto Scaling group and associated Amazon EC2 instances that are managed by Amazon Web Services for an Amazon EKS cluster. For more information, see [Managed node groups](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) in the Amazon EKS User Guide. Windows AMI types are only supported for commercial Regions that support Windows Amazon EKS. + /// Creates a managed node group for an Amazon EKS cluster. You can only create a node group for your cluster that is equal to the current Kubernetes version for the cluster. All node groups are created with the latest AMI release version for the respective minor Kubernetes version of the cluster, unless you deploy a custom AMI using a launch template. For more information about using launch templates, see [Launch template support](https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html). An Amazon EKS managed node group is an Amazon EC2 Auto Scaling group and associated Amazon EC2 instances that are managed by Amazon Web Services for an Amazon EKS cluster. For more information, see [Managed node groups](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) in the Amazon EKS User Guide. Windows AMI types are only supported for commercial Amazon Web Services Regions that support Windows on Amazon EKS. /// /// - Parameter CreateNodegroupInput : [no documentation found] /// @@ -133,7 +167,7 @@ public protocol EKSClientProtocol { func createNodegroup(input: CreateNodegroupInput) async throws -> CreateNodegroupOutput /// Performs the `CreatePodIdentityAssociation` operation on the `AWSWesleyFrontend` service. /// - /// Creates an EKS Pod Identity association between a service account in an Amazon EKS cluster and an IAM role with EKS Pod Identity. Use EKS Pod Identity to give temporary IAM credentials to pods and the credentials are rotated automatically. Amazon EKS Pod Identity associations provide the ability to manage credentials for your applications, similar to the way that 7EC2l instance profiles provide credentials to Amazon EC2 instances. If a pod uses a service account that has an association, Amazon EKS sets environment variables in the containers of the pod. The environment variables configure the Amazon Web Services SDKs, including the Command Line Interface, to use the EKS Pod Identity credentials. Pod Identity is a simpler method than IAM roles for service accounts, as this method doesn't use OIDC identity providers. Additionally, you can configure a role for Pod Identity once, and reuse it across clusters. + /// Creates an EKS Pod Identity association between a service account in an Amazon EKS cluster and an IAM role with EKS Pod Identity. Use EKS Pod Identity to give temporary IAM credentials to pods and the credentials are rotated automatically. Amazon EKS Pod Identity associations provide the ability to manage credentials for your applications, similar to the way that Amazon EC2 instance profiles provide credentials to Amazon EC2 instances. If a pod uses a service account that has an association, Amazon EKS sets environment variables in the containers of the pod. The environment variables configure the Amazon Web Services SDKs, including the Command Line Interface, to use the EKS Pod Identity credentials. Pod Identity is a simpler method than IAM roles for service accounts, as this method doesn't use OIDC identity providers. Additionally, you can configure a role for Pod Identity once, and reuse it across clusters. /// /// - Parameter CreatePodIdentityAssociationInput : [no documentation found] /// @@ -146,12 +180,27 @@ public protocol EKSClientProtocol { /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. /// - `ResourceLimitExceededException` : You have encountered a service limit on the specified resource. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func createPodIdentityAssociation(input: CreatePodIdentityAssociationInput) async throws -> CreatePodIdentityAssociationOutput + /// Performs the `DeleteAccessEntry` operation on the `AWSWesleyFrontend` service. + /// + /// Deletes an access entry. Deleting an access entry of a type other than Standard can cause your cluster to function improperly. If you delete an access entry in error, you can recreate it. + /// + /// - Parameter DeleteAccessEntryInput : [no documentation found] + /// + /// - Returns: `DeleteAccessEntryOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + func deleteAccessEntry(input: DeleteAccessEntryInput) async throws -> DeleteAccessEntryOutput /// Performs the `DeleteAddon` operation on the `AWSWesleyFrontend` service. /// - /// Delete an Amazon EKS add-on. When you remove the add-on, it will also be deleted from the cluster. You can always manually start an add-on on the cluster using the Kubernetes API. + /// Deletes an Amazon EKS add-on. When you remove an add-on, it's deleted from the cluster. You can always manually start an add-on on the cluster using the Kubernetes API. /// /// - Parameter DeleteAddonInput : [no documentation found] /// @@ -163,12 +212,12 @@ public protocol EKSClientProtocol { /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func deleteAddon(input: DeleteAddonInput) async throws -> DeleteAddonOutput /// Performs the `DeleteCluster` operation on the `AWSWesleyFrontend` service. /// - /// Deletes the Amazon EKS cluster control plane. If you have active services in your cluster that are associated with a load balancer, you must delete those services before deleting the cluster so that the load balancers are deleted properly. Otherwise, you can have orphaned resources in your VPC that prevent you from being able to delete the VPC. For more information, see [Deleting a Cluster](https://docs.aws.amazon.com/eks/latest/userguide/delete-cluster.html) in the Amazon EKS User Guide. If you have managed node groups or Fargate profiles attached to the cluster, you must delete them first. For more information, see [DeleteNodegroup] and [DeleteFargateProfile]. + /// Deletes an Amazon EKS cluster control plane. If you have active services in your cluster that are associated with a load balancer, you must delete those services before deleting the cluster so that the load balancers are deleted properly. Otherwise, you can have orphaned resources in your VPC that prevent you from being able to delete the VPC. For more information, see [Deleting a cluster](https://docs.aws.amazon.com/eks/latest/userguide/delete-cluster.html) in the Amazon EKS User Guide. If you have managed node groups or Fargate profiles attached to the cluster, you must delete them first. For more information, see DeleteNodgroup and DeleteFargateProfile. /// /// - Parameter DeleteClusterInput : [no documentation found] /// @@ -179,7 +228,7 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. func deleteCluster(input: DeleteClusterInput) async throws -> DeleteClusterOutput @@ -196,12 +245,12 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func deleteEksAnywhereSubscription(input: DeleteEksAnywhereSubscriptionInput) async throws -> DeleteEksAnywhereSubscriptionOutput /// Performs the `DeleteFargateProfile` operation on the `AWSWesleyFrontend` service. /// - /// Deletes an Fargate profile. When you delete a Fargate profile, any pods running on Fargate that were created with the profile are deleted. If those pods match another Fargate profile, then they are scheduled on Fargate with that profile. If they no longer match any Fargate profiles, then they are not scheduled on Fargate and they may remain in a pending state. Only one Fargate profile in a cluster can be in the DELETING status at a time. You must wait for a Fargate profile to finish deleting before you can delete any other profiles in that cluster. + /// Deletes an Fargate profile. When you delete a Fargate profile, any Pod running on Fargate that was created with the profile is deleted. If the Pod matches another Fargate profile, then it is scheduled on Fargate with that profile. If it no longer matches any Fargate profiles, then it's not scheduled on Fargate and may remain in a pending state. Only one Fargate profile in a cluster can be in the DELETING status at a time. You must wait for a Fargate profile to finish deleting before you can delete any other profiles in that cluster. /// /// - Parameter DeleteFargateProfileInput : [no documentation found] /// @@ -212,12 +261,12 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func deleteFargateProfile(input: DeleteFargateProfileInput) async throws -> DeleteFargateProfileOutput /// Performs the `DeleteNodegroup` operation on the `AWSWesleyFrontend` service. /// - /// Deletes an Amazon EKS node group for a cluster. + /// Deletes a managed node group. /// /// - Parameter DeleteNodegroupInput : [no documentation found] /// @@ -229,7 +278,7 @@ public protocol EKSClientProtocol { /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. func deleteNodegroup(input: DeleteNodegroupInput) async throws -> DeleteNodegroupOutput @@ -246,12 +295,12 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func deletePodIdentityAssociation(input: DeletePodIdentityAssociationInput) async throws -> DeletePodIdentityAssociationOutput /// Performs the `DeregisterCluster` operation on the `AWSWesleyFrontend` service. /// - /// Deregisters a connected cluster to remove it from the Amazon EKS control plane. + /// Deregisters a connected cluster to remove it from the Amazon EKS control plane. A connected cluster is a Kubernetes cluster that you've connected to your control plane using the [Amazon EKS Connector](https://docs.aws.amazon.com/eks/latest/userguide/eks-connector.html). /// /// - Parameter DeregisterClusterInput : [no documentation found] /// @@ -263,10 +312,25 @@ public protocol EKSClientProtocol { /// - `AccessDeniedException` : You don't have permissions to perform the requested operation. The [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) making the request must have at least one IAM permissions policy attached that grants the required permissions. For more information, see [Access management](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) in the IAM User Guide. /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. func deregisterCluster(input: DeregisterClusterInput) async throws -> DeregisterClusterOutput + /// Performs the `DescribeAccessEntry` operation on the `AWSWesleyFrontend` service. + /// + /// Describes an access entry. + /// + /// - Parameter DescribeAccessEntryInput : [no documentation found] + /// + /// - Returns: `DescribeAccessEntryOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + func describeAccessEntry(input: DescribeAccessEntryInput) async throws -> DescribeAccessEntryOutput /// Performs the `DescribeAddon` operation on the `AWSWesleyFrontend` service. /// /// Describes an Amazon EKS add-on. @@ -281,7 +345,7 @@ public protocol EKSClientProtocol { /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func describeAddon(input: DescribeAddonInput) async throws -> DescribeAddonOutput /// Performs the `DescribeAddonConfiguration` operation on the `AWSWesleyFrontend` service. @@ -296,7 +360,7 @@ public protocol EKSClientProtocol { /// /// __Possible Exceptions:__ /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func describeAddonConfiguration(input: DescribeAddonConfigurationInput) async throws -> DescribeAddonConfigurationOutput /// Performs the `DescribeAddonVersions` operation on the `AWSWesleyFrontend` service. @@ -311,12 +375,12 @@ public protocol EKSClientProtocol { /// /// __Possible Exceptions:__ /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func describeAddonVersions(input: DescribeAddonVersionsInput) async throws -> DescribeAddonVersionsOutput /// Performs the `DescribeCluster` operation on the `AWSWesleyFrontend` service. /// - /// Returns descriptive information about an Amazon EKS cluster. The API server endpoint and certificate authority data returned by this operation are required for kubelet and kubectl to communicate with your Kubernetes API server. For more information, see [Create a kubeconfig for Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html). The API server endpoint and certificate authority data aren't available until the cluster reaches the ACTIVE state. + /// Describes an Amazon EKS cluster. The API server endpoint and certificate authority data returned by this operation are required for kubelet and kubectl to communicate with your Kubernetes API server. For more information, see [Creating or updating a ]kubeconfig file for an Amazon EKS cluster(https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html). The API server endpoint and certificate authority data aren't available until the cluster reaches the ACTIVE state. /// /// - Parameter DescribeClusterInput : [no documentation found] /// @@ -326,7 +390,7 @@ public protocol EKSClientProtocol { /// /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. func describeCluster(input: DescribeClusterInput) async throws -> DescribeClusterOutput @@ -342,13 +406,13 @@ public protocol EKSClientProtocol { /// /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. func describeEksAnywhereSubscription(input: DescribeEksAnywhereSubscriptionInput) async throws -> DescribeEksAnywhereSubscriptionOutput /// Performs the `DescribeFargateProfile` operation on the `AWSWesleyFrontend` service. /// - /// Returns descriptive information about an Fargate profile. + /// Describes an Fargate profile. /// /// - Parameter DescribeFargateProfileInput : [no documentation found] /// @@ -359,12 +423,12 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func describeFargateProfile(input: DescribeFargateProfileInput) async throws -> DescribeFargateProfileOutput /// Performs the `DescribeIdentityProviderConfig` operation on the `AWSWesleyFrontend` service. /// - /// Returns descriptive information about an identity provider configuration. + /// Describes an identity provider configuration. /// /// - Parameter DescribeIdentityProviderConfigInput : [no documentation found] /// @@ -375,13 +439,13 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. func describeIdentityProviderConfig(input: DescribeIdentityProviderConfigInput) async throws -> DescribeIdentityProviderConfigOutput /// Performs the `DescribeNodegroup` operation on the `AWSWesleyFrontend` service. /// - /// Returns descriptive information about an Amazon EKS node group. + /// Describes a managed node group. /// /// - Parameter DescribeNodegroupInput : [no documentation found] /// @@ -392,7 +456,7 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. func describeNodegroup(input: DescribeNodegroupInput) async throws -> DescribeNodegroupOutput @@ -409,14 +473,14 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func describePodIdentityAssociation(input: DescribePodIdentityAssociationInput) async throws -> DescribePodIdentityAssociationOutput /// Performs the `DescribeUpdate` operation on the `AWSWesleyFrontend` service. /// - /// Returns descriptive information about an update against your Amazon EKS cluster or associated managed node group or Amazon EKS add-on. When the status of the update is Succeeded, the update is complete. If an update fails, the status is Failed, and an error detail explains the reason for the failure. + /// Describes an update to an Amazon EKS resource. When the status of the update is Succeeded, the update is complete. If an update fails, the status is Failed, and an error detail explains the reason for the failure. /// - /// - Parameter DescribeUpdateInput : [no documentation found] + /// - Parameter DescribeUpdateInput : Describes an update request. /// /// - Returns: `DescribeUpdateOutput` : [no documentation found] /// @@ -425,12 +489,27 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func describeUpdate(input: DescribeUpdateInput) async throws -> DescribeUpdateOutput + /// Performs the `DisassociateAccessPolicy` operation on the `AWSWesleyFrontend` service. + /// + /// Disassociates an access policy from an access entry. + /// + /// - Parameter DisassociateAccessPolicyInput : [no documentation found] + /// + /// - Returns: `DisassociateAccessPolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + func disassociateAccessPolicy(input: DisassociateAccessPolicyInput) async throws -> DisassociateAccessPolicyOutput /// Performs the `DisassociateIdentityProviderConfig` operation on the `AWSWesleyFrontend` service. /// - /// Disassociates an identity provider configuration from a cluster. If you disassociate an identity provider from your cluster, users included in the provider can no longer access the cluster. However, you can still access the cluster with [IAM principals](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html). + /// Disassociates an identity provider configuration from a cluster. If you disassociate an identity provider from your cluster, users included in the provider can no longer access the cluster. However, you can still access the cluster with IAM principals. /// /// - Parameter DisassociateIdentityProviderConfigInput : [no documentation found] /// @@ -443,9 +522,38 @@ public protocol EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func disassociateIdentityProviderConfig(input: DisassociateIdentityProviderConfigInput) async throws -> DisassociateIdentityProviderConfigOutput + /// Performs the `ListAccessEntries` operation on the `AWSWesleyFrontend` service. + /// + /// Lists the access entries for your cluster. + /// + /// - Parameter ListAccessEntriesInput : [no documentation found] + /// + /// - Returns: `ListAccessEntriesOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + func listAccessEntries(input: ListAccessEntriesInput) async throws -> ListAccessEntriesOutput + /// Performs the `ListAccessPolicies` operation on the `AWSWesleyFrontend` service. + /// + /// Lists the available access policies. + /// + /// - Parameter ListAccessPoliciesInput : [no documentation found] + /// + /// - Returns: `ListAccessPoliciesOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ServerException` : These errors are usually caused by a server-side issue. + func listAccessPolicies(input: ListAccessPoliciesInput) async throws -> ListAccessPoliciesOutput /// Performs the `ListAddons` operation on the `AWSWesleyFrontend` service. /// /// Lists the installed add-ons. @@ -460,12 +568,27 @@ public protocol EKSClientProtocol { /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func listAddons(input: ListAddonsInput) async throws -> ListAddonsOutput + /// Performs the `ListAssociatedAccessPolicies` operation on the `AWSWesleyFrontend` service. + /// + /// Lists the access policies associated with an access entry. + /// + /// - Parameter ListAssociatedAccessPoliciesInput : [no documentation found] + /// + /// - Returns: `ListAssociatedAccessPoliciesOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + func listAssociatedAccessPolicies(input: ListAssociatedAccessPoliciesInput) async throws -> ListAssociatedAccessPoliciesOutput /// Performs the `ListClusters` operation on the `AWSWesleyFrontend` service. /// - /// Lists the Amazon EKS clusters in your Amazon Web Services account in the specified Region. + /// Lists the Amazon EKS clusters in your Amazon Web Services account in the specified Amazon Web Services Region. /// /// - Parameter ListClustersInput : [no documentation found] /// @@ -497,7 +620,7 @@ public protocol EKSClientProtocol { func listEksAnywhereSubscriptions(input: ListEksAnywhereSubscriptionsInput) async throws -> ListEksAnywhereSubscriptionsOutput /// Performs the `ListFargateProfiles` operation on the `AWSWesleyFrontend` service. /// - /// Lists the Fargate profiles associated with the specified cluster in your Amazon Web Services account in the specified Region. + /// Lists the Fargate profiles associated with the specified cluster in your Amazon Web Services account in the specified Amazon Web Services Region. /// /// - Parameter ListFargateProfilesInput : [no documentation found] /// @@ -508,12 +631,12 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func listFargateProfiles(input: ListFargateProfilesInput) async throws -> ListFargateProfilesOutput /// Performs the `ListIdentityProviderConfigs` operation on the `AWSWesleyFrontend` service. /// - /// A list of identity provider configurations. + /// Lists the identity provider configurations for your cluster. /// /// - Parameter ListIdentityProviderConfigsInput : [no documentation found] /// @@ -524,13 +647,13 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. func listIdentityProviderConfigs(input: ListIdentityProviderConfigsInput) async throws -> ListIdentityProviderConfigsOutput /// Performs the `ListNodegroups` operation on the `AWSWesleyFrontend` service. /// - /// Lists the Amazon EKS managed node groups associated with the specified cluster in your Amazon Web Services account in the specified Region. Self-managed node groups are not listed. + /// Lists the managed node groups associated with the specified cluster in your Amazon Web Services account in the specified Amazon Web Services Region. Self-managed node groups aren't listed. /// /// - Parameter ListNodegroupsInput : [no documentation found] /// @@ -541,7 +664,7 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. func listNodegroups(input: ListNodegroupsInput) async throws -> ListNodegroupsOutput @@ -558,7 +681,7 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func listPodIdentityAssociations(input: ListPodIdentityAssociationsInput) async throws -> ListPodIdentityAssociationsOutput /// Performs the `ListTagsForResource` operation on the `AWSWesleyFrontend` service. @@ -577,7 +700,7 @@ public protocol EKSClientProtocol { func listTagsForResource(input: ListTagsForResourceInput) async throws -> ListTagsForResourceOutput /// Performs the `ListUpdates` operation on the `AWSWesleyFrontend` service. /// - /// Lists the updates associated with an Amazon EKS cluster or managed node group in your Amazon Web Services account, in the specified Region. + /// Lists the updates associated with an Amazon EKS resource in your Amazon Web Services account, in the specified Amazon Web Services Region. /// /// - Parameter ListUpdatesInput : [no documentation found] /// @@ -588,12 +711,12 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func listUpdates(input: ListUpdatesInput) async throws -> ListUpdatesOutput /// Performs the `RegisterCluster` operation on the `AWSWesleyFrontend` service. /// - /// Connects a Kubernetes cluster to the Amazon EKS control plane. Any Kubernetes cluster can be connected to the Amazon EKS control plane to view current information about the cluster and its nodes. Cluster connection requires two steps. First, send a [RegisterClusterRequest] to add it to the Amazon EKS control plane. Second, a [Manifest](https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector/latest/eks-connector.yaml) containing the activationID and activationCode must be applied to the Kubernetes cluster through it's native provider to provide visibility. After the Manifest is updated and applied, then the connected cluster is visible to the Amazon EKS control plane. If the Manifest is not applied within three days, then the connected cluster will no longer be visible and must be deregistered. See [DeregisterCluster]. + /// Connects a Kubernetes cluster to the Amazon EKS control plane. Any Kubernetes cluster can be connected to the Amazon EKS control plane to view current information about the cluster and its nodes. Cluster connection requires two steps. First, send a [RegisterClusterRequest] to add it to the Amazon EKS control plane. Second, a [Manifest](https://amazon-eks.s3.us-west-2.amazonaws.com/eks-connector/manifests/eks-connector/latest/eks-connector.yaml) containing the activationID and activationCode must be applied to the Kubernetes cluster through it's native provider to provide visibility. After the manifest is updated and applied, the connected cluster is visible to the Amazon EKS control plane. If the manifest isn't applied within three days, the connected cluster will no longer be visible and must be deregistered using DeregisterCluster. /// /// - Parameter RegisterClusterInput : [no documentation found] /// @@ -613,7 +736,7 @@ public protocol EKSClientProtocol { func registerCluster(input: RegisterClusterInput) async throws -> RegisterClusterOutput /// Performs the `TagResource` operation on the `AWSWesleyFrontend` service. /// - /// Associates the specified tags to a resource with the specified resourceArn. If existing tags on a resource are not specified in the request parameters, they are not changed. When a resource is deleted, the tags associated with that resource are deleted as well. Tags that you create for Amazon EKS resources do not propagate to any other resources associated with the cluster. For example, if you tag a cluster with this operation, that tag does not automatically propagate to the subnets and nodes associated with the cluster. + /// Associates the specified tags to an Amazon EKS resource with the specified resourceArn. If existing tags on a resource are not specified in the request parameters, they aren't changed. When a resource is deleted, the tags associated with that resource are also deleted. Tags that you create for Amazon EKS resources don't propagate to any other resources associated with the cluster. For example, if you tag a cluster with this operation, that tag doesn't automatically propagate to the subnets and nodes associated with the cluster. /// /// - Parameter TagResourceInput : [no documentation found] /// @@ -627,7 +750,7 @@ public protocol EKSClientProtocol { func tagResource(input: TagResourceInput) async throws -> TagResourceOutput /// Performs the `UntagResource` operation on the `AWSWesleyFrontend` service. /// - /// Deletes specified tags from a resource. + /// Deletes specified tags from an Amazon EKS resource. /// /// - Parameter UntagResourceInput : [no documentation found] /// @@ -639,6 +762,22 @@ public protocol EKSClientProtocol { /// - `BadRequestException` : This exception is thrown if the request contains a semantic error. The precise meaning will depend on the API, and will be documented in the error message. /// - `NotFoundException` : A service resource associated with the request could not be found. Clients should not retry such requests. func untagResource(input: UntagResourceInput) async throws -> UntagResourceOutput + /// Performs the `UpdateAccessEntry` operation on the `AWSWesleyFrontend` service. + /// + /// Updates an access entry. + /// + /// - Parameter UpdateAccessEntryInput : [no documentation found] + /// + /// - Returns: `UpdateAccessEntryOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. + /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. + /// - `ServerException` : These errors are usually caused by a server-side issue. + func updateAccessEntry(input: UpdateAccessEntryInput) async throws -> UpdateAccessEntryOutput /// Performs the `UpdateAddon` operation on the `AWSWesleyFrontend` service. /// /// Updates an Amazon EKS add-on. @@ -654,12 +793,12 @@ public protocol EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func updateAddon(input: UpdateAddonInput) async throws -> UpdateAddonOutput /// Performs the `UpdateClusterConfig` operation on the `AWSWesleyFrontend` service. /// - /// Updates an Amazon EKS cluster configuration. Your cluster continues to function during the update. The response output includes an update ID that you can use to track the status of your cluster update with the [DescribeUpdate] API operation. You can use this API operation to enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see [Amazon EKS Cluster Control Plane Logs](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) in the Amazon EKS User Guide . CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For more information, see [CloudWatch Pricing](http://aws.amazon.com/cloudwatch/pricing/). You can also use this API operation to enable or disable public and private access to your cluster's Kubernetes API server endpoint. By default, public access is enabled, and private access is disabled. For more information, see [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) in the Amazon EKS User Guide . You can also use this API operation to choose different subnets and security groups for the cluster. You must specify at least two subnets that are in different Availability Zones. You can't change which VPC the subnets are from, the subnets must be in the same VPC as the subnets that the cluster was created with. For more information about the VPC requirements, see [https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) in the Amazon EKS User Guide . Cluster updates are asynchronous, and they should finish within a few minutes. During an update, the cluster status moves to UPDATING (this status transition is eventually consistent). When the update is complete (either Failed or Successful), the cluster status moves to Active. + /// Updates an Amazon EKS cluster configuration. Your cluster continues to function during the update. The response output includes an update ID that you can use to track the status of your cluster update with DescribeUpdate"/>. You can use this API operation to enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see [Amazon EKS Cluster control plane logs](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) in the Amazon EKS User Guide . CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For more information, see [CloudWatch Pricing](http://aws.amazon.com/cloudwatch/pricing/). You can also use this API operation to enable or disable public and private access to your cluster's Kubernetes API server endpoint. By default, public access is enabled, and private access is disabled. For more information, see [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) in the Amazon EKS User Guide . You can also use this API operation to choose different subnets and security groups for the cluster. You must specify at least two subnets that are in different Availability Zones. You can't change which VPC the subnets are from, the subnets must be in the same VPC as the subnets that the cluster was created with. For more information about the VPC requirements, see [https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) in the Amazon EKS User Guide . Cluster updates are asynchronous, and they should finish within a few minutes. During an update, the cluster status moves to UPDATING (this status transition is eventually consistent). When the update is complete (either Failed or Successful), the cluster status moves to Active. /// /// - Parameter UpdateClusterConfigInput : [no documentation found] /// @@ -672,7 +811,7 @@ public protocol EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func updateClusterConfig(input: UpdateClusterConfigInput) async throws -> UpdateClusterConfigOutput /// Performs the `UpdateClusterVersion` operation on the `AWSWesleyFrontend` service. @@ -690,7 +829,7 @@ public protocol EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func updateClusterVersion(input: UpdateClusterVersionInput) async throws -> UpdateClusterVersionOutput /// Performs the `UpdateEksAnywhereSubscription` operation on the `AWSWesleyFrontend` service. @@ -707,7 +846,7 @@ public protocol EKSClientProtocol { /// - `ClientException` : These errors are usually caused by a client action. Actions can include using an action or resource on behalf of an [IAM principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html) that doesn't have permissions to use the action or resource or specifying an identifier that is not valid. /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func updateEksAnywhereSubscription(input: UpdateEksAnywhereSubscriptionInput) async throws -> UpdateEksAnywhereSubscriptionOutput /// Performs the `UpdateNodegroupConfig` operation on the `AWSWesleyFrontend` service. @@ -725,12 +864,12 @@ public protocol EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func updateNodegroupConfig(input: UpdateNodegroupConfigInput) async throws -> UpdateNodegroupConfigOutput /// Performs the `UpdateNodegroupVersion` operation on the `AWSWesleyFrontend` service. /// - /// Updates the Kubernetes version or AMI version of an Amazon EKS managed node group. You can update a node group using a launch template only if the node group was originally deployed with a launch template. If you need to update a custom AMI in a node group that was deployed with a launch template, then update your custom AMI, specify the new ID in a new version of the launch template, and then update the node group to the new version of the launch template. If you update without a launch template, then you can update to the latest available AMI version of a node group's current Kubernetes version by not specifying a Kubernetes version in the request. You can update to the latest AMI version of your cluster's current Kubernetes version by specifying your cluster's Kubernetes version in the request. For information about Linux versions, see [Amazon EKS optimized Amazon Linux AMI versions](https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html) in the Amazon EKS User Guide. For information about Windows versions, see [Amazon EKS optimized Windows AMI versions](https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html) in the Amazon EKS User Guide. You cannot roll back a node group to an earlier Kubernetes version or AMI version. When a node in a managed node group is terminated due to a scaling action or update, the pods in that node are drained first. Amazon EKS attempts to drain the nodes gracefully and will fail if it is unable to do so. You can force the update if Amazon EKS is unable to drain the nodes as a result of a pod disruption budget issue. + /// Updates the Kubernetes version or AMI version of an Amazon EKS managed node group. You can update a node group using a launch template only if the node group was originally deployed with a launch template. If you need to update a custom AMI in a node group that was deployed with a launch template, then update your custom AMI, specify the new ID in a new version of the launch template, and then update the node group to the new version of the launch template. If you update without a launch template, then you can update to the latest available AMI version of a node group's current Kubernetes version by not specifying a Kubernetes version in the request. You can update to the latest AMI version of your cluster's current Kubernetes version by specifying your cluster's Kubernetes version in the request. For information about Linux versions, see [Amazon EKS optimized Amazon Linux AMI versions](https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html) in the Amazon EKS User Guide. For information about Windows versions, see [Amazon EKS optimized Windows AMI versions](https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-versions-windows.html) in the Amazon EKS User Guide. You cannot roll back a node group to an earlier Kubernetes version or AMI version. When a node in a managed node group is terminated due to a scaling action or update, every Pod on that node is drained first. Amazon EKS attempts to drain the nodes gracefully and will fail if it is unable to do so. You can force the update if Amazon EKS is unable to drain the nodes as a result of a Pod disruption budget issue. /// /// - Parameter UpdateNodegroupVersionInput : [no documentation found] /// @@ -743,12 +882,12 @@ public protocol EKSClientProtocol { /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. /// - `ResourceInUseException` : The specified resource is in use. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func updateNodegroupVersion(input: UpdateNodegroupVersionInput) async throws -> UpdateNodegroupVersionOutput /// Performs the `UpdatePodIdentityAssociation` operation on the `AWSWesleyFrontend` service. /// - /// Updates a EKS Pod Identity association. Only the IAM role can be changed; an association can't be moved between clusters, namespaces, or service accounts. If you need to edit the namespace or service account, you need to remove the association and then create a new association with your desired settings. + /// Updates a EKS Pod Identity association. Only the IAM role can be changed; an association can't be moved between clusters, namespaces, or service accounts. If you need to edit the namespace or service account, you need to delete the association and then create a new association with your desired settings. /// /// - Parameter UpdatePodIdentityAssociationInput : [no documentation found] /// @@ -759,7 +898,7 @@ public protocol EKSClientProtocol { /// __Possible Exceptions:__ /// - `InvalidParameterException` : The specified parameter is invalid. Review the available parameters for the API request. /// - `InvalidRequestException` : The request is invalid given the state of the cluster. Check the state of the cluster and the associated operations. - /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. + /// - `ResourceNotFoundException` : The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. /// - `ServerException` : These errors are usually caused by a server-side issue. func updatePodIdentityAssociation(input: UpdatePodIdentityAssociationInput) async throws -> UpdatePodIdentityAssociationOutput } diff --git a/Sources/Services/AWSEKS/Paginators.swift b/Sources/Services/AWSEKS/Paginators.swift index 3d0055eace1..4b9c20efc18 100644 --- a/Sources/Services/AWSEKS/Paginators.swift +++ b/Sources/Services/AWSEKS/Paginators.swift @@ -37,6 +37,68 @@ extension PaginatorSequence where OperationStackInput == DescribeAddonVersionsIn return try await self.asyncCompactMap { item in item.addons } } } +extension EKSClient { + /// Paginate over `[ListAccessEntriesOutput]` 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 `[ListAccessEntriesInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListAccessEntriesOutput` + public func listAccessEntriesPaginated(input: ListAccessEntriesInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.listAccessEntries(input:)) + } +} + +extension ListAccessEntriesInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListAccessEntriesInput { + return ListAccessEntriesInput( + associatedPolicyArn: self.associatedPolicyArn, + clusterName: self.clusterName, + maxResults: self.maxResults, + nextToken: token + )} +} + +extension PaginatorSequence where OperationStackInput == ListAccessEntriesInput, OperationStackOutput == ListAccessEntriesOutput { + /// This paginator transforms the `AsyncSequence` returned by `listAccessEntriesPaginated` + /// to access the nested member `[Swift.String]` + /// - Returns: `[Swift.String]` + public func accessEntries() async throws -> [Swift.String] { + return try await self.asyncCompactMap { item in item.accessEntries } + } +} +extension EKSClient { + /// Paginate over `[ListAccessPoliciesOutput]` 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 `[ListAccessPoliciesInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListAccessPoliciesOutput` + public func listAccessPoliciesPaginated(input: ListAccessPoliciesInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.listAccessPolicies(input:)) + } +} + +extension ListAccessPoliciesInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListAccessPoliciesInput { + return ListAccessPoliciesInput( + maxResults: self.maxResults, + nextToken: token + )} +} + +extension PaginatorSequence where OperationStackInput == ListAccessPoliciesInput, OperationStackOutput == ListAccessPoliciesOutput { + /// This paginator transforms the `AsyncSequence` returned by `listAccessPoliciesPaginated` + /// to access the nested member `[EKSClientTypes.AccessPolicy]` + /// - Returns: `[EKSClientTypes.AccessPolicy]` + public func accessPolicies() async throws -> [EKSClientTypes.AccessPolicy] { + return try await self.asyncCompactMap { item in item.accessPolicies } + } +} extension EKSClient { /// Paginate over `[ListAddonsOutput]` results. /// @@ -68,6 +130,38 @@ extension PaginatorSequence where OperationStackInput == ListAddonsInput, Operat return try await self.asyncCompactMap { item in item.addons } } } +extension EKSClient { + /// Paginate over `[ListAssociatedAccessPoliciesOutput]` 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 `[ListAssociatedAccessPoliciesInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListAssociatedAccessPoliciesOutput` + public func listAssociatedAccessPoliciesPaginated(input: ListAssociatedAccessPoliciesInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.listAssociatedAccessPolicies(input:)) + } +} + +extension ListAssociatedAccessPoliciesInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListAssociatedAccessPoliciesInput { + return ListAssociatedAccessPoliciesInput( + clusterName: self.clusterName, + maxResults: self.maxResults, + nextToken: token, + principalArn: self.principalArn + )} +} + +extension PaginatorSequence where OperationStackInput == ListAssociatedAccessPoliciesInput, OperationStackOutput == ListAssociatedAccessPoliciesOutput { + /// This paginator transforms the `AsyncSequence` returned by `listAssociatedAccessPoliciesPaginated` + /// to access the nested member `[EKSClientTypes.AssociatedAccessPolicy]` + /// - Returns: `[EKSClientTypes.AssociatedAccessPolicy]` + public func associatedAccessPolicies() async throws -> [EKSClientTypes.AssociatedAccessPolicy] { + return try await self.asyncCompactMap { item in item.associatedAccessPolicies } + } +} extension EKSClient { /// Paginate over `[ListClustersOutput]` results. /// diff --git a/Sources/Services/AWSEKS/models/Models.swift b/Sources/Services/AWSEKS/models/Models.swift index ea9d0e3b38b..7ce2a4791c3 100644 --- a/Sources/Services/AWSEKS/models/Models.swift +++ b/Sources/Services/AWSEKS/models/Models.swift @@ -64,6 +64,51 @@ extension EKSClientTypes { } } +extension EKSClientTypes.AccessConfigResponse: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case authenticationMode + case bootstrapClusterCreatorAdminPermissions + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let authenticationMode = self.authenticationMode { + try encodeContainer.encode(authenticationMode.rawValue, forKey: .authenticationMode) + } + if let bootstrapClusterCreatorAdminPermissions = self.bootstrapClusterCreatorAdminPermissions { + try encodeContainer.encode(bootstrapClusterCreatorAdminPermissions, forKey: .bootstrapClusterCreatorAdminPermissions) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let bootstrapClusterCreatorAdminPermissionsDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .bootstrapClusterCreatorAdminPermissions) + bootstrapClusterCreatorAdminPermissions = bootstrapClusterCreatorAdminPermissionsDecoded + let authenticationModeDecoded = try containerValues.decodeIfPresent(EKSClientTypes.AuthenticationMode.self, forKey: .authenticationMode) + authenticationMode = authenticationModeDecoded + } +} + +extension EKSClientTypes { + /// The access configuration for the cluster. + public struct AccessConfigResponse: Swift.Equatable { + /// The current authentication mode of the cluster. + public var authenticationMode: EKSClientTypes.AuthenticationMode? + /// Specifies whether or not the cluster creator IAM principal was set as a cluster admin access entry during cluster creation time. + public var bootstrapClusterCreatorAdminPermissions: Swift.Bool? + + public init( + authenticationMode: EKSClientTypes.AuthenticationMode? = nil, + bootstrapClusterCreatorAdminPermissions: Swift.Bool? = nil + ) + { + self.authenticationMode = authenticationMode + self.bootstrapClusterCreatorAdminPermissions = bootstrapClusterCreatorAdminPermissions + } + } + +} + extension AccessDeniedException { 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(), @@ -120,6 +165,279 @@ extension AccessDeniedExceptionBody: Swift.Decodable { } } +extension EKSClientTypes.AccessEntry: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accessEntryArn + case clusterName + case createdAt + case kubernetesGroups + case modifiedAt + case principalArn + case tags + case type + case username + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let accessEntryArn = self.accessEntryArn { + try encodeContainer.encode(accessEntryArn, forKey: .accessEntryArn) + } + if let clusterName = self.clusterName { + try encodeContainer.encode(clusterName, forKey: .clusterName) + } + if let createdAt = self.createdAt { + try encodeContainer.encodeTimestamp(createdAt, format: .epochSeconds, forKey: .createdAt) + } + if let kubernetesGroups = kubernetesGroups { + var kubernetesGroupsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .kubernetesGroups) + for string0 in kubernetesGroups { + try kubernetesGroupsContainer.encode(string0) + } + } + if let modifiedAt = self.modifiedAt { + try encodeContainer.encodeTimestamp(modifiedAt, format: .epochSeconds, forKey: .modifiedAt) + } + if let principalArn = self.principalArn { + try encodeContainer.encode(principalArn, forKey: .principalArn) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let type = self.type { + try encodeContainer.encode(type, forKey: .type) + } + if let username = self.username { + try encodeContainer.encode(username, forKey: .username) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let clusterNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clusterName) + clusterName = clusterNameDecoded + let principalArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .principalArn) + principalArn = principalArnDecoded + let kubernetesGroupsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .kubernetesGroups) + var kubernetesGroupsDecoded0:[Swift.String]? = nil + if let kubernetesGroupsContainer = kubernetesGroupsContainer { + kubernetesGroupsDecoded0 = [Swift.String]() + for string0 in kubernetesGroupsContainer { + if let string0 = string0 { + kubernetesGroupsDecoded0?.append(string0) + } + } + } + kubernetesGroups = kubernetesGroupsDecoded0 + let accessEntryArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .accessEntryArn) + accessEntryArn = accessEntryArnDecoded + let createdAtDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdAt) + createdAt = createdAtDecoded + let modifiedAtDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .modifiedAt) + modifiedAt = modifiedAtDecoded + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 + let usernameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .username) + username = usernameDecoded + let typeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .type) + type = typeDecoded + } +} + +extension EKSClientTypes { + /// An access entry allows an IAM principal (user or role) to access your cluster. Access entries can replace the need to maintain the aws-authConfigMap for authentication. For more information about access entries, see [Access entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html) in the Amazon EKS User Guide. + public struct AccessEntry: Swift.Equatable { + /// The ARN of the access entry. + public var accessEntryArn: Swift.String? + /// The name of your cluster. + public var clusterName: Swift.String? + /// The Unix epoch timestamp at object creation. + public var createdAt: ClientRuntime.Date? + /// A name that you've specified in a Kubernetes RoleBinding or ClusterRoleBinding object so that Kubernetes authorizes the principalARN access to cluster objects. + public var kubernetesGroups: [Swift.String]? + /// The Unix epoch timestamp for the last modification to the object. + public var modifiedAt: ClientRuntime.Date? + /// The ARN of the IAM principal for the access entry. If you ever delete the IAM principal with this ARN, the access entry isn't automatically deleted. We recommend that you delete the access entry with an ARN for an IAM principal that you delete. If you don't delete the access entry and ever recreate the IAM principal, even if it has the same ARN, the access entry won't work. This is because even though the ARN is the same for the recreated IAM principal, the roleID or userID (you can see this with the Security Token Service GetCallerIdentity API) is different for the recreated IAM principal than it was for the original IAM principal. Even though you don't see the IAM principal's roleID or userID for an access entry, Amazon EKS stores it with the access entry. + public var principalArn: Swift.String? + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. + public var tags: [Swift.String:Swift.String]? + /// The type of the access entry. + public var type: Swift.String? + /// The name of a user that can authenticate to your cluster. + public var username: Swift.String? + + public init( + accessEntryArn: Swift.String? = nil, + clusterName: Swift.String? = nil, + createdAt: ClientRuntime.Date? = nil, + kubernetesGroups: [Swift.String]? = nil, + modifiedAt: ClientRuntime.Date? = nil, + principalArn: Swift.String? = nil, + tags: [Swift.String:Swift.String]? = nil, + type: Swift.String? = nil, + username: Swift.String? = nil + ) + { + self.accessEntryArn = accessEntryArn + self.clusterName = clusterName + self.createdAt = createdAt + self.kubernetesGroups = kubernetesGroups + self.modifiedAt = modifiedAt + self.principalArn = principalArn + self.tags = tags + self.type = type + self.username = username + } + } + +} + +extension EKSClientTypes.AccessPolicy: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case name + } + + 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 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 arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + } +} + +extension EKSClientTypes { + /// An access policy includes permissions that allow Amazon EKS to authorize an IAM principal to work with Kubernetes objects on your cluster. The policies are managed by Amazon EKS, but they're not IAM policies. You can't view the permissions in the policies using the API. The permissions for many of the policies are similar to the Kubernetes cluster-admin, admin, edit, and view cluster roles. For more information about these cluster roles, see [User-facing roles](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#user-facing-roles) in the Kubernetes documentation. To view the contents of the policies, see [Access policy permissions](https://docs.aws.amazon.com/eks/latest/userguide/access-policies.html#access-policy-permissions) in the Amazon EKS User Guide. + public struct AccessPolicy: Swift.Equatable { + /// The ARN of the access policy. + public var arn: Swift.String? + /// The name of the access policy. + public var name: Swift.String? + + public init( + arn: Swift.String? = nil, + name: Swift.String? = nil + ) + { + self.arn = arn + self.name = name + } + } + +} + +extension EKSClientTypes.AccessScope: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case namespaces + case type + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let namespaces = namespaces { + var namespacesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .namespaces) + for string0 in namespaces { + try namespacesContainer.encode(string0) + } + } + 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(EKSClientTypes.AccessScopeType.self, forKey: .type) + type = typeDecoded + let namespacesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .namespaces) + var namespacesDecoded0:[Swift.String]? = nil + if let namespacesContainer = namespacesContainer { + namespacesDecoded0 = [Swift.String]() + for string0 in namespacesContainer { + if let string0 = string0 { + namespacesDecoded0?.append(string0) + } + } + } + namespaces = namespacesDecoded0 + } +} + +extension EKSClientTypes { + /// The scope of an AccessPolicy that's associated to an AccessEntry. + public struct AccessScope: Swift.Equatable { + /// A Kubernetes namespace that an access policy is scoped to. A value is required if you specified namespace for Type. + public var namespaces: [Swift.String]? + /// The scope type of an access policy. + public var type: EKSClientTypes.AccessScopeType? + + public init( + namespaces: [Swift.String]? = nil, + type: EKSClientTypes.AccessScopeType? = nil + ) + { + self.namespaces = namespaces + self.type = type + } + } + +} + +extension EKSClientTypes { + public enum AccessScopeType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case cluster + case namespace + case sdkUnknown(Swift.String) + + public static var allCases: [AccessScopeType] { + return [ + .cluster, + .namespace, + .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 .cluster: return "cluster" + case .namespace: return "namespace" + 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 = AccessScopeType(rawValue: rawValue) ?? AccessScopeType.sdkUnknown(rawValue) + } + } +} + extension EKSClientTypes.Addon: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case addonArn @@ -238,27 +556,27 @@ extension EKSClientTypes { public var addonName: Swift.String? /// The version of the add-on. public var addonVersion: Swift.String? - /// The name of the cluster. + /// The name of your cluster. public var clusterName: Swift.String? /// The configuration values that you provided. public var configurationValues: Swift.String? - /// The date and time that the add-on was created. + /// The Unix epoch timestamp at object creation. public var createdAt: ClientRuntime.Date? /// An object that represents the health of the add-on. public var health: EKSClientTypes.AddonHealth? /// Information about an Amazon EKS add-on from the Amazon Web Services Marketplace. public var marketplaceInformation: EKSClientTypes.MarketplaceInformation? - /// The date and time that the add-on was last modified. + /// The Unix epoch timestamp for the last modification to the object. public var modifiedAt: ClientRuntime.Date? /// The owner of the add-on. public var owner: Swift.String? /// The publisher of the add-on. public var publisher: Swift.String? - /// The Amazon Resource Name (ARN) of the IAM role that's bound to the Kubernetes service account that the add-on uses. + /// The Amazon Resource Name (ARN) of the IAM role that's bound to the Kubernetes ServiceAccount object that the add-on uses. public var serviceAccountRoleArn: Swift.String? /// The status of the add-on. public var status: EKSClientTypes.AddonStatus? - /// The metadata that you apply to the add-on to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. Add-on tags do not propagate to any other resources associated with the cluster. + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. public var tags: [Swift.String:Swift.String]? public init( @@ -697,6 +1015,157 @@ extension EKSClientTypes { } +extension AssociateAccessPolicyInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accessScope + case policyArn + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let accessScope = self.accessScope { + try encodeContainer.encode(accessScope, forKey: .accessScope) + } + if let policyArn = self.policyArn { + try encodeContainer.encode(policyArn, forKey: .policyArn) + } + } +} + +extension AssociateAccessPolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let clusterName = clusterName else { + return nil + } + guard let principalArn = principalArn else { + return nil + } + return "/clusters/\(clusterName.urlPercentEncoding())/access-entries/\(principalArn.urlPercentEncoding())/access-policies" + } +} + +public struct AssociateAccessPolicyInput: Swift.Equatable { + /// The scope for the AccessPolicy. You can scope access policies to an entire cluster or to specific Kubernetes namespaces. + /// This member is required. + public var accessScope: EKSClientTypes.AccessScope? + /// The name of your cluster. + /// This member is required. + public var clusterName: Swift.String? + /// The ARN of the AccessPolicy that you're associating. For a list of ARNs, use ListAccessPolicies. + /// This member is required. + public var policyArn: Swift.String? + /// The Amazon Resource Name (ARN) of the IAM user or role for the AccessEntry that you're associating the access policy to. + /// This member is required. + public var principalArn: Swift.String? + + public init( + accessScope: EKSClientTypes.AccessScope? = nil, + clusterName: Swift.String? = nil, + policyArn: Swift.String? = nil, + principalArn: Swift.String? = nil + ) + { + self.accessScope = accessScope + self.clusterName = clusterName + self.policyArn = policyArn + self.principalArn = principalArn + } +} + +struct AssociateAccessPolicyInputBody: Swift.Equatable { + let policyArn: Swift.String? + let accessScope: EKSClientTypes.AccessScope? +} + +extension AssociateAccessPolicyInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accessScope + case policyArn + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let policyArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policyArn) + policyArn = policyArnDecoded + let accessScopeDecoded = try containerValues.decodeIfPresent(EKSClientTypes.AccessScope.self, forKey: .accessScope) + accessScope = accessScopeDecoded + } +} + +extension AssociateAccessPolicyOutput: 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: AssociateAccessPolicyOutputBody = try responseDecoder.decode(responseBody: data) + self.associatedAccessPolicy = output.associatedAccessPolicy + self.clusterName = output.clusterName + self.principalArn = output.principalArn + } else { + self.associatedAccessPolicy = nil + self.clusterName = nil + self.principalArn = nil + } + } +} + +public struct AssociateAccessPolicyOutput: Swift.Equatable { + /// The AccessPolicy and scope associated to the AccessEntry. + public var associatedAccessPolicy: EKSClientTypes.AssociatedAccessPolicy? + /// The name of your cluster. + public var clusterName: Swift.String? + /// The ARN of the IAM principal for the AccessEntry. + public var principalArn: Swift.String? + + public init( + associatedAccessPolicy: EKSClientTypes.AssociatedAccessPolicy? = nil, + clusterName: Swift.String? = nil, + principalArn: Swift.String? = nil + ) + { + self.associatedAccessPolicy = associatedAccessPolicy + self.clusterName = clusterName + self.principalArn = principalArn + } +} + +struct AssociateAccessPolicyOutputBody: Swift.Equatable { + let clusterName: Swift.String? + let principalArn: Swift.String? + let associatedAccessPolicy: EKSClientTypes.AssociatedAccessPolicy? +} + +extension AssociateAccessPolicyOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case associatedAccessPolicy + case clusterName + case principalArn + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let clusterNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clusterName) + clusterName = clusterNameDecoded + let principalArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .principalArn) + principalArn = principalArnDecoded + let associatedAccessPolicyDecoded = try containerValues.decodeIfPresent(EKSClientTypes.AssociatedAccessPolicy.self, forKey: .associatedAccessPolicy) + associatedAccessPolicy = associatedAccessPolicyDecoded + } +} + +enum AssociateAccessPolicyOutputError: 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 "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 "ServerException": return try await ServerException(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 AssociateEncryptionConfigInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientRequestToken @@ -727,9 +1196,9 @@ extension AssociateEncryptionConfigInput: ClientRuntime.URLPathProvider { } public struct AssociateEncryptionConfigInput: Swift.Equatable { - /// The client request token you are using with the encryption configuration. + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? - /// The name of the cluster that you are associating with encryption configuration. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? /// The configuration you are using for encryption. @@ -867,15 +1336,15 @@ extension AssociateIdentityProviderConfigInput: ClientRuntime.URLPathProvider { } public struct AssociateIdentityProviderConfigInput: Swift.Equatable { - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? - /// The name of the cluster to associate the configuration to. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? /// An object representing an OpenID Connect (OIDC) identity provider configuration. /// This member is required. public var oidc: EKSClientTypes.OidcIdentityProviderConfigRequest? - /// The metadata to apply to the configuration to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. public var tags: [Swift.String:Swift.String]? public init( @@ -1000,6 +1469,106 @@ enum AssociateIdentityProviderConfigOutputError: ClientRuntime.HttpResponseError } } +extension EKSClientTypes.AssociatedAccessPolicy: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accessScope + case associatedAt + case modifiedAt + case policyArn + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let accessScope = self.accessScope { + try encodeContainer.encode(accessScope, forKey: .accessScope) + } + if let associatedAt = self.associatedAt { + try encodeContainer.encodeTimestamp(associatedAt, format: .epochSeconds, forKey: .associatedAt) + } + if let modifiedAt = self.modifiedAt { + try encodeContainer.encodeTimestamp(modifiedAt, format: .epochSeconds, forKey: .modifiedAt) + } + if let policyArn = self.policyArn { + try encodeContainer.encode(policyArn, forKey: .policyArn) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let policyArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policyArn) + policyArn = policyArnDecoded + let accessScopeDecoded = try containerValues.decodeIfPresent(EKSClientTypes.AccessScope.self, forKey: .accessScope) + accessScope = accessScopeDecoded + let associatedAtDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .associatedAt) + associatedAt = associatedAtDecoded + let modifiedAtDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .modifiedAt) + modifiedAt = modifiedAtDecoded + } +} + +extension EKSClientTypes { + /// An access policy association. + public struct AssociatedAccessPolicy: Swift.Equatable { + /// The scope of the access policy. + public var accessScope: EKSClientTypes.AccessScope? + /// The date and time the AccessPolicy was associated with an AccessEntry. + public var associatedAt: ClientRuntime.Date? + /// The Unix epoch timestamp for the last modification to the object. + public var modifiedAt: ClientRuntime.Date? + /// The ARN of the AccessPolicy. + public var policyArn: Swift.String? + + public init( + accessScope: EKSClientTypes.AccessScope? = nil, + associatedAt: ClientRuntime.Date? = nil, + modifiedAt: ClientRuntime.Date? = nil, + policyArn: Swift.String? = nil + ) + { + self.accessScope = accessScope + self.associatedAt = associatedAt + self.modifiedAt = modifiedAt + self.policyArn = policyArn + } + } + +} + +extension EKSClientTypes { + public enum AuthenticationMode: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case api + case apiAndConfigMap + case configMap + case sdkUnknown(Swift.String) + + public static var allCases: [AuthenticationMode] { + return [ + .api, + .apiAndConfigMap, + .configMap, + .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 .api: return "API" + case .apiAndConfigMap: return "API_AND_CONFIG_MAP" + case .configMap: return "CONFIG_MAP" + 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 = AuthenticationMode(rawValue: rawValue) ?? AuthenticationMode.sdkUnknown(rawValue) + } + } +} + extension EKSClientTypes.AutoScalingGroup: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case name @@ -1256,6 +1825,7 @@ extension ClientExceptionBody: Swift.Decodable { extension EKSClientTypes.Cluster: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case accessConfig case arn case certificateAuthority case clientRequestToken @@ -1280,6 +1850,9 @@ extension EKSClientTypes.Cluster: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let accessConfig = self.accessConfig { + try encodeContainer.encode(accessConfig, forKey: .accessConfig) + } if let arn = self.arn { try encodeContainer.encode(arn, forKey: .arn) } @@ -1408,21 +1981,25 @@ extension EKSClientTypes.Cluster: Swift.Codable { health = healthDecoded let outpostConfigDecoded = try containerValues.decodeIfPresent(EKSClientTypes.OutpostConfigResponse.self, forKey: .outpostConfig) outpostConfig = outpostConfigDecoded + let accessConfigDecoded = try containerValues.decodeIfPresent(EKSClientTypes.AccessConfigResponse.self, forKey: .accessConfig) + accessConfig = accessConfigDecoded } } extension EKSClientTypes { /// An object representing an Amazon EKS cluster. public struct Cluster: Swift.Equatable { + /// The access configuration for the cluster. + public var accessConfig: EKSClientTypes.AccessConfigResponse? /// The Amazon Resource Name (ARN) of the cluster. public var arn: Swift.String? /// The certificate-authority-data for your cluster. public var certificateAuthority: EKSClientTypes.Certificate? - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? /// The configuration used to connect to a cluster for registration. public var connectorConfig: EKSClientTypes.ConnectorConfigResponse? - /// The Unix epoch timestamp in seconds for when the cluster was created. + /// The Unix epoch timestamp at object creation. public var createdAt: ClientRuntime.Date? /// The encryption configuration for the cluster. public var encryptionConfig: [EKSClientTypes.EncryptionConfig]? @@ -1438,24 +2015,25 @@ extension EKSClientTypes { public var kubernetesNetworkConfig: EKSClientTypes.KubernetesNetworkConfigResponse? /// The logging configuration for your cluster. public var logging: EKSClientTypes.Logging? - /// The name of the cluster. + /// The name of your cluster. public var name: Swift.String? /// An object representing the configuration of your local Amazon EKS cluster on an Amazon Web Services Outpost. This object isn't available for clusters on the Amazon Web Services cloud. public var outpostConfig: EKSClientTypes.OutpostConfigResponse? - /// The platform version of your Amazon EKS cluster. For more information, see [Platform Versions](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) in the Amazon EKS User Guide . + /// The platform version of your Amazon EKS cluster. For more information about clusters deployed on the Amazon Web Services Cloud, see [Platform versions](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) in the Amazon EKS User Guide . For more information about local clusters deployed on an Outpost, see [Amazon EKS local cluster platform versions](https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-platform-versions.html) in the Amazon EKS User Guide . public var platformVersion: Swift.String? - /// The VPC configuration used by the cluster control plane. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. + /// The VPC configuration used by the cluster control plane. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster security group considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. public var resourcesVpcConfig: EKSClientTypes.VpcConfigResponse? /// The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to Amazon Web Services API operations on your behalf. public var roleArn: Swift.String? /// The current status of the cluster. public var status: EKSClientTypes.ClusterStatus? - /// The metadata that you apply to the cluster to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. Cluster tags do not propagate to any other resources associated with the cluster. + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. public var tags: [Swift.String:Swift.String]? /// The Kubernetes server version for the cluster. public var version: Swift.String? public init( + accessConfig: EKSClientTypes.AccessConfigResponse? = nil, arn: Swift.String? = nil, certificateAuthority: EKSClientTypes.Certificate? = nil, clientRequestToken: Swift.String? = nil, @@ -1478,6 +2056,7 @@ extension EKSClientTypes { version: Swift.String? = nil ) { + self.accessConfig = accessConfig self.arn = arn self.certificateAuthority = certificateAuthority self.clientRequestToken = clientRequestToken @@ -2021,74 +2600,315 @@ extension EKSClientTypes { } -extension EKSClientTypes.ControlPlanePlacementRequest: Swift.Codable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case groupName +extension EKSClientTypes.ControlPlanePlacementRequest: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case groupName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let groupName = self.groupName { + try encodeContainer.encode(groupName, forKey: .groupName) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let groupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .groupName) + groupName = groupNameDecoded + } +} + +extension EKSClientTypes { + /// The placement configuration for all the control plane instances of your local Amazon EKS cluster on an Amazon Web Services Outpost. For more information, see [Capacity considerations](https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html) in the Amazon EKS User Guide. + public struct ControlPlanePlacementRequest: Swift.Equatable { + /// The name of the placement group for the Kubernetes control plane instances. This setting can't be changed after cluster creation. + public var groupName: Swift.String? + + public init( + groupName: Swift.String? = nil + ) + { + self.groupName = groupName + } + } + +} + +extension EKSClientTypes.ControlPlanePlacementResponse: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case groupName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let groupName = self.groupName { + try encodeContainer.encode(groupName, forKey: .groupName) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let groupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .groupName) + groupName = groupNameDecoded + } +} + +extension EKSClientTypes { + /// The placement configuration for all the control plane instances of your local Amazon EKS cluster on an Amazon Web Services Outpost. For more information, see [Capacity considerations](https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html) in the Amazon EKS User Guide. + public struct ControlPlanePlacementResponse: Swift.Equatable { + /// The name of the placement group for the Kubernetes control plane instances. + public var groupName: Swift.String? + + public init( + groupName: Swift.String? = nil + ) + { + self.groupName = groupName + } + } + +} + +extension EKSClientTypes.CreateAccessConfigRequest: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case authenticationMode + case bootstrapClusterCreatorAdminPermissions + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let authenticationMode = self.authenticationMode { + try encodeContainer.encode(authenticationMode.rawValue, forKey: .authenticationMode) + } + if let bootstrapClusterCreatorAdminPermissions = self.bootstrapClusterCreatorAdminPermissions { + try encodeContainer.encode(bootstrapClusterCreatorAdminPermissions, forKey: .bootstrapClusterCreatorAdminPermissions) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let bootstrapClusterCreatorAdminPermissionsDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .bootstrapClusterCreatorAdminPermissions) + bootstrapClusterCreatorAdminPermissions = bootstrapClusterCreatorAdminPermissionsDecoded + let authenticationModeDecoded = try containerValues.decodeIfPresent(EKSClientTypes.AuthenticationMode.self, forKey: .authenticationMode) + authenticationMode = authenticationModeDecoded + } +} + +extension EKSClientTypes { + /// The access configuration information for the cluster. + public struct CreateAccessConfigRequest: Swift.Equatable { + /// The desired authentication mode for the cluster. If you create a cluster by using the EKS API, Amazon Web Services SDKs, or CloudFormation, the default is CONFIG_MAP. If you create the cluster by using the Amazon Web Services Management Console, the default value is API_AND_CONFIG_MAP. + public var authenticationMode: EKSClientTypes.AuthenticationMode? + /// Specifies whether or not the cluster creator IAM principal was set as a cluster admin access entry during cluster creation time. The default value is true. + public var bootstrapClusterCreatorAdminPermissions: Swift.Bool? + + public init( + authenticationMode: EKSClientTypes.AuthenticationMode? = nil, + bootstrapClusterCreatorAdminPermissions: Swift.Bool? = nil + ) + { + self.authenticationMode = authenticationMode + self.bootstrapClusterCreatorAdminPermissions = bootstrapClusterCreatorAdminPermissions + } + } + +} + +extension CreateAccessEntryInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientRequestToken + case kubernetesGroups + case principalArn + case tags + case type + case username + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let clientRequestToken = self.clientRequestToken { + try encodeContainer.encode(clientRequestToken, forKey: .clientRequestToken) + } + if let kubernetesGroups = kubernetesGroups { + var kubernetesGroupsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .kubernetesGroups) + for string0 in kubernetesGroups { + try kubernetesGroupsContainer.encode(string0) + } + } + if let principalArn = self.principalArn { + try encodeContainer.encode(principalArn, forKey: .principalArn) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let type = self.type { + try encodeContainer.encode(type, forKey: .type) + } + if let username = self.username { + try encodeContainer.encode(username, forKey: .username) + } + } +} + +extension CreateAccessEntryInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let clusterName = clusterName else { + return nil + } + return "/clusters/\(clusterName.urlPercentEncoding())/access-entries" + } +} + +public struct CreateAccessEntryInput: Swift.Equatable { + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + public var clientRequestToken: Swift.String? + /// The name of your cluster. + /// This member is required. + public var clusterName: Swift.String? + /// The value for name that you've specified for kind: Group as a subject in a Kubernetes RoleBinding or ClusterRoleBinding object. Amazon EKS doesn't confirm that the value for name exists in any bindings on your cluster. You can specify one or more names. Kubernetes authorizes the principalArn of the access entry to access any cluster objects that you've specified in a Kubernetes Role or ClusterRole object that is also specified in a binding's roleRef. For more information about creating Kubernetes RoleBinding, ClusterRoleBinding, Role, or ClusterRole objects, see [Using RBAC Authorization in the Kubernetes documentation](https://kubernetes.io/docs/reference/access-authn-authz/rbac/). If you want Amazon EKS to authorize the principalArn (instead of, or in addition to Kubernetes authorizing the principalArn), you can associate one or more access policies to the access entry using AssociateAccessPolicy. If you associate any access policies, the principalARN has all permissions assigned in the associated access policies and all permissions in any Kubernetes Role or ClusterRole objects that the group names are bound to. + public var kubernetesGroups: [Swift.String]? + /// The ARN of the IAM principal for the AccessEntry. You can specify one ARN for each access entry. You can't specify the same ARN in more than one access entry. This value can't be changed after access entry creation. [IAM best practices](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) recommend using IAM roles with temporary credentials, rather than IAM users with long-term credentials. + /// This member is required. + public var principalArn: Swift.String? + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. + public var tags: [Swift.String:Swift.String]? + /// If the principalArn is for an IAM role that's used for self-managed Amazon EC2 nodes, specify EC2_LINUX or EC2_WINDOWS. Amazon EKS grants the necessary permissions to the node for you. If the principalArn is for any other purpose, specify STANDARD. If you don't specify a value, Amazon EKS sets the value to STANDARD. It's unnecessary to create access entries for IAM roles used with Fargate profiles or managed Amazon EC2 nodes, because Amazon EKS creates entries in the aws-authConfigMap for the roles. You can't change this value once you've created the access entry. If you set the value to EC2_LINUX or EC2_WINDOWS, you can't specify values for kubernetesGroups, or associate an AccessPolicy to the access entry. + public var type: Swift.String? + /// The username to authenticate to Kubernetes with. We recommend not specifying a username and letting Amazon EKS specify it for you. For more information about the value Amazon EKS specifies for you, or constraints before specifying your own username, see [Creating access entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html#creating-access-entries) in the Amazon EKS User Guide. + public var username: Swift.String? + + public init( + clientRequestToken: Swift.String? = nil, + clusterName: Swift.String? = nil, + kubernetesGroups: [Swift.String]? = nil, + principalArn: Swift.String? = nil, + tags: [Swift.String:Swift.String]? = nil, + type: Swift.String? = nil, + username: Swift.String? = nil + ) + { + self.clientRequestToken = clientRequestToken + self.clusterName = clusterName + self.kubernetesGroups = kubernetesGroups + self.principalArn = principalArn + self.tags = tags + self.type = type + self.username = username } +} - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let groupName = self.groupName { - try encodeContainer.encode(groupName, forKey: .groupName) - } +struct CreateAccessEntryInputBody: Swift.Equatable { + let principalArn: Swift.String? + let kubernetesGroups: [Swift.String]? + let tags: [Swift.String:Swift.String]? + let clientRequestToken: Swift.String? + let username: Swift.String? + let type: Swift.String? +} + +extension CreateAccessEntryInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientRequestToken + case kubernetesGroups + case principalArn + case tags + case type + case username } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let groupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .groupName) - groupName = groupNameDecoded + let principalArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .principalArn) + principalArn = principalArnDecoded + let kubernetesGroupsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .kubernetesGroups) + var kubernetesGroupsDecoded0:[Swift.String]? = nil + if let kubernetesGroupsContainer = kubernetesGroupsContainer { + kubernetesGroupsDecoded0 = [Swift.String]() + for string0 in kubernetesGroupsContainer { + if let string0 = string0 { + kubernetesGroupsDecoded0?.append(string0) + } + } + } + kubernetesGroups = kubernetesGroupsDecoded0 + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 + let clientRequestTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientRequestToken) + clientRequestToken = clientRequestTokenDecoded + let usernameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .username) + username = usernameDecoded + let typeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .type) + type = typeDecoded } } -extension EKSClientTypes { - /// The placement configuration for all the control plane instances of your local Amazon EKS cluster on an Amazon Web Services Outpost. For more information, see [Capacity considerations](https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html) in the Amazon EKS User Guide. - public struct ControlPlanePlacementRequest: Swift.Equatable { - /// The name of the placement group for the Kubernetes control plane instances. This setting can't be changed after cluster creation. - public var groupName: Swift.String? - - public init( - groupName: Swift.String? = nil - ) - { - self.groupName = groupName +extension CreateAccessEntryOutput: 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: CreateAccessEntryOutputBody = try responseDecoder.decode(responseBody: data) + self.accessEntry = output.accessEntry + } else { + self.accessEntry = nil } } - } -extension EKSClientTypes.ControlPlanePlacementResponse: Swift.Codable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case groupName +public struct CreateAccessEntryOutput: Swift.Equatable { + /// An access entry allows an IAM principal (user or role) to access your cluster. Access entries can replace the need to maintain the aws-authConfigMap for authentication. For more information about access entries, see [Access entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html) in the Amazon EKS User Guide. + public var accessEntry: EKSClientTypes.AccessEntry? + + public init( + accessEntry: EKSClientTypes.AccessEntry? = nil + ) + { + self.accessEntry = accessEntry } +} - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let groupName = self.groupName { - try encodeContainer.encode(groupName, forKey: .groupName) - } +struct CreateAccessEntryOutputBody: Swift.Equatable { + let accessEntry: EKSClientTypes.AccessEntry? +} + +extension CreateAccessEntryOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accessEntry } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let groupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .groupName) - groupName = groupNameDecoded + let accessEntryDecoded = try containerValues.decodeIfPresent(EKSClientTypes.AccessEntry.self, forKey: .accessEntry) + accessEntry = accessEntryDecoded } } -extension EKSClientTypes { - /// The placement configuration for all the control plane instances of your local Amazon EKS cluster on an Amazon Web Services Outpost. For more information, see [Capacity considerations](https://docs.aws.amazon.com/eks/latest/userguide/eks-outposts-capacity-considerations.html) in the Amazon EKS User Guide. - public struct ControlPlanePlacementResponse: Swift.Equatable { - /// The name of the placement group for the Kubernetes control plane instances. - public var groupName: Swift.String? - - public init( - groupName: Swift.String? = nil - ) - { - self.groupName = groupName +enum CreateAccessEntryOutputError: 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 "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 "ResourceInUseException": return try await ResourceInUseException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceLimitExceededException": return try await ResourceLimitExceededException(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 "ServerException": return try await ServerException(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 CreateAddonInput: Swift.Encodable { @@ -2141,17 +2961,17 @@ extension CreateAddonInput: ClientRuntime.URLPathProvider { } public struct CreateAddonInput: Swift.Equatable { - /// The name of the add-on. The name must match one of the names that [DescribeAddonVersions](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html) returns. + /// The name of the add-on. The name must match one of the names returned by DescribeAddonVersions. /// This member is required. public var addonName: Swift.String? /// The version of the add-on. The version must match one of the versions returned by [DescribeAddonVersions](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html). public var addonVersion: Swift.String? /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? - /// The name of the cluster to create the add-on for. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? - /// The set of configuration values for the add-on that's created. The values that you provide are validated against the schema in [DescribeAddonConfiguration](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonConfiguration.html). + /// The set of configuration values for the add-on that's created. The values that you provide are validated against the schema returned by DescribeAddonConfiguration. public var configurationValues: Swift.String? /// How to resolve field value conflicts for an Amazon EKS add-on. Conflicts are handled based on the value you choose: /// @@ -2166,7 +2986,7 @@ public struct CreateAddonInput: Swift.Equatable { public var resolveConflicts: EKSClientTypes.ResolveConflicts? /// The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role. For more information, see [Amazon EKS node IAM role](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) in the Amazon EKS User Guide. To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see [Enabling IAM roles for service accounts on your cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) in the Amazon EKS User Guide. public var serviceAccountRoleArn: Swift.String? - /// The metadata to apply to the cluster to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. public var tags: [Swift.String:Swift.String]? public init( @@ -2298,6 +3118,7 @@ enum CreateAddonOutputError: ClientRuntime.HttpResponseErrorBinding { extension CreateClusterInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case accessConfig case clientRequestToken case encryptionConfig case kubernetesNetworkConfig @@ -2312,6 +3133,9 @@ extension CreateClusterInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let accessConfig = self.accessConfig { + try encodeContainer.encode(accessConfig, forKey: .accessConfig) + } if let clientRequestToken = self.clientRequestToken { try encodeContainer.encode(clientRequestToken, forKey: .clientRequestToken) } @@ -2358,7 +3182,9 @@ extension CreateClusterInput: ClientRuntime.URLPathProvider { } public struct CreateClusterInput: Swift.Equatable { - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// The access configuration for the cluster. + public var accessConfig: EKSClientTypes.CreateAccessConfigRequest? + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? /// The encryption configuration for the cluster. public var encryptionConfig: [EKSClientTypes.EncryptionConfig]? @@ -2377,12 +3203,13 @@ public struct CreateClusterInput: Swift.Equatable { /// The Amazon Resource Name (ARN) of the IAM role that provides permissions for the Kubernetes control plane to make calls to Amazon Web Services API operations on your behalf. For more information, see [Amazon EKS Service IAM Role](https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html) in the Amazon EKS User Guide . /// This member is required. public var roleArn: Swift.String? - /// The metadata to apply to the cluster to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. public var tags: [Swift.String:Swift.String]? /// The desired Kubernetes version for your cluster. If you don't specify a value here, the default version available in Amazon EKS is used. The default version might not be the latest version available. public var version: Swift.String? public init( + accessConfig: EKSClientTypes.CreateAccessConfigRequest? = nil, clientRequestToken: Swift.String? = nil, encryptionConfig: [EKSClientTypes.EncryptionConfig]? = nil, kubernetesNetworkConfig: EKSClientTypes.KubernetesNetworkConfigRequest? = nil, @@ -2395,6 +3222,7 @@ public struct CreateClusterInput: Swift.Equatable { version: Swift.String? = nil ) { + self.accessConfig = accessConfig self.clientRequestToken = clientRequestToken self.encryptionConfig = encryptionConfig self.kubernetesNetworkConfig = kubernetesNetworkConfig @@ -2419,10 +3247,12 @@ struct CreateClusterInputBody: Swift.Equatable { let tags: [Swift.String:Swift.String]? let encryptionConfig: [EKSClientTypes.EncryptionConfig]? let outpostConfig: EKSClientTypes.OutpostConfigRequest? + let accessConfig: EKSClientTypes.CreateAccessConfigRequest? } extension CreateClusterInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case accessConfig case clientRequestToken case encryptionConfig case kubernetesNetworkConfig @@ -2475,6 +3305,8 @@ extension CreateClusterInputBody: Swift.Decodable { encryptionConfig = encryptionConfigDecoded0 let outpostConfigDecoded = try containerValues.decodeIfPresent(EKSClientTypes.OutpostConfigRequest.self, forKey: .outpostConfig) outpostConfig = outpostConfigDecoded + let accessConfigDecoded = try containerValues.decodeIfPresent(EKSClientTypes.CreateAccessConfigRequest.self, forKey: .accessConfig) + accessConfig = accessConfigDecoded } } @@ -2584,7 +3416,7 @@ extension CreateEksAnywhereSubscriptionInput: ClientRuntime.URLPathProvider { public struct CreateEksAnywhereSubscriptionInput: Swift.Equatable { /// A boolean indicating whether the subscription auto renews at the end of the term. public var autoRenew: Swift.Bool? - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? /// The number of licenses to purchase with the subscription. Valid values are between 1 and 100. This value can't be changed after creating the subscription. public var licenseQuantity: Swift.Int? @@ -2775,22 +3607,22 @@ extension CreateFargateProfileInput: ClientRuntime.URLPathProvider { } public struct CreateFargateProfileInput: Swift.Equatable { - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? - /// The name of the Amazon EKS cluster to apply the Fargate profile to. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? /// The name of the Fargate profile. /// This member is required. public var fargateProfileName: Swift.String? - /// The Amazon Resource Name (ARN) of the pod execution role to use for pods that match the selectors in the Fargate profile. The pod execution role allows Fargate infrastructure to register with your cluster as a node, and it provides read access to Amazon ECR image repositories. For more information, see [Pod Execution Role](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) in the Amazon EKS User Guide. + /// The Amazon Resource Name (ARN) of the Pod execution role to use for a Pod that matches the selectors in the Fargate profile. The Pod execution role allows Fargate infrastructure to register with your cluster as a node, and it provides read access to Amazon ECR image repositories. For more information, see [Pod] execution role(https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) in the Amazon EKS User Guide. /// This member is required. public var podExecutionRoleArn: Swift.String? - /// The selectors to match for pods to use this Fargate profile. Each selector must have an associated namespace. Optionally, you can also specify labels for a namespace. You may specify up to five selectors in a Fargate profile. + /// The selectors to match for a Pod to use this Fargate profile. Each selector must have an associated Kubernetes namespace. Optionally, you can also specify labels for a namespace. You may specify up to five selectors in a Fargate profile. public var selectors: [EKSClientTypes.FargateProfileSelector]? - /// The IDs of subnets to launch your pods into. At this time, pods running on Fargate are not assigned public IP addresses, so only private subnets (with no direct route to an Internet Gateway) are accepted for this parameter. + /// The IDs of subnets to launch a Pod into. A Pod running on Fargate isn't assigned a public IP address, so only private subnets (with no direct route to an Internet Gateway) are accepted for this parameter. public var subnets: [Swift.String]? - /// The metadata to apply to the Fargate profile to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. Fargate profile tags do not propagate to any other resources associated with the Fargate profile, such as the pods that are scheduled with it. + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. public var tags: [Swift.String:Swift.String]? public init( @@ -3038,16 +3870,16 @@ public struct CreateNodegroupInput: Swift.Equatable { public var amiType: EKSClientTypes.AMITypes? /// The capacity type for your node group. public var capacityType: EKSClientTypes.CapacityTypes? - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? - /// The name of the cluster to create the node group in. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? /// The root device disk size (in GiB) for your node group instances. The default disk size is 20 GiB for Linux and Bottlerocket. The default disk size is 50 GiB for Windows. If you specify launchTemplate, then don't specify diskSize, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see [Launch template support](https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) in the Amazon EKS User Guide. public var diskSize: Swift.Int? /// Specify the instance types for a node group. If you specify a GPU instance type, make sure to also specify an applicable GPU AMI type with the amiType parameter. If you specify launchTemplate, then you can specify zero or one instance type in your launch template or you can specify 0-20 instance types for instanceTypes. If however, you specify an instance type in your launch template and specify any instanceTypes, the node group deployment will fail. If you don't specify an instance type in a launch template or for instanceTypes, then t3.medium is used, by default. If you specify Spot for capacityType, then we recommend specifying multiple values for instanceTypes. For more information, see [Managed node group capacity types](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html#managed-node-group-capacity-types) and [Launch template support](https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) in the Amazon EKS User Guide. public var instanceTypes: [Swift.String]? - /// The Kubernetes labels to be applied to the nodes in the node group when they are created. + /// The Kubernetes labels to apply to the nodes in the node group when they are created. public var labels: [Swift.String:Swift.String]? /// An object representing a node group's launch template specification. If specified, then do not specify instanceTypes, diskSize, or remoteAccess and make sure that the launch template meets the requirements in launchTemplateSpecification. public var launchTemplate: EKSClientTypes.LaunchTemplateSpecification? @@ -3066,7 +3898,7 @@ public struct CreateNodegroupInput: Swift.Equatable { /// The subnets to use for the Auto Scaling group that is created for your node group. If you specify launchTemplate, then don't specify [SubnetId](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html) in your launch template, or the node group deployment will fail. For more information about using launch templates with Amazon EKS, see [Launch template support](https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) in the Amazon EKS User Guide. /// This member is required. public var subnets: [Swift.String]? - /// The metadata to apply to the node group to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. Node group tags do not propagate to any other resources associated with the node group, such as the Amazon EC2 instances or subnets. + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. public var tags: [Swift.String:Swift.String]? /// The Kubernetes taints to be applied to the nodes in the node group. For more information, see [Node taints on managed node groups](https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html). public var taints: [EKSClientTypes.Taint]? @@ -3341,7 +4173,7 @@ extension CreatePodIdentityAssociationInput: ClientRuntime.URLPathProvider { } public struct CreatePodIdentityAssociationInput: Swift.Equatable { - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? /// The name of the cluster to create the association in. /// This member is required. @@ -3355,7 +4187,7 @@ public struct CreatePodIdentityAssociationInput: Swift.Equatable { /// The name of the Kubernetes service account inside the cluster to associate the IAM credentials with. /// This member is required. public var serviceAccount: Swift.String? - /// The metadata that you apply to a resource to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. The following basic restrictions apply to tags: + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. The following basic restrictions apply to tags: /// /// * Maximum number of tags per resource – 50 /// @@ -3487,6 +4319,68 @@ enum CreatePodIdentityAssociationOutputError: ClientRuntime.HttpResponseErrorBin } } +extension DeleteAccessEntryInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let clusterName = clusterName else { + return nil + } + guard let principalArn = principalArn else { + return nil + } + return "/clusters/\(clusterName.urlPercentEncoding())/access-entries/\(principalArn.urlPercentEncoding())" + } +} + +public struct DeleteAccessEntryInput: Swift.Equatable { + /// The name of your cluster. + /// This member is required. + public var clusterName: Swift.String? + /// The ARN of the IAM principal for the AccessEntry. + /// This member is required. + public var principalArn: Swift.String? + + public init( + clusterName: Swift.String? = nil, + principalArn: Swift.String? = nil + ) + { + self.clusterName = clusterName + self.principalArn = principalArn + } +} + +struct DeleteAccessEntryInputBody: Swift.Equatable { +} + +extension DeleteAccessEntryInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension DeleteAccessEntryOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct DeleteAccessEntryOutput: Swift.Equatable { + + public init() { } +} + +enum DeleteAccessEntryOutputError: 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 "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 "ServerException": return try await ServerException(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 DeleteAddonInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { @@ -3516,7 +4410,7 @@ public struct DeleteAddonInput: Swift.Equatable { /// The name of the add-on. The name must match one of the names returned by [ListAddons](https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). /// This member is required. public var addonName: Swift.String? - /// The name of the cluster to delete the add-on from. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? /// Specifying this option preserves the add-on software on your cluster but Amazon EKS stops managing any settings for the add-on. If an IAM account is associated with the add-on, it isn't removed. @@ -3782,7 +4676,7 @@ extension DeleteFargateProfileInput: ClientRuntime.URLPathProvider { } public struct DeleteFargateProfileInput: Swift.Equatable { - /// The name of the Amazon EKS cluster associated with the Fargate profile to delete. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? /// The name of the Fargate profile to delete. @@ -3875,7 +4769,7 @@ extension DeleteNodegroupInput: ClientRuntime.URLPathProvider { } public struct DeleteNodegroupInput: Swift.Equatable { - /// The name of the Amazon EKS cluster that is associated with your node group. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? /// The name of the node group to delete. @@ -4050,88 +4944,180 @@ enum DeletePodIdentityAssociationOutputError: ClientRuntime.HttpResponseErrorBin } } -extension DeregisterClusterInput: ClientRuntime.URLPathProvider { +extension DeregisterClusterInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let name = name else { + return nil + } + return "/cluster-registrations/\(name.urlPercentEncoding())" + } +} + +public struct DeregisterClusterInput: Swift.Equatable { + /// The name of the connected cluster to deregister. + /// This member is required. + public var name: Swift.String? + + public init( + name: Swift.String? = nil + ) + { + self.name = name + } +} + +struct DeregisterClusterInputBody: Swift.Equatable { +} + +extension DeregisterClusterInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension DeregisterClusterOutput: 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: DeregisterClusterOutputBody = try responseDecoder.decode(responseBody: data) + self.cluster = output.cluster + } else { + self.cluster = nil + } + } +} + +public struct DeregisterClusterOutput: Swift.Equatable { + /// An object representing an Amazon EKS cluster. + public var cluster: EKSClientTypes.Cluster? + + public init( + cluster: EKSClientTypes.Cluster? = nil + ) + { + self.cluster = cluster + } +} + +struct DeregisterClusterOutputBody: Swift.Equatable { + let cluster: EKSClientTypes.Cluster? +} + +extension DeregisterClusterOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case cluster + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let clusterDecoded = try containerValues.decodeIfPresent(EKSClientTypes.Cluster.self, forKey: .cluster) + cluster = clusterDecoded + } +} + +enum DeregisterClusterOutputError: 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 "ClientException": return try await ClientException(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 "ServerException": return try await ServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(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 DescribeAccessEntryInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - guard let name = name else { + guard let clusterName = clusterName else { return nil } - return "/cluster-registrations/\(name.urlPercentEncoding())" + guard let principalArn = principalArn else { + return nil + } + return "/clusters/\(clusterName.urlPercentEncoding())/access-entries/\(principalArn.urlPercentEncoding())" } } -public struct DeregisterClusterInput: Swift.Equatable { - /// The name of the connected cluster to deregister. +public struct DescribeAccessEntryInput: Swift.Equatable { + /// The name of your cluster. /// This member is required. - public var name: Swift.String? + public var clusterName: Swift.String? + /// The ARN of the IAM principal for the AccessEntry. + /// This member is required. + public var principalArn: Swift.String? public init( - name: Swift.String? = nil + clusterName: Swift.String? = nil, + principalArn: Swift.String? = nil ) { - self.name = name + self.clusterName = clusterName + self.principalArn = principalArn } } -struct DeregisterClusterInputBody: Swift.Equatable { +struct DescribeAccessEntryInputBody: Swift.Equatable { } -extension DeregisterClusterInputBody: Swift.Decodable { +extension DescribeAccessEntryInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { } } -extension DeregisterClusterOutput: ClientRuntime.HttpResponseBinding { +extension DescribeAccessEntryOutput: 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: DeregisterClusterOutputBody = try responseDecoder.decode(responseBody: data) - self.cluster = output.cluster + let output: DescribeAccessEntryOutputBody = try responseDecoder.decode(responseBody: data) + self.accessEntry = output.accessEntry } else { - self.cluster = nil + self.accessEntry = nil } } } -public struct DeregisterClusterOutput: Swift.Equatable { - /// An object representing an Amazon EKS cluster. - public var cluster: EKSClientTypes.Cluster? +public struct DescribeAccessEntryOutput: Swift.Equatable { + /// Information about the access entry. + public var accessEntry: EKSClientTypes.AccessEntry? public init( - cluster: EKSClientTypes.Cluster? = nil + accessEntry: EKSClientTypes.AccessEntry? = nil ) { - self.cluster = cluster + self.accessEntry = accessEntry } } -struct DeregisterClusterOutputBody: Swift.Equatable { - let cluster: EKSClientTypes.Cluster? +struct DescribeAccessEntryOutputBody: Swift.Equatable { + let accessEntry: EKSClientTypes.AccessEntry? } -extension DeregisterClusterOutputBody: Swift.Decodable { +extension DescribeAccessEntryOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case cluster + case accessEntry } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let clusterDecoded = try containerValues.decodeIfPresent(EKSClientTypes.Cluster.self, forKey: .cluster) - cluster = clusterDecoded + let accessEntryDecoded = try containerValues.decodeIfPresent(EKSClientTypes.AccessEntry.self, forKey: .accessEntry) + accessEntry = accessEntryDecoded } } -enum DeregisterClusterOutputError: ClientRuntime.HttpResponseErrorBinding { +enum DescribeAccessEntryOutputError: 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 "ClientException": return try await ClientException(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 "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 "ServerException": return try await ServerException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ServiceUnavailableException": return try await ServiceUnavailableException(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) } } @@ -4165,7 +5151,7 @@ extension DescribeAddonConfigurationInput: ClientRuntime.URLPathProvider { } public struct DescribeAddonConfigurationInput: Swift.Equatable { - /// The name of the add-on. The name must match one of the names that [DescribeAddonVersions](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html) returns. + /// The name of the add-on. The name must match one of the names returned by DescribeAddonVersions. /// This member is required. public var addonName: Swift.String? /// The version of the add-on. The version must match one of the versions returned by [DescribeAddonVersions](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html). @@ -4212,7 +5198,7 @@ public struct DescribeAddonConfigurationOutput: Swift.Equatable { public var addonName: Swift.String? /// The version of the add-on. The version must match one of the versions returned by [DescribeAddonVersions](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html). public var addonVersion: Swift.String? - /// A JSON schema that's used to validate the configuration values that you provide when an addon is created or updated. + /// A JSON schema that's used to validate the configuration values you provide when an add-on is created or updated. public var configurationSchema: Swift.String? public init( @@ -4280,7 +5266,7 @@ public struct DescribeAddonInput: Swift.Equatable { /// The name of the add-on. The name must match one of the names returned by [ListAddons](https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). /// This member is required. public var addonName: Swift.String? - /// The name of the cluster. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? @@ -4412,9 +5398,9 @@ public struct DescribeAddonVersionsInput: Swift.Equatable { public var addonName: Swift.String? /// The Kubernetes versions that you can use the add-on with. public var kubernetesVersion: Swift.String? - /// The maximum number of results to return. + /// The maximum number of results, returned in paginated output. You receive maxResults in a single page, along with a nextToken response element. You can see the remaining results of the initial request by sending another request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, 100 results and a nextToken value, if applicable, are returned. public var maxResults: Swift.Int? - /// The nextToken value returned from a previous paginated DescribeAddonVersionsRequest where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. public var nextToken: Swift.String? /// The owner of the add-on. For valid owners, don't specify a value for this property. public var owners: [Swift.String]? @@ -4534,7 +5520,7 @@ extension DescribeClusterInput: ClientRuntime.URLPathProvider { } public struct DescribeClusterInput: Swift.Equatable { - /// The name of the cluster to describe. + /// The name of your cluster. /// This member is required. public var name: Swift.String? @@ -4707,7 +5693,7 @@ extension DescribeFargateProfileInput: ClientRuntime.URLPathProvider { } public struct DescribeFargateProfileInput: Swift.Equatable { - /// The name of the Amazon EKS cluster associated with the Fargate profile. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? /// The name of the Fargate profile to describe. @@ -4810,7 +5796,7 @@ extension DescribeIdentityProviderConfigInput: ClientRuntime.URLPathProvider { } public struct DescribeIdentityProviderConfigInput: Swift.Equatable { - /// The cluster name that the identity provider configuration is associated to. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? /// An object representing an identity provider configuration. @@ -4911,7 +5897,7 @@ extension DescribeNodegroupInput: ClientRuntime.URLPathProvider { } public struct DescribeNodegroupInput: Swift.Equatable { - /// The name of the Amazon EKS cluster associated with the node group. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? /// The name of the node group to describe. @@ -5114,6 +6100,7 @@ extension DescribeUpdateInput: ClientRuntime.URLPathProvider { } } +/// Describes an update request. public struct DescribeUpdateInput: Swift.Equatable { /// The name of the add-on. The name must match one of the names returned by [ListAddons](https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). This parameter is required if the update is an add-on update. public var addonName: Swift.String? @@ -5203,6 +6190,76 @@ enum DescribeUpdateOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DisassociateAccessPolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let clusterName = clusterName else { + return nil + } + guard let principalArn = principalArn else { + return nil + } + guard let policyArn = policyArn else { + return nil + } + return "/clusters/\(clusterName.urlPercentEncoding())/access-entries/\(principalArn.urlPercentEncoding())/access-policies/\(policyArn.urlPercentEncoding())" + } +} + +public struct DisassociateAccessPolicyInput: Swift.Equatable { + /// The name of your cluster. + /// This member is required. + public var clusterName: Swift.String? + /// The ARN of the policy to disassociate from the access entry. For a list of associated policies ARNs, use ListAssociatedAccessPolicies. + /// This member is required. + public var policyArn: Swift.String? + /// The ARN of the IAM principal for the AccessEntry. + /// This member is required. + public var principalArn: Swift.String? + + public init( + clusterName: Swift.String? = nil, + policyArn: Swift.String? = nil, + principalArn: Swift.String? = nil + ) + { + self.clusterName = clusterName + self.policyArn = policyArn + self.principalArn = principalArn + } +} + +struct DisassociateAccessPolicyInputBody: Swift.Equatable { +} + +extension DisassociateAccessPolicyInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension DisassociateAccessPolicyOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct DisassociateAccessPolicyOutput: Swift.Equatable { + + public init() { } +} + +enum DisassociateAccessPolicyOutputError: 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 "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 "ServerException": return try await ServerException(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 DisassociateIdentityProviderConfigInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientRequestToken @@ -5232,7 +6289,7 @@ extension DisassociateIdentityProviderConfigInput: ClientRuntime.URLPathProvider public struct DisassociateIdentityProviderConfigInput: Swift.Equatable { /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? - /// The name of the cluster to disassociate an identity provider from. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? /// An object representing an identity provider configuration. @@ -5685,7 +6742,7 @@ extension EKSClientTypes { public struct EncryptionConfig: Swift.Equatable { /// Key Management Service (KMS) key. Either the ARN or the alias can be used. public var provider: EKSClientTypes.Provider? - /// Specifies the resources to be encrypted. The only supported value is "secrets". + /// Specifies the resources to be encrypted. The only supported value is secrets. public var resources: [Swift.String]? public init( @@ -5831,7 +6888,7 @@ extension EKSClientTypes { /// /// * EniLimitReached: You have reached the elastic network interface limit for your account. /// - /// * IpNotAvailable: A subnet associated with the cluster doesn't have any free IP addresses. + /// * IpNotAvailable: A subnet associated with the cluster doesn't have any available IP addresses. /// /// * AccessDenied: You don't have permissions to perform the specified operation. /// @@ -5964,23 +7021,23 @@ extension EKSClientTypes.FargateProfile: Swift.Codable { extension EKSClientTypes { /// An object representing an Fargate profile. public struct FargateProfile: Swift.Equatable { - /// The name of the Amazon EKS cluster that the Fargate profile belongs to. + /// The name of your cluster. public var clusterName: Swift.String? - /// The Unix epoch timestamp in seconds for when the Fargate profile was created. + /// The Unix epoch timestamp at object creation. public var createdAt: ClientRuntime.Date? /// The full Amazon Resource Name (ARN) of the Fargate profile. public var fargateProfileArn: Swift.String? /// The name of the Fargate profile. public var fargateProfileName: Swift.String? - /// The Amazon Resource Name (ARN) of the pod execution role to use for pods that match the selectors in the Fargate profile. For more information, see [Pod Execution Role](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) in the Amazon EKS User Guide. + /// The Amazon Resource Name (ARN) of the Pod execution role to use for any Pod that matches the selectors in the Fargate profile. For more information, see [Pod] execution role(https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) in the Amazon EKS User Guide. public var podExecutionRoleArn: Swift.String? - /// The selectors to match for pods to use this Fargate profile. + /// The selectors to match for a Pod to use this Fargate profile. public var selectors: [EKSClientTypes.FargateProfileSelector]? /// The current status of the Fargate profile. public var status: EKSClientTypes.FargateProfileStatus? - /// The IDs of subnets to launch pods into. + /// The IDs of subnets to launch a Pod into. public var subnets: [Swift.String]? - /// The metadata applied to the Fargate profile to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. Fargate profile tags do not propagate to any other resources associated with the Fargate profile, such as the pods that are scheduled with it. + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. public var tags: [Swift.String:Swift.String]? public init( @@ -6522,7 +7579,7 @@ extension EKSClientTypes { /// /// * Ec2SecurityGroupNotFound: We couldn't find the cluster security group for the cluster. You must recreate your cluster. /// - /// * Ec2SubnetInvalidConfiguration: One or more Amazon EC2 subnets specified for a node group do not automatically assign public IP addresses to instances launched into it. If you want your instances to be assigned a public IP address, then you need to enable the auto-assign public IP address setting for the subnet. See [Modifying the public IPv4 addressing attribute for your subnet](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip) in the Amazon VPC User Guide. + /// * Ec2SubnetInvalidConfiguration: One or more Amazon EC2 subnets specified for a node group do not automatically assign public IP addresses to instances launched into it. If you want your instances to be assigned a public IP address, then you need to enable the auto-assign public IP address setting for the subnet. See [Modifying the public ]IPv4 addressing attribute for your subnet(https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip) in the Amazon VPC User Guide. /// /// * IamInstanceProfileNotFound: We couldn't find the IAM instance profile for your managed node group. You may be able to recreate an instance profile with the same settings to recover. /// @@ -6594,7 +7651,7 @@ extension EKSClientTypes { /// * Between /24 and /12. /// /// - /// You can only specify a custom CIDR block when you create a cluster and can't change this value once the cluster is created. + /// You can only specify a custom CIDR block when you create a cluster. You can't change this value after the cluster is created. public var serviceIpv4Cidr: Swift.String? public init( @@ -6643,9 +7700,9 @@ extension EKSClientTypes.KubernetesNetworkConfigResponse: Swift.Codable { extension EKSClientTypes { /// The Kubernetes network configuration for the cluster. The response contains a value for serviceIpv6Cidr or serviceIpv4Cidr, but not both. public struct KubernetesNetworkConfigResponse: Swift.Equatable { - /// The IP family used to assign Kubernetes pod and service IP addresses. The IP family is always ipv4, unless you have a 1.21 or later cluster running version 1.10.1 or later of the Amazon VPC CNI add-on and specified ipv6 when you created the cluster. + /// The IP family used to assign Kubernetes Pod and Service objects IP addresses. The IP family is always ipv4, unless you have a 1.21 or later cluster running version 1.10.1 or later of the Amazon VPC CNI plugin for Kubernetes and specified ipv6 when you created the cluster. public var ipFamily: EKSClientTypes.IpFamily? - /// The CIDR block that Kubernetes pod and service IP addresses are assigned from. Kubernetes assigns addresses from an IPv4 CIDR block assigned to a subnet that the node is in. If you didn't specify a CIDR block when you created the cluster, then Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. If this was specified, then it was specified when the cluster was created and it can't be changed. + /// The CIDR block that Kubernetes Pod and Service object IP addresses are assigned from. Kubernetes assigns addresses from an IPv4 CIDR block assigned to a subnet that the node is in. If you didn't specify a CIDR block when you created the cluster, then Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. If this was specified, then it was specified when the cluster was created and it can't be changed. public var serviceIpv4Cidr: Swift.String? /// The CIDR block that Kubernetes pod and service IP addresses are assigned from if you created a 1.21 or later cluster with version 1.10.1 or later of the Amazon VPC CNI add-on and specified ipv6 for ipFamily when you created the cluster. Kubernetes assigns service addresses from the unique local address range (fc00::/7) because you can't specify a custom IPv6 CIDR block when you create the cluster. public var serviceIpv6Cidr: Swift.String? @@ -6719,6 +7776,261 @@ extension EKSClientTypes { } +extension ListAccessEntriesInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let associatedPolicyArn = associatedPolicyArn { + let associatedPolicyArnQueryItem = ClientRuntime.URLQueryItem(name: "associatedPolicyArn".urlPercentEncoding(), value: Swift.String(associatedPolicyArn).urlPercentEncoding()) + items.append(associatedPolicyArnQueryItem) + } + if let maxResults = maxResults { + let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) + items.append(maxResultsQueryItem) + } + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } + return items + } + } +} + +extension ListAccessEntriesInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let clusterName = clusterName else { + return nil + } + return "/clusters/\(clusterName.urlPercentEncoding())/access-entries" + } +} + +public struct ListAccessEntriesInput: Swift.Equatable { + /// The ARN of an AccessPolicy. When you specify an access policy ARN, only the access entries associated to that access policy are returned. For a list of available policy ARNs, use ListAccessPolicies. + public var associatedPolicyArn: Swift.String? + /// The name of your cluster. + /// This member is required. + public var clusterName: Swift.String? + /// The maximum number of results, returned in paginated output. You receive maxResults in a single page, along with a nextToken response element. You can see the remaining results of the initial request by sending another request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, 100 results and a nextToken value, if applicable, are returned. + public var maxResults: Swift.Int? + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. + public var nextToken: Swift.String? + + public init( + associatedPolicyArn: Swift.String? = nil, + clusterName: Swift.String? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.associatedPolicyArn = associatedPolicyArn + self.clusterName = clusterName + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListAccessEntriesInputBody: Swift.Equatable { +} + +extension ListAccessEntriesInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension ListAccessEntriesOutput: 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: ListAccessEntriesOutputBody = try responseDecoder.decode(responseBody: data) + self.accessEntries = output.accessEntries + self.nextToken = output.nextToken + } else { + self.accessEntries = nil + self.nextToken = nil + } + } +} + +public struct ListAccessEntriesOutput: Swift.Equatable { + /// The list of access entries that exist for the cluster. + public var accessEntries: [Swift.String]? + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. + public var nextToken: Swift.String? + + public init( + accessEntries: [Swift.String]? = nil, + nextToken: Swift.String? = nil + ) + { + self.accessEntries = accessEntries + self.nextToken = nextToken + } +} + +struct ListAccessEntriesOutputBody: Swift.Equatable { + let accessEntries: [Swift.String]? + let nextToken: Swift.String? +} + +extension ListAccessEntriesOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accessEntries + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let accessEntriesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .accessEntries) + var accessEntriesDecoded0:[Swift.String]? = nil + if let accessEntriesContainer = accessEntriesContainer { + accessEntriesDecoded0 = [Swift.String]() + for string0 in accessEntriesContainer { + if let string0 = string0 { + accessEntriesDecoded0?.append(string0) + } + } + } + accessEntries = accessEntriesDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListAccessEntriesOutputError: 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 "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 "ServerException": return try await ServerException(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 ListAccessPoliciesInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let maxResults = maxResults { + let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) + items.append(maxResultsQueryItem) + } + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } + return items + } + } +} + +extension ListAccessPoliciesInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/access-policies" + } +} + +public struct ListAccessPoliciesInput: Swift.Equatable { + /// The maximum number of results, returned in paginated output. You receive maxResults in a single page, along with a nextToken response element. You can see the remaining results of the initial request by sending another request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, 100 results and a nextToken value, if applicable, are returned. + public var maxResults: Swift.Int? + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. + public var nextToken: Swift.String? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListAccessPoliciesInputBody: Swift.Equatable { +} + +extension ListAccessPoliciesInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +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.accessPolicies = output.accessPolicies + self.nextToken = output.nextToken + } else { + self.accessPolicies = nil + self.nextToken = nil + } + } +} + +public struct ListAccessPoliciesOutput: Swift.Equatable { + /// The list of available access policies. You can't view the contents of an access policy using the API. To view the contents, see [Access policy permissions](https://docs.aws.amazon.com/eks/latest/userguide/access-policies.html#access-policy-permissions) in the Amazon EKS User Guide. + public var accessPolicies: [EKSClientTypes.AccessPolicy]? + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. + public var nextToken: Swift.String? + + public init( + accessPolicies: [EKSClientTypes.AccessPolicy]? = nil, + nextToken: Swift.String? = nil + ) + { + self.accessPolicies = accessPolicies + self.nextToken = nextToken + } +} + +struct ListAccessPoliciesOutputBody: Swift.Equatable { + let accessPolicies: [EKSClientTypes.AccessPolicy]? + let nextToken: Swift.String? +} + +extension ListAccessPoliciesOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accessPolicies + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let accessPoliciesContainer = try containerValues.decodeIfPresent([EKSClientTypes.AccessPolicy?].self, forKey: .accessPolicies) + var accessPoliciesDecoded0:[EKSClientTypes.AccessPolicy]? = nil + if let accessPoliciesContainer = accessPoliciesContainer { + accessPoliciesDecoded0 = [EKSClientTypes.AccessPolicy]() + for structure0 in accessPoliciesContainer { + if let structure0 = structure0 { + accessPoliciesDecoded0?.append(structure0) + } + } + } + accessPolicies = accessPoliciesDecoded0 + 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 "ServerException": return try await ServerException(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 ListAddonsInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { @@ -6746,12 +8058,12 @@ extension ListAddonsInput: ClientRuntime.URLPathProvider { } public struct ListAddonsInput: Swift.Equatable { - /// The name of the cluster. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? - /// The maximum number of add-on results returned by ListAddonsRequest in paginated output. When you use this parameter, ListAddonsRequest returns only maxResults results in a single page along with a nextToken response element. You can see the remaining results of the initial request by sending another ListAddonsRequest request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, ListAddonsRequest returns up to 100 results and a nextToken value, if applicable. + /// The maximum number of results, returned in paginated output. You receive maxResults in a single page, along with a nextToken response element. You can see the remaining results of the initial request by sending another request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, 100 results and a nextToken value, if applicable, are returned. public var maxResults: Swift.Int? - /// The nextToken value returned from a previous paginated ListAddonsRequest where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. public var nextToken: Swift.String? public init( @@ -6849,6 +8161,162 @@ enum ListAddonsOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension ListAssociatedAccessPoliciesInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let maxResults = maxResults { + let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) + items.append(maxResultsQueryItem) + } + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } + return items + } + } +} + +extension ListAssociatedAccessPoliciesInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let clusterName = clusterName else { + return nil + } + guard let principalArn = principalArn else { + return nil + } + return "/clusters/\(clusterName.urlPercentEncoding())/access-entries/\(principalArn.urlPercentEncoding())/access-policies" + } +} + +public struct ListAssociatedAccessPoliciesInput: Swift.Equatable { + /// The name of your cluster. + /// This member is required. + public var clusterName: Swift.String? + /// The maximum number of results, returned in paginated output. You receive maxResults in a single page, along with a nextToken response element. You can see the remaining results of the initial request by sending another request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, 100 results and a nextToken value, if applicable, are returned. + public var maxResults: Swift.Int? + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. + public var nextToken: Swift.String? + /// The ARN of the IAM principal for the AccessEntry. + /// This member is required. + public var principalArn: Swift.String? + + public init( + clusterName: Swift.String? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil, + principalArn: Swift.String? = nil + ) + { + self.clusterName = clusterName + self.maxResults = maxResults + self.nextToken = nextToken + self.principalArn = principalArn + } +} + +struct ListAssociatedAccessPoliciesInputBody: Swift.Equatable { +} + +extension ListAssociatedAccessPoliciesInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension ListAssociatedAccessPoliciesOutput: 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: ListAssociatedAccessPoliciesOutputBody = try responseDecoder.decode(responseBody: data) + self.associatedAccessPolicies = output.associatedAccessPolicies + self.clusterName = output.clusterName + self.nextToken = output.nextToken + self.principalArn = output.principalArn + } else { + self.associatedAccessPolicies = nil + self.clusterName = nil + self.nextToken = nil + self.principalArn = nil + } + } +} + +public struct ListAssociatedAccessPoliciesOutput: Swift.Equatable { + /// The list of access policies associated with the access entry. + public var associatedAccessPolicies: [EKSClientTypes.AssociatedAccessPolicy]? + /// The name of your cluster. + public var clusterName: Swift.String? + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. + public var nextToken: Swift.String? + /// The ARN of the IAM principal for the AccessEntry. + public var principalArn: Swift.String? + + public init( + associatedAccessPolicies: [EKSClientTypes.AssociatedAccessPolicy]? = nil, + clusterName: Swift.String? = nil, + nextToken: Swift.String? = nil, + principalArn: Swift.String? = nil + ) + { + self.associatedAccessPolicies = associatedAccessPolicies + self.clusterName = clusterName + self.nextToken = nextToken + self.principalArn = principalArn + } +} + +struct ListAssociatedAccessPoliciesOutputBody: Swift.Equatable { + let clusterName: Swift.String? + let principalArn: Swift.String? + let nextToken: Swift.String? + let associatedAccessPolicies: [EKSClientTypes.AssociatedAccessPolicy]? +} + +extension ListAssociatedAccessPoliciesOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case associatedAccessPolicies + case clusterName + case nextToken + case principalArn + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let clusterNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clusterName) + clusterName = clusterNameDecoded + let principalArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .principalArn) + principalArn = principalArnDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + let associatedAccessPoliciesContainer = try containerValues.decodeIfPresent([EKSClientTypes.AssociatedAccessPolicy?].self, forKey: .associatedAccessPolicies) + var associatedAccessPoliciesDecoded0:[EKSClientTypes.AssociatedAccessPolicy]? = nil + if let associatedAccessPoliciesContainer = associatedAccessPoliciesContainer { + associatedAccessPoliciesDecoded0 = [EKSClientTypes.AssociatedAccessPolicy]() + for structure0 in associatedAccessPoliciesContainer { + if let structure0 = structure0 { + associatedAccessPoliciesDecoded0?.append(structure0) + } + } + } + associatedAccessPolicies = associatedAccessPoliciesDecoded0 + } +} + +enum ListAssociatedAccessPoliciesOutputError: 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 "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 "ServerException": return try await ServerException(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 ListClustersInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { @@ -6879,11 +8347,11 @@ extension ListClustersInput: ClientRuntime.URLPathProvider { } public struct ListClustersInput: Swift.Equatable { - /// Indicates whether external clusters are included in the returned list. Use 'all' to return connected clusters, or blank to return only Amazon EKS clusters. 'all' must be in lowercase otherwise an error occurs. + /// Indicates whether external clusters are included in the returned list. Use 'all' to return [https://docs.aws.amazon.com/eks/latest/userguide/eks-connector.html](https://docs.aws.amazon.com/eks/latest/userguide/eks-connector.html)connected clusters, or blank to return only Amazon EKS clusters. 'all' must be in lowercase otherwise an error occurs. public var include: [Swift.String]? - /// The maximum number of cluster results returned by ListClusters in paginated output. When you use this parameter, ListClusters returns only maxResults results in a single page along with a nextToken response element. You can see the remaining results of the initial request by sending another ListClusters request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, ListClusters returns up to 100 results and a nextToken value if applicable. + /// The maximum number of results, returned in paginated output. You receive maxResults in a single page, along with a nextToken response element. You can see the remaining results of the initial request by sending another request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, 100 results and a nextToken value, if applicable, are returned. public var maxResults: Swift.Int? - /// The nextToken value returned from a previous paginated ListClusters request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. public var nextToken: Swift.String? public init( @@ -6922,9 +8390,9 @@ extension ListClustersOutput: ClientRuntime.HttpResponseBinding { } public struct ListClustersOutput: Swift.Equatable { - /// A list of all of the clusters for your account in the specified Region. + /// A list of all of the clusters for your account in the specified Amazon Web Services Region. public var clusters: [Swift.String]? - /// The nextToken value to include in a future ListClusters request. When the results of a ListClusters request exceed maxResults, you can use this value to retrieve the next page of results. This value is null when there are no more results to return. + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. public var nextToken: Swift.String? public init( @@ -7138,12 +8606,12 @@ extension ListFargateProfilesInput: ClientRuntime.URLPathProvider { } public struct ListFargateProfilesInput: Swift.Equatable { - /// The name of the Amazon EKS cluster that you would like to list Fargate profiles in. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? - /// The maximum number of Fargate profile results returned by ListFargateProfiles in paginated output. When you use this parameter, ListFargateProfiles returns only maxResults results in a single page along with a nextToken response element. You can see the remaining results of the initial request by sending another ListFargateProfiles request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, ListFargateProfiles returns up to 100 results and a nextToken value if applicable. + /// The maximum number of results, returned in paginated output. You receive maxResults in a single page, along with a nextToken response element. You can see the remaining results of the initial request by sending another request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, 100 results and a nextToken value, if applicable, are returned. public var maxResults: Swift.Int? - /// The nextToken value returned from a previous paginated ListFargateProfiles request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. public var nextToken: Swift.String? public init( @@ -7184,7 +8652,7 @@ extension ListFargateProfilesOutput: ClientRuntime.HttpResponseBinding { public struct ListFargateProfilesOutput: Swift.Equatable { /// A list of all of the Fargate profiles associated with the specified cluster. public var fargateProfileNames: [Swift.String]? - /// The nextToken value to include in a future ListFargateProfiles request. When the results of a ListFargateProfiles request exceed maxResults, you can use this value to retrieve the next page of results. This value is null when there are no more results to return. + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. public var nextToken: Swift.String? public init( @@ -7267,12 +8735,12 @@ extension ListIdentityProviderConfigsInput: ClientRuntime.URLPathProvider { } public struct ListIdentityProviderConfigsInput: Swift.Equatable { - /// The cluster name that you want to list identity provider configurations for. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? - /// The maximum number of identity provider configurations returned by ListIdentityProviderConfigs in paginated output. When you use this parameter, ListIdentityProviderConfigs returns only maxResults results in a single page along with a nextToken response element. You can see the remaining results of the initial request by sending another ListIdentityProviderConfigs request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, ListIdentityProviderConfigs returns up to 100 results and a nextToken value, if applicable. + /// The maximum number of results, returned in paginated output. You receive maxResults in a single page, along with a nextToken response element. You can see the remaining results of the initial request by sending another request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, 100 results and a nextToken value, if applicable, are returned. public var maxResults: Swift.Int? - /// The nextToken value returned from a previous paginated IdentityProviderConfigsRequest where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. public var nextToken: Swift.String? public init( @@ -7397,12 +8865,12 @@ extension ListNodegroupsInput: ClientRuntime.URLPathProvider { } public struct ListNodegroupsInput: Swift.Equatable { - /// The name of the Amazon EKS cluster that you would like to list node groups in. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? - /// The maximum number of node group results returned by ListNodegroups in paginated output. When you use this parameter, ListNodegroups returns only maxResults results in a single page along with a nextToken response element. You can see the remaining results of the initial request by sending another ListNodegroups request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, ListNodegroups returns up to 100 results and a nextToken value if applicable. + /// The maximum number of results, returned in paginated output. You receive maxResults in a single page, along with a nextToken response element. You can see the remaining results of the initial request by sending another request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, 100 results and a nextToken value, if applicable, are returned. public var maxResults: Swift.Int? - /// The nextToken value returned from a previous paginated ListNodegroups request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. public var nextToken: Swift.String? public init( @@ -7441,7 +8909,7 @@ extension ListNodegroupsOutput: ClientRuntime.HttpResponseBinding { } public struct ListNodegroupsOutput: Swift.Equatable { - /// The nextToken value to include in a future ListNodegroups request. When the results of a ListNodegroups request exceed maxResults, you can use this value to retrieve the next page of results. This value is null when there are no more results to return. + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. public var nextToken: Swift.String? /// A list of all of the node groups associated with the specified cluster. public var nodegroups: [Swift.String]? @@ -7663,7 +9131,7 @@ extension ListTagsForResourceInput: ClientRuntime.URLPathProvider { } public struct ListTagsForResourceInput: Swift.Equatable { - /// The Amazon Resource Name (ARN) that identifies the resource for which to list the tags. Currently, the supported resources are Amazon EKS clusters and managed node groups. + /// The Amazon Resource Name (ARN) that identifies the resource to list tags for. /// This member is required. public var resourceArn: Swift.String? @@ -7782,12 +9250,12 @@ extension ListUpdatesInput: ClientRuntime.URLPathProvider { public struct ListUpdatesInput: Swift.Equatable { /// The names of the installed add-ons that have available updates. public var addonName: Swift.String? - /// The maximum number of update results returned by ListUpdates in paginated output. When you use this parameter, ListUpdates returns only maxResults results in a single page along with a nextToken response element. You can see the remaining results of the initial request by sending another ListUpdates request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, ListUpdates returns up to 100 results and a nextToken value if applicable. + /// The maximum number of results, returned in paginated output. You receive maxResults in a single page, along with a nextToken response element. You can see the remaining results of the initial request by sending another request with the returned nextToken value. This value can be between 1 and 100. If you don't use this parameter, 100 results and a nextToken value, if applicable, are returned. public var maxResults: Swift.Int? /// The name of the Amazon EKS cluster to list updates for. /// This member is required. public var name: Swift.String? - /// The nextToken value returned from a previous paginated ListUpdates request where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. public var nextToken: Swift.String? /// The name of the Amazon EKS managed node group to list updates for. public var nodegroupName: Swift.String? @@ -7832,7 +9300,7 @@ extension ListUpdatesOutput: ClientRuntime.HttpResponseBinding { } public struct ListUpdatesOutput: Swift.Equatable { - /// The nextToken value to include in a future ListUpdates request. When the results of a ListUpdates request exceed maxResults, you can use this value to retrieve the next page of results. This value is null when there are no more results to return. + /// The nextToken value returned from a previous paginated request, where maxResults was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the nextToken value. This value is null when there are no more results to return. This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes. public var nextToken: Swift.String? /// A list of all the updates for the specified cluster and Region. public var updateIds: [Swift.String]? @@ -8298,9 +9766,9 @@ extension EKSClientTypes { public var amiType: EKSClientTypes.AMITypes? /// The capacity type of your managed node group. public var capacityType: EKSClientTypes.CapacityTypes? - /// The name of the cluster that the managed node group resides in. + /// The name of your cluster. public var clusterName: Swift.String? - /// The Unix epoch timestamp in seconds for when the managed node group was created. + /// The Unix epoch timestamp at object creation. public var createdAt: ClientRuntime.Date? /// If the node group wasn't deployed with a launch template, then this is the disk size in the node group configuration. If the node group was deployed with a launch template, then this is null. public var diskSize: Swift.Int? @@ -8312,7 +9780,7 @@ extension EKSClientTypes { public var labels: [Swift.String:Swift.String]? /// If a launch template was used to create the node group, then this is the launch template that was used. public var launchTemplate: EKSClientTypes.LaunchTemplateSpecification? - /// The Unix epoch timestamp in seconds for when the managed node group was last modified. + /// The Unix epoch timestamp for the last modification to the object. public var modifiedAt: ClientRuntime.Date? /// The IAM role associated with your node group. The Amazon EKS node kubelet daemon makes calls to Amazon Web Services APIs on your behalf. Nodes receive permissions for these API calls through an IAM instance profile and associated policies. public var nodeRole: Swift.String? @@ -8332,7 +9800,7 @@ extension EKSClientTypes { public var status: EKSClientTypes.NodegroupStatus? /// The subnets that were specified for the Auto Scaling group that is associated with your node group. public var subnets: [Swift.String]? - /// The metadata applied to the node group to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. Node group tags do not propagate to any other resources associated with the node group, such as the Amazon EC2 instances or subnets. + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. public var tags: [Swift.String:Swift.String]? /// The Kubernetes taints to be applied to the nodes in the node group when they are created. Effect is one of No_Schedule, Prefer_No_Schedule, or No_Execute. Kubernetes taints can be used together with tolerations to control how workloads are scheduled to your nodes. For more information, see [Node taints on managed node groups](https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html). public var taints: [EKSClientTypes.Taint]? @@ -8658,7 +10126,7 @@ extension EKSClientTypes.NodegroupScalingConfig: Swift.Codable { extension EKSClientTypes { /// An object representing the scaling configuration details for the Auto Scaling group that is associated with your node group. When creating a node group, you must specify all or none of the properties. When updating a node group, you can specify any or none of the properties. public struct NodegroupScalingConfig: Swift.Equatable { - /// The current number of nodes that the managed node group should maintain. If you use Cluster Autoscaler, you shouldn't change the desiredSize value directly, as this can cause the Cluster Autoscaler to suddenly scale up or scale down. Whenever this parameter changes, the number of worker nodes in the node group is updated to the specified size. If this parameter is given a value that is smaller than the current number of running worker nodes, the necessary number of worker nodes are terminated to match the given value. When using CloudFormation, no action occurs if you remove this parameter from your CFN template. This parameter can be different from minSize in some cases, such as when starting with extra hosts for testing. This parameter can also be different when you want to start with an estimated number of needed hosts, but let Cluster Autoscaler reduce the number if there are too many. When Cluster Autoscaler is used, the desiredSize parameter is altered by Cluster Autoscaler (but can be out-of-date for short periods of time). Cluster Autoscaler doesn't scale a managed node group lower than minSize or higher than maxSize. + /// The current number of nodes that the managed node group should maintain. If you use the Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler#kubernetes-autoscaler), you shouldn't change the desiredSize value directly, as this can cause the Cluster Autoscaler to suddenly scale up or scale down. Whenever this parameter changes, the number of worker nodes in the node group is updated to the specified size. If this parameter is given a value that is smaller than the current number of running worker nodes, the necessary number of worker nodes are terminated to match the given value. When using CloudFormation, no action occurs if you remove this parameter from your CFN template. This parameter can be different from minSize in some cases, such as when starting with extra hosts for testing. This parameter can also be different when you want to start with an estimated number of needed hosts, but let the Cluster Autoscaler reduce the number if there are too many. When the Cluster Autoscaler is used, the desiredSize parameter is altered by the Cluster Autoscaler (but can be out-of-date for short periods of time). the Cluster Autoscaler doesn't scale a managed node group lower than minSize or higher than maxSize. public var desiredSize: Swift.Int? /// The maximum number of nodes that the managed node group can scale out to. For information about the maximum number that you can specify, see [Amazon EKS service quotas](https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html) in the Amazon EKS User Guide. public var maxSize: Swift.Int? @@ -8754,9 +10222,9 @@ extension EKSClientTypes.NodegroupUpdateConfig: Swift.Codable { extension EKSClientTypes { /// The node group update configuration. public struct NodegroupUpdateConfig: Swift.Equatable { - /// The maximum number of nodes unavailable at once during a version update. Nodes will be updated in parallel. This value or maxUnavailablePercentage is required to have a value.The maximum number is 100. + /// The maximum number of nodes unavailable at once during a version update. Nodes are updated in parallel. This value or maxUnavailablePercentage is required to have a value.The maximum number is 100. public var maxUnavailable: Swift.Int? - /// The maximum percentage of nodes unavailable during a version update. This percentage of nodes will be updated in parallel, up to 100 nodes at once. This value or maxUnavailable is required to have a value. + /// The maximum percentage of nodes unavailable during a version update. This percentage of nodes are updated in parallel, up to 100 nodes at once. This value or maxUnavailable is required to have a value. public var maxUnavailablePercentage: Swift.Int? public init( @@ -8976,7 +10444,7 @@ extension EKSClientTypes { public struct OidcIdentityProviderConfig: Swift.Equatable { /// This is also known as audience. The ID of the client application that makes authentication requests to the OIDC identity provider. public var clientId: Swift.String? - /// The cluster that the configuration is associated to. + /// The name of your cluster. public var clusterName: Swift.String? /// The JSON web token (JWT) claim that the provider uses to return your groups. public var groupsClaim: Swift.String? @@ -8992,7 +10460,7 @@ extension EKSClientTypes { public var requiredClaims: [Swift.String:Swift.String]? /// The status of the OIDC identity provider. public var status: EKSClientTypes.ConfigStatus? - /// The metadata to apply to the provider configuration to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. public var tags: [Swift.String:Swift.String]? /// The JSON Web token (JWT) claim that is used as the username. public var usernameClaim: Swift.String? @@ -9105,9 +10573,9 @@ extension EKSClientTypes.OidcIdentityProviderConfigRequest: Swift.Codable { } extension EKSClientTypes { - /// An object representing an OpenID Connect (OIDC) configuration. Before associating an OIDC identity provider to your cluster, review the considerations in [Authenticating users for your cluster from an OpenID Connect identity provider](https://docs.aws.amazon.com/eks/latest/userguide/authenticate-oidc-identity-provider.html) in the Amazon EKS User Guide. + /// An object representing an OpenID Connect (OIDC) configuration. Before associating an OIDC identity provider to your cluster, review the considerations in [Authenticating users for your cluster from an OIDC identity provider](https://docs.aws.amazon.com/eks/latest/userguide/authenticate-oidc-identity-provider.html) in the Amazon EKS User Guide. public struct OidcIdentityProviderConfigRequest: Swift.Equatable { - /// This is also known as audience. The ID for the client application that makes authentication requests to the OpenID identity provider. + /// This is also known as audience. The ID for the client application that makes authentication requests to the OIDC identity provider. /// This member is required. public var clientId: Swift.String? /// The JWT claim that the provider uses to return your groups. @@ -9117,12 +10585,12 @@ extension EKSClientTypes { /// The name of the OIDC provider configuration. /// This member is required. public var identityProviderConfigName: Swift.String? - /// The URL of the OpenID identity provider that allows the API server to discover public signing keys for verifying tokens. The URL must begin with https:// and should correspond to the iss claim in the provider's OIDC ID tokens. Per the OIDC standard, path components are allowed but query parameters are not. Typically the URL consists of only a hostname, like https://server.example.org or https://example.com. This URL should point to the level below .well-known/openid-configuration and must be publicly accessible over the internet. + /// The URL of the OIDC identity provider that allows the API server to discover public signing keys for verifying tokens. The URL must begin with https:// and should correspond to the iss claim in the provider's OIDC ID tokens. Based on the OIDC standard, path components are allowed but query parameters are not. Typically the URL consists of only a hostname, like https://server.example.org or https://example.com. This URL should point to the level below .well-known/openid-configuration and must be publicly accessible over the internet. /// This member is required. public var issuerUrl: Swift.String? /// The key value pairs that describe required claims in the identity token. If set, each claim is verified to be present in the token with a matching value. For the maximum number of claims that you can require, see [Amazon EKS service quotas](https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html) in the Amazon EKS User Guide. public var requiredClaims: [Swift.String:Swift.String]? - /// The JSON Web Token (JWT) claim to use as the username. The default is sub, which is expected to be a unique identifier of the end user. You can choose other claims, such as email or name, depending on the OpenID identity provider. Claims other than email are prefixed with the issuer URL to prevent naming clashes with other plug-ins. + /// The JSON Web Token (JWT) claim to use as the username. The default is sub, which is expected to be a unique identifier of the end user. You can choose other claims, such as email or name, depending on the OIDC identity provider. Claims other than email are prefixed with the issuer URL to prevent naming clashes with other plug-ins. public var usernameClaim: Swift.String? /// The prefix that is prepended to username claims to prevent clashes with existing names. If you do not provide this field, and username is a value other than email, the prefix defaults to issuerurl#. You can use the value - to disable all prefixing. public var usernamePrefix: Swift.String? @@ -9369,7 +10837,7 @@ extension EKSClientTypes.PodIdentityAssociation: Swift.Codable { } extension EKSClientTypes { - /// Amazon EKS Pod Identity associations provide the ability to manage credentials for your applications, similar to the way that 7EC2l instance profiles provide credentials to Amazon EC2 instances. + /// Amazon EKS Pod Identity associations provide the ability to manage credentials for your applications, similar to the way that Amazon EC2 instance profiles provide credentials to Amazon EC2 instances. public struct PodIdentityAssociation: Swift.Equatable { /// The Amazon Resource Name (ARN) of the association. public var associationArn: Swift.String? @@ -9387,7 +10855,7 @@ extension EKSClientTypes { public var roleArn: Swift.String? /// The name of the Kubernetes service account inside the cluster to associate the IAM credentials with. public var serviceAccount: Swift.String? - /// The metadata that you apply to a resource to assist with categorization and organization. Each tag consists of a key and an optional value. You define both. The following basic restrictions apply to tags: + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. The following basic restrictions apply to tags: /// /// * Maximum number of tags per resource – 50 /// @@ -9583,15 +11051,15 @@ extension RegisterClusterInput: ClientRuntime.URLPathProvider { } public struct RegisterClusterInput: Swift.Equatable { - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? /// The configuration settings required to connect the Kubernetes cluster to the Amazon EKS control plane. /// This member is required. public var connectorConfig: EKSClientTypes.ConnectorConfigRequest? - /// Define a unique name for this cluster for your Region. + /// A unique name for this cluster in your Amazon Web Services Region. /// This member is required. public var name: Swift.String? - /// The metadata that you apply to the cluster to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Cluster tags do not propagate to any other resources associated with the cluster. + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. public var tags: [Swift.String:Swift.String]? public init( @@ -9992,7 +11460,7 @@ extension ResourceNotFoundException { } } -/// The specified resource could not be found. You can view your available clusters with [ListClusters]. You can view your available managed node groups with [ListNodegroups]. Amazon EKS clusters and node groups are Region-specific. +/// The specified resource could not be found. You can view your available clusters with ListClusters. You can view your available managed node groups with ListNodegroups. Amazon EKS clusters and node groups are Amazon Web Services Region specific. public struct ResourceNotFoundException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { public struct Properties { @@ -10307,10 +11775,10 @@ extension TagResourceInput: ClientRuntime.URLPathProvider { } public struct TagResourceInput: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the resource to which to add tags. Currently, the supported resources are Amazon EKS clusters and managed node groups. + /// The Amazon Resource Name (ARN) of the resource to add tags to. /// This member is required. public var resourceArn: Swift.String? - /// The tags to add to the resource. A tag is an array of key-value pairs. + /// Metadata that assists with categorization and organization. Each tag consists of a key and an optional value. You define both. Tags don't propagate to any other cluster or Amazon Web Services resources. /// This member is required. public var tags: [Swift.String:Swift.String]? @@ -10403,7 +11871,7 @@ extension EKSClientTypes.Taint: Swift.Codable { } extension EKSClientTypes { - /// A property that allows a node to repel a set of pods. For more information, see [Node taints on managed node groups](https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html). + /// A property that allows a node to repel a Pod. For more information, see [Node taints on managed node groups](https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html) in the Amazon EKS User Guide. public struct Taint: Swift.Equatable { /// The effect of the taint. public var effect: EKSClientTypes.TaintEffect? @@ -10583,10 +12051,10 @@ extension UntagResourceInput: ClientRuntime.URLPathProvider { } public struct UntagResourceInput: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the resource from which to delete tags. Currently, the supported resources are Amazon EKS clusters and managed node groups. + /// The Amazon Resource Name (ARN) of the resource to delete tags from. /// This member is required. public var resourceArn: Swift.String? - /// The keys of the tags to be removed. + /// The keys of the tags to remove. /// This member is required. public var tagKeys: [Swift.String]? @@ -10707,7 +12175,7 @@ extension EKSClientTypes.Update: Swift.Codable { extension EKSClientTypes { /// An object representing an asynchronous update. public struct Update: Swift.Equatable { - /// The Unix epoch timestamp in seconds for when the update was created. + /// The Unix epoch timestamp at object creation. public var createdAt: ClientRuntime.Date? /// Any errors associated with a Failed update. public var errors: [EKSClientTypes.ErrorDetail]? @@ -10740,6 +12208,194 @@ extension EKSClientTypes { } +extension EKSClientTypes.UpdateAccessConfigRequest: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case authenticationMode + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let authenticationMode = self.authenticationMode { + try encodeContainer.encode(authenticationMode.rawValue, forKey: .authenticationMode) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let authenticationModeDecoded = try containerValues.decodeIfPresent(EKSClientTypes.AuthenticationMode.self, forKey: .authenticationMode) + authenticationMode = authenticationModeDecoded + } +} + +extension EKSClientTypes { + /// The access configuration information for the cluster. + public struct UpdateAccessConfigRequest: Swift.Equatable { + /// The desired authentication mode for the cluster. + public var authenticationMode: EKSClientTypes.AuthenticationMode? + + public init( + authenticationMode: EKSClientTypes.AuthenticationMode? = nil + ) + { + self.authenticationMode = authenticationMode + } + } + +} + +extension UpdateAccessEntryInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientRequestToken + case kubernetesGroups + case username + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let clientRequestToken = self.clientRequestToken { + try encodeContainer.encode(clientRequestToken, forKey: .clientRequestToken) + } + if let kubernetesGroups = kubernetesGroups { + var kubernetesGroupsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .kubernetesGroups) + for string0 in kubernetesGroups { + try kubernetesGroupsContainer.encode(string0) + } + } + if let username = self.username { + try encodeContainer.encode(username, forKey: .username) + } + } +} + +extension UpdateAccessEntryInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let clusterName = clusterName else { + return nil + } + guard let principalArn = principalArn else { + return nil + } + return "/clusters/\(clusterName.urlPercentEncoding())/access-entries/\(principalArn.urlPercentEncoding())" + } +} + +public struct UpdateAccessEntryInput: Swift.Equatable { + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + public var clientRequestToken: Swift.String? + /// The name of your cluster. + /// This member is required. + public var clusterName: Swift.String? + /// The value for name that you've specified for kind: Group as a subject in a Kubernetes RoleBinding or ClusterRoleBinding object. Amazon EKS doesn't confirm that the value for name exists in any bindings on your cluster. You can specify one or more names. Kubernetes authorizes the principalArn of the access entry to access any cluster objects that you've specified in a Kubernetes Role or ClusterRole object that is also specified in a binding's roleRef. For more information about creating Kubernetes RoleBinding, ClusterRoleBinding, Role, or ClusterRole objects, see [Using RBAC Authorization in the Kubernetes documentation](https://kubernetes.io/docs/reference/access-authn-authz/rbac/). If you want Amazon EKS to authorize the principalArn (instead of, or in addition to Kubernetes authorizing the principalArn), you can associate one or more access policies to the access entry using AssociateAccessPolicy. If you associate any access policies, the principalARN has all permissions assigned in the associated access policies and all permissions in any Kubernetes Role or ClusterRole objects that the group names are bound to. + public var kubernetesGroups: [Swift.String]? + /// The ARN of the IAM principal for the AccessEntry. + /// This member is required. + public var principalArn: Swift.String? + /// The username to authenticate to Kubernetes with. We recommend not specifying a username and letting Amazon EKS specify it for you. For more information about the value Amazon EKS specifies for you, or constraints before specifying your own username, see [Creating access entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html#creating-access-entries) in the Amazon EKS User Guide. + public var username: Swift.String? + + public init( + clientRequestToken: Swift.String? = nil, + clusterName: Swift.String? = nil, + kubernetesGroups: [Swift.String]? = nil, + principalArn: Swift.String? = nil, + username: Swift.String? = nil + ) + { + self.clientRequestToken = clientRequestToken + self.clusterName = clusterName + self.kubernetesGroups = kubernetesGroups + self.principalArn = principalArn + self.username = username + } +} + +struct UpdateAccessEntryInputBody: Swift.Equatable { + let kubernetesGroups: [Swift.String]? + let clientRequestToken: Swift.String? + let username: Swift.String? +} + +extension UpdateAccessEntryInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientRequestToken + case kubernetesGroups + case username + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let kubernetesGroupsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .kubernetesGroups) + var kubernetesGroupsDecoded0:[Swift.String]? = nil + if let kubernetesGroupsContainer = kubernetesGroupsContainer { + kubernetesGroupsDecoded0 = [Swift.String]() + for string0 in kubernetesGroupsContainer { + if let string0 = string0 { + kubernetesGroupsDecoded0?.append(string0) + } + } + } + kubernetesGroups = kubernetesGroupsDecoded0 + let clientRequestTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientRequestToken) + clientRequestToken = clientRequestTokenDecoded + let usernameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .username) + username = usernameDecoded + } +} + +extension UpdateAccessEntryOutput: 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: UpdateAccessEntryOutputBody = try responseDecoder.decode(responseBody: data) + self.accessEntry = output.accessEntry + } else { + self.accessEntry = nil + } + } +} + +public struct UpdateAccessEntryOutput: Swift.Equatable { + /// The ARN of the IAM principal for the AccessEntry. + public var accessEntry: EKSClientTypes.AccessEntry? + + public init( + accessEntry: EKSClientTypes.AccessEntry? = nil + ) + { + self.accessEntry = accessEntry + } +} + +struct UpdateAccessEntryOutputBody: Swift.Equatable { + let accessEntry: EKSClientTypes.AccessEntry? +} + +extension UpdateAccessEntryOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accessEntry + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let accessEntryDecoded = try containerValues.decodeIfPresent(EKSClientTypes.AccessEntry.self, forKey: .accessEntry) + accessEntry = accessEntryDecoded + } +} + +enum UpdateAccessEntryOutputError: 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 "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 "ServerException": return try await ServerException(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 UpdateAddonInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case addonVersion @@ -10787,12 +12443,12 @@ public struct UpdateAddonInput: Swift.Equatable { public var addonName: Swift.String? /// The version of the add-on. The version must match one of the versions returned by [DescribeAddonVersions](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html). public var addonVersion: Swift.String? - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? - /// The name of the cluster. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? - /// The set of configuration values for the add-on that's created. The values that you provide are validated against the schema in [DescribeAddonConfiguration](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonConfiguration.html). + /// The set of configuration values for the add-on that's created. The values that you provide are validated against the schema returned by DescribeAddonConfiguration. public var configurationValues: Swift.String? /// How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Conflicts are handled based on the option you choose: /// @@ -10915,6 +12571,7 @@ enum UpdateAddonOutputError: ClientRuntime.HttpResponseErrorBinding { extension UpdateClusterConfigInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case accessConfig case clientRequestToken case logging case resourcesVpcConfig @@ -10922,6 +12579,9 @@ extension UpdateClusterConfigInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let accessConfig = self.accessConfig { + try encodeContainer.encode(accessConfig, forKey: .accessConfig) + } if let clientRequestToken = self.clientRequestToken { try encodeContainer.encode(clientRequestToken, forKey: .clientRequestToken) } @@ -10944,7 +12604,9 @@ extension UpdateClusterConfigInput: ClientRuntime.URLPathProvider { } public struct UpdateClusterConfigInput: Swift.Equatable { - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// The access configuration for the cluster. + public var accessConfig: EKSClientTypes.UpdateAccessConfigRequest? + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? /// Enable or disable exporting the Kubernetes control plane logs for your cluster to CloudWatch Logs. By default, cluster control plane logs aren't exported to CloudWatch Logs. For more information, see [Amazon EKS cluster control plane logs](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) in the Amazon EKS User Guide . CloudWatch Logs ingestion, archive storage, and data scanning rates apply to exported control plane logs. For more information, see [CloudWatch Pricing](http://aws.amazon.com/cloudwatch/pricing/). public var logging: EKSClientTypes.Logging? @@ -10955,12 +12617,14 @@ public struct UpdateClusterConfigInput: Swift.Equatable { public var resourcesVpcConfig: EKSClientTypes.VpcConfigRequest? public init( + accessConfig: EKSClientTypes.UpdateAccessConfigRequest? = nil, clientRequestToken: Swift.String? = nil, logging: EKSClientTypes.Logging? = nil, name: Swift.String? = nil, resourcesVpcConfig: EKSClientTypes.VpcConfigRequest? = nil ) { + self.accessConfig = accessConfig self.clientRequestToken = clientRequestToken self.logging = logging self.name = name @@ -10972,10 +12636,12 @@ struct UpdateClusterConfigInputBody: Swift.Equatable { let resourcesVpcConfig: EKSClientTypes.VpcConfigRequest? let logging: EKSClientTypes.Logging? let clientRequestToken: Swift.String? + let accessConfig: EKSClientTypes.UpdateAccessConfigRequest? } extension UpdateClusterConfigInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case accessConfig case clientRequestToken case logging case resourcesVpcConfig @@ -10989,6 +12655,8 @@ extension UpdateClusterConfigInputBody: Swift.Decodable { logging = loggingDecoded let clientRequestTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientRequestToken) clientRequestToken = clientRequestTokenDecoded + let accessConfigDecoded = try containerValues.decodeIfPresent(EKSClientTypes.UpdateAccessConfigRequest.self, forKey: .accessConfig) + accessConfig = accessConfigDecoded } } @@ -11075,7 +12743,7 @@ extension UpdateClusterVersionInput: ClientRuntime.URLPathProvider { } public struct UpdateClusterVersionInput: Swift.Equatable { - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? /// The name of the Amazon EKS cluster to update. /// This member is required. @@ -11347,9 +13015,9 @@ extension EKSClientTypes.UpdateLabelsPayload: Swift.Codable { extension EKSClientTypes { /// An object representing a Kubernetes label change for a managed node group. public struct UpdateLabelsPayload: Swift.Equatable { - /// Kubernetes labels to be added or updated. + /// The Kubernetes labels to add or update. public var addOrUpdateLabels: [Swift.String:Swift.String]? - /// Kubernetes labels to be removed. + /// The Kubernetes labels to remove. public var removeLabels: [Swift.String]? public init( @@ -11406,12 +13074,12 @@ extension UpdateNodegroupConfigInput: ClientRuntime.URLPathProvider { } public struct UpdateNodegroupConfigInput: Swift.Equatable { - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? - /// The name of the Amazon EKS cluster that the managed node group resides in. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? - /// The Kubernetes labels to be applied to the nodes in the node group after the update. + /// The Kubernetes labels to apply to the nodes in the node group after the update. public var labels: EKSClientTypes.UpdateLabelsPayload? /// The name of the managed node group to update. /// This member is required. @@ -11573,12 +13241,12 @@ extension UpdateNodegroupVersionInput: ClientRuntime.URLPathProvider { } public struct UpdateNodegroupVersionInput: Swift.Equatable { - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? - /// The name of the Amazon EKS cluster that is associated with the managed node group to update. + /// The name of your cluster. /// This member is required. public var clusterName: Swift.String? - /// Force the update if the existing node group's pods are unable to be drained due to a pod disruption budget issue. If an update fails because pods could not be drained, you can force the update after it fails to terminate the old node whether or not any pods are running on the node. + /// Force the update if any Pod on the existing node group can't be drained due to a Pod disruption budget issue. If an update fails because all Pods can't be drained, you can force the update after it fails to terminate the old node whether or not any Pod is running on the node. public var force: Swift.Bool? /// An object representing a node group's launch template specification. You can only update a node group using a launch template if the node group was originally deployed with a launch template. public var launchTemplate: EKSClientTypes.LaunchTemplateSpecification? @@ -11746,6 +13414,7 @@ extension EKSClientTypes { extension EKSClientTypes { public enum UpdateParamType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case addonVersion + case authenticationMode case clusterLogging case configurationValues case desiredSize @@ -11776,6 +13445,7 @@ extension EKSClientTypes { public static var allCases: [UpdateParamType] { return [ .addonVersion, + .authenticationMode, .clusterLogging, .configurationValues, .desiredSize, @@ -11811,6 +13481,7 @@ extension EKSClientTypes { public var rawValue: Swift.String { switch self { case .addonVersion: return "AddonVersion" + case .authenticationMode: return "AuthenticationMode" case .clusterLogging: return "ClusterLogging" case .configurationValues: return "ConfigurationValues" case .desiredSize: return "DesiredSize" @@ -11880,7 +13551,7 @@ public struct UpdatePodIdentityAssociationInput: Swift.Equatable { /// The ID of the association to be updated. /// This member is required. public var associationId: Swift.String? - /// Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. public var clientRequestToken: Swift.String? /// The name of the cluster that you want to update the association in. /// This member is required. @@ -12064,7 +13735,7 @@ extension EKSClientTypes.UpdateTaintsPayload: Swift.Codable { } extension EKSClientTypes { - /// An object representing the details of an update to a taints payload. For more information, see [Node taints on managed node groups](https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html). + /// An object representing the details of an update to a taints payload. For more information, see [Node taints on managed node groups](https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html) in the Amazon EKS User Guide. public struct UpdateTaintsPayload: Swift.Equatable { /// Kubernetes taints to be added or updated. public var addOrUpdateTaints: [EKSClientTypes.Taint]? @@ -12085,6 +13756,7 @@ extension EKSClientTypes { extension EKSClientTypes { public enum UpdateType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case accessConfigUpdate case addonUpdate case associateEncryptionConfig case associateIdentityProviderConfig @@ -12098,6 +13770,7 @@ extension EKSClientTypes { public static var allCases: [UpdateType] { return [ + .accessConfigUpdate, .addonUpdate, .associateEncryptionConfig, .associateIdentityProviderConfig, @@ -12116,6 +13789,7 @@ extension EKSClientTypes { } public var rawValue: Swift.String { switch self { + case .accessConfigUpdate: return "AccessConfigUpdate" case .addonUpdate: return "AddonUpdate" case .associateEncryptionConfig: return "AssociateEncryptionConfig" case .associateIdentityProviderConfig: return "AssociateIdentityProviderConfig" @@ -12222,7 +13896,7 @@ extension EKSClientTypes { public var endpointPrivateAccess: Swift.Bool? /// Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true, which enables public access for your Kubernetes API server. For more information, see [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) in the Amazon EKS User Guide . public var endpointPublicAccess: Swift.Bool? - /// The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0. If you've disabled private endpoint access and you have nodes or Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks. For more information, see [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) in the Amazon EKS User Guide . + /// The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0. If you've disabled private endpoint access, make sure that you specify the necessary CIDR blocks for every node and Fargate Pod in the cluster. For more information, see [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) in the Amazon EKS User Guide . public var publicAccessCidrs: [Swift.String]? /// Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use that allow communication between your nodes and the Kubernetes control plane. If you don't specify any security groups, then familiarize yourself with the difference between Amazon EKS defaults for clusters deployed with Kubernetes. For more information, see [Amazon EKS security group considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide . public var securityGroupIds: [Swift.String]? @@ -12345,9 +14019,9 @@ extension EKSClientTypes { public var clusterSecurityGroupId: Swift.String? /// This parameter indicates whether the Amazon EKS private API server endpoint is enabled. If the Amazon EKS private API server endpoint is enabled, Kubernetes API requests that originate from within your cluster's VPC use the private VPC endpoint instead of traversing the internet. If this value is disabled and you have nodes or Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the nodes or Fargate pods. For more information, see [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) in the Amazon EKS User Guide . public var endpointPrivateAccess: Swift.Bool - /// This parameter indicates whether the Amazon EKS public API server endpoint is enabled. If the Amazon EKS public API server endpoint is disabled, your cluster's Kubernetes API server can only receive requests that originate from within the cluster VPC. + /// Whether the public API server endpoint is enabled. public var endpointPublicAccess: Swift.Bool - /// The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the listed CIDR blocks is denied. The default value is 0.0.0.0/0. If you've disabled private endpoint access and you have nodes or Fargate pods in the cluster, then ensure that the necessary CIDR blocks are listed. For more information, see [Amazon EKS cluster endpoint access control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) in the Amazon EKS User Guide . + /// The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. public var publicAccessCidrs: [Swift.String]? /// The security groups associated with the cross-account elastic network interfaces that are used to allow communication between your nodes and the Kubernetes control plane. public var securityGroupIds: [Swift.String]? diff --git a/Sources/Services/AWSFSx/Paginators.swift b/Sources/Services/AWSFSx/Paginators.swift index 467083d8a11..98e08bfe20d 100644 --- a/Sources/Services/AWSFSx/Paginators.swift +++ b/Sources/Services/AWSFSx/Paginators.swift @@ -156,6 +156,7 @@ extension DescribeSnapshotsInput: ClientRuntime.PaginateToken { public func usingPaginationToken(_ token: Swift.String) -> DescribeSnapshotsInput { return DescribeSnapshotsInput( filters: self.filters, + includeShared: self.includeShared, maxResults: self.maxResults, nextToken: token, snapshotIds: self.snapshotIds diff --git a/Sources/Services/AWSFSx/models/Models.swift b/Sources/Services/AWSFSx/models/Models.swift index 57fa2d9578b..6be220a4b06 100644 --- a/Sources/Services/AWSFSx/models/Models.swift +++ b/Sources/Services/AWSFSx/models/Models.swift @@ -4219,7 +4219,9 @@ extension FSxClientTypes { /// /// Amazon FSx responds with an HTTP status code 400 (Bad Request) for the following conditions: /// - /// * The value of ThroughputCapacity and ThroughputCapacityPerHAPair are not the same value + /// * The value of ThroughputCapacity and ThroughputCapacityPerHAPair are not the same value for file systems with one HA pair. + /// + /// * The value of deployment type is SINGLE_AZ_2 and ThroughputCapacity / ThroughputCapacityPerHAPair is a valid HA pair (a value between 2 and 6). /// /// * The value of ThroughputCapacityPerHAPair is not a valid value. public var throughputCapacityPerHAPair: Swift.Int? @@ -9822,6 +9824,7 @@ enum DescribeSharedVpcConfigurationOutputError: ClientRuntime.HttpResponseErrorB extension DescribeSnapshotsInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case filters = "Filters" + case includeShared = "IncludeShared" case maxResults = "MaxResults" case nextToken = "NextToken" case snapshotIds = "SnapshotIds" @@ -9835,6 +9838,9 @@ extension DescribeSnapshotsInput: Swift.Encodable { try filtersContainer.encode(snapshotfilter0) } } + if let includeShared = self.includeShared { + try encodeContainer.encode(includeShared, forKey: .includeShared) + } if let maxResults = self.maxResults { try encodeContainer.encode(maxResults, forKey: .maxResults) } @@ -9859,6 +9865,8 @@ extension DescribeSnapshotsInput: ClientRuntime.URLPathProvider { public struct DescribeSnapshotsInput: Swift.Equatable { /// The filters structure. The supported names are file-system-id or volume-id. public var filters: [FSxClientTypes.SnapshotFilter]? + /// Set to false (default) if you want to only see the snapshots in your Amazon Web Services account. Set to true if you want to see the snapshots in your account and the ones shared with you from another account. + public var includeShared: Swift.Bool? /// The maximum number of resources to return in the response. This value must be an integer greater than zero. public var maxResults: Swift.Int? /// (Optional) Opaque pagination token returned from a previous operation (String). If present, this token indicates from what point you can continue processing the request, where the previous NextToken value left off. @@ -9868,12 +9876,14 @@ public struct DescribeSnapshotsInput: Swift.Equatable { public init( filters: [FSxClientTypes.SnapshotFilter]? = nil, + includeShared: Swift.Bool? = nil, maxResults: Swift.Int? = nil, nextToken: Swift.String? = nil, snapshotIds: [Swift.String]? = nil ) { self.filters = filters + self.includeShared = includeShared self.maxResults = maxResults self.nextToken = nextToken self.snapshotIds = snapshotIds @@ -9885,11 +9895,13 @@ struct DescribeSnapshotsInputBody: Swift.Equatable { let filters: [FSxClientTypes.SnapshotFilter]? let maxResults: Swift.Int? let nextToken: Swift.String? + let includeShared: Swift.Bool? } extension DescribeSnapshotsInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case filters = "Filters" + case includeShared = "IncludeShared" case maxResults = "MaxResults" case nextToken = "NextToken" case snapshotIds = "SnapshotIds" @@ -9923,6 +9935,8 @@ extension DescribeSnapshotsInputBody: Swift.Decodable { maxResults = maxResultsDecoded let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded + let includeSharedDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .includeShared) + includeShared = includeSharedDecoded } } @@ -15148,6 +15162,7 @@ extension FSxClientTypes { extension FSxClientTypes.OpenZFSVolumeConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case copyStrategy = "CopyStrategy" case copyTagsToSnapshots = "CopyTagsToSnapshots" case dataCompressionType = "DataCompressionType" case deleteClonedVolumes = "DeleteClonedVolumes" @@ -15169,6 +15184,9 @@ extension FSxClientTypes.OpenZFSVolumeConfiguration: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let copyStrategy = self.copyStrategy { + try encodeContainer.encode(copyStrategy.rawValue, forKey: .copyStrategy) + } if let copyTagsToSnapshots = self.copyTagsToSnapshots { try encodeContainer.encode(copyTagsToSnapshots, forKey: .copyTagsToSnapshots) } @@ -15282,12 +15300,23 @@ extension FSxClientTypes.OpenZFSVolumeConfiguration: Swift.Codable { sourceSnapshotARN = sourceSnapshotARNDecoded let destinationSnapshotDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .destinationSnapshot) destinationSnapshot = destinationSnapshotDecoded + let copyStrategyDecoded = try containerValues.decodeIfPresent(FSxClientTypes.OpenZFSCopyStrategy.self, forKey: .copyStrategy) + copyStrategy = copyStrategyDecoded } } extension FSxClientTypes { /// The configuration of an Amazon FSx for OpenZFS volume. public struct OpenZFSVolumeConfiguration: Swift.Equatable { + /// Specifies the strategy used when copying data from the snapshot to the new volume. + /// + /// * CLONE - The new volume references the data in the origin snapshot. Cloning a snapshot is faster than copying data from the snapshot to a new volume and doesn't consume disk throughput. However, the origin snapshot can't be deleted if there is a volume using its copied data. + /// + /// * FULL_COPY - Copies all data from the snapshot to the new volume. Specify this option to create the volume from a snapshot on another FSx for OpenZFS file system. + /// + /// + /// The INCREMENTAL_COPY option is only for updating an existing volume by using a snapshot from another FSx for OpenZFS file system. For more information, see [CopySnapshotAndUpdateVolume](https://docs.aws.amazon.com/fsx/latest/APIReference/API_CopySnapshotAndUpdateVolume.html). + public var copyStrategy: FSxClientTypes.OpenZFSCopyStrategy? /// A Boolean value indicating whether tags for the volume should be copied to snapshots. This value defaults to false. If it's set to true, all tags for the volume are copied to snapshots where the user doesn't specify tags. If this value is true and you specify one or more tags, only the specified tags are copied to snapshots. If you specify one or more tags when creating the snapshot, no tags are copied from the volume, regardless of this value. public var copyTagsToSnapshots: Swift.Bool? /// Specifies the method used to compress the data on the volume. The compression type is NONE by default. @@ -15330,6 +15359,7 @@ extension FSxClientTypes { public var volumePath: Swift.String? public init( + copyStrategy: FSxClientTypes.OpenZFSCopyStrategy? = nil, copyTagsToSnapshots: Swift.Bool? = nil, dataCompressionType: FSxClientTypes.OpenZFSDataCompressionType? = nil, deleteClonedVolumes: Swift.Bool? = nil, @@ -15349,6 +15379,7 @@ extension FSxClientTypes { volumePath: Swift.String? = nil ) { + self.copyStrategy = copyStrategy self.copyTagsToSnapshots = copyTagsToSnapshots self.dataCompressionType = dataCompressionType self.deleteClonedVolumes = deleteClonedVolumes @@ -19108,7 +19139,13 @@ extension FSxClientTypes { /// * For SINGLE_AZ_2, valid values are 3072 or 6144 MBps. /// /// - /// Amazon FSx responds with an HTTP status code 400 (Bad Request) for the following conditions: The value of ThroughputCapacity and ThroughputCapacityPerHAPair are not the same value. The value of ThroughputCapacityPerHAPair is not a valid value. + /// Amazon FSx responds with an HTTP status code 400 (Bad Request) for the following conditions: + /// + /// * The value of ThroughputCapacity and ThroughputCapacityPerHAPair are not the same value for file systems with one HA pair. + /// + /// * The value of deployment type is SINGLE_AZ_2 and ThroughputCapacity / ThroughputCapacityPerHAPair is a valid HA pair (a value between 2 and 6). + /// + /// * The value of ThroughputCapacityPerHAPair is not a valid value. public var throughputCapacityPerHAPair: Swift.Int? /// A recurring weekly time, in the format D:HH:MM. D is the day of the week, for which 1 represents Monday and 7 represents Sunday. For further details, see [the ISO-8601 spec as described on Wikipedia](https://en.wikipedia.org/wiki/ISO_week_date). HH is the zero-padded hour of the day (0-23), and MM is the zero-padded minute of the hour. For example, 1:05:00 specifies maintenance at 5 AM Monday. public var weeklyMaintenanceStartTime: Swift.String? diff --git a/Sources/Services/AWSFinspace/FinspaceClient.swift b/Sources/Services/AWSFinspace/FinspaceClient.swift index e148c05d0e2..b4880e7067b 100644 --- a/Sources/Services/AWSFinspace/FinspaceClient.swift +++ b/Sources/Services/AWSFinspace/FinspaceClient.swift @@ -279,6 +279,60 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `CreateKxDataview` operation on the `AWSHabaneroManagementService` service. + /// + /// Creates a snapshot of kdb database with tiered storage capabilities and a pre-warmed cache, ready for mounting on kdb clusters. Dataviews are only available for clusters running on a scaling group. They are not supported on dedicated clusters. + /// + /// - Parameter CreateKxDataviewInput : [no documentation found] + /// + /// - Returns: `CreateKxDataviewOutput` : [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. + /// - `ResourceAlreadyExistsException` : The specified resource group already exists. + /// - `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 createKxDataview(input: CreateKxDataviewInput) async throws -> CreateKxDataviewOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createKxDataview") + .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: "createKxDataview") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(CreateKxDataviewOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `CreateKxEnvironment` operation on the `AWSHabaneroManagementService` service. /// /// Creates a managed kdb environment for the account. @@ -314,6 +368,7 @@ extension FinspaceClient: FinspaceClientProtocol { .withSigningRegion(value: config.signingRegion) .build() var operation = ClientRuntime.OperationStack(id: "createKxEnvironment") + 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) @@ -331,6 +386,59 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `CreateKxScalingGroup` operation on the `AWSHabaneroManagementService` service. + /// + /// Creates a new scaling group. + /// + /// - Parameter CreateKxScalingGroupInput : [no documentation found] + /// + /// - Returns: `CreateKxScalingGroupOutput` : [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 createKxScalingGroup(input: CreateKxScalingGroupInput) async throws -> CreateKxScalingGroupOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createKxScalingGroup") + .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: "createKxScalingGroup") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(CreateKxScalingGroupOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `CreateKxUser` operation on the `AWSHabaneroManagementService` service. /// /// Creates a user in FinSpace kdb environment with an associated IAM role. @@ -367,6 +475,7 @@ extension FinspaceClient: FinspaceClientProtocol { .withSigningRegion(value: config.signingRegion) .build() var operation = ClientRuntime.OperationStack(id: "createKxUser") + 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) @@ -384,6 +493,60 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `CreateKxVolume` operation on the `AWSHabaneroManagementService` service. + /// + /// Creates a new volume with a specific amount of throughput and storage capacity. + /// + /// - Parameter CreateKxVolumeInput : [no documentation found] + /// + /// - Returns: `CreateKxVolumeOutput` : [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. + /// - `ResourceAlreadyExistsException` : The specified resource group already exists. + /// - `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 createKxVolume(input: CreateKxVolumeInput) async throws -> CreateKxVolumeOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createKxVolume") + .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: "createKxVolume") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(CreateKxVolumeOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `DeleteEnvironment` operation on the `AWSHabaneroManagementService` service. /// /// Delete an FinSpace environment. @@ -533,6 +696,56 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `DeleteKxDataview` operation on the `AWSHabaneroManagementService` service. + /// + /// Deletes the specified dataview. Before deleting a dataview, make sure that it is not in use by any cluster. + /// + /// - Parameter DeleteKxDataviewInput : [no documentation found] + /// + /// - Returns: `DeleteKxDataviewOutput` : [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. + /// - `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 deleteKxDataview(input: DeleteKxDataviewInput) async throws -> DeleteKxDataviewOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .delete) + .withServiceName(value: serviceName) + .withOperation(value: "deleteKxDataview") + .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: "deleteKxDataview") + 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: ClientRuntime.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(DeleteKxDataviewOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `DeleteKxEnvironment` operation on the `AWSHabaneroManagementService` service. /// /// Deletes the kdb environment. This action is irreversible. Deleting a kdb environment will remove all the associated data and any services running in it. @@ -545,6 +758,7 @@ extension FinspaceClient: FinspaceClientProtocol { /// /// __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. /// - `ResourceNotFoundException` : One or more resources can't be found. /// - `ThrottlingException` : The request was denied due to request throttling. @@ -566,11 +780,13 @@ extension FinspaceClient: FinspaceClientProtocol { .withSigningRegion(value: config.signingRegion) .build() var operation = ClientRuntime.OperationStack(id: "deleteKxEnvironment") + 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: ClientRuntime.QueryItemMiddleware()) 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)) @@ -580,6 +796,57 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `DeleteKxScalingGroup` operation on the `AWSHabaneroManagementService` service. + /// + /// Deletes the specified scaling group. This action is irreversible. You cannot delete a scaling group until all the clusters running on it have been deleted. + /// + /// - Parameter DeleteKxScalingGroupInput : [no documentation found] + /// + /// - Returns: `DeleteKxScalingGroupOutput` : [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 deleteKxScalingGroup(input: DeleteKxScalingGroupInput) async throws -> DeleteKxScalingGroupOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .delete) + .withServiceName(value: serviceName) + .withOperation(value: "deleteKxScalingGroup") + .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: "deleteKxScalingGroup") + 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: ClientRuntime.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(DeleteKxScalingGroupOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `DeleteKxUser` operation on the `AWSHabaneroManagementService` service. /// /// Deletes a user in the specified kdb environment. @@ -592,6 +859,7 @@ extension FinspaceClient: FinspaceClientProtocol { /// /// __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. /// - `ResourceNotFoundException` : One or more resources can't be found. /// - `ThrottlingException` : The request was denied due to request throttling. @@ -613,11 +881,13 @@ extension FinspaceClient: FinspaceClientProtocol { .withSigningRegion(value: config.signingRegion) .build() var operation = ClientRuntime.OperationStack(id: "deleteKxUser") + 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: ClientRuntime.QueryItemMiddleware()) 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)) @@ -627,6 +897,57 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `DeleteKxVolume` operation on the `AWSHabaneroManagementService` service. + /// + /// Deletes a volume. You can only delete a volume if it's not attached to a cluster or a dataview. When a volume is deleted, any data on the volume is lost. This action is irreversible. + /// + /// - Parameter DeleteKxVolumeInput : [no documentation found] + /// + /// - Returns: `DeleteKxVolumeOutput` : [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 deleteKxVolume(input: DeleteKxVolumeInput) async throws -> DeleteKxVolumeOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .delete) + .withServiceName(value: serviceName) + .withOperation(value: "deleteKxVolume") + .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: "deleteKxVolume") + 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: ClientRuntime.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(DeleteKxVolumeOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `GetEnvironment` operation on the `AWSHabaneroManagementService` service. /// /// Returns the FinSpace environment object. @@ -865,6 +1186,53 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `GetKxDataview` operation on the `AWSHabaneroManagementService` service. + /// + /// Retrieves details of the dataview. + /// + /// - Parameter GetKxDataviewInput : [no documentation found] + /// + /// - Returns: `GetKxDataviewOutput` : [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. + /// - `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 getKxDataview(input: GetKxDataviewInput) async throws -> GetKxDataviewOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "getKxDataview") + .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: "getKxDataview") + 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.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(responseClosure(decoder: decoder), responseErrorClosure(GetKxDataviewOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `GetKxEnvironment` operation on the `AWSHabaneroManagementService` service. /// /// Retrieves all the information for the specified kdb environment. @@ -877,6 +1245,7 @@ extension FinspaceClient: FinspaceClientProtocol { /// /// __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. /// - `ResourceNotFoundException` : One or more resources can't be found. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. @@ -911,6 +1280,55 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `GetKxScalingGroup` operation on the `AWSHabaneroManagementService` service. + /// + /// Retrieves details of a scaling group. + /// + /// - Parameter GetKxScalingGroupInput : [no documentation found] + /// + /// - Returns: `GetKxScalingGroupOutput` : [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 getKxScalingGroup(input: GetKxScalingGroupInput) async throws -> GetKxScalingGroupOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "getKxScalingGroup") + .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: "getKxScalingGroup") + 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.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(responseClosure(decoder: decoder), responseErrorClosure(GetKxScalingGroupOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `GetKxUser` operation on the `AWSHabaneroManagementService` service. /// /// Retrieves information about the specified kdb user. @@ -958,6 +1376,55 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `GetKxVolume` operation on the `AWSHabaneroManagementService` service. + /// + /// Retrieves the information about the volume. + /// + /// - Parameter GetKxVolumeInput : [no documentation found] + /// + /// - Returns: `GetKxVolumeOutput` : [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 getKxVolume(input: GetKxVolumeInput) async throws -> GetKxVolumeOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "getKxVolume") + .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: "getKxVolume") + 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.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(responseClosure(decoder: decoder), responseErrorClosure(GetKxVolumeOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `ListEnvironments` operation on the `AWSHabaneroManagementService` service. /// /// A list of all of your FinSpace environments. @@ -970,6 +1437,7 @@ extension FinspaceClient: FinspaceClientProtocol { /// - 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. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. public func listEnvironments(input: ListEnvironmentsInput) async throws -> ListEnvironmentsOutput @@ -1199,6 +1667,54 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `ListKxDataviews` operation on the `AWSHabaneroManagementService` service. + /// + /// Returns a list of all the dataviews in the database. + /// + /// - Parameter ListKxDataviewsInput : [no documentation found] + /// + /// - Returns: `ListKxDataviewsOutput` : [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. + /// - `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 listKxDataviews(input: ListKxDataviewsInput) async throws -> ListKxDataviewsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "listKxDataviews") + .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: "listKxDataviews") + 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListKxDataviewsOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `ListKxEnvironments` operation on the `AWSHabaneroManagementService` service. /// /// Returns a list of kdb environments created in an account. @@ -1210,6 +1726,7 @@ extension FinspaceClient: FinspaceClientProtocol { /// - 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. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. public func listKxEnvironments(input: ListKxEnvironmentsInput) async throws -> ListKxEnvironmentsOutput @@ -1244,6 +1761,56 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `ListKxScalingGroups` operation on the `AWSHabaneroManagementService` service. + /// + /// Returns a list of scaling groups in a kdb environment. + /// + /// - Parameter ListKxScalingGroupsInput : [no documentation found] + /// + /// - Returns: `ListKxScalingGroupsOutput` : [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 listKxScalingGroups(input: ListKxScalingGroupsInput) async throws -> ListKxScalingGroupsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "listKxScalingGroups") + .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: "listKxScalingGroups") + 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListKxScalingGroupsOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `ListKxUsers` operation on the `AWSHabaneroManagementService` service. /// /// Lists all the users in a kdb environment. @@ -1292,6 +1859,56 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `ListKxVolumes` operation on the `AWSHabaneroManagementService` service. + /// + /// Lists all the volumes in a kdb environment. + /// + /// - Parameter ListKxVolumesInput : [no documentation found] + /// + /// - Returns: `ListKxVolumesOutput` : [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 listKxVolumes(input: ListKxVolumesInput) async throws -> ListKxVolumesOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "listKxVolumes") + .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: "listKxVolumes") + 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListKxVolumesOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `ListTagsForResource` operation on the `AWSHabaneroManagementService` service. /// /// A list of all tags for a resource. @@ -1640,6 +2257,59 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `UpdateKxDataview` operation on the `AWSHabaneroManagementService` service. + /// + /// Updates the specified dataview. The dataviews get automatically updated when any new changesets are ingested. Each update of the dataview creates a new version, including changeset details and cache configurations + /// + /// - Parameter UpdateKxDataviewInput : [no documentation found] + /// + /// - Returns: `UpdateKxDataviewOutput` : [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. + /// - `ResourceAlreadyExistsException` : The specified resource group already exists. + /// - `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 updateKxDataview(input: UpdateKxDataviewInput) async throws -> UpdateKxDataviewOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .put) + .withServiceName(value: serviceName) + .withOperation(value: "updateKxDataview") + .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: "updateKxDataview") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(UpdateKxDataviewOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `UpdateKxEnvironment` operation on the `AWSHabaneroManagementService` service. /// /// Updates information for the given kdb environment. @@ -1674,6 +2344,7 @@ extension FinspaceClient: FinspaceClientProtocol { .withSigningRegion(value: config.signingRegion) .build() var operation = ClientRuntime.OperationStack(id: "updateKxEnvironment") + 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) @@ -1725,6 +2396,7 @@ extension FinspaceClient: FinspaceClientProtocol { .withSigningRegion(value: config.signingRegion) .build() var operation = ClientRuntime.OperationStack(id: "updateKxEnvironmentNetwork") + 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) @@ -1777,6 +2449,7 @@ extension FinspaceClient: FinspaceClientProtocol { .withSigningRegion(value: config.signingRegion) .build() var operation = ClientRuntime.OperationStack(id: "updateKxUser") + 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) @@ -1794,4 +2467,57 @@ extension FinspaceClient: FinspaceClientProtocol { return result } + /// Performs the `UpdateKxVolume` operation on the `AWSHabaneroManagementService` service. + /// + /// Updates the throughput or capacity of a volume. During the update process, the filesystem might be unavailable for a few minutes. You can retry any operations after the update is complete. + /// + /// - Parameter UpdateKxVolumeInput : [no documentation found] + /// + /// - Returns: `UpdateKxVolumeOutput` : [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 updateKxVolume(input: UpdateKxVolumeInput) async throws -> UpdateKxVolumeOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .patch) + .withServiceName(value: serviceName) + .withOperation(value: "updateKxVolume") + .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: "updateKxVolume") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(UpdateKxVolumeOutputError.self, decoder: decoder))) + 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/AWSFinspace/FinspaceClientProtocol.swift b/Sources/Services/AWSFinspace/FinspaceClientProtocol.swift index 2662cfb343a..315753e4cb1 100644 --- a/Sources/Services/AWSFinspace/FinspaceClientProtocol.swift +++ b/Sources/Services/AWSFinspace/FinspaceClientProtocol.swift @@ -81,6 +81,26 @@ 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 createKxDatabase(input: CreateKxDatabaseInput) async throws -> CreateKxDatabaseOutput + /// Performs the `CreateKxDataview` operation on the `AWSHabaneroManagementService` service. + /// + /// Creates a snapshot of kdb database with tiered storage capabilities and a pre-warmed cache, ready for mounting on kdb clusters. Dataviews are only available for clusters running on a scaling group. They are not supported on dedicated clusters. + /// + /// - Parameter CreateKxDataviewInput : [no documentation found] + /// + /// - Returns: `CreateKxDataviewOutput` : [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. + /// - `ResourceAlreadyExistsException` : The specified resource group already exists. + /// - `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 createKxDataview(input: CreateKxDataviewInput) async throws -> CreateKxDataviewOutput /// Performs the `CreateKxEnvironment` operation on the `AWSHabaneroManagementService` service. /// /// Creates a managed kdb environment for the account. @@ -100,6 +120,25 @@ 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 createKxEnvironment(input: CreateKxEnvironmentInput) async throws -> CreateKxEnvironmentOutput + /// Performs the `CreateKxScalingGroup` operation on the `AWSHabaneroManagementService` service. + /// + /// Creates a new scaling group. + /// + /// - Parameter CreateKxScalingGroupInput : [no documentation found] + /// + /// - Returns: `CreateKxScalingGroupOutput` : [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 createKxScalingGroup(input: CreateKxScalingGroupInput) async throws -> CreateKxScalingGroupOutput /// Performs the `CreateKxUser` operation on the `AWSHabaneroManagementService` service. /// /// Creates a user in FinSpace kdb environment with an associated IAM role. @@ -120,6 +159,26 @@ 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 createKxUser(input: CreateKxUserInput) async throws -> CreateKxUserOutput + /// Performs the `CreateKxVolume` operation on the `AWSHabaneroManagementService` service. + /// + /// Creates a new volume with a specific amount of throughput and storage capacity. + /// + /// - Parameter CreateKxVolumeInput : [no documentation found] + /// + /// - Returns: `CreateKxVolumeOutput` : [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. + /// - `ResourceAlreadyExistsException` : The specified resource group already exists. + /// - `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 createKxVolume(input: CreateKxVolumeInput) async throws -> CreateKxVolumeOutput /// Performs the `DeleteEnvironment` operation on the `AWSHabaneroManagementService` service. /// /// Delete an FinSpace environment. @@ -175,6 +234,24 @@ 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 deleteKxDatabase(input: DeleteKxDatabaseInput) async throws -> DeleteKxDatabaseOutput + /// Performs the `DeleteKxDataview` operation on the `AWSHabaneroManagementService` service. + /// + /// Deletes the specified dataview. Before deleting a dataview, make sure that it is not in use by any cluster. + /// + /// - Parameter DeleteKxDataviewInput : [no documentation found] + /// + /// - Returns: `DeleteKxDataviewOutput` : [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. + /// - `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 deleteKxDataview(input: DeleteKxDataviewInput) async throws -> DeleteKxDataviewOutput /// Performs the `DeleteKxEnvironment` operation on the `AWSHabaneroManagementService` service. /// /// Deletes the kdb environment. This action is irreversible. Deleting a kdb environment will remove all the associated data and any services running in it. @@ -187,11 +264,31 @@ public protocol FinspaceClientProtocol { /// /// __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. /// - `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 deleteKxEnvironment(input: DeleteKxEnvironmentInput) async throws -> DeleteKxEnvironmentOutput + /// Performs the `DeleteKxScalingGroup` operation on the `AWSHabaneroManagementService` service. + /// + /// Deletes the specified scaling group. This action is irreversible. You cannot delete a scaling group until all the clusters running on it have been deleted. + /// + /// - Parameter DeleteKxScalingGroupInput : [no documentation found] + /// + /// - Returns: `DeleteKxScalingGroupOutput` : [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 deleteKxScalingGroup(input: DeleteKxScalingGroupInput) async throws -> DeleteKxScalingGroupOutput /// Performs the `DeleteKxUser` operation on the `AWSHabaneroManagementService` service. /// /// Deletes a user in the specified kdb environment. @@ -204,11 +301,31 @@ public protocol FinspaceClientProtocol { /// /// __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. /// - `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 deleteKxUser(input: DeleteKxUserInput) async throws -> DeleteKxUserOutput + /// Performs the `DeleteKxVolume` operation on the `AWSHabaneroManagementService` service. + /// + /// Deletes a volume. You can only delete a volume if it's not attached to a cluster or a dataview. When a volume is deleted, any data on the volume is lost. This action is irreversible. + /// + /// - Parameter DeleteKxVolumeInput : [no documentation found] + /// + /// - Returns: `DeleteKxVolumeOutput` : [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 deleteKxVolume(input: DeleteKxVolumeInput) async throws -> DeleteKxVolumeOutput /// Performs the `GetEnvironment` operation on the `AWSHabaneroManagementService` service. /// /// Returns the FinSpace environment object. @@ -296,6 +413,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 getKxDatabase(input: GetKxDatabaseInput) async throws -> GetKxDatabaseOutput + /// Performs the `GetKxDataview` operation on the `AWSHabaneroManagementService` service. + /// + /// Retrieves details of the dataview. + /// + /// - Parameter GetKxDataviewInput : [no documentation found] + /// + /// - Returns: `GetKxDataviewOutput` : [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. + /// - `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 getKxDataview(input: GetKxDataviewInput) async throws -> GetKxDataviewOutput /// Performs the `GetKxEnvironment` operation on the `AWSHabaneroManagementService` service. /// /// Retrieves all the information for the specified kdb environment. @@ -308,10 +442,30 @@ public protocol FinspaceClientProtocol { /// /// __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. /// - `ResourceNotFoundException` : One or more resources can't be found. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. func getKxEnvironment(input: GetKxEnvironmentInput) async throws -> GetKxEnvironmentOutput + /// Performs the `GetKxScalingGroup` operation on the `AWSHabaneroManagementService` service. + /// + /// Retrieves details of a scaling group. + /// + /// - Parameter GetKxScalingGroupInput : [no documentation found] + /// + /// - Returns: `GetKxScalingGroupOutput` : [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 getKxScalingGroup(input: GetKxScalingGroupInput) async throws -> GetKxScalingGroupOutput /// Performs the `GetKxUser` operation on the `AWSHabaneroManagementService` service. /// /// Retrieves information about the specified kdb user. @@ -329,6 +483,25 @@ 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 getKxUser(input: GetKxUserInput) async throws -> GetKxUserOutput + /// Performs the `GetKxVolume` operation on the `AWSHabaneroManagementService` service. + /// + /// Retrieves the information about the volume. + /// + /// - Parameter GetKxVolumeInput : [no documentation found] + /// + /// - Returns: `GetKxVolumeOutput` : [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 getKxVolume(input: GetKxVolumeInput) async throws -> GetKxVolumeOutput /// Performs the `ListEnvironments` operation on the `AWSHabaneroManagementService` service. /// /// A list of all of your FinSpace environments. @@ -341,6 +514,7 @@ public protocol FinspaceClientProtocol { /// - 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. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. func listEnvironments(input: ListEnvironmentsInput) async throws -> ListEnvironmentsOutput @@ -415,6 +589,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 listKxDatabases(input: ListKxDatabasesInput) async throws -> ListKxDatabasesOutput + /// Performs the `ListKxDataviews` operation on the `AWSHabaneroManagementService` service. + /// + /// Returns a list of all the dataviews in the database. + /// + /// - Parameter ListKxDataviewsInput : [no documentation found] + /// + /// - Returns: `ListKxDataviewsOutput` : [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. + /// - `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 listKxDataviews(input: ListKxDataviewsInput) async throws -> ListKxDataviewsOutput /// Performs the `ListKxEnvironments` operation on the `AWSHabaneroManagementService` service. /// /// Returns a list of kdb environments created in an account. @@ -426,9 +617,29 @@ public protocol FinspaceClientProtocol { /// - 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. /// - `ValidationException` : The input fails to satisfy the constraints specified by an AWS service. func listKxEnvironments(input: ListKxEnvironmentsInput) async throws -> ListKxEnvironmentsOutput + /// Performs the `ListKxScalingGroups` operation on the `AWSHabaneroManagementService` service. + /// + /// Returns a list of scaling groups in a kdb environment. + /// + /// - Parameter ListKxScalingGroupsInput : [no documentation found] + /// + /// - Returns: `ListKxScalingGroupsOutput` : [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 listKxScalingGroups(input: ListKxScalingGroupsInput) async throws -> ListKxScalingGroupsOutput /// Performs the `ListKxUsers` operation on the `AWSHabaneroManagementService` service. /// /// Lists all the users in a kdb environment. @@ -446,6 +657,25 @@ 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 listKxUsers(input: ListKxUsersInput) async throws -> ListKxUsersOutput + /// Performs the `ListKxVolumes` operation on the `AWSHabaneroManagementService` service. + /// + /// Lists all the volumes in a kdb environment. + /// + /// - Parameter ListKxVolumesInput : [no documentation found] + /// + /// - Returns: `ListKxVolumesOutput` : [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 listKxVolumes(input: ListKxVolumesInput) async throws -> ListKxVolumesOutput /// Performs the `ListTagsForResource` operation on the `AWSHabaneroManagementService` service. /// /// A list of all tags for a resource. @@ -565,6 +795,25 @@ 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 updateKxDatabase(input: UpdateKxDatabaseInput) async throws -> UpdateKxDatabaseOutput + /// Performs the `UpdateKxDataview` operation on the `AWSHabaneroManagementService` service. + /// + /// Updates the specified dataview. The dataviews get automatically updated when any new changesets are ingested. Each update of the dataview creates a new version, including changeset details and cache configurations + /// + /// - Parameter UpdateKxDataviewInput : [no documentation found] + /// + /// - Returns: `UpdateKxDataviewOutput` : [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. + /// - `ResourceAlreadyExistsException` : The specified resource group already exists. + /// - `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 updateKxDataview(input: UpdateKxDataviewInput) async throws -> UpdateKxDataviewOutput /// Performs the `UpdateKxEnvironment` operation on the `AWSHabaneroManagementService` service. /// /// Updates information for the given kdb environment. @@ -620,6 +869,25 @@ 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 updateKxUser(input: UpdateKxUserInput) async throws -> UpdateKxUserOutput + /// Performs the `UpdateKxVolume` operation on the `AWSHabaneroManagementService` service. + /// + /// Updates the throughput or capacity of a volume. During the update process, the filesystem might be unavailable for a few minutes. You can retry any operations after the update is complete. + /// + /// - Parameter UpdateKxVolumeInput : [no documentation found] + /// + /// - Returns: `UpdateKxVolumeOutput` : [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 updateKxVolume(input: UpdateKxVolumeInput) async throws -> UpdateKxVolumeOutput } public enum FinspaceClientTypes {} diff --git a/Sources/Services/AWSFinspace/Paginators.swift b/Sources/Services/AWSFinspace/Paginators.swift index 760bfbe4303..07df089fe85 100644 --- a/Sources/Services/AWSFinspace/Paginators.swift +++ b/Sources/Services/AWSFinspace/Paginators.swift @@ -70,6 +70,29 @@ extension ListKxDatabasesInput: ClientRuntime.PaginateToken { nextToken: token )} } +extension FinspaceClient { + /// Paginate over `[ListKxDataviewsOutput]` 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 `[ListKxDataviewsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListKxDataviewsOutput` + public func listKxDataviewsPaginated(input: ListKxDataviewsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.listKxDataviews(input:)) + } +} + +extension ListKxDataviewsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListKxDataviewsInput { + return ListKxDataviewsInput( + databaseName: self.databaseName, + environmentId: self.environmentId, + maxResults: self.maxResults, + nextToken: token + )} +} extension FinspaceClient { /// Paginate over `[ListKxEnvironmentsOutput]` results. /// @@ -100,3 +123,25 @@ extension PaginatorSequence where OperationStackInput == ListKxEnvironmentsInput return try await self.asyncCompactMap { item in item.environments } } } +extension FinspaceClient { + /// Paginate over `[ListKxScalingGroupsOutput]` 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 `[ListKxScalingGroupsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListKxScalingGroupsOutput` + public func listKxScalingGroupsPaginated(input: ListKxScalingGroupsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.listKxScalingGroups(input:)) + } +} + +extension ListKxScalingGroupsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListKxScalingGroupsInput { + return ListKxScalingGroupsInput( + environmentId: self.environmentId, + maxResults: self.maxResults, + nextToken: token + )} +} diff --git a/Sources/Services/AWSFinspace/models/Models.swift b/Sources/Services/AWSFinspace/models/Models.swift index 76192dd90dd..12809a68126 100644 --- a/Sources/Services/AWSFinspace/models/Models.swift +++ b/Sources/Services/AWSFinspace/models/Models.swift @@ -989,7 +989,9 @@ extension CreateKxClusterInput: Swift.Encodable { case initializationScript case releaseLabel case savedownStorageConfiguration + case scalingGroupConfiguration case tags + case tickerplantLogConfiguration case vpcConfiguration } @@ -1052,12 +1054,18 @@ extension CreateKxClusterInput: Swift.Encodable { if let savedownStorageConfiguration = self.savedownStorageConfiguration { try encodeContainer.encode(savedownStorageConfiguration, forKey: .savedownStorageConfiguration) } + if let scalingGroupConfiguration = self.scalingGroupConfiguration { + try encodeContainer.encode(scalingGroupConfiguration, forKey: .scalingGroupConfiguration) + } if let tags = tags { var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) for (dictKey0, tagMap0) in tags { try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) } } + if let tickerplantLogConfiguration = self.tickerplantLogConfiguration { + try encodeContainer.encode(tickerplantLogConfiguration, forKey: .tickerplantLogConfiguration) + } if let vpcConfiguration = self.vpcConfiguration { try encodeContainer.encode(vpcConfiguration, forKey: .vpcConfiguration) } @@ -1088,7 +1096,6 @@ public struct CreateKxClusterInput: Swift.Equatable { /// The configurations for a read only cache storage associated with a cluster. This cache will be stored as an FSx Lustre that reads from the S3 store. public var cacheStorageConfigurations: [FinspaceClientTypes.KxCacheStorageConfiguration]? /// A structure for the metadata of a cluster. It includes information like the CPUs needed, memory of instances, and number of instances. - /// This member is required. public var capacityConfiguration: FinspaceClientTypes.CapacityConfiguration? /// A token that ensures idempotency. This token expires in 10 minutes. public var clientToken: Swift.String? @@ -1106,6 +1113,8 @@ public struct CreateKxClusterInput: Swift.Equatable { /// * GATEWAY – A gateway cluster allows you to access data across processes in kdb systems. It allows you to create your own routing logic using the initialization scripts and custom code. This type of cluster does not require a writable local storage. /// /// * GP – A general purpose cluster allows you to quickly iterate on code during development by granting greater access to system commands and enabling a fast reload of custom code. This cluster type can optionally mount databases including cache and savedown storage. For this cluster type, the node count is fixed at 1. It does not support autoscaling and supports only SINGLE AZ mode. + /// + /// * Tickerplant – A tickerplant cluster allows you to subscribe to feed handlers based on IAM permissions. It can publish to RDBs, other Tickerplants, and real-time subscribers (RTS). Tickerplants can persist messages to log, which is readable by any RDB environment. It supports only single-node that is only one kdb process. /// This member is required. public var clusterType: FinspaceClientTypes.KxClusterType? /// The details of the custom code that you want to use inside a cluster when analyzing a data. It consists of the S3 source bucket, location, S3 object version, and the relative path from where the custom code is loaded into the cluster. @@ -1126,9 +1135,14 @@ public struct CreateKxClusterInput: Swift.Equatable { public var releaseLabel: Swift.String? /// The size and type of the temporary storage that is used to hold data during the savedown process. This parameter is required when you choose clusterType as RDB. All the data written to this storage space is lost when the cluster node is restarted. public var savedownStorageConfiguration: FinspaceClientTypes.KxSavedownStorageConfiguration? + /// The structure that stores the configuration details of a scaling group. + public var scalingGroupConfiguration: FinspaceClientTypes.KxScalingGroupConfiguration? /// A list of key-value pairs to label the cluster. You can add up to 50 tags to a cluster. public var tags: [Swift.String:Swift.String]? + /// A configuration to store Tickerplant logs. It consists of a list of volumes that will be mounted to your cluster. For the cluster type Tickerplant, the location of the TP volume on the cluster will be available by using the global variable .aws.tp_log_path. + public var tickerplantLogConfiguration: FinspaceClientTypes.TickerplantLogConfiguration? /// Configuration details about the network where the Privatelink endpoint of the cluster resides. + /// This member is required. public var vpcConfiguration: FinspaceClientTypes.VpcConfiguration? public init( @@ -1149,7 +1163,9 @@ public struct CreateKxClusterInput: Swift.Equatable { initializationScript: Swift.String? = nil, releaseLabel: Swift.String? = nil, savedownStorageConfiguration: FinspaceClientTypes.KxSavedownStorageConfiguration? = nil, + scalingGroupConfiguration: FinspaceClientTypes.KxScalingGroupConfiguration? = nil, tags: [Swift.String:Swift.String]? = nil, + tickerplantLogConfiguration: FinspaceClientTypes.TickerplantLogConfiguration? = nil, vpcConfiguration: FinspaceClientTypes.VpcConfiguration? = nil ) { @@ -1170,7 +1186,9 @@ public struct CreateKxClusterInput: Swift.Equatable { self.initializationScript = initializationScript self.releaseLabel = releaseLabel self.savedownStorageConfiguration = savedownStorageConfiguration + self.scalingGroupConfiguration = scalingGroupConfiguration self.tags = tags + self.tickerplantLogConfiguration = tickerplantLogConfiguration self.vpcConfiguration = vpcConfiguration } } @@ -1179,6 +1197,7 @@ struct CreateKxClusterInputBody: Swift.Equatable { let clientToken: Swift.String? let clusterName: Swift.String? let clusterType: FinspaceClientTypes.KxClusterType? + let tickerplantLogConfiguration: FinspaceClientTypes.TickerplantLogConfiguration? let databases: [FinspaceClientTypes.KxDatabaseConfiguration]? let cacheStorageConfigurations: [FinspaceClientTypes.KxCacheStorageConfiguration]? let autoScalingConfiguration: FinspaceClientTypes.AutoScalingConfiguration? @@ -1194,6 +1213,7 @@ struct CreateKxClusterInputBody: Swift.Equatable { let azMode: FinspaceClientTypes.KxAzMode? let availabilityZoneId: Swift.String? let tags: [Swift.String:Swift.String]? + let scalingGroupConfiguration: FinspaceClientTypes.KxScalingGroupConfiguration? } extension CreateKxClusterInputBody: Swift.Decodable { @@ -1214,7 +1234,9 @@ extension CreateKxClusterInputBody: Swift.Decodable { case initializationScript case releaseLabel case savedownStorageConfiguration + case scalingGroupConfiguration case tags + case tickerplantLogConfiguration case vpcConfiguration } @@ -1226,6 +1248,8 @@ extension CreateKxClusterInputBody: Swift.Decodable { clusterName = clusterNameDecoded let clusterTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterType.self, forKey: .clusterType) clusterType = clusterTypeDecoded + let tickerplantLogConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.TickerplantLogConfiguration.self, forKey: .tickerplantLogConfiguration) + tickerplantLogConfiguration = tickerplantLogConfigurationDecoded let databasesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDatabaseConfiguration?].self, forKey: .databases) var databasesDecoded0:[FinspaceClientTypes.KxDatabaseConfiguration]? = nil if let databasesContainer = databasesContainer { @@ -1292,6 +1316,8 @@ extension CreateKxClusterInputBody: Swift.Decodable { } } tags = tagsDecoded0 + let scalingGroupConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxScalingGroupConfiguration.self, forKey: .scalingGroupConfiguration) + scalingGroupConfiguration = scalingGroupConfigurationDecoded } } @@ -1318,8 +1344,11 @@ extension CreateKxClusterOutput: ClientRuntime.HttpResponseBinding { self.lastModifiedTimestamp = output.lastModifiedTimestamp self.releaseLabel = output.releaseLabel self.savedownStorageConfiguration = output.savedownStorageConfiguration + self.scalingGroupConfiguration = output.scalingGroupConfiguration self.status = output.status self.statusReason = output.statusReason + self.tickerplantLogConfiguration = output.tickerplantLogConfiguration + self.volumes = output.volumes self.vpcConfiguration = output.vpcConfiguration } else { self.autoScalingConfiguration = nil @@ -1340,8 +1369,11 @@ extension CreateKxClusterOutput: ClientRuntime.HttpResponseBinding { self.lastModifiedTimestamp = nil self.releaseLabel = nil self.savedownStorageConfiguration = nil + self.scalingGroupConfiguration = nil self.status = nil self.statusReason = nil + self.tickerplantLogConfiguration = nil + self.volumes = nil self.vpcConfiguration = nil } } @@ -1375,6 +1407,8 @@ public struct CreateKxClusterOutput: Swift.Equatable { /// * GATEWAY – A gateway cluster allows you to access data across processes in kdb systems. It allows you to create your own routing logic using the initialization scripts and custom code. This type of cluster does not require a writable local storage. /// /// * GP – A general purpose cluster allows you to quickly iterate on code during development by granting greater access to system commands and enabling a fast reload of custom code. This cluster type can optionally mount databases including cache and savedown storage. For this cluster type, the node count is fixed at 1. It does not support autoscaling and supports only SINGLE AZ mode. + /// + /// * Tickerplant – A tickerplant cluster allows you to subscribe to feed handlers based on IAM permissions. It can publish to RDBs, other Tickerplants, and real-time subscribers (RTS). Tickerplants can persist messages to log, which is readable by any RDB environment. It supports only single-node that is only one kdb process. public var clusterType: FinspaceClientTypes.KxClusterType? /// The details of the custom code that you want to use inside a cluster when analyzing a data. It consists of the S3 source bucket, location, S3 object version, and the relative path from where the custom code is loaded into the cluster. public var code: FinspaceClientTypes.CodeConfiguration? @@ -1396,6 +1430,8 @@ public struct CreateKxClusterOutput: Swift.Equatable { public var releaseLabel: Swift.String? /// The size and type of the temporary storage that is used to hold data during the savedown process. This parameter is required when you choose clusterType as RDB. All the data written to this storage space is lost when the cluster node is restarted. public var savedownStorageConfiguration: FinspaceClientTypes.KxSavedownStorageConfiguration? + /// The structure that stores the configuration details of a scaling group. + public var scalingGroupConfiguration: FinspaceClientTypes.KxScalingGroupConfiguration? /// The status of cluster creation. /// /// * PENDING – The cluster is pending creation. @@ -1416,6 +1452,10 @@ public struct CreateKxClusterOutput: Swift.Equatable { public var status: FinspaceClientTypes.KxClusterStatus? /// The error message when a failed state occurs. public var statusReason: Swift.String? + /// A configuration to store the Tickerplant logs. It consists of a list of volumes that will be mounted to your cluster. For the cluster type Tickerplant, the location of the TP volume on the cluster will be available by using the global variable .aws.tp_log_path. + public var tickerplantLogConfiguration: FinspaceClientTypes.TickerplantLogConfiguration? + /// A list of volumes mounted on the cluster. + public var volumes: [FinspaceClientTypes.Volume]? /// Configuration details about the network where the Privatelink endpoint of the cluster resides. public var vpcConfiguration: FinspaceClientTypes.VpcConfiguration? @@ -1438,8 +1478,11 @@ public struct CreateKxClusterOutput: Swift.Equatable { lastModifiedTimestamp: ClientRuntime.Date? = nil, releaseLabel: Swift.String? = nil, savedownStorageConfiguration: FinspaceClientTypes.KxSavedownStorageConfiguration? = nil, + scalingGroupConfiguration: FinspaceClientTypes.KxScalingGroupConfiguration? = nil, status: FinspaceClientTypes.KxClusterStatus? = nil, statusReason: Swift.String? = nil, + tickerplantLogConfiguration: FinspaceClientTypes.TickerplantLogConfiguration? = nil, + volumes: [FinspaceClientTypes.Volume]? = nil, vpcConfiguration: FinspaceClientTypes.VpcConfiguration? = nil ) { @@ -1461,8 +1504,11 @@ public struct CreateKxClusterOutput: Swift.Equatable { self.lastModifiedTimestamp = lastModifiedTimestamp self.releaseLabel = releaseLabel self.savedownStorageConfiguration = savedownStorageConfiguration + self.scalingGroupConfiguration = scalingGroupConfiguration self.status = status self.statusReason = statusReason + self.tickerplantLogConfiguration = tickerplantLogConfiguration + self.volumes = volumes self.vpcConfiguration = vpcConfiguration } } @@ -1473,6 +1519,8 @@ struct CreateKxClusterOutputBody: Swift.Equatable { let statusReason: Swift.String? let clusterName: Swift.String? let clusterType: FinspaceClientTypes.KxClusterType? + let tickerplantLogConfiguration: FinspaceClientTypes.TickerplantLogConfiguration? + let volumes: [FinspaceClientTypes.Volume]? let databases: [FinspaceClientTypes.KxDatabaseConfiguration]? let cacheStorageConfigurations: [FinspaceClientTypes.KxCacheStorageConfiguration]? let autoScalingConfiguration: FinspaceClientTypes.AutoScalingConfiguration? @@ -1489,6 +1537,7 @@ struct CreateKxClusterOutputBody: Swift.Equatable { let azMode: FinspaceClientTypes.KxAzMode? let availabilityZoneId: Swift.String? let createdTimestamp: ClientRuntime.Date? + let scalingGroupConfiguration: FinspaceClientTypes.KxScalingGroupConfiguration? } extension CreateKxClusterOutputBody: Swift.Decodable { @@ -1511,8 +1560,11 @@ extension CreateKxClusterOutputBody: Swift.Decodable { case lastModifiedTimestamp case releaseLabel case savedownStorageConfiguration + case scalingGroupConfiguration case status case statusReason + case tickerplantLogConfiguration + case volumes case vpcConfiguration } @@ -1528,6 +1580,19 @@ extension CreateKxClusterOutputBody: Swift.Decodable { clusterName = clusterNameDecoded let clusterTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterType.self, forKey: .clusterType) clusterType = clusterTypeDecoded + let tickerplantLogConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.TickerplantLogConfiguration.self, forKey: .tickerplantLogConfiguration) + tickerplantLogConfiguration = tickerplantLogConfigurationDecoded + let volumesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.Volume?].self, forKey: .volumes) + var volumesDecoded0:[FinspaceClientTypes.Volume]? = nil + if let volumesContainer = volumesContainer { + volumesDecoded0 = [FinspaceClientTypes.Volume]() + for structure0 in volumesContainer { + if let structure0 = structure0 { + volumesDecoded0?.append(structure0) + } + } + } + volumes = volumesDecoded0 let databasesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDatabaseConfiguration?].self, forKey: .databases) var databasesDecoded0:[FinspaceClientTypes.KxDatabaseConfiguration]? = nil if let databasesContainer = databasesContainer { @@ -1587,6 +1652,8 @@ extension CreateKxClusterOutputBody: Swift.Decodable { availabilityZoneId = availabilityZoneIdDecoded let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) createdTimestamp = createdTimestampDecoded + let scalingGroupConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxScalingGroupConfiguration.self, forKey: .scalingGroupConfiguration) + scalingGroupConfiguration = scalingGroupConfigurationDecoded } } @@ -1820,28 +1887,47 @@ enum CreateKxDatabaseOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension CreateKxEnvironmentInput: Swift.Encodable { +extension CreateKxDataviewInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case autoUpdate + case availabilityZoneId + case azMode + case changesetId case clientToken + case dataviewName case description - case kmsKeyId - case name + case segmentConfigurations case tags } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let autoUpdate = self.autoUpdate { + try encodeContainer.encode(autoUpdate, forKey: .autoUpdate) + } + if let availabilityZoneId = self.availabilityZoneId { + try encodeContainer.encode(availabilityZoneId, forKey: .availabilityZoneId) + } + if let azMode = self.azMode { + try encodeContainer.encode(azMode.rawValue, forKey: .azMode) + } + if let changesetId = self.changesetId { + try encodeContainer.encode(changesetId, forKey: .changesetId) + } if let clientToken = self.clientToken { try encodeContainer.encode(clientToken, forKey: .clientToken) } + if let dataviewName = self.dataviewName { + try encodeContainer.encode(dataviewName, forKey: .dataviewName) + } if let description = self.description { try encodeContainer.encode(description, forKey: .description) } - if let kmsKeyId = self.kmsKeyId { - try encodeContainer.encode(kmsKeyId, forKey: .kmsKeyId) - } - if let name = self.name { - try encodeContainer.encode(name, forKey: .name) + if let segmentConfigurations = segmentConfigurations { + var segmentConfigurationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .segmentConfigurations) + for kxdataviewsegmentconfiguration0 in segmentConfigurations { + try segmentConfigurationsContainer.encode(kxdataviewsegmentconfiguration0) + } } if let tags = tags { var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) @@ -1852,67 +1938,129 @@ extension CreateKxEnvironmentInput: Swift.Encodable { } } -extension CreateKxEnvironmentInput: ClientRuntime.URLPathProvider { +extension CreateKxDataviewInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - return "/kx/environments" + guard let environmentId = environmentId else { + return nil + } + guard let databaseName = databaseName else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/databases/\(databaseName.urlPercentEncoding())/dataviews" } } -public struct CreateKxEnvironmentInput: Swift.Equatable { +public struct CreateKxDataviewInput: Swift.Equatable { + /// The option to specify whether you want to apply all the future additions and corrections automatically to the dataview, when you ingest new changesets. The default value is false. + public var autoUpdate: Swift.Bool? + /// The identifier of the availability zones. + public var availabilityZoneId: Swift.String? + /// The number of availability zones you want to assign per cluster. This can be one of the following + /// + /// * SINGLE – Assigns one availability zone per cluster. + /// + /// * MULTI – Assigns all the availability zones per cluster. + /// This member is required. + public var azMode: FinspaceClientTypes.KxAzMode? + /// A unique identifier of the changeset that you want to use to ingest data. + public var changesetId: Swift.String? /// A token that ensures idempotency. This token expires in 10 minutes. + /// This member is required. public var clientToken: Swift.String? - /// A description for the kdb environment. - public var description: Swift.String? - /// The KMS key ID to encrypt your data in the FinSpace environment. + /// The name of the database where you want to create a dataview. /// This member is required. - public var kmsKeyId: Swift.String? - /// The name of the kdb environment that you want to create. + public var databaseName: Swift.String? + /// A unique identifier for the dataview. /// This member is required. - public var name: Swift.String? - /// A list of key-value pairs to label the kdb environment. You can add up to 50 tags to your kdb environment. + public var dataviewName: Swift.String? + /// A description of the dataview. + public var description: Swift.String? + /// A unique identifier for the kdb environment, where you want to create the dataview. + /// This member is required. + public var environmentId: Swift.String? + /// The configuration that contains the database path of the data that you want to place on each selected volume. Each segment must have a unique database path for each volume. If you do not explicitly specify any database path for a volume, they are accessible from the cluster through the default S3/object store segment. + public var segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? + /// A list of key-value pairs to label the dataview. You can add up to 50 tags to a dataview. public var tags: [Swift.String:Swift.String]? public init( + autoUpdate: Swift.Bool? = nil, + availabilityZoneId: Swift.String? = nil, + azMode: FinspaceClientTypes.KxAzMode? = nil, + changesetId: Swift.String? = nil, clientToken: Swift.String? = nil, + databaseName: Swift.String? = nil, + dataviewName: Swift.String? = nil, description: Swift.String? = nil, - kmsKeyId: Swift.String? = nil, - name: Swift.String? = nil, + environmentId: Swift.String? = nil, + segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil, tags: [Swift.String:Swift.String]? = nil ) { + self.autoUpdate = autoUpdate + self.availabilityZoneId = availabilityZoneId + self.azMode = azMode + self.changesetId = changesetId self.clientToken = clientToken + self.databaseName = databaseName + self.dataviewName = dataviewName self.description = description - self.kmsKeyId = kmsKeyId - self.name = name + self.environmentId = environmentId + self.segmentConfigurations = segmentConfigurations self.tags = tags } } -struct CreateKxEnvironmentInputBody: Swift.Equatable { - let name: Swift.String? +struct CreateKxDataviewInputBody: Swift.Equatable { + let dataviewName: Swift.String? + let azMode: FinspaceClientTypes.KxAzMode? + let availabilityZoneId: Swift.String? + let changesetId: Swift.String? + let segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? + let autoUpdate: Swift.Bool? let description: Swift.String? - let kmsKeyId: Swift.String? let tags: [Swift.String:Swift.String]? let clientToken: Swift.String? } -extension CreateKxEnvironmentInputBody: Swift.Decodable { +extension CreateKxDataviewInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case autoUpdate + case availabilityZoneId + case azMode + case changesetId case clientToken + case dataviewName case description - case kmsKeyId - case name + case segmentConfigurations case 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 dataviewNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dataviewName) + dataviewName = dataviewNameDecoded + let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) + azMode = azModeDecoded + let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) + availabilityZoneId = availabilityZoneIdDecoded + let changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) + changesetId = changesetIdDecoded + let segmentConfigurationsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDataviewSegmentConfiguration?].self, forKey: .segmentConfigurations) + var segmentConfigurationsDecoded0:[FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil + if let segmentConfigurationsContainer = segmentConfigurationsContainer { + segmentConfigurationsDecoded0 = [FinspaceClientTypes.KxDataviewSegmentConfiguration]() + for structure0 in segmentConfigurationsContainer { + if let structure0 = structure0 { + segmentConfigurationsDecoded0?.append(structure0) + } + } + } + segmentConfigurations = segmentConfigurationsDecoded0 + let autoUpdateDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .autoUpdate) + autoUpdate = autoUpdateDecoded let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) description = descriptionDecoded - let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) - kmsKeyId = kmsKeyIdDecoded let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) var tagsDecoded0: [Swift.String:Swift.String]? = nil if let tagsContainer = tagsContainer { @@ -1929,107 +2077,176 @@ extension CreateKxEnvironmentInputBody: Swift.Decodable { } } -extension CreateKxEnvironmentOutput: ClientRuntime.HttpResponseBinding { +extension CreateKxDataviewOutput: 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: CreateKxEnvironmentOutputBody = try responseDecoder.decode(responseBody: data) - self.creationTimestamp = output.creationTimestamp + let output: CreateKxDataviewOutputBody = try responseDecoder.decode(responseBody: data) + self.autoUpdate = output.autoUpdate + self.availabilityZoneId = output.availabilityZoneId + self.azMode = output.azMode + self.changesetId = output.changesetId + self.createdTimestamp = output.createdTimestamp + self.databaseName = output.databaseName + self.dataviewName = output.dataviewName self.description = output.description - self.environmentArn = output.environmentArn self.environmentId = output.environmentId - self.kmsKeyId = output.kmsKeyId - self.name = output.name + self.lastModifiedTimestamp = output.lastModifiedTimestamp + self.segmentConfigurations = output.segmentConfigurations self.status = output.status } else { - self.creationTimestamp = nil + self.autoUpdate = false + self.availabilityZoneId = nil + self.azMode = nil + self.changesetId = nil + self.createdTimestamp = nil + self.databaseName = nil + self.dataviewName = nil self.description = nil - self.environmentArn = nil self.environmentId = nil - self.kmsKeyId = nil - self.name = nil + self.lastModifiedTimestamp = nil + self.segmentConfigurations = nil self.status = nil } } } -public struct CreateKxEnvironmentOutput: Swift.Equatable { - /// The timestamp at which the kdb environment was created in FinSpace. - public var creationTimestamp: ClientRuntime.Date? - /// A description for the kdb environment. +public struct CreateKxDataviewOutput: Swift.Equatable { + /// The option to select whether you want to apply all the future additions and corrections automatically to the dataview when you ingest new changesets. The default value is false. + public var autoUpdate: Swift.Bool + /// The identifier of the availability zones. + public var availabilityZoneId: Swift.String? + /// The number of availability zones you want to assign per cluster. This can be one of the following + /// + /// * SINGLE – Assigns one availability zone per cluster. + /// + /// * MULTI – Assigns all the availability zones per cluster. + public var azMode: FinspaceClientTypes.KxAzMode? + /// A unique identifier for the changeset. + public var changesetId: Swift.String? + /// The timestamp at which the dataview was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// The name of the database where you want to create a dataview. + public var databaseName: Swift.String? + /// A unique identifier for the dataview. + public var dataviewName: Swift.String? + /// A description of the dataview. public var description: Swift.String? - /// The ARN identifier of the environment. - public var environmentArn: Swift.String? - /// A unique identifier for the kdb environment. + /// A unique identifier for the kdb environment, where you want to create the dataview. public var environmentId: Swift.String? - /// The KMS key ID to encrypt your data in the FinSpace environment. - public var kmsKeyId: Swift.String? - /// The name of the kdb environment. - public var name: Swift.String? - /// The status of the kdb environment. - public var status: FinspaceClientTypes.EnvironmentStatus? + /// The last time that the dataview was updated in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// The configuration that contains the database path of the data that you want to place on each selected volume. Each segment must have a unique database path for each volume. If you do not explicitly specify any database path for a volume, they are accessible from the cluster through the default S3/object store segment. + public var segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? + /// The status of dataview creation. + /// + /// * CREATING – The dataview creation is in progress. + /// + /// * UPDATING – The dataview is in the process of being updated. + /// + /// * ACTIVE – The dataview is active. + public var status: FinspaceClientTypes.KxDataviewStatus? public init( - creationTimestamp: ClientRuntime.Date? = nil, + autoUpdate: Swift.Bool = false, + availabilityZoneId: Swift.String? = nil, + azMode: FinspaceClientTypes.KxAzMode? = nil, + changesetId: Swift.String? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + databaseName: Swift.String? = nil, + dataviewName: Swift.String? = nil, description: Swift.String? = nil, - environmentArn: Swift.String? = nil, environmentId: Swift.String? = nil, - kmsKeyId: Swift.String? = nil, - name: Swift.String? = nil, - status: FinspaceClientTypes.EnvironmentStatus? = nil + lastModifiedTimestamp: ClientRuntime.Date? = nil, + segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil, + status: FinspaceClientTypes.KxDataviewStatus? = nil ) { - self.creationTimestamp = creationTimestamp + self.autoUpdate = autoUpdate + self.availabilityZoneId = availabilityZoneId + self.azMode = azMode + self.changesetId = changesetId + self.createdTimestamp = createdTimestamp + self.databaseName = databaseName + self.dataviewName = dataviewName self.description = description - self.environmentArn = environmentArn self.environmentId = environmentId - self.kmsKeyId = kmsKeyId - self.name = name + self.lastModifiedTimestamp = lastModifiedTimestamp + self.segmentConfigurations = segmentConfigurations self.status = status } } -struct CreateKxEnvironmentOutputBody: Swift.Equatable { - let name: Swift.String? - let status: FinspaceClientTypes.EnvironmentStatus? +struct CreateKxDataviewOutputBody: Swift.Equatable { + let dataviewName: Swift.String? + let databaseName: Swift.String? let environmentId: Swift.String? + let azMode: FinspaceClientTypes.KxAzMode? + let availabilityZoneId: Swift.String? + let changesetId: Swift.String? + let segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? let description: Swift.String? - let environmentArn: Swift.String? - let kmsKeyId: Swift.String? - let creationTimestamp: ClientRuntime.Date? + let autoUpdate: Swift.Bool + let createdTimestamp: ClientRuntime.Date? + let lastModifiedTimestamp: ClientRuntime.Date? + let status: FinspaceClientTypes.KxDataviewStatus? } -extension CreateKxEnvironmentOutputBody: Swift.Decodable { +extension CreateKxDataviewOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case creationTimestamp + case autoUpdate + case availabilityZoneId + case azMode + case changesetId + case createdTimestamp + case databaseName + case dataviewName case description - case environmentArn case environmentId - case kmsKeyId - case name + case lastModifiedTimestamp + case segmentConfigurations case status } 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 statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.EnvironmentStatus.self, forKey: .status) - status = statusDecoded + let dataviewNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dataviewName) + dataviewName = dataviewNameDecoded + let databaseNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseName) + databaseName = databaseNameDecoded let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) environmentId = environmentIdDecoded + let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) + azMode = azModeDecoded + let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) + availabilityZoneId = availabilityZoneIdDecoded + let changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) + changesetId = changesetIdDecoded + let segmentConfigurationsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDataviewSegmentConfiguration?].self, forKey: .segmentConfigurations) + var segmentConfigurationsDecoded0:[FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil + if let segmentConfigurationsContainer = segmentConfigurationsContainer { + segmentConfigurationsDecoded0 = [FinspaceClientTypes.KxDataviewSegmentConfiguration]() + for structure0 in segmentConfigurationsContainer { + if let structure0 = structure0 { + segmentConfigurationsDecoded0?.append(structure0) + } + } + } + segmentConfigurations = segmentConfigurationsDecoded0 let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) description = descriptionDecoded - let environmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentArn) - environmentArn = environmentArnDecoded - let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) - kmsKeyId = kmsKeyIdDecoded - let creationTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .creationTimestamp) - creationTimestamp = creationTimestampDecoded + let autoUpdateDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .autoUpdate) ?? false + autoUpdate = autoUpdateDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxDataviewStatus.self, forKey: .status) + status = statusDecoded } } -enum CreateKxEnvironmentOutputError: ClientRuntime.HttpResponseErrorBinding { +enum CreateKxDataviewOutputError: 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 @@ -2038,7 +2255,8 @@ enum CreateKxEnvironmentOutputError: 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 "LimitExceededException": return try await LimitExceededException(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 "ResourceAlreadyExistsException": return try await ResourceAlreadyExistsException(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) @@ -2046,12 +2264,13 @@ enum CreateKxEnvironmentOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension CreateKxUserInput: Swift.Encodable { +extension CreateKxEnvironmentInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken - case iamRole + case description + case kmsKeyId + case name case tags - case userName } public func encode(to encoder: Swift.Encoder) throws { @@ -2059,8 +2278,14 @@ extension CreateKxUserInput: Swift.Encodable { if let clientToken = self.clientToken { try encodeContainer.encode(clientToken, forKey: .clientToken) } - if let iamRole = self.iamRole { - try encodeContainer.encode(iamRole, forKey: .iamRole) + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let kmsKeyId = self.kmsKeyId { + try encodeContainer.encode(kmsKeyId, forKey: .kmsKeyId) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) } if let tags = tags { var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) @@ -2068,73 +2293,70 @@ extension CreateKxUserInput: Swift.Encodable { try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) } } - if let userName = self.userName { - try encodeContainer.encode(userName, forKey: .userName) - } } } -extension CreateKxUserInput: ClientRuntime.URLPathProvider { +extension CreateKxEnvironmentInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - guard let environmentId = environmentId else { - return nil - } - return "/kx/environments/\(environmentId.urlPercentEncoding())/users" + return "/kx/environments" } } -public struct CreateKxUserInput: Swift.Equatable { +public struct CreateKxEnvironmentInput: Swift.Equatable { /// A token that ensures idempotency. This token expires in 10 minutes. public var clientToken: Swift.String? - /// A unique identifier for the kdb environment where you want to create a user. + /// A description for the kdb environment. + public var description: Swift.String? + /// The KMS key ID to encrypt your data in the FinSpace environment. /// This member is required. - public var environmentId: Swift.String? - /// The IAM role ARN that will be associated with the user. + public var kmsKeyId: Swift.String? + /// The name of the kdb environment that you want to create. /// This member is required. - public var iamRole: Swift.String? - /// A list of key-value pairs to label the user. You can add up to 50 tags to a user. + public var name: Swift.String? + /// A list of key-value pairs to label the kdb environment. You can add up to 50 tags to your kdb environment. public var tags: [Swift.String:Swift.String]? - /// A unique identifier for the user. - /// This member is required. - public var userName: Swift.String? public init( clientToken: Swift.String? = nil, - environmentId: Swift.String? = nil, - iamRole: Swift.String? = nil, - tags: [Swift.String:Swift.String]? = nil, - userName: Swift.String? = nil + description: Swift.String? = nil, + kmsKeyId: Swift.String? = nil, + name: Swift.String? = nil, + tags: [Swift.String:Swift.String]? = nil ) { self.clientToken = clientToken - self.environmentId = environmentId - self.iamRole = iamRole + self.description = description + self.kmsKeyId = kmsKeyId + self.name = name self.tags = tags - self.userName = userName } } -struct CreateKxUserInputBody: Swift.Equatable { - let userName: Swift.String? - let iamRole: Swift.String? +struct CreateKxEnvironmentInputBody: Swift.Equatable { + let name: Swift.String? + let description: Swift.String? + let kmsKeyId: Swift.String? let tags: [Swift.String:Swift.String]? let clientToken: Swift.String? } -extension CreateKxUserInputBody: Swift.Decodable { +extension CreateKxEnvironmentInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken - case iamRole + case description + case kmsKeyId + case name case tags - case userName } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let userNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userName) - userName = userNameDecoded - let iamRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .iamRole) - iamRole = iamRoleDecoded + 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 kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) + kmsKeyId = kmsKeyIdDecoded let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) var tagsDecoded0: [Swift.String:Swift.String]? = nil if let tagsContainer = tagsContainer { @@ -2151,77 +2373,107 @@ extension CreateKxUserInputBody: Swift.Decodable { } } -extension CreateKxUserOutput: ClientRuntime.HttpResponseBinding { +extension CreateKxEnvironmentOutput: 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: CreateKxUserOutputBody = try responseDecoder.decode(responseBody: data) + let output: CreateKxEnvironmentOutputBody = try responseDecoder.decode(responseBody: data) + self.creationTimestamp = output.creationTimestamp + self.description = output.description + self.environmentArn = output.environmentArn self.environmentId = output.environmentId - self.iamRole = output.iamRole - self.userArn = output.userArn - self.userName = output.userName + self.kmsKeyId = output.kmsKeyId + self.name = output.name + self.status = output.status } else { + self.creationTimestamp = nil + self.description = nil + self.environmentArn = nil self.environmentId = nil - self.iamRole = nil - self.userArn = nil - self.userName = nil + self.kmsKeyId = nil + self.name = nil + self.status = nil } } } -public struct CreateKxUserOutput: Swift.Equatable { +public struct CreateKxEnvironmentOutput: Swift.Equatable { + /// The timestamp at which the kdb environment was created in FinSpace. + public var creationTimestamp: ClientRuntime.Date? + /// A description for the kdb environment. + public var description: Swift.String? + /// The ARN identifier of the environment. + public var environmentArn: Swift.String? /// A unique identifier for the kdb environment. public var environmentId: Swift.String? - /// The IAM role ARN that will be associated with the user. - public var iamRole: Swift.String? - /// The Amazon Resource Name (ARN) that identifies the user. For more information about ARNs and how to use ARNs in policies, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) in the IAM User Guide. - public var userArn: Swift.String? - /// A unique identifier for the user. - public var userName: Swift.String? + /// The KMS key ID to encrypt your data in the FinSpace environment. + public var kmsKeyId: Swift.String? + /// The name of the kdb environment. + public var name: Swift.String? + /// The status of the kdb environment. + public var status: FinspaceClientTypes.EnvironmentStatus? public init( + creationTimestamp: ClientRuntime.Date? = nil, + description: Swift.String? = nil, + environmentArn: Swift.String? = nil, environmentId: Swift.String? = nil, - iamRole: Swift.String? = nil, - userArn: Swift.String? = nil, - userName: Swift.String? = nil + kmsKeyId: Swift.String? = nil, + name: Swift.String? = nil, + status: FinspaceClientTypes.EnvironmentStatus? = nil ) { + self.creationTimestamp = creationTimestamp + self.description = description + self.environmentArn = environmentArn self.environmentId = environmentId - self.iamRole = iamRole - self.userArn = userArn - self.userName = userName + self.kmsKeyId = kmsKeyId + self.name = name + self.status = status } } -struct CreateKxUserOutputBody: Swift.Equatable { - let userName: Swift.String? - let userArn: Swift.String? +struct CreateKxEnvironmentOutputBody: Swift.Equatable { + let name: Swift.String? + let status: FinspaceClientTypes.EnvironmentStatus? let environmentId: Swift.String? - let iamRole: Swift.String? + let description: Swift.String? + let environmentArn: Swift.String? + let kmsKeyId: Swift.String? + let creationTimestamp: ClientRuntime.Date? } -extension CreateKxUserOutputBody: Swift.Decodable { +extension CreateKxEnvironmentOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case creationTimestamp + case description + case environmentArn case environmentId - case iamRole - case userArn - case userName + case kmsKeyId + case name + case status } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let userNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userName) - userName = userNameDecoded - let userArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userArn) - userArn = userArnDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.EnvironmentStatus.self, forKey: .status) + status = statusDecoded let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) environmentId = environmentIdDecoded - let iamRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .iamRole) - iamRole = iamRoleDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let environmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentArn) + environmentArn = environmentArnDecoded + let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) + kmsKeyId = kmsKeyIdDecoded + let creationTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .creationTimestamp) + creationTimestamp = creationTimestampDecoded } } -enum CreateKxUserOutputError: ClientRuntime.HttpResponseErrorBinding { +enum CreateKxEnvironmentOutputError: 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 @@ -2230,8 +2482,7 @@ enum CreateKxUserOutputError: 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 "LimitExceededException": return try await LimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ResourceAlreadyExistsException": return try await ResourceAlreadyExistsException(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 "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) @@ -2239,101 +2490,250 @@ enum CreateKxUserOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension FinspaceClientTypes.CustomDNSServer: Swift.Codable { +extension CreateKxScalingGroupInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case customDNSServerIP - case customDNSServerName + case availabilityZoneId + case clientToken + case hostType + case scalingGroupName + case tags } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let customDNSServerIP = self.customDNSServerIP { - try encodeContainer.encode(customDNSServerIP, forKey: .customDNSServerIP) + if let availabilityZoneId = self.availabilityZoneId { + try encodeContainer.encode(availabilityZoneId, forKey: .availabilityZoneId) } - if let customDNSServerName = self.customDNSServerName { - try encodeContainer.encode(customDNSServerName, forKey: .customDNSServerName) + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) } - } - - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let customDNSServerNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDNSServerName) - customDNSServerName = customDNSServerNameDecoded - let customDNSServerIPDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDNSServerIP) - customDNSServerIP = customDNSServerIPDecoded - } -} - -extension FinspaceClientTypes { - /// A list of DNS server name and server IP. This is used to set up Route-53 outbound resolvers. - public struct CustomDNSServer: Swift.Equatable { - /// The IP address of the DNS server. - /// This member is required. - public var customDNSServerIP: Swift.String? - /// The name of the DNS server. - /// This member is required. - public var customDNSServerName: Swift.String? - - public init( - customDNSServerIP: Swift.String? = nil, - customDNSServerName: Swift.String? = nil - ) - { - self.customDNSServerIP = customDNSServerIP - self.customDNSServerName = customDNSServerName + if let hostType = self.hostType { + try encodeContainer.encode(hostType, forKey: .hostType) + } + if let scalingGroupName = self.scalingGroupName { + try encodeContainer.encode(scalingGroupName, forKey: .scalingGroupName) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } } } - } -extension DeleteEnvironmentInput: ClientRuntime.URLPathProvider { +extension CreateKxScalingGroupInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { guard let environmentId = environmentId else { return nil } - return "/environment/\(environmentId.urlPercentEncoding())" + return "/kx/environments/\(environmentId.urlPercentEncoding())/scalingGroups" } } -public struct DeleteEnvironmentInput: Swift.Equatable { - /// The identifier for the FinSpace environment. +public struct CreateKxScalingGroupInput: Swift.Equatable { + /// The identifier of the availability zones. + /// This member is required. + public var availabilityZoneId: Swift.String? + /// A token that ensures idempotency. This token expires in 10 minutes. + /// This member is required. + public var clientToken: Swift.String? + /// A unique identifier for the kdb environment, where you want to create the scaling group. /// This member is required. public var environmentId: Swift.String? + /// The memory and CPU capabilities of the scaling group host on which FinSpace Managed kdb clusters will be placed. + /// This member is required. + public var hostType: Swift.String? + /// A unique identifier for the kdb scaling group. + /// This member is required. + public var scalingGroupName: Swift.String? + /// A list of key-value pairs to label the scaling group. You can add up to 50 tags to a scaling group. + public var tags: [Swift.String:Swift.String]? public init( - environmentId: Swift.String? = nil + availabilityZoneId: Swift.String? = nil, + clientToken: Swift.String? = nil, + environmentId: Swift.String? = nil, + hostType: Swift.String? = nil, + scalingGroupName: Swift.String? = nil, + tags: [Swift.String:Swift.String]? = nil ) { + self.availabilityZoneId = availabilityZoneId + self.clientToken = clientToken self.environmentId = environmentId + self.hostType = hostType + self.scalingGroupName = scalingGroupName + self.tags = tags } } -struct DeleteEnvironmentInputBody: Swift.Equatable { +struct CreateKxScalingGroupInputBody: Swift.Equatable { + let clientToken: Swift.String? + let scalingGroupName: Swift.String? + let hostType: Swift.String? + let availabilityZoneId: Swift.String? + let tags: [Swift.String:Swift.String]? } -extension DeleteEnvironmentInputBody: Swift.Decodable { +extension CreateKxScalingGroupInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case availabilityZoneId + case clientToken + case hostType + case scalingGroupName + case tags + } 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 scalingGroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .scalingGroupName) + scalingGroupName = scalingGroupNameDecoded + let hostTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .hostType) + hostType = hostTypeDecoded + let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) + availabilityZoneId = availabilityZoneIdDecoded + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 } } -extension DeleteEnvironmentOutput: ClientRuntime.HttpResponseBinding { +extension CreateKxScalingGroupOutput: 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: CreateKxScalingGroupOutputBody = try responseDecoder.decode(responseBody: data) + self.availabilityZoneId = output.availabilityZoneId + self.createdTimestamp = output.createdTimestamp + self.environmentId = output.environmentId + self.hostType = output.hostType + self.lastModifiedTimestamp = output.lastModifiedTimestamp + self.scalingGroupName = output.scalingGroupName + self.status = output.status + } else { + self.availabilityZoneId = nil + self.createdTimestamp = nil + self.environmentId = nil + self.hostType = nil + self.lastModifiedTimestamp = nil + self.scalingGroupName = nil + self.status = nil + } } } -public struct DeleteEnvironmentOutput: Swift.Equatable { +public struct CreateKxScalingGroupOutput: Swift.Equatable { + /// The identifier of the availability zones. + public var availabilityZoneId: Swift.String? + /// The timestamp at which the scaling group was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// A unique identifier for the kdb environment, where you create the scaling group. + public var environmentId: Swift.String? + /// The memory and CPU capabilities of the scaling group host on which FinSpace Managed kdb clusters will be placed. + public var hostType: Swift.String? + /// The last time that the scaling group was updated in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// A unique identifier for the kdb scaling group. + public var scalingGroupName: Swift.String? + /// The status of scaling group. + /// + /// * CREATING – The scaling group creation is in progress. + /// + /// * CREATE_FAILED – The scaling group creation has failed. + /// + /// * ACTIVE – The scaling group is active. + /// + /// * UPDATING – The scaling group is in the process of being updated. + /// + /// * UPDATE_FAILED – The update action failed. + /// + /// * DELETING – The scaling group is in the process of being deleted. + /// + /// * DELETE_FAILED – The system failed to delete the scaling group. + /// + /// * DELETED – The scaling group is successfully deleted. + public var status: FinspaceClientTypes.KxScalingGroupStatus? - public init() { } + public init( + availabilityZoneId: Swift.String? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + environmentId: Swift.String? = nil, + hostType: Swift.String? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + scalingGroupName: Swift.String? = nil, + status: FinspaceClientTypes.KxScalingGroupStatus? = nil + ) + { + self.availabilityZoneId = availabilityZoneId + self.createdTimestamp = createdTimestamp + self.environmentId = environmentId + self.hostType = hostType + self.lastModifiedTimestamp = lastModifiedTimestamp + self.scalingGroupName = scalingGroupName + self.status = status + } } -enum DeleteEnvironmentOutputError: ClientRuntime.HttpResponseErrorBinding { +struct CreateKxScalingGroupOutputBody: Swift.Equatable { + let environmentId: Swift.String? + let scalingGroupName: Swift.String? + let hostType: Swift.String? + let availabilityZoneId: Swift.String? + let status: FinspaceClientTypes.KxScalingGroupStatus? + let lastModifiedTimestamp: ClientRuntime.Date? + let createdTimestamp: ClientRuntime.Date? +} + +extension CreateKxScalingGroupOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case availabilityZoneId + case createdTimestamp + case environmentId + case hostType + case lastModifiedTimestamp + case scalingGroupName + case status + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let scalingGroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .scalingGroupName) + scalingGroupName = scalingGroupNameDecoded + let hostTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .hostType) + hostType = hostTypeDecoded + let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) + availabilityZoneId = availabilityZoneIdDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxScalingGroupStatus.self, forKey: .status) + status = statusDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + } +} + +enum CreateKxScalingGroupOutputError: 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) @@ -2342,73 +2742,182 @@ enum DeleteEnvironmentOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension DeleteKxClusterInput: ClientRuntime.QueryItemProvider { - public var queryItems: [ClientRuntime.URLQueryItem] { - get throws { - var items = [ClientRuntime.URLQueryItem]() - if let clientToken = clientToken { - let clientTokenQueryItem = ClientRuntime.URLQueryItem(name: "clientToken".urlPercentEncoding(), value: Swift.String(clientToken).urlPercentEncoding()) - items.append(clientTokenQueryItem) +extension CreateKxUserInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case iamRole + case tags + case userName + } + + 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 iamRole = self.iamRole { + try encodeContainer.encode(iamRole, forKey: .iamRole) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) } - return items + } + if let userName = self.userName { + try encodeContainer.encode(userName, forKey: .userName) } } } -extension DeleteKxClusterInput: ClientRuntime.URLPathProvider { +extension CreateKxUserInput: 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())" + return "/kx/environments/\(environmentId.urlPercentEncoding())/users" } } -public struct DeleteKxClusterInput: Swift.Equatable { +public struct CreateKxUserInput: Swift.Equatable { /// A token that ensures idempotency. This token expires in 10 minutes. public var clientToken: Swift.String? - /// The name of the cluster that you want to delete. - /// This member is required. - public var clusterName: Swift.String? - /// A unique identifier for the kdb environment. + /// A unique identifier for the kdb environment where you want to create a user. /// This member is required. public var environmentId: Swift.String? + /// The IAM role ARN that will be associated with the user. + /// This member is required. + public var iamRole: Swift.String? + /// A list of key-value pairs to label the user. You can add up to 50 tags to a user. + public var tags: [Swift.String:Swift.String]? + /// A unique identifier for the user. + /// This member is required. + public var userName: Swift.String? public init( clientToken: Swift.String? = nil, - clusterName: Swift.String? = nil, - environmentId: Swift.String? = nil + environmentId: Swift.String? = nil, + iamRole: Swift.String? = nil, + tags: [Swift.String:Swift.String]? = nil, + userName: Swift.String? = nil ) { self.clientToken = clientToken - self.clusterName = clusterName self.environmentId = environmentId + self.iamRole = iamRole + self.tags = tags + self.userName = userName } } -struct DeleteKxClusterInputBody: Swift.Equatable { +struct CreateKxUserInputBody: Swift.Equatable { + let userName: Swift.String? + let iamRole: Swift.String? + let tags: [Swift.String:Swift.String]? + let clientToken: Swift.String? } -extension DeleteKxClusterInputBody: Swift.Decodable { +extension CreateKxUserInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case iamRole + case tags + case userName + } public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let userNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userName) + userName = userNameDecoded + let iamRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .iamRole) + iamRole = iamRoleDecoded + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded } } -extension DeleteKxClusterOutput: ClientRuntime.HttpResponseBinding { +extension CreateKxUserOutput: 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: CreateKxUserOutputBody = try responseDecoder.decode(responseBody: data) + self.environmentId = output.environmentId + self.iamRole = output.iamRole + self.userArn = output.userArn + self.userName = output.userName + } else { + self.environmentId = nil + self.iamRole = nil + self.userArn = nil + self.userName = nil + } } } -public struct DeleteKxClusterOutput: Swift.Equatable { +public struct CreateKxUserOutput: Swift.Equatable { + /// A unique identifier for the kdb environment. + public var environmentId: Swift.String? + /// The IAM role ARN that will be associated with the user. + public var iamRole: Swift.String? + /// The Amazon Resource Name (ARN) that identifies the user. For more information about ARNs and how to use ARNs in policies, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) in the IAM User Guide. + public var userArn: Swift.String? + /// A unique identifier for the user. + public var userName: Swift.String? - public init() { } + public init( + environmentId: Swift.String? = nil, + iamRole: Swift.String? = nil, + userArn: Swift.String? = nil, + userName: Swift.String? = nil + ) + { + self.environmentId = environmentId + self.iamRole = iamRole + self.userArn = userArn + self.userName = userName + } } -enum DeleteKxClusterOutputError: ClientRuntime.HttpResponseErrorBinding { +struct CreateKxUserOutputBody: Swift.Equatable { + let userName: Swift.String? + let userArn: Swift.String? + let environmentId: Swift.String? + let iamRole: Swift.String? +} + +extension CreateKxUserOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case environmentId + case iamRole + case userArn + case userName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let userNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userName) + userName = userNameDecoded + let userArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userArn) + userArn = userArnDecoded + let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let iamRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .iamRole) + iamRole = iamRoleDecoded + } +} + +enum CreateKxUserOutputError: 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 @@ -2417,6 +2926,7 @@ enum DeleteKxClusterOutputError: 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 "LimitExceededException": return try await LimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ResourceAlreadyExistsException": return try await ResourceAlreadyExistsException(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) @@ -2425,139 +2935,350 @@ enum DeleteKxClusterOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension DeleteKxDatabaseInput: ClientRuntime.QueryItemProvider { - public var queryItems: [ClientRuntime.URLQueryItem] { - get throws { - var items = [ClientRuntime.URLQueryItem]() - guard let clientToken = clientToken else { - let message = "Creating a URL Query Item failed. clientToken is required and must not be nil." - throw ClientRuntime.ClientError.unknownError(message) - } - let clientTokenQueryItem = ClientRuntime.URLQueryItem(name: "clientToken".urlPercentEncoding(), value: Swift.String(clientToken).urlPercentEncoding()) - items.append(clientTokenQueryItem) - return items - } +extension CreateKxVolumeInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case availabilityZoneIds + case azMode + case clientToken + case description + case nas1Configuration + case tags + case volumeName + case volumeType } -} -extension DeleteKxDatabaseInput: ClientRuntime.URLPathProvider { + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let availabilityZoneIds = availabilityZoneIds { + var availabilityZoneIdsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .availabilityZoneIds) + for availabilityzoneid0 in availabilityZoneIds { + try availabilityZoneIdsContainer.encode(availabilityzoneid0) + } + } + if let azMode = self.azMode { + try encodeContainer.encode(azMode.rawValue, forKey: .azMode) + } + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let nas1Configuration = self.nas1Configuration { + try encodeContainer.encode(nas1Configuration, forKey: .nas1Configuration) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let volumeName = self.volumeName { + try encodeContainer.encode(volumeName, forKey: .volumeName) + } + if let volumeType = self.volumeType { + try encodeContainer.encode(volumeType.rawValue, forKey: .volumeType) + } + } +} + +extension CreateKxVolumeInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { guard let environmentId = environmentId else { return nil } - guard let databaseName = databaseName else { - return nil - } - return "/kx/environments/\(environmentId.urlPercentEncoding())/databases/\(databaseName.urlPercentEncoding())" + return "/kx/environments/\(environmentId.urlPercentEncoding())/kxvolumes" } } -public struct DeleteKxDatabaseInput: Swift.Equatable { - /// A token that ensures idempotency. This token expires in 10 minutes. +public struct CreateKxVolumeInput: Swift.Equatable { + /// The identifier of the availability zones. /// This member is required. - public var clientToken: Swift.String? - /// The name of the kdb database that you want to delete. + public var availabilityZoneIds: [Swift.String]? + /// The number of availability zones you want to assign per cluster. Currently, FinSpace only support SINGLE for volumes. /// This member is required. - public var databaseName: Swift.String? - /// A unique identifier for the kdb environment. + public var azMode: FinspaceClientTypes.KxAzMode? + /// A token that ensures idempotency. This token expires in 10 minutes. + public var clientToken: Swift.String? + /// A description of the volume. + public var description: Swift.String? + /// A unique identifier for the kdb environment, whose clusters can attach to the volume. /// This member is required. public var environmentId: Swift.String? + /// Specifies the configuration for the Network attached storage (NAS_1) file system volume. This parameter is required when you choose volumeType as NAS_1. + public var nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? + /// A list of key-value pairs to label the volume. You can add up to 50 tags to a volume. + public var tags: [Swift.String:Swift.String]? + /// A unique identifier for the volume. + /// This member is required. + public var volumeName: Swift.String? + /// The type of file system volume. Currently, FinSpace only supports NAS_1 volume type. When you select NAS_1 volume type, you must also provide nas1Configuration. + /// This member is required. + public var volumeType: FinspaceClientTypes.KxVolumeType? public init( + availabilityZoneIds: [Swift.String]? = nil, + azMode: FinspaceClientTypes.KxAzMode? = nil, clientToken: Swift.String? = nil, - databaseName: Swift.String? = nil, - environmentId: Swift.String? = nil + description: Swift.String? = nil, + environmentId: Swift.String? = nil, + nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? = nil, + tags: [Swift.String:Swift.String]? = nil, + volumeName: Swift.String? = nil, + volumeType: FinspaceClientTypes.KxVolumeType? = nil ) { + self.availabilityZoneIds = availabilityZoneIds + self.azMode = azMode self.clientToken = clientToken - self.databaseName = databaseName + self.description = description self.environmentId = environmentId + self.nas1Configuration = nas1Configuration + self.tags = tags + self.volumeName = volumeName + self.volumeType = volumeType } } -struct DeleteKxDatabaseInputBody: Swift.Equatable { -} - -extension DeleteKxDatabaseInputBody: Swift.Decodable { - - public init(from decoder: Swift.Decoder) throws { - } +struct CreateKxVolumeInputBody: Swift.Equatable { + let clientToken: Swift.String? + let volumeType: FinspaceClientTypes.KxVolumeType? + let volumeName: Swift.String? + let description: Swift.String? + let nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? + let azMode: FinspaceClientTypes.KxAzMode? + let availabilityZoneIds: [Swift.String]? + let tags: [Swift.String:Swift.String]? } -extension DeleteKxDatabaseOutput: ClientRuntime.HttpResponseBinding { - public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { +extension CreateKxVolumeInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case availabilityZoneIds + case azMode + case clientToken + case description + case nas1Configuration + case tags + case volumeName + case volumeType } -} -public struct DeleteKxDatabaseOutput: Swift.Equatable { - - public init() { } -} - -enum DeleteKxDatabaseOutputError: 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) + 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 volumeTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxVolumeType.self, forKey: .volumeType) + volumeType = volumeTypeDecoded + let volumeNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .volumeName) + volumeName = volumeNameDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let nas1ConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxNAS1Configuration.self, forKey: .nas1Configuration) + nas1Configuration = nas1ConfigurationDecoded + let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) + azMode = azModeDecoded + let availabilityZoneIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .availabilityZoneIds) + var availabilityZoneIdsDecoded0:[Swift.String]? = nil + if let availabilityZoneIdsContainer = availabilityZoneIdsContainer { + availabilityZoneIdsDecoded0 = [Swift.String]() + for string0 in availabilityZoneIdsContainer { + if let string0 = string0 { + availabilityZoneIdsDecoded0?.append(string0) + } + } + } + availabilityZoneIds = availabilityZoneIdsDecoded0 + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } } + tags = tagsDecoded0 } } -extension DeleteKxEnvironmentInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - guard let environmentId = environmentId else { - return nil +extension CreateKxVolumeOutput: 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: CreateKxVolumeOutputBody = try responseDecoder.decode(responseBody: data) + self.availabilityZoneIds = output.availabilityZoneIds + self.azMode = output.azMode + self.createdTimestamp = output.createdTimestamp + self.description = output.description + self.environmentId = output.environmentId + self.nas1Configuration = output.nas1Configuration + self.status = output.status + self.statusReason = output.statusReason + self.volumeArn = output.volumeArn + self.volumeName = output.volumeName + self.volumeType = output.volumeType + } else { + self.availabilityZoneIds = nil + self.azMode = nil + self.createdTimestamp = nil + self.description = nil + self.environmentId = nil + self.nas1Configuration = nil + self.status = nil + self.statusReason = nil + self.volumeArn = nil + self.volumeName = nil + self.volumeType = nil } - return "/kx/environments/\(environmentId.urlPercentEncoding())" } } -public struct DeleteKxEnvironmentInput: Swift.Equatable { - /// A unique identifier for the kdb environment. - /// This member is required. +public struct CreateKxVolumeOutput: Swift.Equatable { + /// The identifier of the availability zones. + public var availabilityZoneIds: [Swift.String]? + /// The number of availability zones you want to assign per cluster. Currently, FinSpace only support SINGLE for volumes. + public var azMode: FinspaceClientTypes.KxAzMode? + /// The timestamp at which the volume was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// A description of the volume. + public var description: Swift.String? + /// A unique identifier for the kdb environment, whose clusters can attach to the volume. public var environmentId: Swift.String? + /// Specifies the configuration for the Network attached storage (NAS_1) file system volume. + public var nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? + /// The status of volume creation. + /// + /// * CREATING – The volume creation is in progress. + /// + /// * CREATE_FAILED – The volume creation has failed. + /// + /// * ACTIVE – The volume is active. + /// + /// * UPDATING – The volume is in the process of being updated. + /// + /// * UPDATE_FAILED – The update action failed. + /// + /// * UPDATED – The volume is successfully updated. + /// + /// * DELETING – The volume is in the process of being deleted. + /// + /// * DELETE_FAILED – The system failed to delete the volume. + /// + /// * DELETED – The volume is successfully deleted. + public var status: FinspaceClientTypes.KxVolumeStatus? + /// The error message when a failed state occurs. + public var statusReason: Swift.String? + /// The ARN identifier of the volume. + public var volumeArn: Swift.String? + /// A unique identifier for the volume. + public var volumeName: Swift.String? + /// The type of file system volume. Currently, FinSpace only supports NAS_1 volume type. + public var volumeType: FinspaceClientTypes.KxVolumeType? public init( - environmentId: Swift.String? = nil + availabilityZoneIds: [Swift.String]? = nil, + azMode: FinspaceClientTypes.KxAzMode? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + description: Swift.String? = nil, + environmentId: Swift.String? = nil, + nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? = nil, + status: FinspaceClientTypes.KxVolumeStatus? = nil, + statusReason: Swift.String? = nil, + volumeArn: Swift.String? = nil, + volumeName: Swift.String? = nil, + volumeType: FinspaceClientTypes.KxVolumeType? = nil ) { + self.availabilityZoneIds = availabilityZoneIds + self.azMode = azMode + self.createdTimestamp = createdTimestamp + self.description = description self.environmentId = environmentId + self.nas1Configuration = nas1Configuration + self.status = status + self.statusReason = statusReason + self.volumeArn = volumeArn + self.volumeName = volumeName + self.volumeType = volumeType } } -struct DeleteKxEnvironmentInputBody: Swift.Equatable { +struct CreateKxVolumeOutputBody: Swift.Equatable { + let environmentId: Swift.String? + let volumeName: Swift.String? + let volumeType: FinspaceClientTypes.KxVolumeType? + let volumeArn: Swift.String? + let nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? + let status: FinspaceClientTypes.KxVolumeStatus? + let statusReason: Swift.String? + let azMode: FinspaceClientTypes.KxAzMode? + let description: Swift.String? + let availabilityZoneIds: [Swift.String]? + let createdTimestamp: ClientRuntime.Date? } -extension DeleteKxEnvironmentInputBody: Swift.Decodable { - - public init(from decoder: Swift.Decoder) throws { +extension CreateKxVolumeOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case availabilityZoneIds + case azMode + case createdTimestamp + case description + case environmentId + case nas1Configuration + case status + case statusReason + case volumeArn + case volumeName + case volumeType } -} -extension DeleteKxEnvironmentOutput: ClientRuntime.HttpResponseBinding { - public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let volumeNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .volumeName) + volumeName = volumeNameDecoded + let volumeTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxVolumeType.self, forKey: .volumeType) + volumeType = volumeTypeDecoded + let volumeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .volumeArn) + volumeArn = volumeArnDecoded + let nas1ConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxNAS1Configuration.self, forKey: .nas1Configuration) + nas1Configuration = nas1ConfigurationDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxVolumeStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) + azMode = azModeDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let availabilityZoneIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .availabilityZoneIds) + var availabilityZoneIdsDecoded0:[Swift.String]? = nil + if let availabilityZoneIdsContainer = availabilityZoneIdsContainer { + availabilityZoneIdsDecoded0 = [Swift.String]() + for string0 in availabilityZoneIdsContainer { + if let string0 = string0 { + availabilityZoneIdsDecoded0?.append(string0) + } + } + } + availabilityZoneIds = availabilityZoneIdsDecoded0 + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded } } -public struct DeleteKxEnvironmentOutput: Swift.Equatable { - - public init() { } -} - -enum DeleteKxEnvironmentOutputError: ClientRuntime.HttpResponseErrorBinding { +enum CreateKxVolumeOutputError: 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 "ResourceAlreadyExistsException": return try await ResourceAlreadyExistsException(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) @@ -2566,56 +3287,95 @@ enum DeleteKxEnvironmentOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension DeleteKxUserInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - guard let environmentId = environmentId else { - return nil +extension FinspaceClientTypes.CustomDNSServer: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case customDNSServerIP + case customDNSServerName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let customDNSServerIP = self.customDNSServerIP { + try encodeContainer.encode(customDNSServerIP, forKey: .customDNSServerIP) } - guard let userName = userName else { - return nil + if let customDNSServerName = self.customDNSServerName { + try encodeContainer.encode(customDNSServerName, forKey: .customDNSServerName) } - return "/kx/environments/\(environmentId.urlPercentEncoding())/users/\(userName.urlPercentEncoding())" } -} -public struct DeleteKxUserInput: Swift.Equatable { - /// A unique identifier for the kdb environment. + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let customDNSServerNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDNSServerName) + customDNSServerName = customDNSServerNameDecoded + let customDNSServerIPDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .customDNSServerIP) + customDNSServerIP = customDNSServerIPDecoded + } +} + +extension FinspaceClientTypes { + /// A list of DNS server name and server IP. This is used to set up Route-53 outbound resolvers. + public struct CustomDNSServer: Swift.Equatable { + /// The IP address of the DNS server. + /// This member is required. + public var customDNSServerIP: Swift.String? + /// The name of the DNS server. + /// This member is required. + public var customDNSServerName: Swift.String? + + public init( + customDNSServerIP: Swift.String? = nil, + customDNSServerName: Swift.String? = nil + ) + { + self.customDNSServerIP = customDNSServerIP + self.customDNSServerName = customDNSServerName + } + } + +} + +extension DeleteEnvironmentInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + return "/environment/\(environmentId.urlPercentEncoding())" + } +} + +public struct DeleteEnvironmentInput: Swift.Equatable { + /// The identifier for the FinSpace environment. /// This member is required. public var environmentId: Swift.String? - /// A unique identifier for the user that you want to delete. - /// This member is required. - public var userName: Swift.String? public init( - environmentId: Swift.String? = nil, - userName: Swift.String? = nil + environmentId: Swift.String? = nil ) { self.environmentId = environmentId - self.userName = userName } } -struct DeleteKxUserInputBody: Swift.Equatable { +struct DeleteEnvironmentInputBody: Swift.Equatable { } -extension DeleteKxUserInputBody: Swift.Decodable { +extension DeleteEnvironmentInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { } } -extension DeleteKxUserOutput: ClientRuntime.HttpResponseBinding { +extension DeleteEnvironmentOutput: ClientRuntime.HttpResponseBinding { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { } } -public struct DeleteKxUserOutput: Swift.Equatable { +public struct DeleteEnvironmentOutput: Swift.Equatable { public init() { } } -enum DeleteKxUserOutputError: ClientRuntime.HttpResponseErrorBinding { +enum DeleteEnvironmentOutputError: 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 @@ -2630,756 +3390,497 @@ enum DeleteKxUserOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension FinspaceClientTypes { - public enum DnsStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case failedUpdate - case `none` - case successfullyUpdated - case updateRequested - case updating - case sdkUnknown(Swift.String) - - public static var allCases: [DnsStatus] { - return [ - .failedUpdate, - .none, - .successfullyUpdated, - .updateRequested, - .updating, - .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 .failedUpdate: return "FAILED_UPDATE" - case .none: return "NONE" - case .successfullyUpdated: return "SUCCESSFULLY_UPDATED" - case .updateRequested: return "UPDATE_REQUESTED" - case .updating: return "UPDATING" - case let .sdkUnknown(s): return s +extension DeleteKxClusterInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let clientToken = clientToken { + let clientTokenQueryItem = ClientRuntime.URLQueryItem(name: "clientToken".urlPercentEncoding(), value: Swift.String(clientToken).urlPercentEncoding()) + items.append(clientTokenQueryItem) } - } - public init(from decoder: Swift.Decoder) throws { - let container = try decoder.singleValueContainer() - let rawValue = try container.decode(RawValue.self) - self = DnsStatus(rawValue: rawValue) ?? DnsStatus.sdkUnknown(rawValue) + return items } } } -extension FinspaceClientTypes.Environment: Swift.Codable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case awsAccountId - case dedicatedServiceAccountId - case description - case environmentArn - case environmentId - case environmentUrl - case federationMode - case federationParameters - case kmsKeyId - case name - case sageMakerStudioDomainUrl - case status - } - - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let awsAccountId = self.awsAccountId { - try encodeContainer.encode(awsAccountId, forKey: .awsAccountId) - } - if let dedicatedServiceAccountId = self.dedicatedServiceAccountId { - try encodeContainer.encode(dedicatedServiceAccountId, forKey: .dedicatedServiceAccountId) - } - if let description = self.description { - try encodeContainer.encode(description, forKey: .description) - } - if let environmentArn = self.environmentArn { - try encodeContainer.encode(environmentArn, forKey: .environmentArn) - } - if let environmentId = self.environmentId { - try encodeContainer.encode(environmentId, forKey: .environmentId) - } - if let environmentUrl = self.environmentUrl { - try encodeContainer.encode(environmentUrl, forKey: .environmentUrl) - } - if let federationMode = self.federationMode { - try encodeContainer.encode(federationMode.rawValue, forKey: .federationMode) - } - if let federationParameters = self.federationParameters { - try encodeContainer.encode(federationParameters, forKey: .federationParameters) - } - if let kmsKeyId = self.kmsKeyId { - try encodeContainer.encode(kmsKeyId, forKey: .kmsKeyId) - } - if let name = self.name { - try encodeContainer.encode(name, forKey: .name) - } - if let sageMakerStudioDomainUrl = self.sageMakerStudioDomainUrl { - try encodeContainer.encode(sageMakerStudioDomainUrl, forKey: .sageMakerStudioDomainUrl) +extension DeleteKxClusterInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil } - if let status = self.status { - try encodeContainer.encode(status.rawValue, forKey: .status) + guard let clusterName = clusterName else { + return nil } + return "/kx/environments/\(environmentId.urlPercentEncoding())/clusters/\(clusterName.urlPercentEncoding())" + } +} + +public struct DeleteKxClusterInput: Swift.Equatable { + /// A token that ensures idempotency. This token expires in 10 minutes. + public var clientToken: Swift.String? + /// The name of the cluster that you want to delete. + /// This member is required. + public var clusterName: Swift.String? + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? + + public init( + clientToken: Swift.String? = nil, + clusterName: Swift.String? = nil, + environmentId: Swift.String? = nil + ) + { + self.clientToken = clientToken + self.clusterName = clusterName + self.environmentId = environmentId } +} + +struct DeleteKxClusterInputBody: Swift.Equatable { +} + +extension DeleteKxClusterInputBody: Swift.Decodable { 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 environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) - environmentId = environmentIdDecoded - let awsAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .awsAccountId) - awsAccountId = awsAccountIdDecoded - let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.EnvironmentStatus.self, forKey: .status) - status = statusDecoded - let environmentUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentUrl) - environmentUrl = environmentUrlDecoded - let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) - description = descriptionDecoded - let environmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentArn) - environmentArn = environmentArnDecoded - let sageMakerStudioDomainUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sageMakerStudioDomainUrl) - sageMakerStudioDomainUrl = sageMakerStudioDomainUrlDecoded - let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) - kmsKeyId = kmsKeyIdDecoded - let dedicatedServiceAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dedicatedServiceAccountId) - dedicatedServiceAccountId = dedicatedServiceAccountIdDecoded - let federationModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.FederationMode.self, forKey: .federationMode) - federationMode = federationModeDecoded - let federationParametersDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.FederationParameters.self, forKey: .federationParameters) - federationParameters = federationParametersDecoded } } -extension FinspaceClientTypes { - /// Represents an FinSpace environment. - public struct Environment: Swift.Equatable { - /// The ID of the AWS account in which the FinSpace environment is created. - public var awsAccountId: Swift.String? - /// The AWS account ID of the dedicated service account associated with your FinSpace environment. - public var dedicatedServiceAccountId: Swift.String? - /// The description of the FinSpace environment. - public var description: Swift.String? - /// The Amazon Resource Name (ARN) of your FinSpace environment. - public var environmentArn: Swift.String? - /// The identifier of the FinSpace environment. - public var environmentId: Swift.String? - /// The sign-in URL for the web application of your FinSpace environment. - public var environmentUrl: Swift.String? - /// The authentication mode for the environment. - public var federationMode: FinspaceClientTypes.FederationMode? - /// Configuration information when authentication mode is FEDERATED. - public var federationParameters: FinspaceClientTypes.FederationParameters? - /// The KMS key id used to encrypt in the FinSpace environment. - public var kmsKeyId: Swift.String? - /// The name of the FinSpace environment. - public var name: Swift.String? - /// The URL of the integrated FinSpace notebook environment in your web application. - public var sageMakerStudioDomainUrl: Swift.String? - /// The current status of creation of the FinSpace environment. - public var status: FinspaceClientTypes.EnvironmentStatus? +extension DeleteKxClusterOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} - public init( - awsAccountId: Swift.String? = nil, - dedicatedServiceAccountId: Swift.String? = nil, - description: Swift.String? = nil, - environmentArn: Swift.String? = nil, - environmentId: Swift.String? = nil, - environmentUrl: Swift.String? = nil, - federationMode: FinspaceClientTypes.FederationMode? = nil, - federationParameters: FinspaceClientTypes.FederationParameters? = nil, - kmsKeyId: Swift.String? = nil, - name: Swift.String? = nil, - sageMakerStudioDomainUrl: Swift.String? = nil, - status: FinspaceClientTypes.EnvironmentStatus? = nil - ) - { - self.awsAccountId = awsAccountId - self.dedicatedServiceAccountId = dedicatedServiceAccountId - self.description = description - self.environmentArn = environmentArn - self.environmentId = environmentId - self.environmentUrl = environmentUrl - self.federationMode = federationMode - self.federationParameters = federationParameters - self.kmsKeyId = kmsKeyId - self.name = name - self.sageMakerStudioDomainUrl = sageMakerStudioDomainUrl - self.status = status - } - } +public struct DeleteKxClusterOutput: Swift.Equatable { + public init() { } } -extension FinspaceClientTypes { - public enum EnvironmentStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case created - case createRequested - case creating - case deleted - case deleteRequested - case deleting - case failedCreation - case failedDeletion - case failedUpdatingNetwork - case retryDeletion - case suspended - case updateNetworkRequested - case updatingNetwork - case sdkUnknown(Swift.String) - - public static var allCases: [EnvironmentStatus] { - return [ - .created, - .createRequested, - .creating, - .deleted, - .deleteRequested, - .deleting, - .failedCreation, - .failedDeletion, - .failedUpdatingNetwork, - .retryDeletion, - .suspended, - .updateNetworkRequested, - .updatingNetwork, - .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 .created: return "CREATED" - case .createRequested: return "CREATE_REQUESTED" - case .creating: return "CREATING" - case .deleted: return "DELETED" - case .deleteRequested: return "DELETE_REQUESTED" - case .deleting: return "DELETING" - case .failedCreation: return "FAILED_CREATION" - case .failedDeletion: return "FAILED_DELETION" - case .failedUpdatingNetwork: return "FAILED_UPDATING_NETWORK" - case .retryDeletion: return "RETRY_DELETION" - case .suspended: return "SUSPENDED" - case .updateNetworkRequested: return "UPDATE_NETWORK_REQUESTED" - case .updatingNetwork: return "UPDATING_NETWORK" - 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 = EnvironmentStatus(rawValue: rawValue) ?? EnvironmentStatus.sdkUnknown(rawValue) +enum DeleteKxClusterOutputError: 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 FinspaceClientTypes { - public enum ErrorDetails: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case accessDenied - case cancelled - case internalServiceException - case resourceNotFound - case serviceQuotaExceeded - case throttling - case userRecoverable - case validation - case sdkUnknown(Swift.String) - - public static var allCases: [ErrorDetails] { - return [ - .accessDenied, - .cancelled, - .internalServiceException, - .resourceNotFound, - .serviceQuotaExceeded, - .throttling, - .userRecoverable, - .validation, - .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 .accessDenied: return "Missing required permission to perform this request." - case .cancelled: return "Cancelled" - case .internalServiceException: return "An internal error has occurred." - case .resourceNotFound: return "One or more inputs to this request were not found." - case .serviceQuotaExceeded: return "Service limits have been exceeded." - case .throttling: return "The system temporarily lacks sufficient resources to process the request." - case .userRecoverable: return "A user recoverable error has occurred" - case .validation: return "The inputs to this request are invalid." - case let .sdkUnknown(s): return s +extension DeleteKxDatabaseInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + guard let clientToken = clientToken else { + let message = "Creating a URL Query Item failed. clientToken is required and must not be nil." + throw ClientRuntime.ClientError.unknownError(message) } - } - public init(from decoder: Swift.Decoder) throws { - let container = try decoder.singleValueContainer() - let rawValue = try container.decode(RawValue.self) - self = ErrorDetails(rawValue: rawValue) ?? ErrorDetails.sdkUnknown(rawValue) + let clientTokenQueryItem = ClientRuntime.URLQueryItem(name: "clientToken".urlPercentEncoding(), value: Swift.String(clientToken).urlPercentEncoding()) + items.append(clientTokenQueryItem) + return items } } } -extension FinspaceClientTypes.ErrorInfo: Swift.Codable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case errorMessage - case errorType - } - - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let errorMessage = self.errorMessage { - try encodeContainer.encode(errorMessage, forKey: .errorMessage) +extension DeleteKxDatabaseInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil } - if let errorType = self.errorType { - try encodeContainer.encode(errorType.rawValue, forKey: .errorType) + guard let databaseName = databaseName else { + return nil } - } - - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let errorMessageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorMessage) - errorMessage = errorMessageDecoded - let errorTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.ErrorDetails.self, forKey: .errorType) - errorType = errorTypeDecoded + return "/kx/environments/\(environmentId.urlPercentEncoding())/databases/\(databaseName.urlPercentEncoding())" } } -extension FinspaceClientTypes { - /// Provides details in the event of a failed flow, including the error type and the related error message. - public struct ErrorInfo: Swift.Equatable { - /// Specifies the error message that appears if a flow fails. - public var errorMessage: Swift.String? - /// Specifies the type of error. - public var errorType: FinspaceClientTypes.ErrorDetails? +public struct DeleteKxDatabaseInput: Swift.Equatable { + /// A token that ensures idempotency. This token expires in 10 minutes. + /// This member is required. + public var clientToken: Swift.String? + /// The name of the kdb database that you want to delete. + /// This member is required. + public var databaseName: Swift.String? + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? - public init( - errorMessage: Swift.String? = nil, - errorType: FinspaceClientTypes.ErrorDetails? = nil - ) - { - self.errorMessage = errorMessage - self.errorType = errorType - } + public init( + clientToken: Swift.String? = nil, + databaseName: Swift.String? = nil, + environmentId: Swift.String? = nil + ) + { + self.clientToken = clientToken + self.databaseName = databaseName + self.environmentId = environmentId } +} +struct DeleteKxDatabaseInputBody: Swift.Equatable { } -extension FinspaceClientTypes { - public enum FederationMode: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case federated - case local - case sdkUnknown(Swift.String) +extension DeleteKxDatabaseInputBody: Swift.Decodable { - public static var allCases: [FederationMode] { - return [ - .federated, - .local, - .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 .federated: return "FEDERATED" - case .local: return "LOCAL" - 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 = FederationMode(rawValue: rawValue) ?? FederationMode.sdkUnknown(rawValue) - } + public init(from decoder: Swift.Decoder) throws { } } -extension FinspaceClientTypes.FederationParameters: Swift.Codable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case applicationCallBackURL - case attributeMap - case federationProviderName - case federationURN - case samlMetadataDocument - case samlMetadataURL +extension DeleteKxDatabaseOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { } +} - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let applicationCallBackURL = self.applicationCallBackURL { - try encodeContainer.encode(applicationCallBackURL, forKey: .applicationCallBackURL) - } - if let attributeMap = attributeMap { - var attributeMapContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .attributeMap) - for (dictKey0, attributeMap0) in attributeMap { - try attributeMapContainer.encode(attributeMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) - } - } - if let federationProviderName = self.federationProviderName { - try encodeContainer.encode(federationProviderName, forKey: .federationProviderName) - } - if let federationURN = self.federationURN { - try encodeContainer.encode(federationURN, forKey: .federationURN) - } - if let samlMetadataDocument = self.samlMetadataDocument { - try encodeContainer.encode(samlMetadataDocument, forKey: .samlMetadataDocument) - } - if let samlMetadataURL = self.samlMetadataURL { - try encodeContainer.encode(samlMetadataURL, forKey: .samlMetadataURL) - } - } +public struct DeleteKxDatabaseOutput: Swift.Equatable { - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let samlMetadataDocumentDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .samlMetadataDocument) - samlMetadataDocument = samlMetadataDocumentDecoded - let samlMetadataURLDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .samlMetadataURL) - samlMetadataURL = samlMetadataURLDecoded - let applicationCallBackURLDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .applicationCallBackURL) - applicationCallBackURL = applicationCallBackURLDecoded - let federationURNDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .federationURN) - federationURN = federationURNDecoded - let federationProviderNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .federationProviderName) - federationProviderName = federationProviderNameDecoded - let attributeMapContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .attributeMap) - var attributeMapDecoded0: [Swift.String:Swift.String]? = nil - if let attributeMapContainer = attributeMapContainer { - attributeMapDecoded0 = [Swift.String:Swift.String]() - for (key0, federationattributevalue0) in attributeMapContainer { - if let federationattributevalue0 = federationattributevalue0 { - attributeMapDecoded0?[key0] = federationattributevalue0 - } - } + public init() { } +} + +enum DeleteKxDatabaseOutputError: 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) } - attributeMap = attributeMapDecoded0 } } -extension FinspaceClientTypes { - /// Configuration information when authentication mode is FEDERATED. - public struct FederationParameters: Swift.Equatable { - /// The redirect or sign-in URL that should be entered into the SAML 2.0 compliant identity provider configuration (IdP). - public var applicationCallBackURL: Swift.String? - /// SAML attribute name and value. The name must always be Email and the value should be set to the attribute definition in which user email is set. For example, name would be Email and value http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress. Please check your SAML 2.0 compliant identity provider (IdP) documentation for details. - public var attributeMap: [Swift.String:Swift.String]? - /// Name of the identity provider (IdP). - public var federationProviderName: Swift.String? - /// The Uniform Resource Name (URN). Also referred as Service Provider URN or Audience URI or Service Provider Entity ID. - public var federationURN: Swift.String? - /// SAML 2.0 Metadata document from identity provider (IdP). - public var samlMetadataDocument: Swift.String? - /// Provide the metadata URL from your SAML 2.0 compliant identity provider (IdP). - public var samlMetadataURL: Swift.String? - - public init( - applicationCallBackURL: Swift.String? = nil, - attributeMap: [Swift.String:Swift.String]? = nil, - federationProviderName: Swift.String? = nil, - federationURN: Swift.String? = nil, - samlMetadataDocument: Swift.String? = nil, - samlMetadataURL: Swift.String? = nil - ) - { - self.applicationCallBackURL = applicationCallBackURL - self.attributeMap = attributeMap - self.federationProviderName = federationProviderName - self.federationURN = federationURN - self.samlMetadataDocument = samlMetadataDocument - self.samlMetadataURL = samlMetadataURL +extension DeleteKxDataviewInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + guard let clientToken = clientToken else { + let message = "Creating a URL Query Item failed. clientToken is required and must not be nil." + throw ClientRuntime.ClientError.unknownError(message) + } + let clientTokenQueryItem = ClientRuntime.URLQueryItem(name: "clientToken".urlPercentEncoding(), value: Swift.String(clientToken).urlPercentEncoding()) + items.append(clientTokenQueryItem) + return items } } - } -extension GetEnvironmentInput: ClientRuntime.URLPathProvider { +extension DeleteKxDataviewInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { guard let environmentId = environmentId else { return nil } - return "/environment/\(environmentId.urlPercentEncoding())" + guard let databaseName = databaseName else { + return nil + } + guard let dataviewName = dataviewName else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/databases/\(databaseName.urlPercentEncoding())/dataviews/\(dataviewName.urlPercentEncoding())" } } -public struct GetEnvironmentInput: Swift.Equatable { - /// The identifier of the FinSpace environment. +public struct DeleteKxDataviewInput: Swift.Equatable { + /// A token that ensures idempotency. This token expires in 10 minutes. + /// This member is required. + public var clientToken: Swift.String? + /// The name of the database whose dataview you want to delete. + /// This member is required. + public var databaseName: Swift.String? + /// The name of the dataview that you want to delete. + /// This member is required. + public var dataviewName: Swift.String? + /// A unique identifier for the kdb environment, from where you want to delete the dataview. /// This member is required. public var environmentId: Swift.String? public init( + clientToken: Swift.String? = nil, + databaseName: Swift.String? = nil, + dataviewName: Swift.String? = nil, environmentId: Swift.String? = nil ) { + self.clientToken = clientToken + self.databaseName = databaseName + self.dataviewName = dataviewName self.environmentId = environmentId } } -struct GetEnvironmentInputBody: Swift.Equatable { +struct DeleteKxDataviewInputBody: Swift.Equatable { } -extension GetEnvironmentInputBody: Swift.Decodable { +extension DeleteKxDataviewInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { } } -extension GetEnvironmentOutput: ClientRuntime.HttpResponseBinding { +extension DeleteKxDataviewOutput: 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: GetEnvironmentOutputBody = try responseDecoder.decode(responseBody: data) - self.environment = output.environment - } else { - self.environment = nil + } +} + +public struct DeleteKxDataviewOutput: Swift.Equatable { + + public init() { } +} + +enum DeleteKxDataviewOutputError: 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) } } } -public struct GetEnvironmentOutput: Swift.Equatable { - /// The name of the FinSpace environment. - public var environment: FinspaceClientTypes.Environment? +extension DeleteKxEnvironmentInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let clientToken = clientToken { + let clientTokenQueryItem = ClientRuntime.URLQueryItem(name: "clientToken".urlPercentEncoding(), value: Swift.String(clientToken).urlPercentEncoding()) + items.append(clientTokenQueryItem) + } + return items + } + } +} + +extension DeleteKxEnvironmentInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())" + } +} + +public struct DeleteKxEnvironmentInput: Swift.Equatable { + /// A token that ensures idempotency. This token expires in 10 minutes. + public var clientToken: Swift.String? + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? public init( - environment: FinspaceClientTypes.Environment? = nil + clientToken: Swift.String? = nil, + environmentId: Swift.String? = nil ) { - self.environment = environment + self.clientToken = clientToken + self.environmentId = environmentId } } -struct GetEnvironmentOutputBody: Swift.Equatable { - let environment: FinspaceClientTypes.Environment? +struct DeleteKxEnvironmentInputBody: Swift.Equatable { } -extension GetEnvironmentOutputBody: Swift.Decodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case environment - } +extension DeleteKxEnvironmentInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let environmentDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.Environment.self, forKey: .environment) - environment = environmentDecoded } } -enum GetEnvironmentOutputError: ClientRuntime.HttpResponseErrorBinding { +extension DeleteKxEnvironmentOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct DeleteKxEnvironmentOutput: Swift.Equatable { + + public init() { } +} + +enum DeleteKxEnvironmentOutputError: 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 GetKxChangesetInput: ClientRuntime.URLPathProvider { +extension DeleteKxScalingGroupInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let clientToken = clientToken { + let clientTokenQueryItem = ClientRuntime.URLQueryItem(name: "clientToken".urlPercentEncoding(), value: Swift.String(clientToken).urlPercentEncoding()) + items.append(clientTokenQueryItem) + } + return items + } + } +} + +extension DeleteKxScalingGroupInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { guard let environmentId = environmentId else { return nil } - guard let databaseName = databaseName else { - return nil - } - guard let changesetId = changesetId else { + guard let scalingGroupName = scalingGroupName else { return nil } - return "/kx/environments/\(environmentId.urlPercentEncoding())/databases/\(databaseName.urlPercentEncoding())/changesets/\(changesetId.urlPercentEncoding())" + return "/kx/environments/\(environmentId.urlPercentEncoding())/scalingGroups/\(scalingGroupName.urlPercentEncoding())" } } -public struct GetKxChangesetInput: Swift.Equatable { - /// A unique identifier of the changeset for which you want to retrieve data. - /// This member is required. - public var changesetId: Swift.String? - /// The name of the kdb database. - /// This member is required. - public var databaseName: Swift.String? - /// A unique identifier for the kdb environment. +public struct DeleteKxScalingGroupInput: Swift.Equatable { + /// A token that ensures idempotency. This token expires in 10 minutes. + public var clientToken: Swift.String? + /// A unique identifier for the kdb environment, from where you want to delete the dataview. /// This member is required. public var environmentId: Swift.String? + /// A unique identifier for the kdb scaling group. + /// This member is required. + public var scalingGroupName: Swift.String? public init( - changesetId: Swift.String? = nil, - databaseName: Swift.String? = nil, - environmentId: Swift.String? = nil + clientToken: Swift.String? = nil, + environmentId: Swift.String? = nil, + scalingGroupName: Swift.String? = nil ) { - self.changesetId = changesetId - self.databaseName = databaseName + self.clientToken = clientToken self.environmentId = environmentId + self.scalingGroupName = scalingGroupName } } -struct GetKxChangesetInputBody: Swift.Equatable { +struct DeleteKxScalingGroupInputBody: Swift.Equatable { } -extension GetKxChangesetInputBody: Swift.Decodable { +extension DeleteKxScalingGroupInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { } } -extension GetKxChangesetOutput: ClientRuntime.HttpResponseBinding { +extension DeleteKxScalingGroupOutput: 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: GetKxChangesetOutputBody = try responseDecoder.decode(responseBody: data) - self.activeFromTimestamp = output.activeFromTimestamp - self.changeRequests = output.changeRequests - self.changesetId = output.changesetId - self.createdTimestamp = output.createdTimestamp - self.databaseName = output.databaseName - self.environmentId = output.environmentId - self.errorInfo = output.errorInfo - self.lastModifiedTimestamp = output.lastModifiedTimestamp - self.status = output.status - } else { - self.activeFromTimestamp = nil - self.changeRequests = nil - self.changesetId = nil - self.createdTimestamp = nil - self.databaseName = nil - self.environmentId = nil - self.errorInfo = nil - self.lastModifiedTimestamp = nil - self.status = nil + } +} + +public struct DeleteKxScalingGroupOutput: Swift.Equatable { + + public init() { } +} + +enum DeleteKxScalingGroupOutputError: 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) } } } -public struct GetKxChangesetOutput: Swift.Equatable { - /// Beginning time from which the changeset is active. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var activeFromTimestamp: ClientRuntime.Date? - /// A list of change request objects that are run in order. - public var changeRequests: [FinspaceClientTypes.ChangeRequest]? - /// A unique identifier for the changeset. - public var changesetId: Swift.String? - /// The timestamp at which the changeset was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var createdTimestamp: ClientRuntime.Date? - /// The name of the kdb database. - public var databaseName: Swift.String? +extension DeleteKxUserInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let clientToken = clientToken { + let clientTokenQueryItem = ClientRuntime.URLQueryItem(name: "clientToken".urlPercentEncoding(), value: Swift.String(clientToken).urlPercentEncoding()) + items.append(clientTokenQueryItem) + } + return items + } + } +} + +extension DeleteKxUserInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + guard let userName = userName else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/users/\(userName.urlPercentEncoding())" + } +} + +public struct DeleteKxUserInput: Swift.Equatable { + /// A token that ensures idempotency. This token expires in 10 minutes. + public var clientToken: Swift.String? /// A unique identifier for the kdb environment. + /// This member is required. public var environmentId: Swift.String? - /// Provides details in the event of a failed flow, including the error type and the related error message. - public var errorInfo: FinspaceClientTypes.ErrorInfo? - /// The timestamp at which the changeset was updated in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var lastModifiedTimestamp: ClientRuntime.Date? - /// Status of the changeset creation process. - /// - /// * Pending – Changeset creation is pending. - /// - /// * Processing – Changeset creation is running. - /// - /// * Failed – Changeset creation has failed. - /// - /// * Complete – Changeset creation has succeeded. - public var status: FinspaceClientTypes.ChangesetStatus? + /// A unique identifier for the user that you want to delete. + /// This member is required. + public var userName: Swift.String? public init( - activeFromTimestamp: ClientRuntime.Date? = nil, - changeRequests: [FinspaceClientTypes.ChangeRequest]? = nil, - changesetId: Swift.String? = nil, - createdTimestamp: ClientRuntime.Date? = nil, - databaseName: Swift.String? = nil, + clientToken: Swift.String? = nil, environmentId: Swift.String? = nil, - errorInfo: FinspaceClientTypes.ErrorInfo? = nil, - lastModifiedTimestamp: ClientRuntime.Date? = nil, - status: FinspaceClientTypes.ChangesetStatus? = nil + userName: Swift.String? = nil ) { - self.activeFromTimestamp = activeFromTimestamp - self.changeRequests = changeRequests - self.changesetId = changesetId - self.createdTimestamp = createdTimestamp - self.databaseName = databaseName + self.clientToken = clientToken self.environmentId = environmentId - self.errorInfo = errorInfo - self.lastModifiedTimestamp = lastModifiedTimestamp - self.status = status + self.userName = userName } } -struct GetKxChangesetOutputBody: Swift.Equatable { - let changesetId: Swift.String? - let databaseName: Swift.String? - let environmentId: Swift.String? - let changeRequests: [FinspaceClientTypes.ChangeRequest]? - let createdTimestamp: ClientRuntime.Date? - let activeFromTimestamp: ClientRuntime.Date? - let lastModifiedTimestamp: ClientRuntime.Date? - let status: FinspaceClientTypes.ChangesetStatus? - let errorInfo: FinspaceClientTypes.ErrorInfo? +struct DeleteKxUserInputBody: Swift.Equatable { } -extension GetKxChangesetOutputBody: Swift.Decodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case activeFromTimestamp - case changeRequests - case changesetId - case createdTimestamp - case databaseName - case environmentId - case errorInfo - case lastModifiedTimestamp - case status - } +extension DeleteKxUserInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) - changesetId = changesetIdDecoded - let databaseNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseName) - databaseName = databaseNameDecoded - let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) - environmentId = environmentIdDecoded - let changeRequestsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.ChangeRequest?].self, forKey: .changeRequests) - var changeRequestsDecoded0:[FinspaceClientTypes.ChangeRequest]? = nil - if let changeRequestsContainer = changeRequestsContainer { - changeRequestsDecoded0 = [FinspaceClientTypes.ChangeRequest]() - for structure0 in changeRequestsContainer { - if let structure0 = structure0 { - changeRequestsDecoded0?.append(structure0) - } - } - } - changeRequests = changeRequestsDecoded0 - let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) - createdTimestamp = createdTimestampDecoded - let activeFromTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .activeFromTimestamp) - activeFromTimestamp = activeFromTimestampDecoded - let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) - lastModifiedTimestamp = lastModifiedTimestampDecoded - let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.ChangesetStatus.self, forKey: .status) - status = statusDecoded - let errorInfoDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.ErrorInfo.self, forKey: .errorInfo) - errorInfo = errorInfoDecoded } } -enum GetKxChangesetOutputError: ClientRuntime.HttpResponseErrorBinding { +extension DeleteKxUserOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct DeleteKxUserOutput: Swift.Equatable { + + public init() { } +} + +enum DeleteKxUserOutputError: 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) @@ -3389,331 +3890,73 @@ enum GetKxChangesetOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension GetKxClusterInput: ClientRuntime.URLPathProvider { +extension DeleteKxVolumeInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let clientToken = clientToken { + let clientTokenQueryItem = ClientRuntime.URLQueryItem(name: "clientToken".urlPercentEncoding(), value: Swift.String(clientToken).urlPercentEncoding()) + items.append(clientTokenQueryItem) + } + return items + } + } +} + +extension DeleteKxVolumeInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { guard let environmentId = environmentId else { return nil } - guard let clusterName = clusterName else { + guard let volumeName = volumeName else { return nil } - return "/kx/environments/\(environmentId.urlPercentEncoding())/clusters/\(clusterName.urlPercentEncoding())" + return "/kx/environments/\(environmentId.urlPercentEncoding())/kxvolumes/\(volumeName.urlPercentEncoding())" } } -public struct GetKxClusterInput: Swift.Equatable { - /// The name of the cluster that you want to retrieve. - /// This member is required. - public var clusterName: Swift.String? - /// A unique identifier for the kdb environment. +public struct DeleteKxVolumeInput: Swift.Equatable { + /// A token that ensures idempotency. This token expires in 10 minutes. + public var clientToken: Swift.String? + /// A unique identifier for the kdb environment, whose clusters can attach to the volume. /// This member is required. public var environmentId: Swift.String? + /// The name of the volume that you want to delete. + /// This member is required. + public var volumeName: Swift.String? public init( - clusterName: Swift.String? = nil, - environmentId: Swift.String? = nil + clientToken: Swift.String? = nil, + environmentId: Swift.String? = nil, + volumeName: Swift.String? = nil ) { - self.clusterName = clusterName + self.clientToken = clientToken self.environmentId = environmentId + self.volumeName = volumeName } } -struct GetKxClusterInputBody: Swift.Equatable { +struct DeleteKxVolumeInputBody: Swift.Equatable { } -extension GetKxClusterInputBody: Swift.Decodable { +extension DeleteKxVolumeInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { } } -extension GetKxClusterOutput: ClientRuntime.HttpResponseBinding { +extension DeleteKxVolumeOutput: 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: GetKxClusterOutputBody = try responseDecoder.decode(responseBody: data) - self.autoScalingConfiguration = output.autoScalingConfiguration - self.availabilityZoneId = output.availabilityZoneId - self.azMode = output.azMode - self.cacheStorageConfigurations = output.cacheStorageConfigurations - self.capacityConfiguration = output.capacityConfiguration - self.clusterDescription = output.clusterDescription - self.clusterName = output.clusterName - self.clusterType = output.clusterType - self.code = output.code - self.commandLineArguments = output.commandLineArguments - self.createdTimestamp = output.createdTimestamp - self.databases = output.databases - self.executionRole = output.executionRole - self.initializationScript = output.initializationScript - self.lastModifiedTimestamp = output.lastModifiedTimestamp - self.releaseLabel = output.releaseLabel - self.savedownStorageConfiguration = output.savedownStorageConfiguration - self.status = output.status - self.statusReason = output.statusReason - self.vpcConfiguration = output.vpcConfiguration - } else { - self.autoScalingConfiguration = nil - self.availabilityZoneId = nil - self.azMode = nil - self.cacheStorageConfigurations = nil - self.capacityConfiguration = nil - self.clusterDescription = nil - self.clusterName = nil - self.clusterType = nil - self.code = nil - self.commandLineArguments = nil - self.createdTimestamp = nil - self.databases = nil - self.executionRole = nil - self.initializationScript = nil - self.lastModifiedTimestamp = nil - self.releaseLabel = nil - self.savedownStorageConfiguration = nil - self.status = nil - self.statusReason = nil - self.vpcConfiguration = nil - } } } -public struct GetKxClusterOutput: Swift.Equatable { - /// The configuration based on which FinSpace will scale in or scale out nodes in your cluster. - public var autoScalingConfiguration: FinspaceClientTypes.AutoScalingConfiguration? - /// The availability zone identifiers for the requested regions. - public var availabilityZoneId: Swift.String? - /// The number of availability zones you want to assign per cluster. This can be one of the following - /// - /// * SINGLE – Assigns one availability zone per cluster. - /// - /// * MULTI – Assigns all the availability zones per cluster. - public var azMode: FinspaceClientTypes.KxAzMode? - /// The configurations for a read only cache storage associated with a cluster. This cache will be stored as an FSx Lustre that reads from the S3 store. - public var cacheStorageConfigurations: [FinspaceClientTypes.KxCacheStorageConfiguration]? - /// A structure for the metadata of a cluster. It includes information like the CPUs needed, memory of instances, and number of instances. - public var capacityConfiguration: FinspaceClientTypes.CapacityConfiguration? - /// A description of the cluster. - public var clusterDescription: Swift.String? - /// A unique name for the cluster. - public var clusterName: Swift.String? - /// Specifies the type of KDB database that is being created. The following types are available: - /// - /// * HDB – A Historical Database. The data is only accessible with read-only permissions from one of the FinSpace managed kdb databases mounted to the cluster. - /// - /// * RDB – A Realtime Database. This type of database captures all the data from a ticker plant and stores it in memory until the end of day, after which it writes all of its data to a disk and reloads the HDB. This cluster type requires local storage for temporary storage of data during the savedown process. If you specify this field in your request, you must provide the savedownStorageConfiguration parameter. - /// - /// * GATEWAY – A gateway cluster allows you to access data across processes in kdb systems. It allows you to create your own routing logic using the initialization scripts and custom code. This type of cluster does not require a writable local storage. - /// - /// * GP – A general purpose cluster allows you to quickly iterate on code during development by granting greater access to system commands and enabling a fast reload of custom code. This cluster type can optionally mount databases including cache and savedown storage. For this cluster type, the node count is fixed at 1. It does not support autoscaling and supports only SINGLE AZ mode. - public var clusterType: FinspaceClientTypes.KxClusterType? - /// The details of the custom code that you want to use inside a cluster when analyzing a data. It consists of the S3 source bucket, location, S3 object version, and the relative path from where the custom code is loaded into the cluster. - public var code: FinspaceClientTypes.CodeConfiguration? - /// Defines key-value pairs to make them available inside the cluster. - public var commandLineArguments: [FinspaceClientTypes.KxCommandLineArgument]? - /// The timestamp at which the cluster was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var createdTimestamp: ClientRuntime.Date? - /// A list of databases mounted on the cluster. - public var databases: [FinspaceClientTypes.KxDatabaseConfiguration]? - /// An IAM role that defines a set of permissions associated with a cluster. These permissions are assumed when a cluster attempts to access another cluster. - public var executionRole: 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? - /// The last time that the cluster was modified. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var lastModifiedTimestamp: ClientRuntime.Date? - /// The version of FinSpace managed kdb to run. - public var releaseLabel: Swift.String? - /// The size and type of the temporary storage that is used to hold data during the savedown process. This parameter is required when you choose clusterType as RDB. All the data written to this storage space is lost when the cluster node is restarted. - public var savedownStorageConfiguration: FinspaceClientTypes.KxSavedownStorageConfiguration? - /// The status of cluster creation. - /// - /// * PENDING – The cluster is pending creation. - /// - /// * CREATING – The cluster creation process is in progress. - /// - /// * CREATE_FAILED – The cluster creation process has failed. - /// - /// * RUNNING – The cluster creation process is running. - /// - /// * UPDATING – The cluster is in the process of being updated. - /// - /// * DELETING – The cluster is in the process of being deleted. - /// - /// * DELETED – The cluster has been deleted. - /// - /// * DELETE_FAILED – The cluster failed to delete. - public var status: FinspaceClientTypes.KxClusterStatus? - /// The error message when a failed state occurs. - public var statusReason: Swift.String? - /// Configuration details about the network where the Privatelink endpoint of the cluster resides. - public var vpcConfiguration: FinspaceClientTypes.VpcConfiguration? - - public init( - autoScalingConfiguration: FinspaceClientTypes.AutoScalingConfiguration? = nil, - availabilityZoneId: Swift.String? = nil, - azMode: FinspaceClientTypes.KxAzMode? = nil, - cacheStorageConfigurations: [FinspaceClientTypes.KxCacheStorageConfiguration]? = nil, - capacityConfiguration: FinspaceClientTypes.CapacityConfiguration? = nil, - clusterDescription: Swift.String? = nil, - clusterName: Swift.String? = nil, - clusterType: FinspaceClientTypes.KxClusterType? = nil, - code: FinspaceClientTypes.CodeConfiguration? = nil, - commandLineArguments: [FinspaceClientTypes.KxCommandLineArgument]? = nil, - createdTimestamp: ClientRuntime.Date? = nil, - databases: [FinspaceClientTypes.KxDatabaseConfiguration]? = nil, - executionRole: Swift.String? = nil, - initializationScript: Swift.String? = nil, - lastModifiedTimestamp: ClientRuntime.Date? = nil, - releaseLabel: Swift.String? = nil, - savedownStorageConfiguration: FinspaceClientTypes.KxSavedownStorageConfiguration? = nil, - status: FinspaceClientTypes.KxClusterStatus? = nil, - statusReason: Swift.String? = nil, - vpcConfiguration: FinspaceClientTypes.VpcConfiguration? = nil - ) - { - self.autoScalingConfiguration = autoScalingConfiguration - self.availabilityZoneId = availabilityZoneId - self.azMode = azMode - self.cacheStorageConfigurations = cacheStorageConfigurations - self.capacityConfiguration = capacityConfiguration - self.clusterDescription = clusterDescription - self.clusterName = clusterName - self.clusterType = clusterType - self.code = code - self.commandLineArguments = commandLineArguments - self.createdTimestamp = createdTimestamp - self.databases = databases - self.executionRole = executionRole - self.initializationScript = initializationScript - self.lastModifiedTimestamp = lastModifiedTimestamp - self.releaseLabel = releaseLabel - self.savedownStorageConfiguration = savedownStorageConfiguration - self.status = status - self.statusReason = statusReason - self.vpcConfiguration = vpcConfiguration - } -} - -struct GetKxClusterOutputBody: Swift.Equatable { - let status: FinspaceClientTypes.KxClusterStatus? - let statusReason: Swift.String? - let clusterName: Swift.String? - let clusterType: FinspaceClientTypes.KxClusterType? - let databases: [FinspaceClientTypes.KxDatabaseConfiguration]? - let cacheStorageConfigurations: [FinspaceClientTypes.KxCacheStorageConfiguration]? - let autoScalingConfiguration: FinspaceClientTypes.AutoScalingConfiguration? - let clusterDescription: Swift.String? - let capacityConfiguration: FinspaceClientTypes.CapacityConfiguration? - let releaseLabel: Swift.String? - let vpcConfiguration: FinspaceClientTypes.VpcConfiguration? - let initializationScript: Swift.String? - let commandLineArguments: [FinspaceClientTypes.KxCommandLineArgument]? - let code: FinspaceClientTypes.CodeConfiguration? - let executionRole: Swift.String? - let lastModifiedTimestamp: ClientRuntime.Date? - let savedownStorageConfiguration: FinspaceClientTypes.KxSavedownStorageConfiguration? - let azMode: FinspaceClientTypes.KxAzMode? - let availabilityZoneId: Swift.String? - let createdTimestamp: ClientRuntime.Date? -} - -extension GetKxClusterOutputBody: Swift.Decodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case autoScalingConfiguration - case availabilityZoneId - case azMode - case cacheStorageConfigurations - case capacityConfiguration - case clusterDescription - case clusterName - case clusterType - case code - case commandLineArguments - case createdTimestamp - case databases - case executionRole - case initializationScript - case lastModifiedTimestamp - case releaseLabel - case savedownStorageConfiguration - case status - case statusReason - case vpcConfiguration - } +public struct DeleteKxVolumeOutput: Swift.Equatable { - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterStatus.self, forKey: .status) - status = statusDecoded - let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) - statusReason = statusReasonDecoded - let clusterNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clusterName) - clusterName = clusterNameDecoded - let clusterTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterType.self, forKey: .clusterType) - clusterType = clusterTypeDecoded - let databasesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDatabaseConfiguration?].self, forKey: .databases) - var databasesDecoded0:[FinspaceClientTypes.KxDatabaseConfiguration]? = nil - if let databasesContainer = databasesContainer { - databasesDecoded0 = [FinspaceClientTypes.KxDatabaseConfiguration]() - for structure0 in databasesContainer { - if let structure0 = structure0 { - databasesDecoded0?.append(structure0) - } - } - } - databases = databasesDecoded0 - let cacheStorageConfigurationsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxCacheStorageConfiguration?].self, forKey: .cacheStorageConfigurations) - var cacheStorageConfigurationsDecoded0:[FinspaceClientTypes.KxCacheStorageConfiguration]? = nil - if let cacheStorageConfigurationsContainer = cacheStorageConfigurationsContainer { - cacheStorageConfigurationsDecoded0 = [FinspaceClientTypes.KxCacheStorageConfiguration]() - for structure0 in cacheStorageConfigurationsContainer { - if let structure0 = structure0 { - cacheStorageConfigurationsDecoded0?.append(structure0) - } - } - } - cacheStorageConfigurations = cacheStorageConfigurationsDecoded0 - let autoScalingConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.AutoScalingConfiguration.self, forKey: .autoScalingConfiguration) - autoScalingConfiguration = autoScalingConfigurationDecoded - let clusterDescriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clusterDescription) - clusterDescription = clusterDescriptionDecoded - let capacityConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.CapacityConfiguration.self, forKey: .capacityConfiguration) - capacityConfiguration = capacityConfigurationDecoded - let releaseLabelDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .releaseLabel) - releaseLabel = releaseLabelDecoded - let vpcConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.VpcConfiguration.self, forKey: .vpcConfiguration) - vpcConfiguration = vpcConfigurationDecoded - 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 codeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.CodeConfiguration.self, forKey: .code) - code = codeDecoded - let executionRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .executionRole) - executionRole = executionRoleDecoded - let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) - lastModifiedTimestamp = lastModifiedTimestampDecoded - let savedownStorageConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxSavedownStorageConfiguration.self, forKey: .savedownStorageConfiguration) - savedownStorageConfiguration = savedownStorageConfigurationDecoded - let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) - azMode = azModeDecoded - let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) - availabilityZoneId = availabilityZoneIdDecoded - let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) - createdTimestamp = createdTimestampDecoded - } + public init() { } } -enum GetKxClusterOutputError: ClientRuntime.HttpResponseErrorBinding { +enum DeleteKxVolumeOutputError: 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 @@ -3730,895 +3973,4050 @@ enum GetKxClusterOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension GetKxConnectionStringInput: ClientRuntime.QueryItemProvider { - public var queryItems: [ClientRuntime.URLQueryItem] { - get throws { - var items = [ClientRuntime.URLQueryItem]() - guard let clusterName = clusterName else { - let message = "Creating a URL Query Item failed. clusterName is required and must not be nil." - throw ClientRuntime.ClientError.unknownError(message) - } - let clusterNameQueryItem = ClientRuntime.URLQueryItem(name: "clusterName".urlPercentEncoding(), value: Swift.String(clusterName).urlPercentEncoding()) - items.append(clusterNameQueryItem) - guard let userArn = userArn else { - let message = "Creating a URL Query Item failed. userArn is required and must not be nil." - throw ClientRuntime.ClientError.unknownError(message) - } - let userArnQueryItem = ClientRuntime.URLQueryItem(name: "userArn".urlPercentEncoding(), value: Swift.String(userArn).urlPercentEncoding()) - items.append(userArnQueryItem) - return items - } - } -} - -extension GetKxConnectionStringInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - guard let environmentId = environmentId else { - return nil - } - return "/kx/environments/\(environmentId.urlPercentEncoding())/connectionString" - } -} - -public struct GetKxConnectionStringInput: Swift.Equatable { - /// A name of the kdb cluster. - /// This member is required. - public var clusterName: Swift.String? - /// A unique identifier for the kdb environment. - /// This member is required. - public var environmentId: Swift.String? - /// The Amazon Resource Name (ARN) that identifies the user. For more information about ARNs and how to use ARNs in policies, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) in the IAM User Guide. - /// This member is required. - public var userArn: Swift.String? - - public init( - clusterName: Swift.String? = nil, - environmentId: Swift.String? = nil, - userArn: Swift.String? = nil - ) - { - self.clusterName = clusterName - self.environmentId = environmentId - self.userArn = userArn - } -} - -struct GetKxConnectionStringInputBody: Swift.Equatable { -} - -extension GetKxConnectionStringInputBody: Swift.Decodable { - - public init(from decoder: Swift.Decoder) throws { - } -} - -extension GetKxConnectionStringOutput: Swift.CustomDebugStringConvertible { - public var debugDescription: Swift.String { - "GetKxConnectionStringOutput(signedConnectionString: \"CONTENT_REDACTED\")"} -} +extension FinspaceClientTypes { + public enum DnsStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case failedUpdate + case `none` + case successfullyUpdated + case updateRequested + case updating + case sdkUnknown(Swift.String) -extension GetKxConnectionStringOutput: 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: GetKxConnectionStringOutputBody = try responseDecoder.decode(responseBody: data) - self.signedConnectionString = output.signedConnectionString - } else { - self.signedConnectionString = nil + public static var allCases: [DnsStatus] { + return [ + .failedUpdate, + .none, + .successfullyUpdated, + .updateRequested, + .updating, + .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 .failedUpdate: return "FAILED_UPDATE" + case .none: return "NONE" + case .successfullyUpdated: return "SUCCESSFULLY_UPDATED" + case .updateRequested: return "UPDATE_REQUESTED" + case .updating: return "UPDATING" + 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 = DnsStatus(rawValue: rawValue) ?? DnsStatus.sdkUnknown(rawValue) } } } -public struct GetKxConnectionStringOutput: Swift.Equatable { - /// The signed connection string that you can use to connect to clusters. - public var signedConnectionString: Swift.String? - - public init( - signedConnectionString: Swift.String? = nil - ) - { - self.signedConnectionString = signedConnectionString +extension FinspaceClientTypes.Environment: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case awsAccountId + case dedicatedServiceAccountId + case description + case environmentArn + case environmentId + case environmentUrl + case federationMode + case federationParameters + case kmsKeyId + case name + case sageMakerStudioDomainUrl + case status } -} - -struct GetKxConnectionStringOutputBody: Swift.Equatable { - let signedConnectionString: Swift.String? -} -extension GetKxConnectionStringOutputBody: Swift.Decodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case signedConnectionString + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let awsAccountId = self.awsAccountId { + try encodeContainer.encode(awsAccountId, forKey: .awsAccountId) + } + if let dedicatedServiceAccountId = self.dedicatedServiceAccountId { + try encodeContainer.encode(dedicatedServiceAccountId, forKey: .dedicatedServiceAccountId) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let environmentArn = self.environmentArn { + try encodeContainer.encode(environmentArn, forKey: .environmentArn) + } + if let environmentId = self.environmentId { + try encodeContainer.encode(environmentId, forKey: .environmentId) + } + if let environmentUrl = self.environmentUrl { + try encodeContainer.encode(environmentUrl, forKey: .environmentUrl) + } + if let federationMode = self.federationMode { + try encodeContainer.encode(federationMode.rawValue, forKey: .federationMode) + } + if let federationParameters = self.federationParameters { + try encodeContainer.encode(federationParameters, forKey: .federationParameters) + } + if let kmsKeyId = self.kmsKeyId { + try encodeContainer.encode(kmsKeyId, forKey: .kmsKeyId) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let sageMakerStudioDomainUrl = self.sageMakerStudioDomainUrl { + try encodeContainer.encode(sageMakerStudioDomainUrl, forKey: .sageMakerStudioDomainUrl) + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let signedConnectionStringDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .signedConnectionString) - signedConnectionString = signedConnectionStringDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let awsAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .awsAccountId) + awsAccountId = awsAccountIdDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.EnvironmentStatus.self, forKey: .status) + status = statusDecoded + let environmentUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentUrl) + environmentUrl = environmentUrlDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let environmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentArn) + environmentArn = environmentArnDecoded + let sageMakerStudioDomainUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sageMakerStudioDomainUrl) + sageMakerStudioDomainUrl = sageMakerStudioDomainUrlDecoded + let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) + kmsKeyId = kmsKeyIdDecoded + let dedicatedServiceAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dedicatedServiceAccountId) + dedicatedServiceAccountId = dedicatedServiceAccountIdDecoded + let federationModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.FederationMode.self, forKey: .federationMode) + federationMode = federationModeDecoded + let federationParametersDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.FederationParameters.self, forKey: .federationParameters) + federationParameters = federationParametersDecoded } } -enum GetKxConnectionStringOutputError: 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 "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 FinspaceClientTypes { + /// Represents an FinSpace environment. + public struct Environment: Swift.Equatable { + /// The ID of the AWS account in which the FinSpace environment is created. + public var awsAccountId: Swift.String? + /// The AWS account ID of the dedicated service account associated with your FinSpace environment. + public var dedicatedServiceAccountId: Swift.String? + /// The description of the FinSpace environment. + public var description: Swift.String? + /// The Amazon Resource Name (ARN) of your FinSpace environment. + public var environmentArn: Swift.String? + /// The identifier of the FinSpace environment. + public var environmentId: Swift.String? + /// The sign-in URL for the web application of your FinSpace environment. + public var environmentUrl: Swift.String? + /// The authentication mode for the environment. + public var federationMode: FinspaceClientTypes.FederationMode? + /// Configuration information when authentication mode is FEDERATED. + public var federationParameters: FinspaceClientTypes.FederationParameters? + /// The KMS key id used to encrypt in the FinSpace environment. + public var kmsKeyId: Swift.String? + /// The name of the FinSpace environment. + public var name: Swift.String? + /// The URL of the integrated FinSpace notebook environment in your web application. + public var sageMakerStudioDomainUrl: Swift.String? + /// The current status of creation of the FinSpace environment. + public var status: FinspaceClientTypes.EnvironmentStatus? -extension GetKxDatabaseInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - guard let environmentId = environmentId else { - return nil - } - guard let databaseName = databaseName else { - return nil + public init( + awsAccountId: Swift.String? = nil, + dedicatedServiceAccountId: Swift.String? = nil, + description: Swift.String? = nil, + environmentArn: Swift.String? = nil, + environmentId: Swift.String? = nil, + environmentUrl: Swift.String? = nil, + federationMode: FinspaceClientTypes.FederationMode? = nil, + federationParameters: FinspaceClientTypes.FederationParameters? = nil, + kmsKeyId: Swift.String? = nil, + name: Swift.String? = nil, + sageMakerStudioDomainUrl: Swift.String? = nil, + status: FinspaceClientTypes.EnvironmentStatus? = nil + ) + { + self.awsAccountId = awsAccountId + self.dedicatedServiceAccountId = dedicatedServiceAccountId + self.description = description + self.environmentArn = environmentArn + self.environmentId = environmentId + self.environmentUrl = environmentUrl + self.federationMode = federationMode + self.federationParameters = federationParameters + self.kmsKeyId = kmsKeyId + self.name = name + self.sageMakerStudioDomainUrl = sageMakerStudioDomainUrl + self.status = status } - return "/kx/environments/\(environmentId.urlPercentEncoding())/databases/\(databaseName.urlPercentEncoding())" } + } -public struct GetKxDatabaseInput: Swift.Equatable { - /// The name of the kdb database. - /// This member is required. - public var databaseName: Swift.String? - /// A unique identifier for the kdb environment. - /// This member is required. - public var environmentId: Swift.String? +extension FinspaceClientTypes { + public enum EnvironmentStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case created + case createRequested + case creating + case deleted + case deleteRequested + case deleting + case failedCreation + case failedDeletion + case failedUpdatingNetwork + case retryDeletion + case suspended + case updateNetworkRequested + case updatingNetwork + case sdkUnknown(Swift.String) - public init( - databaseName: Swift.String? = nil, - environmentId: Swift.String? = nil - ) - { - self.databaseName = databaseName - self.environmentId = environmentId + public static var allCases: [EnvironmentStatus] { + return [ + .created, + .createRequested, + .creating, + .deleted, + .deleteRequested, + .deleting, + .failedCreation, + .failedDeletion, + .failedUpdatingNetwork, + .retryDeletion, + .suspended, + .updateNetworkRequested, + .updatingNetwork, + .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 .created: return "CREATED" + case .createRequested: return "CREATE_REQUESTED" + case .creating: return "CREATING" + case .deleted: return "DELETED" + case .deleteRequested: return "DELETE_REQUESTED" + case .deleting: return "DELETING" + case .failedCreation: return "FAILED_CREATION" + case .failedDeletion: return "FAILED_DELETION" + case .failedUpdatingNetwork: return "FAILED_UPDATING_NETWORK" + case .retryDeletion: return "RETRY_DELETION" + case .suspended: return "SUSPENDED" + case .updateNetworkRequested: return "UPDATE_NETWORK_REQUESTED" + case .updatingNetwork: return "UPDATING_NETWORK" + 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 = EnvironmentStatus(rawValue: rawValue) ?? EnvironmentStatus.sdkUnknown(rawValue) + } } } -struct GetKxDatabaseInputBody: Swift.Equatable { -} - -extension GetKxDatabaseInputBody: Swift.Decodable { +extension FinspaceClientTypes { + public enum ErrorDetails: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case accessDenied + case cancelled + case internalServiceException + case resourceNotFound + case serviceQuotaExceeded + case throttling + case userRecoverable + case validation + case sdkUnknown(Swift.String) - public init(from decoder: Swift.Decoder) throws { + public static var allCases: [ErrorDetails] { + return [ + .accessDenied, + .cancelled, + .internalServiceException, + .resourceNotFound, + .serviceQuotaExceeded, + .throttling, + .userRecoverable, + .validation, + .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 .accessDenied: return "Missing required permission to perform this request." + case .cancelled: return "Cancelled" + case .internalServiceException: return "An internal error has occurred." + case .resourceNotFound: return "One or more inputs to this request were not found." + case .serviceQuotaExceeded: return "Service limits have been exceeded." + case .throttling: return "The system temporarily lacks sufficient resources to process the request." + case .userRecoverable: return "A user recoverable error has occurred" + case .validation: return "The inputs to this request are invalid." + 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 = ErrorDetails(rawValue: rawValue) ?? ErrorDetails.sdkUnknown(rawValue) + } } } -extension GetKxDatabaseOutput: 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: GetKxDatabaseOutputBody = try responseDecoder.decode(responseBody: data) - self.createdTimestamp = output.createdTimestamp - self.databaseArn = output.databaseArn - self.databaseName = output.databaseName - self.description = output.description - self.environmentId = output.environmentId - self.lastCompletedChangesetId = output.lastCompletedChangesetId - self.lastModifiedTimestamp = output.lastModifiedTimestamp - self.numBytes = output.numBytes - self.numChangesets = output.numChangesets - self.numFiles = output.numFiles - } else { - self.createdTimestamp = nil - self.databaseArn = nil - self.databaseName = nil - self.description = nil - self.environmentId = nil - self.lastCompletedChangesetId = nil - self.lastModifiedTimestamp = nil - self.numBytes = 0 - self.numChangesets = 0 - self.numFiles = 0 +extension FinspaceClientTypes.ErrorInfo: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case errorMessage + case errorType + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let errorMessage = self.errorMessage { + try encodeContainer.encode(errorMessage, forKey: .errorMessage) + } + if let errorType = self.errorType { + try encodeContainer.encode(errorType.rawValue, forKey: .errorType) } } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let errorMessageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorMessage) + errorMessage = errorMessageDecoded + let errorTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.ErrorDetails.self, forKey: .errorType) + errorType = errorTypeDecoded + } } -public struct GetKxDatabaseOutput: Swift.Equatable { - /// The timestamp at which the database is created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var createdTimestamp: ClientRuntime.Date? - /// The ARN identifier of the database. - public var databaseArn: Swift.String? - /// The name of the kdb database for which the information is retrieved. - public var databaseName: Swift.String? - /// A description of the database. - public var description: Swift.String? - /// A unique identifier for the kdb environment. - public var environmentId: Swift.String? - /// A unique identifier for the changeset. - public var lastCompletedChangesetId: Swift.String? - /// The last time that the database was modified. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var lastModifiedTimestamp: ClientRuntime.Date? - /// The total number of bytes in the database. - public var numBytes: Swift.Int - /// The total number of changesets in the database. - public var numChangesets: Swift.Int - /// The total number of files in the database. - public var numFiles: Swift.Int +extension FinspaceClientTypes { + /// Provides details in the event of a failed flow, including the error type and the related error message. + public struct ErrorInfo: Swift.Equatable { + /// Specifies the error message that appears if a flow fails. + public var errorMessage: Swift.String? + /// Specifies the type of error. + public var errorType: FinspaceClientTypes.ErrorDetails? - public init( - createdTimestamp: ClientRuntime.Date? = nil, - databaseArn: Swift.String? = nil, - databaseName: Swift.String? = nil, - description: Swift.String? = nil, - environmentId: Swift.String? = nil, - lastCompletedChangesetId: Swift.String? = nil, - lastModifiedTimestamp: ClientRuntime.Date? = nil, - numBytes: Swift.Int = 0, - numChangesets: Swift.Int = 0, - numFiles: Swift.Int = 0 - ) - { - self.createdTimestamp = createdTimestamp - self.databaseArn = databaseArn - self.databaseName = databaseName - self.description = description - self.environmentId = environmentId - self.lastCompletedChangesetId = lastCompletedChangesetId - self.lastModifiedTimestamp = lastModifiedTimestamp - self.numBytes = numBytes - self.numChangesets = numChangesets - self.numFiles = numFiles + public init( + errorMessage: Swift.String? = nil, + errorType: FinspaceClientTypes.ErrorDetails? = nil + ) + { + self.errorMessage = errorMessage + self.errorType = errorType + } } -} -struct GetKxDatabaseOutputBody: Swift.Equatable { - let databaseName: Swift.String? - let databaseArn: Swift.String? - let environmentId: Swift.String? - let description: Swift.String? - let createdTimestamp: ClientRuntime.Date? - let lastModifiedTimestamp: ClientRuntime.Date? - let lastCompletedChangesetId: Swift.String? - let numBytes: Swift.Int - let numChangesets: Swift.Int - let numFiles: Swift.Int } -extension GetKxDatabaseOutputBody: Swift.Decodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case createdTimestamp - case databaseArn - case databaseName - case description - case environmentId - case lastCompletedChangesetId - case lastModifiedTimestamp - case numBytes - case numChangesets - case numFiles +extension FinspaceClientTypes { + public enum FederationMode: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case federated + case local + case sdkUnknown(Swift.String) + + public static var allCases: [FederationMode] { + return [ + .federated, + .local, + .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 .federated: return "FEDERATED" + case .local: return "LOCAL" + 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 = FederationMode(rawValue: rawValue) ?? FederationMode.sdkUnknown(rawValue) + } + } +} + +extension FinspaceClientTypes.FederationParameters: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case applicationCallBackURL + case attributeMap + case federationProviderName + case federationURN + case samlMetadataDocument + case samlMetadataURL + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let applicationCallBackURL = self.applicationCallBackURL { + try encodeContainer.encode(applicationCallBackURL, forKey: .applicationCallBackURL) + } + if let attributeMap = attributeMap { + var attributeMapContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .attributeMap) + for (dictKey0, attributeMap0) in attributeMap { + try attributeMapContainer.encode(attributeMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let federationProviderName = self.federationProviderName { + try encodeContainer.encode(federationProviderName, forKey: .federationProviderName) + } + if let federationURN = self.federationURN { + try encodeContainer.encode(federationURN, forKey: .federationURN) + } + if let samlMetadataDocument = self.samlMetadataDocument { + try encodeContainer.encode(samlMetadataDocument, forKey: .samlMetadataDocument) + } + if let samlMetadataURL = self.samlMetadataURL { + try encodeContainer.encode(samlMetadataURL, forKey: .samlMetadataURL) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let samlMetadataDocumentDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .samlMetadataDocument) + samlMetadataDocument = samlMetadataDocumentDecoded + let samlMetadataURLDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .samlMetadataURL) + samlMetadataURL = samlMetadataURLDecoded + let applicationCallBackURLDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .applicationCallBackURL) + applicationCallBackURL = applicationCallBackURLDecoded + let federationURNDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .federationURN) + federationURN = federationURNDecoded + let federationProviderNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .federationProviderName) + federationProviderName = federationProviderNameDecoded + let attributeMapContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .attributeMap) + var attributeMapDecoded0: [Swift.String:Swift.String]? = nil + if let attributeMapContainer = attributeMapContainer { + attributeMapDecoded0 = [Swift.String:Swift.String]() + for (key0, federationattributevalue0) in attributeMapContainer { + if let federationattributevalue0 = federationattributevalue0 { + attributeMapDecoded0?[key0] = federationattributevalue0 + } + } + } + attributeMap = attributeMapDecoded0 + } +} + +extension FinspaceClientTypes { + /// Configuration information when authentication mode is FEDERATED. + public struct FederationParameters: Swift.Equatable { + /// The redirect or sign-in URL that should be entered into the SAML 2.0 compliant identity provider configuration (IdP). + public var applicationCallBackURL: Swift.String? + /// SAML attribute name and value. The name must always be Email and the value should be set to the attribute definition in which user email is set. For example, name would be Email and value http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress. Please check your SAML 2.0 compliant identity provider (IdP) documentation for details. + public var attributeMap: [Swift.String:Swift.String]? + /// Name of the identity provider (IdP). + public var federationProviderName: Swift.String? + /// The Uniform Resource Name (URN). Also referred as Service Provider URN or Audience URI or Service Provider Entity ID. + public var federationURN: Swift.String? + /// SAML 2.0 Metadata document from identity provider (IdP). + public var samlMetadataDocument: Swift.String? + /// Provide the metadata URL from your SAML 2.0 compliant identity provider (IdP). + public var samlMetadataURL: Swift.String? + + public init( + applicationCallBackURL: Swift.String? = nil, + attributeMap: [Swift.String:Swift.String]? = nil, + federationProviderName: Swift.String? = nil, + federationURN: Swift.String? = nil, + samlMetadataDocument: Swift.String? = nil, + samlMetadataURL: Swift.String? = nil + ) + { + self.applicationCallBackURL = applicationCallBackURL + self.attributeMap = attributeMap + self.federationProviderName = federationProviderName + self.federationURN = federationURN + self.samlMetadataDocument = samlMetadataDocument + self.samlMetadataURL = samlMetadataURL + } + } + +} + +extension GetEnvironmentInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + return "/environment/\(environmentId.urlPercentEncoding())" + } +} + +public struct GetEnvironmentInput: Swift.Equatable { + /// The identifier of the FinSpace environment. + /// This member is required. + public var environmentId: Swift.String? + + public init( + environmentId: Swift.String? = nil + ) + { + self.environmentId = environmentId + } +} + +struct GetEnvironmentInputBody: Swift.Equatable { +} + +extension GetEnvironmentInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetEnvironmentOutput: 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: GetEnvironmentOutputBody = try responseDecoder.decode(responseBody: data) + self.environment = output.environment + } else { + self.environment = nil + } + } +} + +public struct GetEnvironmentOutput: Swift.Equatable { + /// The name of the FinSpace environment. + public var environment: FinspaceClientTypes.Environment? + + public init( + environment: FinspaceClientTypes.Environment? = nil + ) + { + self.environment = environment + } +} + +struct GetEnvironmentOutputBody: Swift.Equatable { + let environment: FinspaceClientTypes.Environment? +} + +extension GetEnvironmentOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case environment + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let environmentDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.Environment.self, forKey: .environment) + environment = environmentDecoded + } +} + +enum GetEnvironmentOutputError: 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 "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 GetKxChangesetInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + guard let databaseName = databaseName else { + return nil + } + guard let changesetId = changesetId else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/databases/\(databaseName.urlPercentEncoding())/changesets/\(changesetId.urlPercentEncoding())" + } +} + +public struct GetKxChangesetInput: Swift.Equatable { + /// A unique identifier of the changeset for which you want to retrieve data. + /// This member is required. + public var changesetId: Swift.String? + /// The name of the kdb database. + /// This member is required. + public var databaseName: Swift.String? + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? + + public init( + changesetId: Swift.String? = nil, + databaseName: Swift.String? = nil, + environmentId: Swift.String? = nil + ) + { + self.changesetId = changesetId + self.databaseName = databaseName + self.environmentId = environmentId + } +} + +struct GetKxChangesetInputBody: Swift.Equatable { +} + +extension GetKxChangesetInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetKxChangesetOutput: 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: GetKxChangesetOutputBody = try responseDecoder.decode(responseBody: data) + self.activeFromTimestamp = output.activeFromTimestamp + self.changeRequests = output.changeRequests + self.changesetId = output.changesetId + self.createdTimestamp = output.createdTimestamp + self.databaseName = output.databaseName + self.environmentId = output.environmentId + self.errorInfo = output.errorInfo + self.lastModifiedTimestamp = output.lastModifiedTimestamp + self.status = output.status + } else { + self.activeFromTimestamp = nil + self.changeRequests = nil + self.changesetId = nil + self.createdTimestamp = nil + self.databaseName = nil + self.environmentId = nil + self.errorInfo = nil + self.lastModifiedTimestamp = nil + self.status = nil + } + } +} + +public struct GetKxChangesetOutput: Swift.Equatable { + /// Beginning time from which the changeset is active. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var activeFromTimestamp: ClientRuntime.Date? + /// A list of change request objects that are run in order. + public var changeRequests: [FinspaceClientTypes.ChangeRequest]? + /// A unique identifier for the changeset. + public var changesetId: Swift.String? + /// The timestamp at which the changeset was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// The name of the kdb database. + public var databaseName: Swift.String? + /// A unique identifier for the kdb environment. + public var environmentId: Swift.String? + /// Provides details in the event of a failed flow, including the error type and the related error message. + public var errorInfo: FinspaceClientTypes.ErrorInfo? + /// The timestamp at which the changeset was updated in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// Status of the changeset creation process. + /// + /// * Pending – Changeset creation is pending. + /// + /// * Processing – Changeset creation is running. + /// + /// * Failed – Changeset creation has failed. + /// + /// * Complete – Changeset creation has succeeded. + public var status: FinspaceClientTypes.ChangesetStatus? + + public init( + activeFromTimestamp: ClientRuntime.Date? = nil, + changeRequests: [FinspaceClientTypes.ChangeRequest]? = nil, + changesetId: Swift.String? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + databaseName: Swift.String? = nil, + environmentId: Swift.String? = nil, + errorInfo: FinspaceClientTypes.ErrorInfo? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + status: FinspaceClientTypes.ChangesetStatus? = nil + ) + { + self.activeFromTimestamp = activeFromTimestamp + self.changeRequests = changeRequests + self.changesetId = changesetId + self.createdTimestamp = createdTimestamp + self.databaseName = databaseName + self.environmentId = environmentId + self.errorInfo = errorInfo + self.lastModifiedTimestamp = lastModifiedTimestamp + self.status = status + } +} + +struct GetKxChangesetOutputBody: Swift.Equatable { + let changesetId: Swift.String? + let databaseName: Swift.String? + let environmentId: Swift.String? + let changeRequests: [FinspaceClientTypes.ChangeRequest]? + let createdTimestamp: ClientRuntime.Date? + let activeFromTimestamp: ClientRuntime.Date? + let lastModifiedTimestamp: ClientRuntime.Date? + let status: FinspaceClientTypes.ChangesetStatus? + let errorInfo: FinspaceClientTypes.ErrorInfo? +} + +extension GetKxChangesetOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case activeFromTimestamp + case changeRequests + case changesetId + case createdTimestamp + case databaseName + case environmentId + case errorInfo + case lastModifiedTimestamp + case status + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) + changesetId = changesetIdDecoded + let databaseNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseName) + databaseName = databaseNameDecoded + let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let changeRequestsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.ChangeRequest?].self, forKey: .changeRequests) + var changeRequestsDecoded0:[FinspaceClientTypes.ChangeRequest]? = nil + if let changeRequestsContainer = changeRequestsContainer { + changeRequestsDecoded0 = [FinspaceClientTypes.ChangeRequest]() + for structure0 in changeRequestsContainer { + if let structure0 = structure0 { + changeRequestsDecoded0?.append(structure0) + } + } + } + changeRequests = changeRequestsDecoded0 + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + let activeFromTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .activeFromTimestamp) + activeFromTimestamp = activeFromTimestampDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.ChangesetStatus.self, forKey: .status) + status = statusDecoded + let errorInfoDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.ErrorInfo.self, forKey: .errorInfo) + errorInfo = errorInfoDecoded + } +} + +enum GetKxChangesetOutputError: 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 "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 GetKxClusterInput: 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())" + } +} + +public struct GetKxClusterInput: Swift.Equatable { + /// The name of the cluster that you want to retrieve. + /// This member is required. + public var clusterName: Swift.String? + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? + + public init( + clusterName: Swift.String? = nil, + environmentId: Swift.String? = nil + ) + { + self.clusterName = clusterName + self.environmentId = environmentId + } +} + +struct GetKxClusterInputBody: Swift.Equatable { +} + +extension GetKxClusterInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetKxClusterOutput: 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: GetKxClusterOutputBody = try responseDecoder.decode(responseBody: data) + self.autoScalingConfiguration = output.autoScalingConfiguration + self.availabilityZoneId = output.availabilityZoneId + self.azMode = output.azMode + self.cacheStorageConfigurations = output.cacheStorageConfigurations + self.capacityConfiguration = output.capacityConfiguration + self.clusterDescription = output.clusterDescription + self.clusterName = output.clusterName + self.clusterType = output.clusterType + self.code = output.code + self.commandLineArguments = output.commandLineArguments + self.createdTimestamp = output.createdTimestamp + self.databases = output.databases + self.executionRole = output.executionRole + self.initializationScript = output.initializationScript + self.lastModifiedTimestamp = output.lastModifiedTimestamp + self.releaseLabel = output.releaseLabel + self.savedownStorageConfiguration = output.savedownStorageConfiguration + self.scalingGroupConfiguration = output.scalingGroupConfiguration + self.status = output.status + self.statusReason = output.statusReason + self.tickerplantLogConfiguration = output.tickerplantLogConfiguration + self.volumes = output.volumes + self.vpcConfiguration = output.vpcConfiguration + } else { + self.autoScalingConfiguration = nil + self.availabilityZoneId = nil + self.azMode = nil + self.cacheStorageConfigurations = nil + self.capacityConfiguration = nil + self.clusterDescription = nil + self.clusterName = nil + self.clusterType = nil + self.code = nil + self.commandLineArguments = nil + self.createdTimestamp = nil + self.databases = nil + self.executionRole = nil + self.initializationScript = nil + self.lastModifiedTimestamp = nil + self.releaseLabel = nil + self.savedownStorageConfiguration = nil + self.scalingGroupConfiguration = nil + self.status = nil + self.statusReason = nil + self.tickerplantLogConfiguration = nil + self.volumes = nil + self.vpcConfiguration = nil + } + } +} + +public struct GetKxClusterOutput: Swift.Equatable { + /// The configuration based on which FinSpace will scale in or scale out nodes in your cluster. + public var autoScalingConfiguration: FinspaceClientTypes.AutoScalingConfiguration? + /// The availability zone identifiers for the requested regions. + public var availabilityZoneId: Swift.String? + /// The number of availability zones you want to assign per cluster. This can be one of the following + /// + /// * SINGLE – Assigns one availability zone per cluster. + /// + /// * MULTI – Assigns all the availability zones per cluster. + public var azMode: FinspaceClientTypes.KxAzMode? + /// The configurations for a read only cache storage associated with a cluster. This cache will be stored as an FSx Lustre that reads from the S3 store. + public var cacheStorageConfigurations: [FinspaceClientTypes.KxCacheStorageConfiguration]? + /// A structure for the metadata of a cluster. It includes information like the CPUs needed, memory of instances, and number of instances. + public var capacityConfiguration: FinspaceClientTypes.CapacityConfiguration? + /// A description of the cluster. + public var clusterDescription: Swift.String? + /// A unique name for the cluster. + public var clusterName: Swift.String? + /// Specifies the type of KDB database that is being created. The following types are available: + /// + /// * HDB – A Historical Database. The data is only accessible with read-only permissions from one of the FinSpace managed kdb databases mounted to the cluster. + /// + /// * RDB – A Realtime Database. This type of database captures all the data from a ticker plant and stores it in memory until the end of day, after which it writes all of its data to a disk and reloads the HDB. This cluster type requires local storage for temporary storage of data during the savedown process. If you specify this field in your request, you must provide the savedownStorageConfiguration parameter. + /// + /// * GATEWAY – A gateway cluster allows you to access data across processes in kdb systems. It allows you to create your own routing logic using the initialization scripts and custom code. This type of cluster does not require a writable local storage. + /// + /// * GP – A general purpose cluster allows you to quickly iterate on code during development by granting greater access to system commands and enabling a fast reload of custom code. This cluster type can optionally mount databases including cache and savedown storage. For this cluster type, the node count is fixed at 1. It does not support autoscaling and supports only SINGLE AZ mode. + /// + /// * Tickerplant – A tickerplant cluster allows you to subscribe to feed handlers based on IAM permissions. It can publish to RDBs, other Tickerplants, and real-time subscribers (RTS). Tickerplants can persist messages to log, which is readable by any RDB environment. It supports only single-node that is only one kdb process. + public var clusterType: FinspaceClientTypes.KxClusterType? + /// The details of the custom code that you want to use inside a cluster when analyzing a data. It consists of the S3 source bucket, location, S3 object version, and the relative path from where the custom code is loaded into the cluster. + public var code: FinspaceClientTypes.CodeConfiguration? + /// Defines key-value pairs to make them available inside the cluster. + public var commandLineArguments: [FinspaceClientTypes.KxCommandLineArgument]? + /// The timestamp at which the cluster was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// A list of databases mounted on the cluster. + public var databases: [FinspaceClientTypes.KxDatabaseConfiguration]? + /// An IAM role that defines a set of permissions associated with a cluster. These permissions are assumed when a cluster attempts to access another cluster. + public var executionRole: 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? + /// The last time that the cluster was modified. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// The version of FinSpace managed kdb to run. + public var releaseLabel: Swift.String? + /// The size and type of the temporary storage that is used to hold data during the savedown process. This parameter is required when you choose clusterType as RDB. All the data written to this storage space is lost when the cluster node is restarted. + public var savedownStorageConfiguration: FinspaceClientTypes.KxSavedownStorageConfiguration? + /// The structure that stores the capacity configuration details of a scaling group. + public var scalingGroupConfiguration: FinspaceClientTypes.KxScalingGroupConfiguration? + /// The status of cluster creation. + /// + /// * PENDING – The cluster is pending creation. + /// + /// * CREATING – The cluster creation process is in progress. + /// + /// * CREATE_FAILED – The cluster creation process has failed. + /// + /// * RUNNING – The cluster creation process is running. + /// + /// * UPDATING – The cluster is in the process of being updated. + /// + /// * DELETING – The cluster is in the process of being deleted. + /// + /// * DELETED – The cluster has been deleted. + /// + /// * DELETE_FAILED – The cluster failed to delete. + public var status: FinspaceClientTypes.KxClusterStatus? + /// The error message when a failed state occurs. + public var statusReason: Swift.String? + /// A configuration to store the Tickerplant logs. It consists of a list of volumes that will be mounted to your cluster. For the cluster type Tickerplant, the location of the TP volume on the cluster will be available by using the global variable .aws.tp_log_path. + public var tickerplantLogConfiguration: FinspaceClientTypes.TickerplantLogConfiguration? + /// A list of volumes attached to the cluster. + public var volumes: [FinspaceClientTypes.Volume]? + /// Configuration details about the network where the Privatelink endpoint of the cluster resides. + public var vpcConfiguration: FinspaceClientTypes.VpcConfiguration? + + public init( + autoScalingConfiguration: FinspaceClientTypes.AutoScalingConfiguration? = nil, + availabilityZoneId: Swift.String? = nil, + azMode: FinspaceClientTypes.KxAzMode? = nil, + cacheStorageConfigurations: [FinspaceClientTypes.KxCacheStorageConfiguration]? = nil, + capacityConfiguration: FinspaceClientTypes.CapacityConfiguration? = nil, + clusterDescription: Swift.String? = nil, + clusterName: Swift.String? = nil, + clusterType: FinspaceClientTypes.KxClusterType? = nil, + code: FinspaceClientTypes.CodeConfiguration? = nil, + commandLineArguments: [FinspaceClientTypes.KxCommandLineArgument]? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + databases: [FinspaceClientTypes.KxDatabaseConfiguration]? = nil, + executionRole: Swift.String? = nil, + initializationScript: Swift.String? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + releaseLabel: Swift.String? = nil, + savedownStorageConfiguration: FinspaceClientTypes.KxSavedownStorageConfiguration? = nil, + scalingGroupConfiguration: FinspaceClientTypes.KxScalingGroupConfiguration? = nil, + status: FinspaceClientTypes.KxClusterStatus? = nil, + statusReason: Swift.String? = nil, + tickerplantLogConfiguration: FinspaceClientTypes.TickerplantLogConfiguration? = nil, + volumes: [FinspaceClientTypes.Volume]? = nil, + vpcConfiguration: FinspaceClientTypes.VpcConfiguration? = nil + ) + { + self.autoScalingConfiguration = autoScalingConfiguration + self.availabilityZoneId = availabilityZoneId + self.azMode = azMode + self.cacheStorageConfigurations = cacheStorageConfigurations + self.capacityConfiguration = capacityConfiguration + self.clusterDescription = clusterDescription + self.clusterName = clusterName + self.clusterType = clusterType + self.code = code + self.commandLineArguments = commandLineArguments + self.createdTimestamp = createdTimestamp + self.databases = databases + self.executionRole = executionRole + self.initializationScript = initializationScript + self.lastModifiedTimestamp = lastModifiedTimestamp + self.releaseLabel = releaseLabel + self.savedownStorageConfiguration = savedownStorageConfiguration + self.scalingGroupConfiguration = scalingGroupConfiguration + self.status = status + self.statusReason = statusReason + self.tickerplantLogConfiguration = tickerplantLogConfiguration + self.volumes = volumes + self.vpcConfiguration = vpcConfiguration + } +} + +struct GetKxClusterOutputBody: Swift.Equatable { + let status: FinspaceClientTypes.KxClusterStatus? + let statusReason: Swift.String? + let clusterName: Swift.String? + let clusterType: FinspaceClientTypes.KxClusterType? + let tickerplantLogConfiguration: FinspaceClientTypes.TickerplantLogConfiguration? + let volumes: [FinspaceClientTypes.Volume]? + let databases: [FinspaceClientTypes.KxDatabaseConfiguration]? + let cacheStorageConfigurations: [FinspaceClientTypes.KxCacheStorageConfiguration]? + let autoScalingConfiguration: FinspaceClientTypes.AutoScalingConfiguration? + let clusterDescription: Swift.String? + let capacityConfiguration: FinspaceClientTypes.CapacityConfiguration? + let releaseLabel: Swift.String? + let vpcConfiguration: FinspaceClientTypes.VpcConfiguration? + let initializationScript: Swift.String? + let commandLineArguments: [FinspaceClientTypes.KxCommandLineArgument]? + let code: FinspaceClientTypes.CodeConfiguration? + let executionRole: Swift.String? + let lastModifiedTimestamp: ClientRuntime.Date? + let savedownStorageConfiguration: FinspaceClientTypes.KxSavedownStorageConfiguration? + let azMode: FinspaceClientTypes.KxAzMode? + let availabilityZoneId: Swift.String? + let createdTimestamp: ClientRuntime.Date? + let scalingGroupConfiguration: FinspaceClientTypes.KxScalingGroupConfiguration? +} + +extension GetKxClusterOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case autoScalingConfiguration + case availabilityZoneId + case azMode + case cacheStorageConfigurations + case capacityConfiguration + case clusterDescription + case clusterName + case clusterType + case code + case commandLineArguments + case createdTimestamp + case databases + case executionRole + case initializationScript + case lastModifiedTimestamp + case releaseLabel + case savedownStorageConfiguration + case scalingGroupConfiguration + case status + case statusReason + case tickerplantLogConfiguration + case volumes + case vpcConfiguration + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let clusterNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clusterName) + clusterName = clusterNameDecoded + let clusterTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterType.self, forKey: .clusterType) + clusterType = clusterTypeDecoded + let tickerplantLogConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.TickerplantLogConfiguration.self, forKey: .tickerplantLogConfiguration) + tickerplantLogConfiguration = tickerplantLogConfigurationDecoded + let volumesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.Volume?].self, forKey: .volumes) + var volumesDecoded0:[FinspaceClientTypes.Volume]? = nil + if let volumesContainer = volumesContainer { + volumesDecoded0 = [FinspaceClientTypes.Volume]() + for structure0 in volumesContainer { + if let structure0 = structure0 { + volumesDecoded0?.append(structure0) + } + } + } + volumes = volumesDecoded0 + let databasesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDatabaseConfiguration?].self, forKey: .databases) + var databasesDecoded0:[FinspaceClientTypes.KxDatabaseConfiguration]? = nil + if let databasesContainer = databasesContainer { + databasesDecoded0 = [FinspaceClientTypes.KxDatabaseConfiguration]() + for structure0 in databasesContainer { + if let structure0 = structure0 { + databasesDecoded0?.append(structure0) + } + } + } + databases = databasesDecoded0 + let cacheStorageConfigurationsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxCacheStorageConfiguration?].self, forKey: .cacheStorageConfigurations) + var cacheStorageConfigurationsDecoded0:[FinspaceClientTypes.KxCacheStorageConfiguration]? = nil + if let cacheStorageConfigurationsContainer = cacheStorageConfigurationsContainer { + cacheStorageConfigurationsDecoded0 = [FinspaceClientTypes.KxCacheStorageConfiguration]() + for structure0 in cacheStorageConfigurationsContainer { + if let structure0 = structure0 { + cacheStorageConfigurationsDecoded0?.append(structure0) + } + } + } + cacheStorageConfigurations = cacheStorageConfigurationsDecoded0 + let autoScalingConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.AutoScalingConfiguration.self, forKey: .autoScalingConfiguration) + autoScalingConfiguration = autoScalingConfigurationDecoded + let clusterDescriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clusterDescription) + clusterDescription = clusterDescriptionDecoded + let capacityConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.CapacityConfiguration.self, forKey: .capacityConfiguration) + capacityConfiguration = capacityConfigurationDecoded + let releaseLabelDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .releaseLabel) + releaseLabel = releaseLabelDecoded + let vpcConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.VpcConfiguration.self, forKey: .vpcConfiguration) + vpcConfiguration = vpcConfigurationDecoded + 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 codeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.CodeConfiguration.self, forKey: .code) + code = codeDecoded + let executionRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .executionRole) + executionRole = executionRoleDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + let savedownStorageConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxSavedownStorageConfiguration.self, forKey: .savedownStorageConfiguration) + savedownStorageConfiguration = savedownStorageConfigurationDecoded + let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) + azMode = azModeDecoded + let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) + availabilityZoneId = availabilityZoneIdDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + let scalingGroupConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxScalingGroupConfiguration.self, forKey: .scalingGroupConfiguration) + scalingGroupConfiguration = scalingGroupConfigurationDecoded + } +} + +enum GetKxClusterOutputError: 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 GetKxConnectionStringInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + guard let clusterName = clusterName else { + let message = "Creating a URL Query Item failed. clusterName is required and must not be nil." + throw ClientRuntime.ClientError.unknownError(message) + } + let clusterNameQueryItem = ClientRuntime.URLQueryItem(name: "clusterName".urlPercentEncoding(), value: Swift.String(clusterName).urlPercentEncoding()) + items.append(clusterNameQueryItem) + guard let userArn = userArn else { + let message = "Creating a URL Query Item failed. userArn is required and must not be nil." + throw ClientRuntime.ClientError.unknownError(message) + } + let userArnQueryItem = ClientRuntime.URLQueryItem(name: "userArn".urlPercentEncoding(), value: Swift.String(userArn).urlPercentEncoding()) + items.append(userArnQueryItem) + return items + } + } +} + +extension GetKxConnectionStringInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/connectionString" + } +} + +public struct GetKxConnectionStringInput: Swift.Equatable { + /// A name of the kdb cluster. + /// This member is required. + public var clusterName: Swift.String? + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? + /// The Amazon Resource Name (ARN) that identifies the user. For more information about ARNs and how to use ARNs in policies, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) in the IAM User Guide. + /// This member is required. + public var userArn: Swift.String? + + public init( + clusterName: Swift.String? = nil, + environmentId: Swift.String? = nil, + userArn: Swift.String? = nil + ) + { + self.clusterName = clusterName + self.environmentId = environmentId + self.userArn = userArn + } +} + +struct GetKxConnectionStringInputBody: Swift.Equatable { +} + +extension GetKxConnectionStringInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetKxConnectionStringOutput: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "GetKxConnectionStringOutput(signedConnectionString: \"CONTENT_REDACTED\")"} +} + +extension GetKxConnectionStringOutput: 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: GetKxConnectionStringOutputBody = try responseDecoder.decode(responseBody: data) + self.signedConnectionString = output.signedConnectionString + } else { + self.signedConnectionString = nil + } + } +} + +public struct GetKxConnectionStringOutput: Swift.Equatable { + /// The signed connection string that you can use to connect to clusters. + public var signedConnectionString: Swift.String? + + public init( + signedConnectionString: Swift.String? = nil + ) + { + self.signedConnectionString = signedConnectionString + } +} + +struct GetKxConnectionStringOutputBody: Swift.Equatable { + let signedConnectionString: Swift.String? +} + +extension GetKxConnectionStringOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case signedConnectionString + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let signedConnectionStringDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .signedConnectionString) + signedConnectionString = signedConnectionStringDecoded + } +} + +enum GetKxConnectionStringOutputError: 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 "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 GetKxDatabaseInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + guard let databaseName = databaseName else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/databases/\(databaseName.urlPercentEncoding())" + } +} + +public struct GetKxDatabaseInput: Swift.Equatable { + /// The name of the kdb database. + /// This member is required. + public var databaseName: Swift.String? + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? + + public init( + databaseName: Swift.String? = nil, + environmentId: Swift.String? = nil + ) + { + self.databaseName = databaseName + self.environmentId = environmentId + } +} + +struct GetKxDatabaseInputBody: Swift.Equatable { +} + +extension GetKxDatabaseInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetKxDatabaseOutput: 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: GetKxDatabaseOutputBody = try responseDecoder.decode(responseBody: data) + self.createdTimestamp = output.createdTimestamp + self.databaseArn = output.databaseArn + self.databaseName = output.databaseName + self.description = output.description + self.environmentId = output.environmentId + self.lastCompletedChangesetId = output.lastCompletedChangesetId + self.lastModifiedTimestamp = output.lastModifiedTimestamp + self.numBytes = output.numBytes + self.numChangesets = output.numChangesets + self.numFiles = output.numFiles + } else { + self.createdTimestamp = nil + self.databaseArn = nil + self.databaseName = nil + self.description = nil + self.environmentId = nil + self.lastCompletedChangesetId = nil + self.lastModifiedTimestamp = nil + self.numBytes = 0 + self.numChangesets = 0 + self.numFiles = 0 + } + } +} + +public struct GetKxDatabaseOutput: Swift.Equatable { + /// The timestamp at which the database is created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// The ARN identifier of the database. + public var databaseArn: Swift.String? + /// The name of the kdb database for which the information is retrieved. + public var databaseName: Swift.String? + /// A description of the database. + public var description: Swift.String? + /// A unique identifier for the kdb environment. + public var environmentId: Swift.String? + /// A unique identifier for the changeset. + public var lastCompletedChangesetId: Swift.String? + /// The last time that the database was modified. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// The total number of bytes in the database. + public var numBytes: Swift.Int + /// The total number of changesets in the database. + public var numChangesets: Swift.Int + /// The total number of files in the database. + public var numFiles: Swift.Int + + public init( + createdTimestamp: ClientRuntime.Date? = nil, + databaseArn: Swift.String? = nil, + databaseName: Swift.String? = nil, + description: Swift.String? = nil, + environmentId: Swift.String? = nil, + lastCompletedChangesetId: Swift.String? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + numBytes: Swift.Int = 0, + numChangesets: Swift.Int = 0, + numFiles: Swift.Int = 0 + ) + { + self.createdTimestamp = createdTimestamp + self.databaseArn = databaseArn + self.databaseName = databaseName + self.description = description + self.environmentId = environmentId + self.lastCompletedChangesetId = lastCompletedChangesetId + self.lastModifiedTimestamp = lastModifiedTimestamp + self.numBytes = numBytes + self.numChangesets = numChangesets + self.numFiles = numFiles + } +} + +struct GetKxDatabaseOutputBody: Swift.Equatable { + let databaseName: Swift.String? + let databaseArn: Swift.String? + let environmentId: Swift.String? + let description: Swift.String? + let createdTimestamp: ClientRuntime.Date? + let lastModifiedTimestamp: ClientRuntime.Date? + let lastCompletedChangesetId: Swift.String? + let numBytes: Swift.Int + let numChangesets: Swift.Int + let numFiles: Swift.Int +} + +extension GetKxDatabaseOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case createdTimestamp + case databaseArn + case databaseName + case description + case environmentId + case lastCompletedChangesetId + case lastModifiedTimestamp + case numBytes + case numChangesets + case numFiles + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let databaseNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseName) + databaseName = databaseNameDecoded + let databaseArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseArn) + databaseArn = databaseArnDecoded + let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + let lastCompletedChangesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastCompletedChangesetId) + lastCompletedChangesetId = lastCompletedChangesetIdDecoded + let numBytesDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .numBytes) ?? 0 + numBytes = numBytesDecoded + let numChangesetsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .numChangesets) ?? 0 + numChangesets = numChangesetsDecoded + let numFilesDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .numFiles) ?? 0 + numFiles = numFilesDecoded + } +} + +enum GetKxDatabaseOutputError: 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 "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 GetKxDataviewInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + guard let databaseName = databaseName else { + return nil + } + guard let dataviewName = dataviewName else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/databases/\(databaseName.urlPercentEncoding())/dataviews/\(dataviewName.urlPercentEncoding())" + } +} + +public struct GetKxDataviewInput: Swift.Equatable { + /// The name of the database where you created the dataview. + /// This member is required. + public var databaseName: Swift.String? + /// A unique identifier for the dataview. + /// This member is required. + public var dataviewName: Swift.String? + /// A unique identifier for the kdb environment, from where you want to retrieve the dataview details. + /// This member is required. + public var environmentId: Swift.String? + + public init( + databaseName: Swift.String? = nil, + dataviewName: Swift.String? = nil, + environmentId: Swift.String? = nil + ) + { + self.databaseName = databaseName + self.dataviewName = dataviewName + self.environmentId = environmentId + } +} + +struct GetKxDataviewInputBody: Swift.Equatable { +} + +extension GetKxDataviewInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetKxDataviewOutput: 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: GetKxDataviewOutputBody = try responseDecoder.decode(responseBody: data) + self.activeVersions = output.activeVersions + self.autoUpdate = output.autoUpdate + self.availabilityZoneId = output.availabilityZoneId + self.azMode = output.azMode + self.changesetId = output.changesetId + self.createdTimestamp = output.createdTimestamp + self.databaseName = output.databaseName + self.dataviewName = output.dataviewName + self.description = output.description + self.environmentId = output.environmentId + self.lastModifiedTimestamp = output.lastModifiedTimestamp + self.segmentConfigurations = output.segmentConfigurations + self.status = output.status + self.statusReason = output.statusReason + } else { + self.activeVersions = nil + self.autoUpdate = false + self.availabilityZoneId = nil + self.azMode = nil + self.changesetId = nil + self.createdTimestamp = nil + self.databaseName = nil + self.dataviewName = nil + self.description = nil + self.environmentId = nil + self.lastModifiedTimestamp = nil + self.segmentConfigurations = nil + self.status = nil + self.statusReason = nil + } + } +} + +public struct GetKxDataviewOutput: Swift.Equatable { + /// The current active changeset versions of the database on the given dataview. + public var activeVersions: [FinspaceClientTypes.KxDataviewActiveVersion]? + /// The option to specify whether you want to apply all the future additions and corrections automatically to the dataview when new changesets are ingested. The default value is false. + public var autoUpdate: Swift.Bool + /// The identifier of the availability zones. + public var availabilityZoneId: Swift.String? + /// The number of availability zones you want to assign per cluster. This can be one of the following + /// + /// * SINGLE – Assigns one availability zone per cluster. + /// + /// * MULTI – Assigns all the availability zones per cluster. + public var azMode: FinspaceClientTypes.KxAzMode? + /// A unique identifier of the changeset that you want to use to ingest data. + public var changesetId: Swift.String? + /// The timestamp at which the dataview was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// The name of the database where you created the dataview. + public var databaseName: Swift.String? + /// A unique identifier for the dataview. + public var dataviewName: Swift.String? + /// A description of the dataview. + public var description: Swift.String? + /// A unique identifier for the kdb environment, from where you want to retrieve the dataview details. + public var environmentId: Swift.String? + /// The last time that the dataview was updated in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// The configuration that contains the database path of the data that you want to place on each selected volume. Each segment must have a unique database path for each volume. If you do not explicitly specify any database path for a volume, they are accessible from the cluster through the default S3/object store segment. + public var segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? + /// The status of dataview creation. + /// + /// * CREATING – The dataview creation is in progress. + /// + /// * UPDATING – The dataview is in the process of being updated. + /// + /// * ACTIVE – The dataview is active. + public var status: FinspaceClientTypes.KxDataviewStatus? + /// The error message when a failed state occurs. + public var statusReason: Swift.String? + + public init( + activeVersions: [FinspaceClientTypes.KxDataviewActiveVersion]? = nil, + autoUpdate: Swift.Bool = false, + availabilityZoneId: Swift.String? = nil, + azMode: FinspaceClientTypes.KxAzMode? = nil, + changesetId: Swift.String? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + databaseName: Swift.String? = nil, + dataviewName: Swift.String? = nil, + description: Swift.String? = nil, + environmentId: Swift.String? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil, + status: FinspaceClientTypes.KxDataviewStatus? = nil, + statusReason: Swift.String? = nil + ) + { + self.activeVersions = activeVersions + self.autoUpdate = autoUpdate + self.availabilityZoneId = availabilityZoneId + self.azMode = azMode + self.changesetId = changesetId + self.createdTimestamp = createdTimestamp + self.databaseName = databaseName + self.dataviewName = dataviewName + self.description = description + self.environmentId = environmentId + self.lastModifiedTimestamp = lastModifiedTimestamp + self.segmentConfigurations = segmentConfigurations + self.status = status + self.statusReason = statusReason + } +} + +struct GetKxDataviewOutputBody: Swift.Equatable { + let databaseName: Swift.String? + let dataviewName: Swift.String? + let azMode: FinspaceClientTypes.KxAzMode? + let availabilityZoneId: Swift.String? + let changesetId: Swift.String? + let segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? + let activeVersions: [FinspaceClientTypes.KxDataviewActiveVersion]? + let description: Swift.String? + let autoUpdate: Swift.Bool + let environmentId: Swift.String? + let createdTimestamp: ClientRuntime.Date? + let lastModifiedTimestamp: ClientRuntime.Date? + let status: FinspaceClientTypes.KxDataviewStatus? + let statusReason: Swift.String? +} + +extension GetKxDataviewOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case activeVersions + case autoUpdate + case availabilityZoneId + case azMode + case changesetId + case createdTimestamp + case databaseName + case dataviewName + case description + case environmentId + case lastModifiedTimestamp + case segmentConfigurations + case status + case statusReason + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let databaseNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseName) + databaseName = databaseNameDecoded + let dataviewNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dataviewName) + dataviewName = dataviewNameDecoded + let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) + azMode = azModeDecoded + let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) + availabilityZoneId = availabilityZoneIdDecoded + let changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) + changesetId = changesetIdDecoded + let segmentConfigurationsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDataviewSegmentConfiguration?].self, forKey: .segmentConfigurations) + var segmentConfigurationsDecoded0:[FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil + if let segmentConfigurationsContainer = segmentConfigurationsContainer { + segmentConfigurationsDecoded0 = [FinspaceClientTypes.KxDataviewSegmentConfiguration]() + for structure0 in segmentConfigurationsContainer { + if let structure0 = structure0 { + segmentConfigurationsDecoded0?.append(structure0) + } + } + } + segmentConfigurations = segmentConfigurationsDecoded0 + let activeVersionsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDataviewActiveVersion?].self, forKey: .activeVersions) + var activeVersionsDecoded0:[FinspaceClientTypes.KxDataviewActiveVersion]? = nil + if let activeVersionsContainer = activeVersionsContainer { + activeVersionsDecoded0 = [FinspaceClientTypes.KxDataviewActiveVersion]() + for structure0 in activeVersionsContainer { + if let structure0 = structure0 { + activeVersionsDecoded0?.append(structure0) + } + } + } + activeVersions = activeVersionsDecoded0 + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let autoUpdateDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .autoUpdate) ?? false + autoUpdate = autoUpdateDecoded + let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxDataviewStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + } +} + +enum GetKxDataviewOutputError: 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 "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 GetKxEnvironmentInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())" + } +} + +public struct GetKxEnvironmentInput: Swift.Equatable { + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? + + public init( + environmentId: Swift.String? = nil + ) + { + self.environmentId = environmentId + } +} + +struct GetKxEnvironmentInputBody: Swift.Equatable { +} + +extension GetKxEnvironmentInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetKxEnvironmentOutput: 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: GetKxEnvironmentOutputBody = try responseDecoder.decode(responseBody: data) + self.availabilityZoneIds = output.availabilityZoneIds + self.awsAccountId = output.awsAccountId + self.certificateAuthorityArn = output.certificateAuthorityArn + self.creationTimestamp = output.creationTimestamp + self.customDNSConfiguration = output.customDNSConfiguration + self.dedicatedServiceAccountId = output.dedicatedServiceAccountId + self.description = output.description + self.dnsStatus = output.dnsStatus + self.environmentArn = output.environmentArn + self.environmentId = output.environmentId + self.errorMessage = output.errorMessage + self.kmsKeyId = output.kmsKeyId + self.name = output.name + self.status = output.status + self.tgwStatus = output.tgwStatus + self.transitGatewayConfiguration = output.transitGatewayConfiguration + self.updateTimestamp = output.updateTimestamp + } else { + self.availabilityZoneIds = nil + self.awsAccountId = nil + self.certificateAuthorityArn = nil + self.creationTimestamp = nil + self.customDNSConfiguration = nil + self.dedicatedServiceAccountId = nil + self.description = nil + self.dnsStatus = nil + self.environmentArn = nil + self.environmentId = nil + self.errorMessage = nil + self.kmsKeyId = nil + self.name = nil + self.status = nil + self.tgwStatus = nil + self.transitGatewayConfiguration = nil + self.updateTimestamp = nil + } + } +} + +public struct GetKxEnvironmentOutput: Swift.Equatable { + /// The identifier of the availability zones where subnets for the environment are created. + public var availabilityZoneIds: [Swift.String]? + /// The unique identifier of the AWS account that is used to create the kdb environment. + public var awsAccountId: Swift.String? + /// The Amazon Resource Name (ARN) of the certificate authority of the kdb environment. + public var certificateAuthorityArn: Swift.String? + /// The timestamp at which the kdb environment was created in FinSpace. + public var creationTimestamp: ClientRuntime.Date? + /// A list of DNS server name and server IP. This is used to set up Route-53 outbound resolvers. + public var customDNSConfiguration: [FinspaceClientTypes.CustomDNSServer]? + /// A unique identifier for the AWS environment infrastructure account. + public var dedicatedServiceAccountId: Swift.String? + /// A description for the kdb environment. + public var description: Swift.String? + /// The status of DNS configuration. + public var dnsStatus: FinspaceClientTypes.DnsStatus? + /// The ARN identifier of the environment. + public var environmentArn: Swift.String? + /// A unique identifier for the kdb environment. + public var environmentId: Swift.String? + /// Specifies the error message that appears if a flow fails. + public var errorMessage: Swift.String? + /// The KMS key ID to encrypt your data in the FinSpace environment. + public var kmsKeyId: Swift.String? + /// The name of the kdb environment. + public var name: Swift.String? + /// The status of the kdb environment. + public var status: FinspaceClientTypes.EnvironmentStatus? + /// The status of the network configuration. + public var tgwStatus: FinspaceClientTypes.TgwStatus? + /// The structure of the transit gateway and network configuration that is used to connect the kdb environment to an internal network. + public var transitGatewayConfiguration: FinspaceClientTypes.TransitGatewayConfiguration? + /// The timestamp at which the kdb environment was updated. + public var updateTimestamp: ClientRuntime.Date? + + public init( + availabilityZoneIds: [Swift.String]? = nil, + awsAccountId: Swift.String? = nil, + certificateAuthorityArn: Swift.String? = nil, + creationTimestamp: ClientRuntime.Date? = nil, + customDNSConfiguration: [FinspaceClientTypes.CustomDNSServer]? = nil, + dedicatedServiceAccountId: Swift.String? = nil, + description: Swift.String? = nil, + dnsStatus: FinspaceClientTypes.DnsStatus? = nil, + environmentArn: Swift.String? = nil, + environmentId: Swift.String? = nil, + errorMessage: Swift.String? = nil, + kmsKeyId: Swift.String? = nil, + name: Swift.String? = nil, + status: FinspaceClientTypes.EnvironmentStatus? = nil, + tgwStatus: FinspaceClientTypes.TgwStatus? = nil, + transitGatewayConfiguration: FinspaceClientTypes.TransitGatewayConfiguration? = nil, + updateTimestamp: ClientRuntime.Date? = nil + ) + { + self.availabilityZoneIds = availabilityZoneIds + self.awsAccountId = awsAccountId + self.certificateAuthorityArn = certificateAuthorityArn + self.creationTimestamp = creationTimestamp + self.customDNSConfiguration = customDNSConfiguration + self.dedicatedServiceAccountId = dedicatedServiceAccountId + self.description = description + self.dnsStatus = dnsStatus + self.environmentArn = environmentArn + self.environmentId = environmentId + self.errorMessage = errorMessage + self.kmsKeyId = kmsKeyId + self.name = name + self.status = status + self.tgwStatus = tgwStatus + self.transitGatewayConfiguration = transitGatewayConfiguration + self.updateTimestamp = updateTimestamp + } +} + +struct GetKxEnvironmentOutputBody: Swift.Equatable { + let name: Swift.String? + let environmentId: Swift.String? + let awsAccountId: Swift.String? + let status: FinspaceClientTypes.EnvironmentStatus? + let tgwStatus: FinspaceClientTypes.TgwStatus? + let dnsStatus: FinspaceClientTypes.DnsStatus? + let errorMessage: Swift.String? + let description: Swift.String? + let environmentArn: Swift.String? + let kmsKeyId: Swift.String? + let dedicatedServiceAccountId: Swift.String? + let transitGatewayConfiguration: FinspaceClientTypes.TransitGatewayConfiguration? + let customDNSConfiguration: [FinspaceClientTypes.CustomDNSServer]? + let creationTimestamp: ClientRuntime.Date? + let updateTimestamp: ClientRuntime.Date? + let availabilityZoneIds: [Swift.String]? + let certificateAuthorityArn: Swift.String? +} + +extension GetKxEnvironmentOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case availabilityZoneIds + case awsAccountId + case certificateAuthorityArn + case creationTimestamp + case customDNSConfiguration + case dedicatedServiceAccountId + case description + case dnsStatus + case environmentArn + case environmentId + case errorMessage + case kmsKeyId + case name + case status + case tgwStatus + case transitGatewayConfiguration + case updateTimestamp + } + + 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 environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let awsAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .awsAccountId) + awsAccountId = awsAccountIdDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.EnvironmentStatus.self, forKey: .status) + status = statusDecoded + let tgwStatusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.TgwStatus.self, forKey: .tgwStatus) + tgwStatus = tgwStatusDecoded + let dnsStatusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.DnsStatus.self, forKey: .dnsStatus) + dnsStatus = dnsStatusDecoded + let errorMessageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorMessage) + errorMessage = errorMessageDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let environmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentArn) + environmentArn = environmentArnDecoded + let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) + kmsKeyId = kmsKeyIdDecoded + let dedicatedServiceAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dedicatedServiceAccountId) + dedicatedServiceAccountId = dedicatedServiceAccountIdDecoded + let transitGatewayConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.TransitGatewayConfiguration.self, forKey: .transitGatewayConfiguration) + transitGatewayConfiguration = transitGatewayConfigurationDecoded + let customDNSConfigurationContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.CustomDNSServer?].self, forKey: .customDNSConfiguration) + var customDNSConfigurationDecoded0:[FinspaceClientTypes.CustomDNSServer]? = nil + if let customDNSConfigurationContainer = customDNSConfigurationContainer { + customDNSConfigurationDecoded0 = [FinspaceClientTypes.CustomDNSServer]() + for structure0 in customDNSConfigurationContainer { + if let structure0 = structure0 { + customDNSConfigurationDecoded0?.append(structure0) + } + } + } + customDNSConfiguration = customDNSConfigurationDecoded0 + let creationTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .creationTimestamp) + creationTimestamp = creationTimestampDecoded + let updateTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .updateTimestamp) + updateTimestamp = updateTimestampDecoded + let availabilityZoneIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .availabilityZoneIds) + var availabilityZoneIdsDecoded0:[Swift.String]? = nil + if let availabilityZoneIdsContainer = availabilityZoneIdsContainer { + availabilityZoneIdsDecoded0 = [Swift.String]() + for string0 in availabilityZoneIdsContainer { + if let string0 = string0 { + availabilityZoneIdsDecoded0?.append(string0) + } + } + } + availabilityZoneIds = availabilityZoneIdsDecoded0 + let certificateAuthorityArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .certificateAuthorityArn) + certificateAuthorityArn = certificateAuthorityArnDecoded + } +} + +enum GetKxEnvironmentOutputError: 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 "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 GetKxScalingGroupInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + guard let scalingGroupName = scalingGroupName else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/scalingGroups/\(scalingGroupName.urlPercentEncoding())" + } +} + +public struct GetKxScalingGroupInput: Swift.Equatable { + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? + /// A unique identifier for the kdb scaling group. + /// This member is required. + public var scalingGroupName: Swift.String? + + public init( + environmentId: Swift.String? = nil, + scalingGroupName: Swift.String? = nil + ) + { + self.environmentId = environmentId + self.scalingGroupName = scalingGroupName + } +} + +struct GetKxScalingGroupInputBody: Swift.Equatable { +} + +extension GetKxScalingGroupInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetKxScalingGroupOutput: 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: GetKxScalingGroupOutputBody = try responseDecoder.decode(responseBody: data) + self.availabilityZoneId = output.availabilityZoneId + self.clusters = output.clusters + self.createdTimestamp = output.createdTimestamp + self.hostType = output.hostType + self.lastModifiedTimestamp = output.lastModifiedTimestamp + self.scalingGroupArn = output.scalingGroupArn + self.scalingGroupName = output.scalingGroupName + self.status = output.status + self.statusReason = output.statusReason + } else { + self.availabilityZoneId = nil + self.clusters = nil + self.createdTimestamp = nil + self.hostType = nil + self.lastModifiedTimestamp = nil + self.scalingGroupArn = nil + self.scalingGroupName = nil + self.status = nil + self.statusReason = nil + } + } +} + +public struct GetKxScalingGroupOutput: Swift.Equatable { + /// The identifier of the availability zones. + public var availabilityZoneId: Swift.String? + /// The list of Managed kdb clusters that are currently active in the given scaling group. + public var clusters: [Swift.String]? + /// The timestamp at which the scaling group was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// The memory and CPU capabilities of the scaling group host on which FinSpace Managed kdb clusters will be placed. + public var hostType: Swift.String? + /// The last time that the scaling group was updated in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// The ARN identifier for the scaling group. + public var scalingGroupArn: Swift.String? + /// A unique identifier for the kdb scaling group. + public var scalingGroupName: Swift.String? + /// The status of scaling group. + /// + /// * CREATING – The scaling group creation is in progress. + /// + /// * CREATE_FAILED – The scaling group creation has failed. + /// + /// * ACTIVE – The scaling group is active. + /// + /// * UPDATING – The scaling group is in the process of being updated. + /// + /// * UPDATE_FAILED – The update action failed. + /// + /// * DELETING – The scaling group is in the process of being deleted. + /// + /// * DELETE_FAILED – The system failed to delete the scaling group. + /// + /// * DELETED – The scaling group is successfully deleted. + public var status: FinspaceClientTypes.KxScalingGroupStatus? + /// The error message when a failed state occurs. + public var statusReason: Swift.String? + + public init( + availabilityZoneId: Swift.String? = nil, + clusters: [Swift.String]? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + hostType: Swift.String? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + scalingGroupArn: Swift.String? = nil, + scalingGroupName: Swift.String? = nil, + status: FinspaceClientTypes.KxScalingGroupStatus? = nil, + statusReason: Swift.String? = nil + ) + { + self.availabilityZoneId = availabilityZoneId + self.clusters = clusters + self.createdTimestamp = createdTimestamp + self.hostType = hostType + self.lastModifiedTimestamp = lastModifiedTimestamp + self.scalingGroupArn = scalingGroupArn + self.scalingGroupName = scalingGroupName + self.status = status + self.statusReason = statusReason + } +} + +struct GetKxScalingGroupOutputBody: Swift.Equatable { + let scalingGroupName: Swift.String? + let scalingGroupArn: Swift.String? + let hostType: Swift.String? + let clusters: [Swift.String]? + let availabilityZoneId: Swift.String? + let status: FinspaceClientTypes.KxScalingGroupStatus? + let statusReason: Swift.String? + let lastModifiedTimestamp: ClientRuntime.Date? + let createdTimestamp: ClientRuntime.Date? +} + +extension GetKxScalingGroupOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case availabilityZoneId + case clusters + case createdTimestamp + case hostType + case lastModifiedTimestamp + case scalingGroupArn + case scalingGroupName + case status + case statusReason + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let scalingGroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .scalingGroupName) + scalingGroupName = scalingGroupNameDecoded + let scalingGroupArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .scalingGroupArn) + scalingGroupArn = scalingGroupArnDecoded + let hostTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .hostType) + hostType = hostTypeDecoded + let clustersContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .clusters) + var clustersDecoded0:[Swift.String]? = nil + if let clustersContainer = clustersContainer { + clustersDecoded0 = [Swift.String]() + for string0 in clustersContainer { + if let string0 = string0 { + clustersDecoded0?.append(string0) + } + } + } + clusters = clustersDecoded0 + let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) + availabilityZoneId = availabilityZoneIdDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxScalingGroupStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + } +} + +enum GetKxScalingGroupOutputError: 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 GetKxUserInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + guard let userName = userName else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/users/\(userName.urlPercentEncoding())" + } +} + +public struct GetKxUserInput: Swift.Equatable { + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? + /// A unique identifier for the user. + /// This member is required. + public var userName: Swift.String? + + public init( + environmentId: Swift.String? = nil, + userName: Swift.String? = nil + ) + { + self.environmentId = environmentId + self.userName = userName + } +} + +struct GetKxUserInputBody: Swift.Equatable { +} + +extension GetKxUserInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetKxUserOutput: 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: GetKxUserOutputBody = try responseDecoder.decode(responseBody: data) + self.environmentId = output.environmentId + self.iamRole = output.iamRole + self.userArn = output.userArn + self.userName = output.userName + } else { + self.environmentId = nil + self.iamRole = nil + self.userArn = nil + self.userName = nil + } + } +} + +public struct GetKxUserOutput: Swift.Equatable { + /// A unique identifier for the kdb environment. + public var environmentId: Swift.String? + /// The IAM role ARN that is associated with the user. + public var iamRole: Swift.String? + /// The Amazon Resource Name (ARN) that identifies the user. For more information about ARNs and how to use ARNs in policies, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) in the IAM User Guide. + public var userArn: Swift.String? + /// A unique identifier for the user. + public var userName: Swift.String? + + public init( + environmentId: Swift.String? = nil, + iamRole: Swift.String? = nil, + userArn: Swift.String? = nil, + userName: Swift.String? = nil + ) + { + self.environmentId = environmentId + self.iamRole = iamRole + self.userArn = userArn + self.userName = userName + } +} + +struct GetKxUserOutputBody: Swift.Equatable { + let userName: Swift.String? + let userArn: Swift.String? + let environmentId: Swift.String? + let iamRole: Swift.String? +} + +extension GetKxUserOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case environmentId + case iamRole + case userArn + case userName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let userNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userName) + userName = userNameDecoded + let userArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userArn) + userArn = userArnDecoded + let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let iamRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .iamRole) + iamRole = iamRoleDecoded + } +} + +enum GetKxUserOutputError: 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 "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 GetKxVolumeInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + guard let volumeName = volumeName else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/kxvolumes/\(volumeName.urlPercentEncoding())" + } +} + +public struct GetKxVolumeInput: Swift.Equatable { + /// A unique identifier for the kdb environment, whose clusters can attach to the volume. + /// This member is required. + public var environmentId: Swift.String? + /// A unique identifier for the volume. + /// This member is required. + public var volumeName: Swift.String? + + public init( + environmentId: Swift.String? = nil, + volumeName: Swift.String? = nil + ) + { + self.environmentId = environmentId + self.volumeName = volumeName + } +} + +struct GetKxVolumeInputBody: Swift.Equatable { +} + +extension GetKxVolumeInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetKxVolumeOutput: 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: GetKxVolumeOutputBody = try responseDecoder.decode(responseBody: data) + self.attachedClusters = output.attachedClusters + self.availabilityZoneIds = output.availabilityZoneIds + self.azMode = output.azMode + self.createdTimestamp = output.createdTimestamp + self.description = output.description + self.environmentId = output.environmentId + self.lastModifiedTimestamp = output.lastModifiedTimestamp + self.nas1Configuration = output.nas1Configuration + self.status = output.status + self.statusReason = output.statusReason + self.volumeArn = output.volumeArn + self.volumeName = output.volumeName + self.volumeType = output.volumeType + } else { + self.attachedClusters = nil + self.availabilityZoneIds = nil + self.azMode = nil + self.createdTimestamp = nil + self.description = nil + self.environmentId = nil + self.lastModifiedTimestamp = nil + self.nas1Configuration = nil + self.status = nil + self.statusReason = nil + self.volumeArn = nil + self.volumeName = nil + self.volumeType = nil + } + } +} + +public struct GetKxVolumeOutput: Swift.Equatable { + /// A list of cluster identifiers that a volume is attached to. + public var attachedClusters: [FinspaceClientTypes.KxAttachedCluster]? + /// The identifier of the availability zones. + public var availabilityZoneIds: [Swift.String]? + /// The number of availability zones you want to assign per cluster. Currently, FinSpace only support SINGLE for volumes. + public var azMode: FinspaceClientTypes.KxAzMode? + /// The timestamp at which the volume was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// A description of the volume. + public var description: Swift.String? + /// A unique identifier for the kdb environment, whose clusters can attach to the volume. + public var environmentId: Swift.String? + /// The last time that the volume was updated in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// Specifies the configuration for the Network attached storage (NAS_1) file system volume. + public var nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? + /// The status of volume creation. + /// + /// * CREATING – The volume creation is in progress. + /// + /// * CREATE_FAILED – The volume creation has failed. + /// + /// * ACTIVE – The volume is active. + /// + /// * UPDATING – The volume is in the process of being updated. + /// + /// * UPDATE_FAILED – The update action failed. + /// + /// * UPDATED – The volume is successfully updated. + /// + /// * DELETING – The volume is in the process of being deleted. + /// + /// * DELETE_FAILED – The system failed to delete the volume. + /// + /// * DELETED – The volume is successfully deleted. + public var status: FinspaceClientTypes.KxVolumeStatus? + /// The error message when a failed state occurs. + public var statusReason: Swift.String? + /// The ARN identifier of the volume. + public var volumeArn: Swift.String? + /// A unique identifier for the volume. + public var volumeName: Swift.String? + /// The type of file system volume. Currently, FinSpace only supports NAS_1 volume type. + public var volumeType: FinspaceClientTypes.KxVolumeType? + + public init( + attachedClusters: [FinspaceClientTypes.KxAttachedCluster]? = nil, + availabilityZoneIds: [Swift.String]? = nil, + azMode: FinspaceClientTypes.KxAzMode? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + description: Swift.String? = nil, + environmentId: Swift.String? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? = nil, + status: FinspaceClientTypes.KxVolumeStatus? = nil, + statusReason: Swift.String? = nil, + volumeArn: Swift.String? = nil, + volumeName: Swift.String? = nil, + volumeType: FinspaceClientTypes.KxVolumeType? = nil + ) + { + self.attachedClusters = attachedClusters + self.availabilityZoneIds = availabilityZoneIds + self.azMode = azMode + self.createdTimestamp = createdTimestamp + self.description = description + self.environmentId = environmentId + self.lastModifiedTimestamp = lastModifiedTimestamp + self.nas1Configuration = nas1Configuration + self.status = status + self.statusReason = statusReason + self.volumeArn = volumeArn + self.volumeName = volumeName + self.volumeType = volumeType + } +} + +struct GetKxVolumeOutputBody: Swift.Equatable { + let environmentId: Swift.String? + let volumeName: Swift.String? + let volumeType: FinspaceClientTypes.KxVolumeType? + let volumeArn: Swift.String? + let nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? + let status: FinspaceClientTypes.KxVolumeStatus? + let statusReason: Swift.String? + let createdTimestamp: ClientRuntime.Date? + let description: Swift.String? + let azMode: FinspaceClientTypes.KxAzMode? + let availabilityZoneIds: [Swift.String]? + let lastModifiedTimestamp: ClientRuntime.Date? + let attachedClusters: [FinspaceClientTypes.KxAttachedCluster]? +} + +extension GetKxVolumeOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case attachedClusters + case availabilityZoneIds + case azMode + case createdTimestamp + case description + case environmentId + case lastModifiedTimestamp + case nas1Configuration + case status + case statusReason + case volumeArn + case volumeName + case volumeType + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let volumeNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .volumeName) + volumeName = volumeNameDecoded + let volumeTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxVolumeType.self, forKey: .volumeType) + volumeType = volumeTypeDecoded + let volumeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .volumeArn) + volumeArn = volumeArnDecoded + let nas1ConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxNAS1Configuration.self, forKey: .nas1Configuration) + nas1Configuration = nas1ConfigurationDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxVolumeStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) + azMode = azModeDecoded + let availabilityZoneIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .availabilityZoneIds) + var availabilityZoneIdsDecoded0:[Swift.String]? = nil + if let availabilityZoneIdsContainer = availabilityZoneIdsContainer { + availabilityZoneIdsDecoded0 = [Swift.String]() + for string0 in availabilityZoneIdsContainer { + if let string0 = string0 { + availabilityZoneIdsDecoded0?.append(string0) + } + } + } + availabilityZoneIds = availabilityZoneIdsDecoded0 + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + let attachedClustersContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxAttachedCluster?].self, forKey: .attachedClusters) + var attachedClustersDecoded0:[FinspaceClientTypes.KxAttachedCluster]? = nil + if let attachedClustersContainer = attachedClustersContainer { + attachedClustersDecoded0 = [FinspaceClientTypes.KxAttachedCluster]() + for structure0 in attachedClustersContainer { + if let structure0 = structure0 { + attachedClustersDecoded0?.append(structure0) + } + } + } + attachedClusters = attachedClustersDecoded0 + } +} + +enum GetKxVolumeOutputError: 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 FinspaceClientTypes { + public enum IPAddressType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case ipV4 + case sdkUnknown(Swift.String) + + public static var allCases: [IPAddressType] { + return [ + .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 .ipV4: return "IP_V4" + 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 FinspaceClientTypes.IcmpTypeCode: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case code + case type + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if code != 0 { + try encodeContainer.encode(code, forKey: .code) + } + if type != 0 { + try encodeContainer.encode(type, forKey: .type) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .type) ?? 0 + type = typeDecoded + let codeDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .code) ?? 0 + code = codeDecoded + } +} + +extension FinspaceClientTypes { + /// Defines the ICMP protocol that consists of the ICMP type and code. + public struct IcmpTypeCode: Swift.Equatable { + /// The ICMP code. A value of -1 means all codes for the specified ICMP type. + /// This member is required. + public var code: Swift.Int + /// The ICMP type. A value of -1 means all types. + /// This member is required. + public var type: Swift.Int + + public init( + code: Swift.Int = 0, + type: Swift.Int = 0 + ) + { + self.code = code + self.type = type + } + } + +} + +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 + } +} + +/// The request processing has failed because of an unknown error, exception or failure. +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 InvalidRequestException { + 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: InvalidRequestExceptionBody = 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 invalid. Something is wrong with the input to the request. +public struct InvalidRequestException: 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 { "InvalidRequestException" } + 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 InvalidRequestExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension InvalidRequestExceptionBody: 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 FinspaceClientTypes.KxAttachedCluster: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clusterName + case clusterStatus + case clusterType + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let clusterName = self.clusterName { + try encodeContainer.encode(clusterName, forKey: .clusterName) + } + if let clusterStatus = self.clusterStatus { + try encodeContainer.encode(clusterStatus.rawValue, forKey: .clusterStatus) + } + if let clusterType = self.clusterType { + try encodeContainer.encode(clusterType.rawValue, forKey: .clusterType) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let clusterNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clusterName) + clusterName = clusterNameDecoded + let clusterTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterType.self, forKey: .clusterType) + clusterType = clusterTypeDecoded + let clusterStatusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterStatus.self, forKey: .clusterStatus) + clusterStatus = clusterStatusDecoded + } +} + +extension FinspaceClientTypes { + /// The structure containing the metadata of the attached clusters. + public struct KxAttachedCluster: Swift.Equatable { + /// A unique name for the attached cluster. + public var clusterName: Swift.String? + /// The status of the attached cluster. + /// + /// * PENDING – The cluster is pending creation. + /// + /// * CREATING – The cluster creation process is in progress. + /// + /// * CREATE_FAILED – The cluster creation process has failed. + /// + /// * RUNNING – The cluster creation process is running. + /// + /// * UPDATING – The cluster is in the process of being updated. + /// + /// * DELETING – The cluster is in the process of being deleted. + /// + /// * DELETED – The cluster has been deleted. + /// + /// * DELETE_FAILED – The cluster failed to delete. + public var clusterStatus: FinspaceClientTypes.KxClusterStatus? + /// Specifies the type of cluster. The volume for TP and RDB cluster types will be used for TP logs. + public var clusterType: FinspaceClientTypes.KxClusterType? + + public init( + clusterName: Swift.String? = nil, + clusterStatus: FinspaceClientTypes.KxClusterStatus? = nil, + clusterType: FinspaceClientTypes.KxClusterType? = nil + ) + { + self.clusterName = clusterName + self.clusterStatus = clusterStatus + self.clusterType = clusterType + } + } + +} + +extension FinspaceClientTypes { + public enum KxAzMode: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case multi + case single + case sdkUnknown(Swift.String) + + public static var allCases: [KxAzMode] { + return [ + .multi, + .single, + .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 .multi: return "MULTI" + case .single: return "SINGLE" + 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 = KxAzMode(rawValue: rawValue) ?? KxAzMode.sdkUnknown(rawValue) + } + } +} + +extension FinspaceClientTypes.KxCacheStorageConfiguration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case size + case type + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let size = self.size { + try encodeContainer.encode(size, forKey: .size) + } + if let type = self.type { + try encodeContainer.encode(type, forKey: .type) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .type) + type = typeDecoded + let sizeDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .size) + size = sizeDecoded + } +} + +extension FinspaceClientTypes { + /// The configuration for read only disk cache associated with a cluster. + public struct KxCacheStorageConfiguration: Swift.Equatable { + /// The size of cache in Gigabytes. + /// This member is required. + public var size: Swift.Int? + /// 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? + + public init( + size: Swift.Int? = nil, + type: Swift.String? = nil + ) + { + self.size = size + self.type = type + } + } + +} + +extension FinspaceClientTypes.KxChangesetListEntry: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case activeFromTimestamp + case changesetId + case createdTimestamp + case lastModifiedTimestamp + case status + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let activeFromTimestamp = self.activeFromTimestamp { + try encodeContainer.encodeTimestamp(activeFromTimestamp, format: .epochSeconds, forKey: .activeFromTimestamp) + } + if let changesetId = self.changesetId { + try encodeContainer.encode(changesetId, forKey: .changesetId) + } + if let createdTimestamp = self.createdTimestamp { + try encodeContainer.encodeTimestamp(createdTimestamp, format: .epochSeconds, forKey: .createdTimestamp) + } + if let lastModifiedTimestamp = self.lastModifiedTimestamp { + try encodeContainer.encodeTimestamp(lastModifiedTimestamp, format: .epochSeconds, forKey: .lastModifiedTimestamp) + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) + changesetId = changesetIdDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + let activeFromTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .activeFromTimestamp) + activeFromTimestamp = activeFromTimestampDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.ChangesetStatus.self, forKey: .status) + status = statusDecoded + } +} + +extension FinspaceClientTypes { + /// Details of changeset. + public struct KxChangesetListEntry: Swift.Equatable { + /// Beginning time from which the changeset is active. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var activeFromTimestamp: ClientRuntime.Date? + /// A unique identifier for the changeset. + public var changesetId: Swift.String? + /// The timestamp at which the changeset was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// The timestamp at which the changeset was modified. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// Status of the changeset. + /// + /// * Pending – Changeset creation is pending. + /// + /// * Processing – Changeset creation is running. + /// + /// * Failed – Changeset creation has failed. + /// + /// * Complete – Changeset creation has succeeded. + public var status: FinspaceClientTypes.ChangesetStatus? + + public init( + activeFromTimestamp: ClientRuntime.Date? = nil, + changesetId: Swift.String? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + status: FinspaceClientTypes.ChangesetStatus? = nil + ) + { + self.activeFromTimestamp = activeFromTimestamp + self.changesetId = changesetId + self.createdTimestamp = createdTimestamp + self.lastModifiedTimestamp = lastModifiedTimestamp + self.status = status + } + } + +} + +extension FinspaceClientTypes.KxCluster: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case availabilityZoneId + case azMode + case clusterDescription + case clusterName + case clusterType + case createdTimestamp + case executionRole + case initializationScript + case lastModifiedTimestamp + case releaseLabel + case status + case statusReason + case volumes + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let availabilityZoneId = self.availabilityZoneId { + try encodeContainer.encode(availabilityZoneId, forKey: .availabilityZoneId) + } + if let azMode = self.azMode { + try encodeContainer.encode(azMode.rawValue, forKey: .azMode) + } + if let clusterDescription = self.clusterDescription { + try encodeContainer.encode(clusterDescription, forKey: .clusterDescription) + } + if let clusterName = self.clusterName { + try encodeContainer.encode(clusterName, forKey: .clusterName) + } + if let clusterType = self.clusterType { + try encodeContainer.encode(clusterType.rawValue, forKey: .clusterType) + } + if let createdTimestamp = self.createdTimestamp { + try encodeContainer.encodeTimestamp(createdTimestamp, format: .epochSeconds, forKey: .createdTimestamp) + } + if let executionRole = self.executionRole { + try encodeContainer.encode(executionRole, forKey: .executionRole) + } + if let initializationScript = self.initializationScript { + try encodeContainer.encode(initializationScript, forKey: .initializationScript) + } + if let lastModifiedTimestamp = self.lastModifiedTimestamp { + try encodeContainer.encodeTimestamp(lastModifiedTimestamp, format: .epochSeconds, forKey: .lastModifiedTimestamp) + } + if let releaseLabel = self.releaseLabel { + try encodeContainer.encode(releaseLabel, forKey: .releaseLabel) + } + 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 volumes = volumes { + var volumesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .volumes) + for volume0 in volumes { + try volumesContainer.encode(volume0) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let clusterNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clusterName) + clusterName = clusterNameDecoded + let clusterTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterType.self, forKey: .clusterType) + clusterType = clusterTypeDecoded + let clusterDescriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clusterDescription) + clusterDescription = clusterDescriptionDecoded + let releaseLabelDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .releaseLabel) + releaseLabel = releaseLabelDecoded + let volumesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.Volume?].self, forKey: .volumes) + var volumesDecoded0:[FinspaceClientTypes.Volume]? = nil + if let volumesContainer = volumesContainer { + volumesDecoded0 = [FinspaceClientTypes.Volume]() + for structure0 in volumesContainer { + if let structure0 = structure0 { + volumesDecoded0?.append(structure0) + } + } + } + volumes = volumesDecoded0 + let initializationScriptDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .initializationScript) + initializationScript = initializationScriptDecoded + let executionRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .executionRole) + executionRole = executionRoleDecoded + let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) + azMode = azModeDecoded + let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) + availabilityZoneId = availabilityZoneIdDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + } +} + +extension FinspaceClientTypes { + /// The details of a kdb cluster. + public struct KxCluster: Swift.Equatable { + /// The availability zone identifiers for the requested regions. + public var availabilityZoneId: Swift.String? + /// The number of availability zones assigned per cluster. This can be one of the following: + /// + /// * SINGLE – Assigns one availability zone per cluster. + /// + /// * MULTI – Assigns all the availability zones per cluster. + public var azMode: FinspaceClientTypes.KxAzMode? + /// A description of the cluster. + public var clusterDescription: Swift.String? + /// A unique name for the cluster. + public var clusterName: Swift.String? + /// Specifies the type of KDB database that is being created. The following types are available: + /// + /// * HDB – A Historical Database. The data is only accessible with read-only permissions from one of the FinSpace managed kdb databases mounted to the cluster. + /// + /// * RDB – A Realtime Database. This type of database captures all the data from a ticker plant and stores it in memory until the end of day, after which it writes all of its data to a disk and reloads the HDB. This cluster type requires local storage for temporary storage of data during the savedown process. If you specify this field in your request, you must provide the savedownStorageConfiguration parameter. + /// + /// * GATEWAY – A gateway cluster allows you to access data across processes in kdb systems. It allows you to create your own routing logic using the initialization scripts and custom code. This type of cluster does not require a writable local storage. + /// + /// * GP – A general purpose cluster allows you to quickly iterate on code during development by granting greater access to system commands and enabling a fast reload of custom code. This cluster type can optionally mount databases including cache and savedown storage. For this cluster type, the node count is fixed at 1. It does not support autoscaling and supports only SINGLE AZ mode. + /// + /// * Tickerplant – A tickerplant cluster allows you to subscribe to feed handlers based on IAM permissions. It can publish to RDBs, other Tickerplants, and real-time subscribers (RTS). Tickerplants can persist messages to log, which is readable by any RDB environment. It supports only single-node that is only one kdb process. + public var clusterType: FinspaceClientTypes.KxClusterType? + /// The timestamp at which the cluster was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// An IAM role that defines a set of permissions associated with a cluster. These permissions are assumed when a cluster attempts to access another cluster. + public var executionRole: 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? + /// The last time that the cluster was modified. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// A version of the FinSpace managed kdb to run. + public var releaseLabel: Swift.String? + /// The status of a cluster. + /// + /// * PENDING – The cluster is pending creation. + /// + /// * CREATING –The cluster creation process is in progress. + /// + /// * CREATE_FAILED– The cluster creation process has failed. + /// + /// * RUNNING – The cluster creation process is running. + /// + /// * UPDATING – The cluster is in the process of being updated. + /// + /// * DELETING – The cluster is in the process of being deleted. + /// + /// * DELETED – The cluster has been deleted. + /// + /// * DELETE_FAILED – The cluster failed to delete. + public var status: FinspaceClientTypes.KxClusterStatus? + /// The error message when a failed state occurs. + public var statusReason: Swift.String? + /// A list of volumes attached to the cluster. + public var volumes: [FinspaceClientTypes.Volume]? + + public init( + availabilityZoneId: Swift.String? = nil, + azMode: FinspaceClientTypes.KxAzMode? = nil, + clusterDescription: Swift.String? = nil, + clusterName: Swift.String? = nil, + clusterType: FinspaceClientTypes.KxClusterType? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + executionRole: Swift.String? = nil, + initializationScript: Swift.String? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + releaseLabel: Swift.String? = nil, + status: FinspaceClientTypes.KxClusterStatus? = nil, + statusReason: Swift.String? = nil, + volumes: [FinspaceClientTypes.Volume]? = nil + ) + { + self.availabilityZoneId = availabilityZoneId + self.azMode = azMode + self.clusterDescription = clusterDescription + self.clusterName = clusterName + self.clusterType = clusterType + self.createdTimestamp = createdTimestamp + self.executionRole = executionRole + self.initializationScript = initializationScript + self.lastModifiedTimestamp = lastModifiedTimestamp + self.releaseLabel = releaseLabel + self.status = status + self.statusReason = statusReason + self.volumes = volumes + } + } + +} + +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 databaseNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseName) - databaseName = databaseNameDecoded - let databaseArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseArn) - databaseArn = databaseArnDecoded - let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) - environmentId = environmentIdDecoded - let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) - description = descriptionDecoded - let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) - createdTimestamp = createdTimestampDecoded - let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) - lastModifiedTimestamp = lastModifiedTimestampDecoded - let lastCompletedChangesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastCompletedChangesetId) - lastCompletedChangesetId = lastCompletedChangesetIdDecoded - let numBytesDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .numBytes) ?? 0 - numBytes = numBytesDecoded - let numChangesetsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .numChangesets) ?? 0 - numChangesets = numChangesetsDecoded - let numFilesDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .numFiles) ?? 0 - numFiles = numFilesDecoded + let deploymentStrategyDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterCodeDeploymentStrategy.self, forKey: .deploymentStrategy) + deploymentStrategy = deploymentStrategyDecoded } } -enum GetKxDatabaseOutputError: 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 "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 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. + /// + /// * NO_RESTART – This option updates the cluster without stopping the running q process. It is only available for GP 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. + /// + /// * 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 GetKxEnvironmentInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - guard let environmentId = environmentId else { - return nil +extension FinspaceClientTypes { + public enum KxClusterCodeDeploymentStrategy: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case force + case noRestart + case rolling + case sdkUnknown(Swift.String) + + public static var allCases: [KxClusterCodeDeploymentStrategy] { + return [ + .force, + .noRestart, + .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 .noRestart: return "NO_RESTART" + 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) } - return "/kx/environments/\(environmentId.urlPercentEncoding())" } } -public struct GetKxEnvironmentInput: Swift.Equatable { - /// A unique identifier for the kdb environment. - /// This member is required. - public var environmentId: Swift.String? +extension FinspaceClientTypes { + public enum KxClusterStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case createFailed + case creating + case deleted + case deleteFailed + case deleting + case pending + case running + case updating + case sdkUnknown(Swift.String) - public init( - environmentId: Swift.String? = nil - ) - { - self.environmentId = environmentId + public static var allCases: [KxClusterStatus] { + return [ + .createFailed, + .creating, + .deleted, + .deleteFailed, + .deleting, + .pending, + .running, + .updating, + .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 .createFailed: return "CREATE_FAILED" + case .creating: return "CREATING" + case .deleted: return "DELETED" + case .deleteFailed: return "DELETE_FAILED" + case .deleting: return "DELETING" + case .pending: return "PENDING" + case .running: return "RUNNING" + case .updating: return "UPDATING" + 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 = KxClusterStatus(rawValue: rawValue) ?? KxClusterStatus.sdkUnknown(rawValue) + } } } -struct GetKxEnvironmentInputBody: Swift.Equatable { +extension FinspaceClientTypes { + public enum KxClusterType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case gateway + case gp + case hdb + case rdb + case tickerplant + case sdkUnknown(Swift.String) + + public static var allCases: [KxClusterType] { + return [ + .gateway, + .gp, + .hdb, + .rdb, + .tickerplant, + .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 .gateway: return "GATEWAY" + case .gp: return "GP" + case .hdb: return "HDB" + case .rdb: return "RDB" + case .tickerplant: return "TICKERPLANT" + 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 = KxClusterType(rawValue: rawValue) ?? KxClusterType.sdkUnknown(rawValue) + } + } } -extension GetKxEnvironmentInputBody: Swift.Decodable { +extension FinspaceClientTypes.KxCommandLineArgument: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case key + case value + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let key = self.key { + try encodeContainer.encode(key, forKey: .key) + } + 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 keyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .key) + key = keyDecoded + let valueDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .value) + value = valueDecoded } } -extension GetKxEnvironmentOutput: 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: GetKxEnvironmentOutputBody = try responseDecoder.decode(responseBody: data) - self.availabilityZoneIds = output.availabilityZoneIds - self.awsAccountId = output.awsAccountId - self.certificateAuthorityArn = output.certificateAuthorityArn - self.creationTimestamp = output.creationTimestamp - self.customDNSConfiguration = output.customDNSConfiguration - self.dedicatedServiceAccountId = output.dedicatedServiceAccountId - self.description = output.description - self.dnsStatus = output.dnsStatus - self.environmentArn = output.environmentArn - self.environmentId = output.environmentId - self.errorMessage = output.errorMessage - self.kmsKeyId = output.kmsKeyId - self.name = output.name - self.status = output.status - self.tgwStatus = output.tgwStatus - self.transitGatewayConfiguration = output.transitGatewayConfiguration - self.updateTimestamp = output.updateTimestamp - } else { - self.availabilityZoneIds = nil - self.awsAccountId = nil - self.certificateAuthorityArn = nil - self.creationTimestamp = nil - self.customDNSConfiguration = nil - self.dedicatedServiceAccountId = nil - self.description = nil - self.dnsStatus = nil - self.environmentArn = nil - self.environmentId = nil - self.errorMessage = nil - self.kmsKeyId = nil - self.name = nil - self.status = nil - self.tgwStatus = nil - self.transitGatewayConfiguration = nil - self.updateTimestamp = nil +extension FinspaceClientTypes { + /// Defines the key-value pairs to make them available inside the cluster. + public struct KxCommandLineArgument: Swift.Equatable { + /// The name of the key. + public var key: Swift.String? + /// The value of the key. + public var value: Swift.String? + + public init( + key: Swift.String? = nil, + value: Swift.String? = nil + ) + { + self.key = key + self.value = value } } + } -public struct GetKxEnvironmentOutput: Swift.Equatable { - /// The identifier of the availability zones where subnets for the environment are created. - public var availabilityZoneIds: [Swift.String]? - /// The unique identifier of the AWS account that is used to create the kdb environment. - public var awsAccountId: Swift.String? - /// The Amazon Resource Name (ARN) of the certificate authority of the kdb environment. - public var certificateAuthorityArn: Swift.String? - /// The timestamp at which the kdb environment was created in FinSpace. - public var creationTimestamp: ClientRuntime.Date? - /// A list of DNS server name and server IP. This is used to set up Route-53 outbound resolvers. - public var customDNSConfiguration: [FinspaceClientTypes.CustomDNSServer]? - /// A unique identifier for the AWS environment infrastructure account. - public var dedicatedServiceAccountId: Swift.String? - /// A description for the kdb environment. - public var description: Swift.String? - /// The status of DNS configuration. - public var dnsStatus: FinspaceClientTypes.DnsStatus? - /// The ARN identifier of the environment. - public var environmentArn: Swift.String? - /// A unique identifier for the kdb environment. - public var environmentId: Swift.String? - /// Specifies the error message that appears if a flow fails. - public var errorMessage: Swift.String? - /// The KMS key ID to encrypt your data in the FinSpace environment. - public var kmsKeyId: Swift.String? - /// The name of the kdb environment. - public var name: Swift.String? - /// The status of the kdb environment. - public var status: FinspaceClientTypes.EnvironmentStatus? - /// The status of the network configuration. - public var tgwStatus: FinspaceClientTypes.TgwStatus? - /// The structure of the transit gateway and network configuration that is used to connect the kdb environment to an internal network. - public var transitGatewayConfiguration: FinspaceClientTypes.TransitGatewayConfiguration? - /// The timestamp at which the kdb environment was updated. - public var updateTimestamp: ClientRuntime.Date? +extension FinspaceClientTypes.KxDatabaseCacheConfiguration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case cacheType + case dataviewName + case dbPaths + } - public init( - availabilityZoneIds: [Swift.String]? = nil, - awsAccountId: Swift.String? = nil, - certificateAuthorityArn: Swift.String? = nil, - creationTimestamp: ClientRuntime.Date? = nil, - customDNSConfiguration: [FinspaceClientTypes.CustomDNSServer]? = nil, - dedicatedServiceAccountId: Swift.String? = nil, - description: Swift.String? = nil, - dnsStatus: FinspaceClientTypes.DnsStatus? = nil, - environmentArn: Swift.String? = nil, - environmentId: Swift.String? = nil, - errorMessage: Swift.String? = nil, - kmsKeyId: Swift.String? = nil, - name: Swift.String? = nil, - status: FinspaceClientTypes.EnvironmentStatus? = nil, - tgwStatus: FinspaceClientTypes.TgwStatus? = nil, - transitGatewayConfiguration: FinspaceClientTypes.TransitGatewayConfiguration? = nil, - updateTimestamp: ClientRuntime.Date? = nil - ) - { - self.availabilityZoneIds = availabilityZoneIds - self.awsAccountId = awsAccountId - self.certificateAuthorityArn = certificateAuthorityArn - self.creationTimestamp = creationTimestamp - self.customDNSConfiguration = customDNSConfiguration - self.dedicatedServiceAccountId = dedicatedServiceAccountId - self.description = description - self.dnsStatus = dnsStatus - self.environmentArn = environmentArn - self.environmentId = environmentId - self.errorMessage = errorMessage - self.kmsKeyId = kmsKeyId - self.name = name - self.status = status - self.tgwStatus = tgwStatus - self.transitGatewayConfiguration = transitGatewayConfiguration - self.updateTimestamp = updateTimestamp + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let cacheType = self.cacheType { + try encodeContainer.encode(cacheType, forKey: .cacheType) + } + if let dataviewName = self.dataviewName { + try encodeContainer.encode(dataviewName, forKey: .dataviewName) + } + if let dbPaths = dbPaths { + var dbPathsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .dbPaths) + for dbpath0 in dbPaths { + try dbPathsContainer.encode(dbpath0) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let cacheTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .cacheType) + cacheType = cacheTypeDecoded + let dbPathsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .dbPaths) + var dbPathsDecoded0:[Swift.String]? = nil + if let dbPathsContainer = dbPathsContainer { + dbPathsDecoded0 = [Swift.String]() + for string0 in dbPathsContainer { + if let string0 = string0 { + dbPathsDecoded0?.append(string0) + } + } + } + dbPaths = dbPathsDecoded0 + let dataviewNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dataviewName) + dataviewName = dataviewNameDecoded } } -struct GetKxEnvironmentOutputBody: Swift.Equatable { - let name: Swift.String? - let environmentId: Swift.String? - let awsAccountId: Swift.String? - let status: FinspaceClientTypes.EnvironmentStatus? - let tgwStatus: FinspaceClientTypes.TgwStatus? - let dnsStatus: FinspaceClientTypes.DnsStatus? - let errorMessage: Swift.String? - let description: Swift.String? - let environmentArn: Swift.String? - let kmsKeyId: Swift.String? - let dedicatedServiceAccountId: Swift.String? - let transitGatewayConfiguration: FinspaceClientTypes.TransitGatewayConfiguration? - let customDNSConfiguration: [FinspaceClientTypes.CustomDNSServer]? - let creationTimestamp: ClientRuntime.Date? - let updateTimestamp: ClientRuntime.Date? - let availabilityZoneIds: [Swift.String]? - let certificateAuthorityArn: Swift.String? +extension FinspaceClientTypes { + /// The structure of database cache configuration that is used for mapping database paths to cache types in clusters. + public struct KxDatabaseCacheConfiguration: Swift.Equatable { + /// The type of disk cache. This parameter is used to map the database path to cache storage. The valid values are: + /// + /// * CACHE_1000 – This type provides at least 1000 MB/s disk access throughput. + /// This member is required. + public var cacheType: Swift.String? + /// The name of the dataview to be used for caching historical data on disk. + public var dataviewName: Swift.String? + /// Specifies the portions of database that will be loaded into the cache for access. + /// This member is required. + public var dbPaths: [Swift.String]? + + public init( + cacheType: Swift.String? = nil, + dataviewName: Swift.String? = nil, + dbPaths: [Swift.String]? = nil + ) + { + self.cacheType = cacheType + self.dataviewName = dataviewName + self.dbPaths = dbPaths + } + } + } -extension GetKxEnvironmentOutputBody: Swift.Decodable { +extension FinspaceClientTypes.KxDatabaseConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case availabilityZoneIds - case awsAccountId - case certificateAuthorityArn - case creationTimestamp - case customDNSConfiguration - case dedicatedServiceAccountId - case description - case dnsStatus - case environmentArn - case environmentId - case errorMessage - case kmsKeyId - case name - case status - case tgwStatus - case transitGatewayConfiguration - case updateTimestamp + case cacheConfigurations + case changesetId + case databaseName + case dataviewConfiguration + case dataviewName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let cacheConfigurations = cacheConfigurations { + var cacheConfigurationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .cacheConfigurations) + for kxdatabasecacheconfiguration0 in cacheConfigurations { + try cacheConfigurationsContainer.encode(kxdatabasecacheconfiguration0) + } + } + if let changesetId = self.changesetId { + try encodeContainer.encode(changesetId, forKey: .changesetId) + } + if let databaseName = self.databaseName { + try encodeContainer.encode(databaseName, forKey: .databaseName) + } + if let dataviewConfiguration = self.dataviewConfiguration { + try encodeContainer.encode(dataviewConfiguration, forKey: .dataviewConfiguration) + } + if let dataviewName = self.dataviewName { + try encodeContainer.encode(dataviewName, forKey: .dataviewName) + } } 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 environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) - environmentId = environmentIdDecoded - let awsAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .awsAccountId) - awsAccountId = awsAccountIdDecoded - let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.EnvironmentStatus.self, forKey: .status) - status = statusDecoded - let tgwStatusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.TgwStatus.self, forKey: .tgwStatus) - tgwStatus = tgwStatusDecoded - let dnsStatusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.DnsStatus.self, forKey: .dnsStatus) - dnsStatus = dnsStatusDecoded - let errorMessageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorMessage) - errorMessage = errorMessageDecoded - let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) - description = descriptionDecoded - let environmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentArn) - environmentArn = environmentArnDecoded - let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) - kmsKeyId = kmsKeyIdDecoded - let dedicatedServiceAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dedicatedServiceAccountId) - dedicatedServiceAccountId = dedicatedServiceAccountIdDecoded - let transitGatewayConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.TransitGatewayConfiguration.self, forKey: .transitGatewayConfiguration) - transitGatewayConfiguration = transitGatewayConfigurationDecoded - let customDNSConfigurationContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.CustomDNSServer?].self, forKey: .customDNSConfiguration) - var customDNSConfigurationDecoded0:[FinspaceClientTypes.CustomDNSServer]? = nil - if let customDNSConfigurationContainer = customDNSConfigurationContainer { - customDNSConfigurationDecoded0 = [FinspaceClientTypes.CustomDNSServer]() - for structure0 in customDNSConfigurationContainer { + let databaseNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseName) + databaseName = databaseNameDecoded + let cacheConfigurationsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDatabaseCacheConfiguration?].self, forKey: .cacheConfigurations) + var cacheConfigurationsDecoded0:[FinspaceClientTypes.KxDatabaseCacheConfiguration]? = nil + if let cacheConfigurationsContainer = cacheConfigurationsContainer { + cacheConfigurationsDecoded0 = [FinspaceClientTypes.KxDatabaseCacheConfiguration]() + for structure0 in cacheConfigurationsContainer { if let structure0 = structure0 { - customDNSConfigurationDecoded0?.append(structure0) - } - } - } - customDNSConfiguration = customDNSConfigurationDecoded0 - let creationTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .creationTimestamp) - creationTimestamp = creationTimestampDecoded - let updateTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .updateTimestamp) - updateTimestamp = updateTimestampDecoded - let availabilityZoneIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .availabilityZoneIds) - var availabilityZoneIdsDecoded0:[Swift.String]? = nil - if let availabilityZoneIdsContainer = availabilityZoneIdsContainer { - availabilityZoneIdsDecoded0 = [Swift.String]() - for string0 in availabilityZoneIdsContainer { - if let string0 = string0 { - availabilityZoneIdsDecoded0?.append(string0) + cacheConfigurationsDecoded0?.append(structure0) } } } - availabilityZoneIds = availabilityZoneIdsDecoded0 - let certificateAuthorityArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .certificateAuthorityArn) - certificateAuthorityArn = certificateAuthorityArnDecoded + cacheConfigurations = cacheConfigurationsDecoded0 + let changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) + changesetId = changesetIdDecoded + let dataviewNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dataviewName) + dataviewName = dataviewNameDecoded + let dataviewConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxDataviewConfiguration.self, forKey: .dataviewConfiguration) + dataviewConfiguration = dataviewConfigurationDecoded } } -enum GetKxEnvironmentOutputError: 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 "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 FinspaceClientTypes { + /// The configuration of data that is available for querying from this database. + public struct KxDatabaseConfiguration: Swift.Equatable { + /// Configuration details for the disk cache used to increase performance reading from a kdb database mounted to the cluster. + public var cacheConfigurations: [FinspaceClientTypes.KxDatabaseCacheConfiguration]? + /// A unique identifier of the changeset that is associated with the cluster. + public var changesetId: Swift.String? + /// The name of the kdb database. When this parameter is specified in the structure, S3 with the whole database is included by default. + /// This member is required. + public var databaseName: Swift.String? + /// The configuration of the dataview to be used with specified cluster. + public var dataviewConfiguration: FinspaceClientTypes.KxDataviewConfiguration? + /// The name of the dataview to be used for caching historical data on disk. + public var dataviewName: Swift.String? + + public init( + cacheConfigurations: [FinspaceClientTypes.KxDatabaseCacheConfiguration]? = nil, + changesetId: Swift.String? = nil, + databaseName: Swift.String? = nil, + dataviewConfiguration: FinspaceClientTypes.KxDataviewConfiguration? = nil, + dataviewName: Swift.String? = nil + ) + { + self.cacheConfigurations = cacheConfigurations + self.changesetId = changesetId + self.databaseName = databaseName + self.dataviewConfiguration = dataviewConfiguration + self.dataviewName = dataviewName } } + } -extension GetKxUserInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - guard let environmentId = environmentId else { - return nil +extension FinspaceClientTypes.KxDatabaseListEntry: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case createdTimestamp + case databaseName + case lastModifiedTimestamp + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let createdTimestamp = self.createdTimestamp { + try encodeContainer.encodeTimestamp(createdTimestamp, format: .epochSeconds, forKey: .createdTimestamp) } - guard let userName = userName else { - return nil + if let databaseName = self.databaseName { + try encodeContainer.encode(databaseName, forKey: .databaseName) } - return "/kx/environments/\(environmentId.urlPercentEncoding())/users/\(userName.urlPercentEncoding())" + if let lastModifiedTimestamp = self.lastModifiedTimestamp { + try encodeContainer.encodeTimestamp(lastModifiedTimestamp, format: .epochSeconds, forKey: .lastModifiedTimestamp) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let databaseNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseName) + databaseName = databaseNameDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded } } -public struct GetKxUserInput: Swift.Equatable { - /// A unique identifier for the kdb environment. - /// This member is required. - public var environmentId: Swift.String? - /// A unique identifier for the user. - /// This member is required. - public var userName: Swift.String? +extension FinspaceClientTypes { + /// Details about a FinSpace managed kdb database + public struct KxDatabaseListEntry: Swift.Equatable { + /// The timestamp at which the database was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// The name of the kdb database. + public var databaseName: Swift.String? + /// The last time that the database was modified. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? - public init( - environmentId: Swift.String? = nil, - userName: Swift.String? = nil - ) - { - self.environmentId = environmentId - self.userName = userName + public init( + createdTimestamp: ClientRuntime.Date? = nil, + databaseName: Swift.String? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil + ) + { + self.createdTimestamp = createdTimestamp + self.databaseName = databaseName + self.lastModifiedTimestamp = lastModifiedTimestamp + } } -} -struct GetKxUserInputBody: Swift.Equatable { } -extension GetKxUserInputBody: Swift.Decodable { +extension FinspaceClientTypes.KxDataviewActiveVersion: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case attachedClusters + case changesetId + case createdTimestamp + case segmentConfigurations + case versionId + } - public init(from decoder: Swift.Decoder) throws { + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let attachedClusters = attachedClusters { + var attachedClustersContainer = encodeContainer.nestedUnkeyedContainer(forKey: .attachedClusters) + for kxclustername0 in attachedClusters { + try attachedClustersContainer.encode(kxclustername0) + } + } + if let changesetId = self.changesetId { + try encodeContainer.encode(changesetId, forKey: .changesetId) + } + if let createdTimestamp = self.createdTimestamp { + try encodeContainer.encodeTimestamp(createdTimestamp, format: .epochSeconds, forKey: .createdTimestamp) + } + if let segmentConfigurations = segmentConfigurations { + var segmentConfigurationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .segmentConfigurations) + for kxdataviewsegmentconfiguration0 in segmentConfigurations { + try segmentConfigurationsContainer.encode(kxdataviewsegmentconfiguration0) + } + } + if let versionId = self.versionId { + try encodeContainer.encode(versionId, forKey: .versionId) + } } -} -extension GetKxUserOutput: 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: GetKxUserOutputBody = try responseDecoder.decode(responseBody: data) - self.environmentId = output.environmentId - self.iamRole = output.iamRole - self.userArn = output.userArn - self.userName = output.userName - } else { - self.environmentId = nil - self.iamRole = nil - self.userArn = nil - self.userName = nil + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) + changesetId = changesetIdDecoded + let segmentConfigurationsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDataviewSegmentConfiguration?].self, forKey: .segmentConfigurations) + var segmentConfigurationsDecoded0:[FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil + if let segmentConfigurationsContainer = segmentConfigurationsContainer { + segmentConfigurationsDecoded0 = [FinspaceClientTypes.KxDataviewSegmentConfiguration]() + for structure0 in segmentConfigurationsContainer { + if let structure0 = structure0 { + segmentConfigurationsDecoded0?.append(structure0) + } + } + } + segmentConfigurations = segmentConfigurationsDecoded0 + let attachedClustersContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .attachedClusters) + var attachedClustersDecoded0:[Swift.String]? = nil + if let attachedClustersContainer = attachedClustersContainer { + attachedClustersDecoded0 = [Swift.String]() + for string0 in attachedClustersContainer { + if let string0 = string0 { + attachedClustersDecoded0?.append(string0) + } + } } + attachedClusters = attachedClustersDecoded0 + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + let versionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .versionId) + versionId = versionIdDecoded } } -public struct GetKxUserOutput: Swift.Equatable { - /// A unique identifier for the kdb environment. - public var environmentId: Swift.String? - /// The IAM role ARN that is associated with the user. - public var iamRole: Swift.String? - /// The Amazon Resource Name (ARN) that identifies the user. For more information about ARNs and how to use ARNs in policies, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) in the IAM User Guide. - public var userArn: Swift.String? - /// A unique identifier for the user. - public var userName: Swift.String? +extension FinspaceClientTypes { + /// The active version of the dataview that is currently in use by this cluster. + public struct KxDataviewActiveVersion: Swift.Equatable { + /// The list of clusters that are currently using this dataview. + public var attachedClusters: [Swift.String]? + /// A unique identifier for the changeset. + public var changesetId: Swift.String? + /// The timestamp at which the dataview version was active. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// The configuration that contains the database path of the data that you want to place on each selected volume. Each segment must have a unique database path for each volume. If you do not explicitly specify any database path for a volume, they are accessible from the cluster through the default S3/object store segment. + public var segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? + /// A unique identifier of the active version. + public var versionId: Swift.String? - public init( - environmentId: Swift.String? = nil, - iamRole: Swift.String? = nil, - userArn: Swift.String? = nil, - userName: Swift.String? = nil - ) - { - self.environmentId = environmentId - self.iamRole = iamRole - self.userArn = userArn - self.userName = userName + public init( + attachedClusters: [Swift.String]? = nil, + changesetId: Swift.String? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil, + versionId: Swift.String? = nil + ) + { + self.attachedClusters = attachedClusters + self.changesetId = changesetId + self.createdTimestamp = createdTimestamp + self.segmentConfigurations = segmentConfigurations + self.versionId = versionId + } } -} -struct GetKxUserOutputBody: Swift.Equatable { - let userName: Swift.String? - let userArn: Swift.String? - let environmentId: Swift.String? - let iamRole: Swift.String? } -extension GetKxUserOutputBody: Swift.Decodable { +extension FinspaceClientTypes.KxDataviewConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case environmentId - case iamRole - case userArn - case userName + case changesetId + case dataviewName + case dataviewVersionId + case segmentConfigurations } - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let userNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userName) - userName = userNameDecoded - let userArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userArn) - userArn = userArnDecoded - let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) - environmentId = environmentIdDecoded - let iamRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .iamRole) - iamRole = iamRoleDecoded + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let changesetId = self.changesetId { + try encodeContainer.encode(changesetId, forKey: .changesetId) + } + if let dataviewName = self.dataviewName { + try encodeContainer.encode(dataviewName, forKey: .dataviewName) + } + if let dataviewVersionId = self.dataviewVersionId { + try encodeContainer.encode(dataviewVersionId, forKey: .dataviewVersionId) + } + if let segmentConfigurations = segmentConfigurations { + var segmentConfigurationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .segmentConfigurations) + for kxdataviewsegmentconfiguration0 in segmentConfigurations { + try segmentConfigurationsContainer.encode(kxdataviewsegmentconfiguration0) + } + } } -} -enum GetKxUserOutputError: 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 "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) + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let dataviewNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dataviewName) + dataviewName = dataviewNameDecoded + let dataviewVersionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dataviewVersionId) + dataviewVersionId = dataviewVersionIdDecoded + let changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) + changesetId = changesetIdDecoded + let segmentConfigurationsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDataviewSegmentConfiguration?].self, forKey: .segmentConfigurations) + var segmentConfigurationsDecoded0:[FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil + if let segmentConfigurationsContainer = segmentConfigurationsContainer { + segmentConfigurationsDecoded0 = [FinspaceClientTypes.KxDataviewSegmentConfiguration]() + for structure0 in segmentConfigurationsContainer { + if let structure0 = structure0 { + segmentConfigurationsDecoded0?.append(structure0) + } + } } + segmentConfigurations = segmentConfigurationsDecoded0 } } extension FinspaceClientTypes { - public enum IPAddressType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case ipV4 - case sdkUnknown(Swift.String) + /// The structure that stores the configuration details of a dataview. + public struct KxDataviewConfiguration: Swift.Equatable { + /// A unique identifier for the changeset. + public var changesetId: Swift.String? + /// The unique identifier of the dataview. + public var dataviewName: Swift.String? + /// The version of the dataview corresponding to a given changeset. + public var dataviewVersionId: Swift.String? + /// The db path and volume configuration for the segmented database. + public var segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? - public static var allCases: [IPAddressType] { - return [ - .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 .ipV4: return "IP_V4" - 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) + public init( + changesetId: Swift.String? = nil, + dataviewName: Swift.String? = nil, + dataviewVersionId: Swift.String? = nil, + segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil + ) + { + self.changesetId = changesetId + self.dataviewName = dataviewName + self.dataviewVersionId = dataviewVersionId + self.segmentConfigurations = segmentConfigurations } } + } -extension FinspaceClientTypes.IcmpTypeCode: Swift.Codable { +extension FinspaceClientTypes.KxDataviewListEntry: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case code - case type + case activeVersions + case autoUpdate + case availabilityZoneId + case azMode + case changesetId + case createdTimestamp + case databaseName + case dataviewName + case description + case environmentId + case lastModifiedTimestamp + case segmentConfigurations + case status + case statusReason } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if code != 0 { - try encodeContainer.encode(code, forKey: .code) + if let activeVersions = activeVersions { + var activeVersionsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .activeVersions) + for kxdataviewactiveversion0 in activeVersions { + try activeVersionsContainer.encode(kxdataviewactiveversion0) + } } - if type != 0 { - try encodeContainer.encode(type, forKey: .type) + if autoUpdate != false { + try encodeContainer.encode(autoUpdate, forKey: .autoUpdate) + } + if let availabilityZoneId = self.availabilityZoneId { + try encodeContainer.encode(availabilityZoneId, forKey: .availabilityZoneId) + } + if let azMode = self.azMode { + try encodeContainer.encode(azMode.rawValue, forKey: .azMode) + } + if let changesetId = self.changesetId { + try encodeContainer.encode(changesetId, forKey: .changesetId) + } + if let createdTimestamp = self.createdTimestamp { + try encodeContainer.encodeTimestamp(createdTimestamp, format: .epochSeconds, forKey: .createdTimestamp) + } + if let databaseName = self.databaseName { + try encodeContainer.encode(databaseName, forKey: .databaseName) + } + if let dataviewName = self.dataviewName { + try encodeContainer.encode(dataviewName, forKey: .dataviewName) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let environmentId = self.environmentId { + try encodeContainer.encode(environmentId, forKey: .environmentId) + } + if let lastModifiedTimestamp = self.lastModifiedTimestamp { + try encodeContainer.encodeTimestamp(lastModifiedTimestamp, format: .epochSeconds, forKey: .lastModifiedTimestamp) + } + if let segmentConfigurations = segmentConfigurations { + var segmentConfigurationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .segmentConfigurations) + for kxdataviewsegmentconfiguration0 in segmentConfigurations { + try segmentConfigurationsContainer.encode(kxdataviewsegmentconfiguration0) + } + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + if let statusReason = self.statusReason { + try encodeContainer.encode(statusReason, forKey: .statusReason) } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let typeDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .type) ?? 0 - type = typeDecoded - let codeDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .code) ?? 0 - code = codeDecoded + let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let databaseNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseName) + databaseName = databaseNameDecoded + let dataviewNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dataviewName) + dataviewName = dataviewNameDecoded + let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) + azMode = azModeDecoded + let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) + availabilityZoneId = availabilityZoneIdDecoded + let changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) + changesetId = changesetIdDecoded + let segmentConfigurationsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDataviewSegmentConfiguration?].self, forKey: .segmentConfigurations) + var segmentConfigurationsDecoded0:[FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil + if let segmentConfigurationsContainer = segmentConfigurationsContainer { + segmentConfigurationsDecoded0 = [FinspaceClientTypes.KxDataviewSegmentConfiguration]() + for structure0 in segmentConfigurationsContainer { + if let structure0 = structure0 { + segmentConfigurationsDecoded0?.append(structure0) + } + } + } + segmentConfigurations = segmentConfigurationsDecoded0 + let activeVersionsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDataviewActiveVersion?].self, forKey: .activeVersions) + var activeVersionsDecoded0:[FinspaceClientTypes.KxDataviewActiveVersion]? = nil + if let activeVersionsContainer = activeVersionsContainer { + activeVersionsDecoded0 = [FinspaceClientTypes.KxDataviewActiveVersion]() + for structure0 in activeVersionsContainer { + if let structure0 = structure0 { + activeVersionsDecoded0?.append(structure0) + } + } + } + activeVersions = activeVersionsDecoded0 + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxDataviewStatus.self, forKey: .status) + status = statusDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let autoUpdateDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .autoUpdate) ?? false + autoUpdate = autoUpdateDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded } } extension FinspaceClientTypes { - /// Defines the ICMP protocol that consists of the ICMP type and code. - public struct IcmpTypeCode: Swift.Equatable { - /// The ICMP code. A value of -1 means all codes for the specified ICMP type. - /// This member is required. - public var code: Swift.Int - /// The ICMP type. A value of -1 means all types. - /// This member is required. - public var type: Swift.Int + /// A collection of kdb dataview entries. + public struct KxDataviewListEntry: Swift.Equatable { + /// The active changeset versions for the given dataview entry. + public var activeVersions: [FinspaceClientTypes.KxDataviewActiveVersion]? + /// The option to specify whether you want to apply all the future additions and corrections automatically to the dataview when you ingest new changesets. The default value is false. + public var autoUpdate: Swift.Bool + /// The identifier of the availability zones. + public var availabilityZoneId: Swift.String? + /// The number of availability zones you want to assign per cluster. This can be one of the following + /// + /// * SINGLE – Assigns one availability zone per cluster. + /// + /// * MULTI – Assigns all the availability zones per cluster. + public var azMode: FinspaceClientTypes.KxAzMode? + /// A unique identifier for the changeset. + public var changesetId: Swift.String? + /// The timestamp at which the dataview list entry was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// A unique identifier of the database. + public var databaseName: Swift.String? + /// A unique identifier of the dataview. + public var dataviewName: Swift.String? + /// A description for the dataview list entry. + public var description: Swift.String? + /// A unique identifier for the kdb environment. + public var environmentId: Swift.String? + /// The last time that the dataview list was updated in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// The configuration that contains the database path of the data that you want to place on each selected volume. Each segment must have a unique database path for each volume. If you do not explicitly specify any database path for a volume, they are accessible from the cluster through the default S3/object store segment. + public var segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? + /// The status of a given dataview entry. + public var status: FinspaceClientTypes.KxDataviewStatus? + /// The error message when a failed state occurs. + public var statusReason: Swift.String? public init( - code: Swift.Int = 0, - type: Swift.Int = 0 + activeVersions: [FinspaceClientTypes.KxDataviewActiveVersion]? = nil, + autoUpdate: Swift.Bool = false, + availabilityZoneId: Swift.String? = nil, + azMode: FinspaceClientTypes.KxAzMode? = nil, + changesetId: Swift.String? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + databaseName: Swift.String? = nil, + dataviewName: Swift.String? = nil, + description: Swift.String? = nil, + environmentId: Swift.String? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil, + status: FinspaceClientTypes.KxDataviewStatus? = nil, + statusReason: Swift.String? = nil ) { - self.code = code - self.type = type + self.activeVersions = activeVersions + self.autoUpdate = autoUpdate + self.availabilityZoneId = availabilityZoneId + self.azMode = azMode + self.changesetId = changesetId + self.createdTimestamp = createdTimestamp + self.databaseName = databaseName + self.dataviewName = dataviewName + self.description = description + self.environmentId = environmentId + self.lastModifiedTimestamp = lastModifiedTimestamp + self.segmentConfigurations = segmentConfigurations + self.status = status + self.statusReason = statusReason } } } -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 - } -} - -/// The request processing has failed because of an unknown error, exception or failure. -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 +extension FinspaceClientTypes.KxDataviewSegmentConfiguration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case dbPaths + case volumeName } -} - -struct InternalServerExceptionBody: Swift.Equatable { - let message: Swift.String? -} -extension InternalServerExceptionBody: Swift.Decodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case message + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let dbPaths = dbPaths { + var dbPathsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .dbPaths) + for dbpath0 in dbPaths { + try dbPathsContainer.encode(dbpath0) + } + } + if let volumeName = self.volumeName { + try encodeContainer.encode(volumeName, forKey: .volumeName) + } } 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 InvalidRequestException { - 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: InvalidRequestExceptionBody = try responseDecoder.decode(responseBody: data) - self.properties.message = output.message - } else { - self.properties.message = nil + let dbPathsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .dbPaths) + var dbPathsDecoded0:[Swift.String]? = nil + if let dbPathsContainer = dbPathsContainer { + dbPathsDecoded0 = [Swift.String]() + for string0 in dbPathsContainer { + if let string0 = string0 { + dbPathsDecoded0?.append(string0) + } + } } - self.httpResponse = httpResponse - self.requestID = requestID - self.message = message - } -} - -/// The request is invalid. Something is wrong with the input to the request. -public struct InvalidRequestException: 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 { "InvalidRequestException" } - 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 + dbPaths = dbPathsDecoded0 + let volumeNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .volumeName) + volumeName = volumeNameDecoded } } -struct InvalidRequestExceptionBody: Swift.Equatable { - let message: Swift.String? -} - -extension InvalidRequestExceptionBody: Swift.Decodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case message - } +extension FinspaceClientTypes { + /// The configuration that contains the database path of the data that you want to place on each selected volume. Each segment must have a unique database path for each volume. If you do not explicitly specify any database path for a volume, they are accessible from the cluster through the default S3/object store segment. + public struct KxDataviewSegmentConfiguration: Swift.Equatable { + /// The database path of the data that you want to place on each selected volume for the segment. Each segment must have a unique database path for each volume. + /// This member is required. + public var dbPaths: [Swift.String]? + /// The name of the volume where you want to add data. + /// This member is required. + public var volumeName: Swift.String? - 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 + public init( + dbPaths: [Swift.String]? = nil, + volumeName: Swift.String? = nil + ) + { + self.dbPaths = dbPaths + self.volumeName = volumeName + } } + } extension FinspaceClientTypes { - public enum KxAzMode: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case multi - case single + public enum KxDataviewStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case active + case creating + case deleting + case failed + case updating case sdkUnknown(Swift.String) - public static var allCases: [KxAzMode] { + public static var allCases: [KxDataviewStatus] { return [ - .multi, - .single, + .active, + .creating, + .deleting, + .failed, + .updating, .sdkUnknown("") ] } @@ -4628,385 +8026,388 @@ extension FinspaceClientTypes { } public var rawValue: Swift.String { switch self { - case .multi: return "MULTI" - case .single: return "SINGLE" + case .active: return "ACTIVE" + case .creating: return "CREATING" + case .deleting: return "DELETING" + case .failed: return "FAILED" + case .updating: return "UPDATING" 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 = KxAzMode(rawValue: rawValue) ?? KxAzMode.sdkUnknown(rawValue) + self = KxDataviewStatus(rawValue: rawValue) ?? KxDataviewStatus.sdkUnknown(rawValue) } } } -extension FinspaceClientTypes.KxCacheStorageConfiguration: Swift.Codable { +extension FinspaceClientTypes.KxDeploymentConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case size - case type + case deploymentStrategy } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let size = self.size { - try encodeContainer.encode(size, forKey: .size) - } - if let type = self.type { - try encodeContainer.encode(type, forKey: .type) + 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 typeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .type) - type = typeDecoded - let sizeDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .size) - size = sizeDecoded + let deploymentStrategyDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxDeploymentStrategy.self, forKey: .deploymentStrategy) + deploymentStrategy = deploymentStrategyDecoded } } extension FinspaceClientTypes { - /// The configuration for read only disk cache associated with a cluster. - public struct KxCacheStorageConfiguration: Swift.Equatable { - /// The size of cache in Gigabytes. - /// This member is required. - public var size: Swift.Int? - /// 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. + /// 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 updates the cluster by stopping the exiting q process and starting a new q process with updated configuration. /// - /// 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. + /// * 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 type: Swift.String? + public var deploymentStrategy: FinspaceClientTypes.KxDeploymentStrategy? public init( - size: Swift.Int? = nil, - type: Swift.String? = nil + deploymentStrategy: FinspaceClientTypes.KxDeploymentStrategy? = nil ) { - self.size = size - self.type = type + self.deploymentStrategy = deploymentStrategy } } } -extension FinspaceClientTypes.KxChangesetListEntry: Swift.Codable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case activeFromTimestamp - case changesetId - case createdTimestamp - case lastModifiedTimestamp - case status - } +extension FinspaceClientTypes { + public enum KxDeploymentStrategy: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case noRestart + case rolling + case sdkUnknown(Swift.String) - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let activeFromTimestamp = self.activeFromTimestamp { - try encodeContainer.encodeTimestamp(activeFromTimestamp, format: .epochSeconds, forKey: .activeFromTimestamp) - } - if let changesetId = self.changesetId { - try encodeContainer.encode(changesetId, forKey: .changesetId) - } - if let createdTimestamp = self.createdTimestamp { - try encodeContainer.encodeTimestamp(createdTimestamp, format: .epochSeconds, forKey: .createdTimestamp) + public static var allCases: [KxDeploymentStrategy] { + return [ + .noRestart, + .rolling, + .sdkUnknown("") + ] } - if let lastModifiedTimestamp = self.lastModifiedTimestamp { - try encodeContainer.encodeTimestamp(lastModifiedTimestamp, format: .epochSeconds, forKey: .lastModifiedTimestamp) + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) } - if let status = self.status { - try encodeContainer.encode(status.rawValue, forKey: .status) + public var rawValue: Swift.String { + switch self { + case .noRestart: return "NO_RESTART" + case .rolling: return "ROLLING" + case let .sdkUnknown(s): return s + } } - } - - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) - changesetId = changesetIdDecoded - let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) - createdTimestamp = createdTimestampDecoded - let activeFromTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .activeFromTimestamp) - activeFromTimestamp = activeFromTimestampDecoded - let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) - lastModifiedTimestamp = lastModifiedTimestampDecoded - let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.ChangesetStatus.self, forKey: .status) - status = statusDecoded - } -} - -extension FinspaceClientTypes { - /// Details of changeset. - public struct KxChangesetListEntry: Swift.Equatable { - /// Beginning time from which the changeset is active. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var activeFromTimestamp: ClientRuntime.Date? - /// A unique identifier for the changeset. - public var changesetId: Swift.String? - /// The timestamp at which the changeset was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var createdTimestamp: ClientRuntime.Date? - /// The timestamp at which the changeset was modified. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var lastModifiedTimestamp: ClientRuntime.Date? - /// Status of the changeset. - /// - /// * Pending – Changeset creation is pending. - /// - /// * Processing – Changeset creation is running. - /// - /// * Failed – Changeset creation has failed. - /// - /// * Complete – Changeset creation has succeeded. - public var status: FinspaceClientTypes.ChangesetStatus? - - public init( - activeFromTimestamp: ClientRuntime.Date? = nil, - changesetId: Swift.String? = nil, - createdTimestamp: ClientRuntime.Date? = nil, - lastModifiedTimestamp: ClientRuntime.Date? = nil, - status: FinspaceClientTypes.ChangesetStatus? = nil - ) - { - self.activeFromTimestamp = activeFromTimestamp - self.changesetId = changesetId - self.createdTimestamp = createdTimestamp - self.lastModifiedTimestamp = lastModifiedTimestamp - self.status = status + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = KxDeploymentStrategy(rawValue: rawValue) ?? KxDeploymentStrategy.sdkUnknown(rawValue) } } - } -extension FinspaceClientTypes.KxCluster: Swift.Codable { +extension FinspaceClientTypes.KxEnvironment: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case availabilityZoneId - case azMode - case clusterDescription - case clusterName - case clusterType - case createdTimestamp - case executionRole - case initializationScript - case lastModifiedTimestamp - case releaseLabel + case availabilityZoneIds + case awsAccountId + case certificateAuthorityArn + case creationTimestamp + case customDNSConfiguration + case dedicatedServiceAccountId + case description + case dnsStatus + case environmentArn + case environmentId + case errorMessage + case kmsKeyId + case name case status - case statusReason + case tgwStatus + case transitGatewayConfiguration + case updateTimestamp } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let availabilityZoneId = self.availabilityZoneId { - try encodeContainer.encode(availabilityZoneId, forKey: .availabilityZoneId) + if let availabilityZoneIds = availabilityZoneIds { + var availabilityZoneIdsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .availabilityZoneIds) + for availabilityzoneid0 in availabilityZoneIds { + try availabilityZoneIdsContainer.encode(availabilityzoneid0) + } } - if let azMode = self.azMode { - try encodeContainer.encode(azMode.rawValue, forKey: .azMode) + if let awsAccountId = self.awsAccountId { + try encodeContainer.encode(awsAccountId, forKey: .awsAccountId) } - if let clusterDescription = self.clusterDescription { - try encodeContainer.encode(clusterDescription, forKey: .clusterDescription) + if let certificateAuthorityArn = self.certificateAuthorityArn { + try encodeContainer.encode(certificateAuthorityArn, forKey: .certificateAuthorityArn) } - if let clusterName = self.clusterName { - try encodeContainer.encode(clusterName, forKey: .clusterName) + if let creationTimestamp = self.creationTimestamp { + try encodeContainer.encodeTimestamp(creationTimestamp, format: .epochSeconds, forKey: .creationTimestamp) } - if let clusterType = self.clusterType { - try encodeContainer.encode(clusterType.rawValue, forKey: .clusterType) + if let customDNSConfiguration = customDNSConfiguration { + var customDNSConfigurationContainer = encodeContainer.nestedUnkeyedContainer(forKey: .customDNSConfiguration) + for customdnsserver0 in customDNSConfiguration { + try customDNSConfigurationContainer.encode(customdnsserver0) + } } - if let createdTimestamp = self.createdTimestamp { - try encodeContainer.encodeTimestamp(createdTimestamp, format: .epochSeconds, forKey: .createdTimestamp) + if let dedicatedServiceAccountId = self.dedicatedServiceAccountId { + try encodeContainer.encode(dedicatedServiceAccountId, forKey: .dedicatedServiceAccountId) } - if let executionRole = self.executionRole { - try encodeContainer.encode(executionRole, forKey: .executionRole) + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) } - if let initializationScript = self.initializationScript { - try encodeContainer.encode(initializationScript, forKey: .initializationScript) + if let dnsStatus = self.dnsStatus { + try encodeContainer.encode(dnsStatus.rawValue, forKey: .dnsStatus) } - if let lastModifiedTimestamp = self.lastModifiedTimestamp { - try encodeContainer.encodeTimestamp(lastModifiedTimestamp, format: .epochSeconds, forKey: .lastModifiedTimestamp) + if let environmentArn = self.environmentArn { + try encodeContainer.encode(environmentArn, forKey: .environmentArn) } - if let releaseLabel = self.releaseLabel { - try encodeContainer.encode(releaseLabel, forKey: .releaseLabel) + if let environmentId = self.environmentId { + try encodeContainer.encode(environmentId, forKey: .environmentId) + } + if let errorMessage = self.errorMessage { + try encodeContainer.encode(errorMessage, forKey: .errorMessage) + } + if let kmsKeyId = self.kmsKeyId { + try encodeContainer.encode(kmsKeyId, forKey: .kmsKeyId) + } + 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 tgwStatus = self.tgwStatus { + try encodeContainer.encode(tgwStatus.rawValue, forKey: .tgwStatus) + } + if let transitGatewayConfiguration = self.transitGatewayConfiguration { + try encodeContainer.encode(transitGatewayConfiguration, forKey: .transitGatewayConfiguration) + } + if let updateTimestamp = self.updateTimestamp { + try encodeContainer.encodeTimestamp(updateTimestamp, format: .epochSeconds, forKey: .updateTimestamp) } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterStatus.self, forKey: .status) + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let awsAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .awsAccountId) + awsAccountId = awsAccountIdDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.EnvironmentStatus.self, forKey: .status) status = statusDecoded - let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) - statusReason = statusReasonDecoded - let clusterNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clusterName) - clusterName = clusterNameDecoded - let clusterTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxClusterType.self, forKey: .clusterType) - clusterType = clusterTypeDecoded - let clusterDescriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clusterDescription) - clusterDescription = clusterDescriptionDecoded - let releaseLabelDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .releaseLabel) - releaseLabel = releaseLabelDecoded - let initializationScriptDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .initializationScript) - initializationScript = initializationScriptDecoded - let executionRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .executionRole) - executionRole = executionRoleDecoded - let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) - azMode = azModeDecoded - let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) - availabilityZoneId = availabilityZoneIdDecoded - let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) - lastModifiedTimestamp = lastModifiedTimestampDecoded - let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) - createdTimestamp = createdTimestampDecoded + let tgwStatusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.TgwStatus.self, forKey: .tgwStatus) + tgwStatus = tgwStatusDecoded + let dnsStatusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.DnsStatus.self, forKey: .dnsStatus) + dnsStatus = dnsStatusDecoded + let errorMessageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorMessage) + errorMessage = errorMessageDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let environmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentArn) + environmentArn = environmentArnDecoded + let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) + kmsKeyId = kmsKeyIdDecoded + let dedicatedServiceAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dedicatedServiceAccountId) + dedicatedServiceAccountId = dedicatedServiceAccountIdDecoded + let transitGatewayConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.TransitGatewayConfiguration.self, forKey: .transitGatewayConfiguration) + transitGatewayConfiguration = transitGatewayConfigurationDecoded + let customDNSConfigurationContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.CustomDNSServer?].self, forKey: .customDNSConfiguration) + var customDNSConfigurationDecoded0:[FinspaceClientTypes.CustomDNSServer]? = nil + if let customDNSConfigurationContainer = customDNSConfigurationContainer { + customDNSConfigurationDecoded0 = [FinspaceClientTypes.CustomDNSServer]() + for structure0 in customDNSConfigurationContainer { + if let structure0 = structure0 { + customDNSConfigurationDecoded0?.append(structure0) + } + } + } + customDNSConfiguration = customDNSConfigurationDecoded0 + let creationTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .creationTimestamp) + creationTimestamp = creationTimestampDecoded + let updateTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .updateTimestamp) + updateTimestamp = updateTimestampDecoded + let availabilityZoneIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .availabilityZoneIds) + var availabilityZoneIdsDecoded0:[Swift.String]? = nil + if let availabilityZoneIdsContainer = availabilityZoneIdsContainer { + availabilityZoneIdsDecoded0 = [Swift.String]() + for string0 in availabilityZoneIdsContainer { + if let string0 = string0 { + availabilityZoneIdsDecoded0?.append(string0) + } + } + } + availabilityZoneIds = availabilityZoneIdsDecoded0 + let certificateAuthorityArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .certificateAuthorityArn) + certificateAuthorityArn = certificateAuthorityArnDecoded } } extension FinspaceClientTypes { - /// The details of a kdb cluster. - public struct KxCluster: Swift.Equatable { - /// The availability zone identifiers for the requested regions. - public var availabilityZoneId: Swift.String? - /// The number of availability zones assigned per cluster. This can be one of the following: - /// - /// * SINGLE – Assigns one availability zone per cluster. - /// - /// * MULTI – Assigns all the availability zones per cluster. - public var azMode: FinspaceClientTypes.KxAzMode? - /// A description of the cluster. - public var clusterDescription: Swift.String? - /// A unique name for the cluster. - public var clusterName: Swift.String? - /// Specifies the type of KDB database that is being created. The following types are available: - /// - /// * HDB – A Historical Database. The data is only accessible with read-only permissions from one of the FinSpace managed kdb databases mounted to the cluster. - /// - /// * RDB – A Realtime Database. This type of database captures all the data from a ticker plant and stores it in memory until the end of day, after which it writes all of its data to a disk and reloads the HDB. This cluster type requires local storage for temporary storage of data during the savedown process. If you specify this field in your request, you must provide the savedownStorageConfiguration parameter. - /// - /// * GATEWAY – A gateway cluster allows you to access data across processes in kdb systems. It allows you to create your own routing logic using the initialization scripts and custom code. This type of cluster does not require a writable local storage. + /// The details of a kdb environment. + public struct KxEnvironment: Swift.Equatable { + /// The identifier of the availability zones where subnets for the environment are created. + public var availabilityZoneIds: [Swift.String]? + /// The unique identifier of the AWS account in which you create the kdb environment. + public var awsAccountId: Swift.String? + /// The Amazon Resource Name (ARN) of the certificate authority: + public var certificateAuthorityArn: Swift.String? + /// The timestamp at which the kdb environment was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var creationTimestamp: ClientRuntime.Date? + /// A list of DNS server name and server IP. This is used to set up Route-53 outbound resolvers. + public var customDNSConfiguration: [FinspaceClientTypes.CustomDNSServer]? + /// A unique identifier for the AWS environment infrastructure account. + public var dedicatedServiceAccountId: Swift.String? + /// A description of the kdb environment. + public var description: Swift.String? + /// The status of DNS configuration. + public var dnsStatus: FinspaceClientTypes.DnsStatus? + /// The Amazon Resource Name (ARN) of your kdb environment. + public var environmentArn: Swift.String? + /// A unique identifier for the kdb environment. + public var environmentId: Swift.String? + /// Specifies the error message that appears if a flow fails. + public var errorMessage: Swift.String? + /// The unique identifier of the KMS key. + public var kmsKeyId: Swift.String? + /// The name of the kdb environment. + public var name: Swift.String? + /// The status of the environment creation. /// - /// * GP – A general purpose cluster allows you to quickly iterate on code during development by granting greater access to system commands and enabling a fast reload of custom code. This cluster type can optionally mount databases including cache and savedown storage. For this cluster type, the node count is fixed at 1. It does not support autoscaling and supports only SINGLE AZ mode. - public var clusterType: FinspaceClientTypes.KxClusterType? - /// The timestamp at which the cluster was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var createdTimestamp: ClientRuntime.Date? - /// An IAM role that defines a set of permissions associated with a cluster. These permissions are assumed when a cluster attempts to access another cluster. - public var executionRole: 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? - /// The last time that the cluster was modified. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var lastModifiedTimestamp: ClientRuntime.Date? - /// A version of the FinSpace managed kdb to run. - public var releaseLabel: Swift.String? - /// The status of a cluster. + /// * CREATE_REQUESTED – Environment creation has been requested. /// - /// * PENDING – The cluster is pending creation. + /// * CREATING – Environment is in the process of being created. /// - /// * CREATING –The cluster creation process is in progress. + /// * FAILED_CREATION – Environment creation has failed. /// - /// * CREATE_FAILED– The cluster creation process has failed. + /// * CREATED – Environment is successfully created and is currently active. /// - /// * RUNNING – The cluster creation process is running. + /// * DELETE REQUESTED – Environment deletion has been requested. /// - /// * UPDATING – The cluster is in the process of being updated. + /// * DELETING – Environment is in the process of being deleted. /// - /// * DELETING – The cluster is in the process of being deleted. + /// * RETRY_DELETION – Initial environment deletion failed, system is reattempting delete. /// - /// * DELETED – The cluster has been deleted. + /// * DELETED – Environment has been deleted. /// - /// * DELETE_FAILED – The cluster failed to delete. - public var status: FinspaceClientTypes.KxClusterStatus? - /// The error message when a failed state occurs. - public var statusReason: Swift.String? + /// * FAILED_DELETION – Environment deletion has failed. + public var status: FinspaceClientTypes.EnvironmentStatus? + /// The status of the network configuration. + public var tgwStatus: FinspaceClientTypes.TgwStatus? + /// Specifies the transit gateway and network configuration to connect the kdb environment to an internal network. + public var transitGatewayConfiguration: FinspaceClientTypes.TransitGatewayConfiguration? + /// The timestamp at which the kdb environment was modified in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var updateTimestamp: ClientRuntime.Date? public init( - availabilityZoneId: Swift.String? = nil, - azMode: FinspaceClientTypes.KxAzMode? = nil, - clusterDescription: Swift.String? = nil, - clusterName: Swift.String? = nil, - clusterType: FinspaceClientTypes.KxClusterType? = nil, - createdTimestamp: ClientRuntime.Date? = nil, - executionRole: Swift.String? = nil, - initializationScript: Swift.String? = nil, - lastModifiedTimestamp: ClientRuntime.Date? = nil, - releaseLabel: Swift.String? = nil, - status: FinspaceClientTypes.KxClusterStatus? = nil, - statusReason: Swift.String? = nil + availabilityZoneIds: [Swift.String]? = nil, + awsAccountId: Swift.String? = nil, + certificateAuthorityArn: Swift.String? = nil, + creationTimestamp: ClientRuntime.Date? = nil, + customDNSConfiguration: [FinspaceClientTypes.CustomDNSServer]? = nil, + dedicatedServiceAccountId: Swift.String? = nil, + description: Swift.String? = nil, + dnsStatus: FinspaceClientTypes.DnsStatus? = nil, + environmentArn: Swift.String? = nil, + environmentId: Swift.String? = nil, + errorMessage: Swift.String? = nil, + kmsKeyId: Swift.String? = nil, + name: Swift.String? = nil, + status: FinspaceClientTypes.EnvironmentStatus? = nil, + tgwStatus: FinspaceClientTypes.TgwStatus? = nil, + transitGatewayConfiguration: FinspaceClientTypes.TransitGatewayConfiguration? = nil, + updateTimestamp: ClientRuntime.Date? = nil ) { - self.availabilityZoneId = availabilityZoneId - self.azMode = azMode - self.clusterDescription = clusterDescription - self.clusterName = clusterName - self.clusterType = clusterType - self.createdTimestamp = createdTimestamp - self.executionRole = executionRole - self.initializationScript = initializationScript - self.lastModifiedTimestamp = lastModifiedTimestamp - self.releaseLabel = releaseLabel + self.availabilityZoneIds = availabilityZoneIds + self.awsAccountId = awsAccountId + self.certificateAuthorityArn = certificateAuthorityArn + self.creationTimestamp = creationTimestamp + self.customDNSConfiguration = customDNSConfiguration + self.dedicatedServiceAccountId = dedicatedServiceAccountId + self.description = description + self.dnsStatus = dnsStatus + self.environmentArn = environmentArn + self.environmentId = environmentId + self.errorMessage = errorMessage + self.kmsKeyId = kmsKeyId + self.name = name self.status = status - self.statusReason = statusReason + self.tgwStatus = tgwStatus + self.transitGatewayConfiguration = transitGatewayConfiguration + self.updateTimestamp = updateTimestamp } } } -extension FinspaceClientTypes.KxClusterCodeDeploymentConfiguration: Swift.Codable { +extension FinspaceClientTypes.KxNAS1Configuration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case deploymentStrategy + case size + case type } 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) + if let size = self.size { + try encodeContainer.encode(size, forKey: .size) + } + 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 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. - /// - /// * NO_RESTART – This option updates the cluster without stopping the running q process. It is only available for GP 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. - /// - /// * 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? + let typeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxNAS1Type.self, forKey: .type) + type = typeDecoded + let sizeDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .size) + size = sizeDecoded + } +} + +extension FinspaceClientTypes { + /// The structure containing the size and type of the network attached storage (NAS_1) file system volume. + public struct KxNAS1Configuration: Swift.Equatable { + /// The size of the network attached storage. + public var size: Swift.Int? + /// The type of the network attached storage. + public var type: FinspaceClientTypes.KxNAS1Type? public init( - deploymentStrategy: FinspaceClientTypes.KxClusterCodeDeploymentStrategy? = nil + size: Swift.Int? = nil, + type: FinspaceClientTypes.KxNAS1Type? = nil ) { - self.deploymentStrategy = deploymentStrategy + self.size = size + self.type = type } } } extension FinspaceClientTypes { - public enum KxClusterCodeDeploymentStrategy: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case force - case noRestart - case rolling + public enum KxNAS1Type: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case hdd12 + case ssd1000 + case ssd250 case sdkUnknown(Swift.String) - public static var allCases: [KxClusterCodeDeploymentStrategy] { + public static var allCases: [KxNAS1Type] { return [ - .force, - .noRestart, - .rolling, + .hdd12, + .ssd1000, + .ssd250, .sdkUnknown("") ] } @@ -5016,387 +8417,644 @@ extension FinspaceClientTypes { } public var rawValue: Swift.String { switch self { - case .force: return "FORCE" - case .noRestart: return "NO_RESTART" - case .rolling: return "ROLLING" + case .hdd12: return "HDD_12" + case .ssd1000: return "SSD_1000" + case .ssd250: return "SSD_250" 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) + self = KxNAS1Type(rawValue: rawValue) ?? KxNAS1Type.sdkUnknown(rawValue) } } } -extension FinspaceClientTypes { - public enum KxClusterStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case createFailed - case creating - case deleted - case deleteFailed - case deleting - case pending - case running - case updating - case sdkUnknown(Swift.String) +extension FinspaceClientTypes.KxNode: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case availabilityZoneId + case launchTime + case nodeId + } - public static var allCases: [KxClusterStatus] { - return [ - .createFailed, - .creating, - .deleted, - .deleteFailed, - .deleting, - .pending, - .running, - .updating, - .sdkUnknown("") - ] - } - public init?(rawValue: Swift.String) { - let value = Self.allCases.first(where: { $0.rawValue == rawValue }) - self = value ?? Self.sdkUnknown(rawValue) + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let availabilityZoneId = self.availabilityZoneId { + try encodeContainer.encode(availabilityZoneId, forKey: .availabilityZoneId) } - public var rawValue: Swift.String { - switch self { - case .createFailed: return "CREATE_FAILED" - case .creating: return "CREATING" - case .deleted: return "DELETED" - case .deleteFailed: return "DELETE_FAILED" - case .deleting: return "DELETING" - case .pending: return "PENDING" - case .running: return "RUNNING" - case .updating: return "UPDATING" - case let .sdkUnknown(s): return s - } + if let launchTime = self.launchTime { + try encodeContainer.encodeTimestamp(launchTime, format: .epochSeconds, forKey: .launchTime) } - public init(from decoder: Swift.Decoder) throws { - let container = try decoder.singleValueContainer() - let rawValue = try container.decode(RawValue.self) - self = KxClusterStatus(rawValue: rawValue) ?? KxClusterStatus.sdkUnknown(rawValue) + if let nodeId = self.nodeId { + try encodeContainer.encode(nodeId, forKey: .nodeId) } } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let nodeIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nodeId) + nodeId = nodeIdDecoded + let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) + availabilityZoneId = availabilityZoneIdDecoded + let launchTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .launchTime) + launchTime = launchTimeDecoded + } } extension FinspaceClientTypes { - public enum KxClusterType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case gateway - case gp - case hdb - case rdb - case sdkUnknown(Swift.String) + /// A structure that stores metadata for a kdb node. + public struct KxNode: Swift.Equatable { + /// The identifier of the availability zones where subnets for the environment are created. + public var availabilityZoneId: Swift.String? + /// The time when a particular node is started. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var launchTime: ClientRuntime.Date? + /// A unique identifier for the node. + public var nodeId: Swift.String? - public static var allCases: [KxClusterType] { - return [ - .gateway, - .gp, - .hdb, - .rdb, - .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 .gateway: return "GATEWAY" - case .gp: return "GP" - case .hdb: return "HDB" - case .rdb: return "RDB" - 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 = KxClusterType(rawValue: rawValue) ?? KxClusterType.sdkUnknown(rawValue) + public init( + availabilityZoneId: Swift.String? = nil, + launchTime: ClientRuntime.Date? = nil, + nodeId: Swift.String? = nil + ) + { + self.availabilityZoneId = availabilityZoneId + self.launchTime = launchTime + self.nodeId = nodeId } } + } -extension FinspaceClientTypes.KxCommandLineArgument: Swift.Codable { +extension FinspaceClientTypes.KxSavedownStorageConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case key - case value + case size + case type + case volumeName } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let key = self.key { - try encodeContainer.encode(key, forKey: .key) + if let size = self.size { + try encodeContainer.encode(size, forKey: .size) } - if let value = self.value { - try encodeContainer.encode(value, forKey: .value) + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + if let volumeName = self.volumeName { + try encodeContainer.encode(volumeName, forKey: .volumeName) } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let keyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .key) - key = keyDecoded - let valueDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .value) - value = valueDecoded + let typeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxSavedownStorageType.self, forKey: .type) + type = typeDecoded + let sizeDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .size) + size = sizeDecoded + let volumeNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .volumeName) + volumeName = volumeNameDecoded } } extension FinspaceClientTypes { - /// Defines the key-value pairs to make them available inside the cluster. - public struct KxCommandLineArgument: Swift.Equatable { - /// The name of the key. - public var key: Swift.String? - /// The value of the key. - public var value: Swift.String? + /// The size and type of temporary storage that is used to hold data during the savedown process. All the data written to this storage space is lost when the cluster node is restarted. + public struct KxSavedownStorageConfiguration: Swift.Equatable { + /// The size of temporary storage in gibibytes. + public var size: Swift.Int? + /// The type of writeable storage space for temporarily storing your savedown data. The valid values are: + /// + /// * SDS01 – This type represents 3000 IOPS and io2 ebs volume type. + public var type: FinspaceClientTypes.KxSavedownStorageType? + /// The name of the kdb volume that you want to use as writeable save-down storage for clusters. + public var volumeName: Swift.String? public init( - key: Swift.String? = nil, - value: Swift.String? = nil + size: Swift.Int? = nil, + type: FinspaceClientTypes.KxSavedownStorageType? = nil, + volumeName: Swift.String? = nil ) { - self.key = key - self.value = value + self.size = size + self.type = type + self.volumeName = volumeName } } } -extension FinspaceClientTypes.KxDatabaseCacheConfiguration: Swift.Codable { +extension FinspaceClientTypes { + public enum KxSavedownStorageType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case sds01 + case sdkUnknown(Swift.String) + + public static var allCases: [KxSavedownStorageType] { + return [ + .sds01, + .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 .sds01: return "SDS01" + 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 = KxSavedownStorageType(rawValue: rawValue) ?? KxSavedownStorageType.sdkUnknown(rawValue) + } + } +} + +extension FinspaceClientTypes.KxScalingGroup: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case cacheType - case dbPaths + case availabilityZoneId + case clusters + case createdTimestamp + case hostType + case lastModifiedTimestamp + case scalingGroupName + case status + case statusReason } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let cacheType = self.cacheType { - try encodeContainer.encode(cacheType, forKey: .cacheType) + if let availabilityZoneId = self.availabilityZoneId { + try encodeContainer.encode(availabilityZoneId, forKey: .availabilityZoneId) } - if let dbPaths = dbPaths { - var dbPathsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .dbPaths) - for dbpath0 in dbPaths { - try dbPathsContainer.encode(dbpath0) + if let clusters = clusters { + var clustersContainer = encodeContainer.nestedUnkeyedContainer(forKey: .clusters) + for kxclustername0 in clusters { + try clustersContainer.encode(kxclustername0) } } + if let createdTimestamp = self.createdTimestamp { + try encodeContainer.encodeTimestamp(createdTimestamp, format: .epochSeconds, forKey: .createdTimestamp) + } + if let hostType = self.hostType { + try encodeContainer.encode(hostType, forKey: .hostType) + } + if let lastModifiedTimestamp = self.lastModifiedTimestamp { + try encodeContainer.encodeTimestamp(lastModifiedTimestamp, format: .epochSeconds, forKey: .lastModifiedTimestamp) + } + if let scalingGroupName = self.scalingGroupName { + try encodeContainer.encode(scalingGroupName, forKey: .scalingGroupName) + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + if let statusReason = self.statusReason { + try encodeContainer.encode(statusReason, forKey: .statusReason) + } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let cacheTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .cacheType) - cacheType = cacheTypeDecoded - let dbPathsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .dbPaths) - var dbPathsDecoded0:[Swift.String]? = nil - if let dbPathsContainer = dbPathsContainer { - dbPathsDecoded0 = [Swift.String]() - for string0 in dbPathsContainer { + let scalingGroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .scalingGroupName) + scalingGroupName = scalingGroupNameDecoded + let hostTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .hostType) + hostType = hostTypeDecoded + let clustersContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .clusters) + var clustersDecoded0:[Swift.String]? = nil + if let clustersContainer = clustersContainer { + clustersDecoded0 = [Swift.String]() + for string0 in clustersContainer { if let string0 = string0 { - dbPathsDecoded0?.append(string0) + clustersDecoded0?.append(string0) } } } - dbPaths = dbPathsDecoded0 + clusters = clustersDecoded0 + let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) + availabilityZoneId = availabilityZoneIdDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxScalingGroupStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded } } extension FinspaceClientTypes { - /// The structure of database cache configuration that is used for mapping database paths to cache types in clusters. - public struct KxDatabaseCacheConfiguration: Swift.Equatable { - /// The type of disk cache. This parameter is used to map the database path to cache storage. The valid values are: - /// - /// * CACHE_1000 – This type provides at least 1000 MB/s disk access throughput. - /// This member is required. - public var cacheType: Swift.String? - /// Specifies the portions of database that will be loaded into the cache for access. - /// This member is required. - public var dbPaths: [Swift.String]? + /// A structure for storing metadata of scaling group. + public struct KxScalingGroup: Swift.Equatable { + /// The identifier of the availability zones. + public var availabilityZoneId: Swift.String? + /// The list of clusters currently active in a given scaling group. + public var clusters: [Swift.String]? + /// The timestamp at which the scaling group was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// The memory and CPU capabilities of the scaling group host on which FinSpace Managed kdb clusters will be placed. + public var hostType: Swift.String? + /// The last time that the scaling group was updated in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// A unique identifier for the kdb scaling group. + public var scalingGroupName: Swift.String? + /// The status of scaling groups. + public var status: FinspaceClientTypes.KxScalingGroupStatus? + /// The error message when a failed state occurs. + public var statusReason: Swift.String? public init( - cacheType: Swift.String? = nil, - dbPaths: [Swift.String]? = nil + availabilityZoneId: Swift.String? = nil, + clusters: [Swift.String]? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + hostType: Swift.String? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + scalingGroupName: Swift.String? = nil, + status: FinspaceClientTypes.KxScalingGroupStatus? = nil, + statusReason: Swift.String? = nil ) { - self.cacheType = cacheType - self.dbPaths = dbPaths + self.availabilityZoneId = availabilityZoneId + self.clusters = clusters + self.createdTimestamp = createdTimestamp + self.hostType = hostType + self.lastModifiedTimestamp = lastModifiedTimestamp + self.scalingGroupName = scalingGroupName + self.status = status + self.statusReason = statusReason } } } -extension FinspaceClientTypes.KxDatabaseConfiguration: Swift.Codable { +extension FinspaceClientTypes.KxScalingGroupConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case cacheConfigurations - case changesetId - case databaseName + case cpu + case memoryLimit + case memoryReservation + case nodeCount + case scalingGroupName } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let cacheConfigurations = cacheConfigurations { - var cacheConfigurationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .cacheConfigurations) - for kxdatabasecacheconfiguration0 in cacheConfigurations { - try cacheConfigurationsContainer.encode(kxdatabasecacheconfiguration0) - } + if let cpu = self.cpu { + try encodeContainer.encode(cpu, forKey: .cpu) } - if let changesetId = self.changesetId { - try encodeContainer.encode(changesetId, forKey: .changesetId) + if let memoryLimit = self.memoryLimit { + try encodeContainer.encode(memoryLimit, forKey: .memoryLimit) } - if let databaseName = self.databaseName { - try encodeContainer.encode(databaseName, forKey: .databaseName) + if let memoryReservation = self.memoryReservation { + try encodeContainer.encode(memoryReservation, forKey: .memoryReservation) + } + if let nodeCount = self.nodeCount { + try encodeContainer.encode(nodeCount, forKey: .nodeCount) + } + if let scalingGroupName = self.scalingGroupName { + try encodeContainer.encode(scalingGroupName, forKey: .scalingGroupName) } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let databaseNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseName) - databaseName = databaseNameDecoded - let cacheConfigurationsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDatabaseCacheConfiguration?].self, forKey: .cacheConfigurations) - var cacheConfigurationsDecoded0:[FinspaceClientTypes.KxDatabaseCacheConfiguration]? = nil - if let cacheConfigurationsContainer = cacheConfigurationsContainer { - cacheConfigurationsDecoded0 = [FinspaceClientTypes.KxDatabaseCacheConfiguration]() - for structure0 in cacheConfigurationsContainer { - if let structure0 = structure0 { - cacheConfigurationsDecoded0?.append(structure0) - } - } - } - cacheConfigurations = cacheConfigurationsDecoded0 - let changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) - changesetId = changesetIdDecoded + let scalingGroupNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .scalingGroupName) + scalingGroupName = scalingGroupNameDecoded + let memoryLimitDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .memoryLimit) + memoryLimit = memoryLimitDecoded + let memoryReservationDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .memoryReservation) + memoryReservation = memoryReservationDecoded + let nodeCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .nodeCount) + nodeCount = nodeCountDecoded + let cpuDecoded = try containerValues.decodeIfPresent(Swift.Double.self, forKey: .cpu) + cpu = cpuDecoded } } extension FinspaceClientTypes { - /// The configuration of data that is available for querying from this database. - public struct KxDatabaseConfiguration: Swift.Equatable { - /// Configuration details for the disk cache used to increase performance reading from a kdb database mounted to the cluster. - public var cacheConfigurations: [FinspaceClientTypes.KxDatabaseCacheConfiguration]? - /// A unique identifier of the changeset that is associated with the cluster. - public var changesetId: Swift.String? - /// The name of the kdb database. When this parameter is specified in the structure, S3 with the whole database is included by default. + /// The structure that stores the capacity configuration details of a scaling group. + public struct KxScalingGroupConfiguration: Swift.Equatable { + /// The number of vCPUs that you want to reserve for each node of this kdb cluster on the scaling group host. + public var cpu: Swift.Double? + /// An optional hard limit on the amount of memory a kdb cluster can use. + public var memoryLimit: Swift.Int? + /// A reservation of the minimum amount of memory that should be available on the scaling group for a kdb cluster to be successfully placed in a scaling group. /// This member is required. - public var databaseName: Swift.String? + public var memoryReservation: Swift.Int? + /// The number of kdb cluster nodes. + /// This member is required. + public var nodeCount: Swift.Int? + /// A unique identifier for the kdb scaling group. + /// This member is required. + public var scalingGroupName: Swift.String? public init( - cacheConfigurations: [FinspaceClientTypes.KxDatabaseCacheConfiguration]? = nil, - changesetId: Swift.String? = nil, - databaseName: Swift.String? = nil + cpu: Swift.Double? = nil, + memoryLimit: Swift.Int? = nil, + memoryReservation: Swift.Int? = nil, + nodeCount: Swift.Int? = nil, + scalingGroupName: Swift.String? = nil ) { - self.cacheConfigurations = cacheConfigurations - self.changesetId = changesetId - self.databaseName = databaseName + self.cpu = cpu + self.memoryLimit = memoryLimit + self.memoryReservation = memoryReservation + self.nodeCount = nodeCount + self.scalingGroupName = scalingGroupName } } } -extension FinspaceClientTypes.KxDatabaseListEntry: Swift.Codable { +extension FinspaceClientTypes { + public enum KxScalingGroupStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case active + case createFailed + case creating + case deleted + case deleteFailed + case deleting + case sdkUnknown(Swift.String) + + public static var allCases: [KxScalingGroupStatus] { + return [ + .active, + .createFailed, + .creating, + .deleted, + .deleteFailed, + .deleting, + .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 .createFailed: return "CREATE_FAILED" + case .creating: return "CREATING" + case .deleted: return "DELETED" + case .deleteFailed: return "DELETE_FAILED" + case .deleting: return "DELETING" + 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 = KxScalingGroupStatus(rawValue: rawValue) ?? KxScalingGroupStatus.sdkUnknown(rawValue) + } + } +} + +extension FinspaceClientTypes.KxUser: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case createdTimestamp - case databaseName - case lastModifiedTimestamp + case createTimestamp + case iamRole + case updateTimestamp + case userArn + case userName } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let createdTimestamp = self.createdTimestamp { - try encodeContainer.encodeTimestamp(createdTimestamp, format: .epochSeconds, forKey: .createdTimestamp) + if let createTimestamp = self.createTimestamp { + try encodeContainer.encodeTimestamp(createTimestamp, format: .epochSeconds, forKey: .createTimestamp) } - if let databaseName = self.databaseName { - try encodeContainer.encode(databaseName, forKey: .databaseName) + if let iamRole = self.iamRole { + try encodeContainer.encode(iamRole, forKey: .iamRole) } - if let lastModifiedTimestamp = self.lastModifiedTimestamp { - try encodeContainer.encodeTimestamp(lastModifiedTimestamp, format: .epochSeconds, forKey: .lastModifiedTimestamp) + if let updateTimestamp = self.updateTimestamp { + try encodeContainer.encodeTimestamp(updateTimestamp, format: .epochSeconds, forKey: .updateTimestamp) + } + if let userArn = self.userArn { + try encodeContainer.encode(userArn, forKey: .userArn) + } + if let userName = self.userName { + try encodeContainer.encode(userName, forKey: .userName) } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let databaseNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseName) - databaseName = databaseNameDecoded - let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) - createdTimestamp = createdTimestampDecoded - let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) - lastModifiedTimestamp = lastModifiedTimestampDecoded + let userArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userArn) + userArn = userArnDecoded + let userNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userName) + userName = userNameDecoded + let iamRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .iamRole) + iamRole = iamRoleDecoded + let createTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createTimestamp) + createTimestamp = createTimestampDecoded + let updateTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .updateTimestamp) + updateTimestamp = updateTimestampDecoded } } extension FinspaceClientTypes { - /// Details about a FinSpace managed kdb database - public struct KxDatabaseListEntry: Swift.Equatable { - /// The timestamp at which the database was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var createdTimestamp: ClientRuntime.Date? - /// The name of the kdb database. - public var databaseName: Swift.String? - /// The last time that the database was modified. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var lastModifiedTimestamp: ClientRuntime.Date? + /// A structure that stores metadata for a kdb user. + public struct KxUser: Swift.Equatable { + /// The timestamp at which the kdb user was created. + public var createTimestamp: ClientRuntime.Date? + /// The IAM role ARN that is associated with the user. + public var iamRole: Swift.String? + /// The timestamp at which the kdb user was updated. + public var updateTimestamp: ClientRuntime.Date? + /// The Amazon Resource Name (ARN) that identifies the user. For more information about ARNs and how to use ARNs in policies, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) in the IAM User Guide. + public var userArn: Swift.String? + /// A unique identifier for the user. + public var userName: Swift.String? public init( - createdTimestamp: ClientRuntime.Date? = nil, - databaseName: Swift.String? = nil, - lastModifiedTimestamp: ClientRuntime.Date? = nil + createTimestamp: ClientRuntime.Date? = nil, + iamRole: Swift.String? = nil, + updateTimestamp: ClientRuntime.Date? = nil, + userArn: Swift.String? = nil, + userName: Swift.String? = nil ) { - self.createdTimestamp = createdTimestamp - self.databaseName = databaseName - self.lastModifiedTimestamp = lastModifiedTimestamp + self.createTimestamp = createTimestamp + self.iamRole = iamRole + self.updateTimestamp = updateTimestamp + self.userArn = userArn + self.userName = userName } } } -extension FinspaceClientTypes.KxDeploymentConfiguration: Swift.Codable { +extension FinspaceClientTypes.KxVolume: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case deploymentStrategy + case availabilityZoneIds + case azMode + case createdTimestamp + case description + case lastModifiedTimestamp + case status + case statusReason + case volumeName + case volumeType } 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) + if let availabilityZoneIds = availabilityZoneIds { + var availabilityZoneIdsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .availabilityZoneIds) + for availabilityzoneid0 in availabilityZoneIds { + try availabilityZoneIdsContainer.encode(availabilityzoneid0) + } + } + if let azMode = self.azMode { + try encodeContainer.encode(azMode.rawValue, forKey: .azMode) + } + if let createdTimestamp = self.createdTimestamp { + try encodeContainer.encodeTimestamp(createdTimestamp, format: .epochSeconds, forKey: .createdTimestamp) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let lastModifiedTimestamp = self.lastModifiedTimestamp { + try encodeContainer.encodeTimestamp(lastModifiedTimestamp, format: .epochSeconds, forKey: .lastModifiedTimestamp) + } + 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 volumeName = self.volumeName { + try encodeContainer.encode(volumeName, forKey: .volumeName) + } + if let volumeType = self.volumeType { + try encodeContainer.encode(volumeType.rawValue, forKey: .volumeType) } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let deploymentStrategyDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxDeploymentStrategy.self, forKey: .deploymentStrategy) - deploymentStrategy = deploymentStrategyDecoded + let volumeNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .volumeName) + volumeName = volumeNameDecoded + let volumeTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxVolumeType.self, forKey: .volumeType) + volumeType = volumeTypeDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxVolumeStatus.self, forKey: .status) + status = statusDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) + azMode = azModeDecoded + let availabilityZoneIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .availabilityZoneIds) + var availabilityZoneIdsDecoded0:[Swift.String]? = nil + if let availabilityZoneIdsContainer = availabilityZoneIdsContainer { + availabilityZoneIdsDecoded0 = [Swift.String]() + for string0 in availabilityZoneIdsContainer { + if let string0 = string0 { + availabilityZoneIdsDecoded0?.append(string0) + } + } + } + availabilityZoneIds = availabilityZoneIdsDecoded0 + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded } } 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 cluster. - public struct KxDeploymentConfiguration: Swift.Equatable { - /// The type of deployment that you want on a cluster. + /// The structure that contains the metadata of the volume. + public struct KxVolume: Swift.Equatable { + /// The identifier of the availability zones. + public var availabilityZoneIds: [Swift.String]? + /// The number of availability zones assigned to the volume. Currently, only SINGLE is supported. + public var azMode: FinspaceClientTypes.KxAzMode? + /// The timestamp at which the volume was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// A description of the volume. + public var description: Swift.String? + /// The last time that the volume was updated in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// The status of volume. /// - /// * ROLLING – This options updates the cluster by stopping the exiting q process and starting a new q process with updated configuration. + /// * CREATING – The volume creation is in progress. /// - /// * 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? + /// * CREATE_FAILED – The volume creation has failed. + /// + /// * ACTIVE – The volume is active. + /// + /// * UPDATING – The volume is in the process of being updated. + /// + /// * UPDATE_FAILED – The update action failed. + /// + /// * UPDATED – The volume is successfully updated. + /// + /// * DELETING – The volume is in the process of being deleted. + /// + /// * DELETE_FAILED – The system failed to delete the volume. + /// + /// * DELETED – The volume is successfully deleted. + public var status: FinspaceClientTypes.KxVolumeStatus? + /// The error message when a failed state occurs. + public var statusReason: Swift.String? + /// A unique identifier for the volume. + public var volumeName: Swift.String? + /// The type of file system volume. Currently, FinSpace only supports NAS_1 volume type. + public var volumeType: FinspaceClientTypes.KxVolumeType? public init( - deploymentStrategy: FinspaceClientTypes.KxDeploymentStrategy? = nil + availabilityZoneIds: [Swift.String]? = nil, + azMode: FinspaceClientTypes.KxAzMode? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + description: Swift.String? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + status: FinspaceClientTypes.KxVolumeStatus? = nil, + statusReason: Swift.String? = nil, + volumeName: Swift.String? = nil, + volumeType: FinspaceClientTypes.KxVolumeType? = nil ) { - self.deploymentStrategy = deploymentStrategy + self.availabilityZoneIds = availabilityZoneIds + self.azMode = azMode + self.createdTimestamp = createdTimestamp + self.description = description + self.lastModifiedTimestamp = lastModifiedTimestamp + self.status = status + self.statusReason = statusReason + self.volumeName = volumeName + self.volumeType = volumeType } } } extension FinspaceClientTypes { - public enum KxDeploymentStrategy: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case noRestart - case rolling + public enum KxVolumeStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case active + case createFailed + case creating + case deleted + case deleteFailed + case deleting + case updated + case updateFailed + case updating case sdkUnknown(Swift.String) - public static var allCases: [KxDeploymentStrategy] { + public static var allCases: [KxVolumeStatus] { return [ - .noRestart, - .rolling, + .active, + .createFailed, + .creating, + .deleted, + .deleteFailed, + .deleting, + .updated, + .updateFailed, + .updating, .sdkUnknown("") ] } @@ -5406,639 +9064,658 @@ extension FinspaceClientTypes { } public var rawValue: Swift.String { switch self { - case .noRestart: return "NO_RESTART" - case .rolling: return "ROLLING" + case .active: return "ACTIVE" + case .createFailed: return "CREATE_FAILED" + case .creating: return "CREATING" + case .deleted: return "DELETED" + case .deleteFailed: return "DELETE_FAILED" + case .deleting: return "DELETING" + case .updated: return "UPDATED" + case .updateFailed: return "UPDATE_FAILED" + case .updating: return "UPDATING" 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 = KxDeploymentStrategy(rawValue: rawValue) ?? KxDeploymentStrategy.sdkUnknown(rawValue) + self = KxVolumeStatus(rawValue: rawValue) ?? KxVolumeStatus.sdkUnknown(rawValue) } } } -extension FinspaceClientTypes.KxEnvironment: Swift.Codable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case availabilityZoneIds - case awsAccountId - case certificateAuthorityArn - case creationTimestamp - case customDNSConfiguration - case dedicatedServiceAccountId - case description - case dnsStatus - case environmentArn - case environmentId - case errorMessage - case kmsKeyId - case name - case status - case tgwStatus - case transitGatewayConfiguration - case updateTimestamp - } +extension FinspaceClientTypes { + public enum KxVolumeType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case nas1 + case sdkUnknown(Swift.String) - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let availabilityZoneIds = availabilityZoneIds { - var availabilityZoneIdsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .availabilityZoneIds) - for availabilityzoneid0 in availabilityZoneIds { - try availabilityZoneIdsContainer.encode(availabilityzoneid0) - } - } - if let awsAccountId = self.awsAccountId { - try encodeContainer.encode(awsAccountId, forKey: .awsAccountId) - } - if let certificateAuthorityArn = self.certificateAuthorityArn { - try encodeContainer.encode(certificateAuthorityArn, forKey: .certificateAuthorityArn) + public static var allCases: [KxVolumeType] { + return [ + .nas1, + .sdkUnknown("") + ] } - if let creationTimestamp = self.creationTimestamp { - try encodeContainer.encodeTimestamp(creationTimestamp, format: .epochSeconds, forKey: .creationTimestamp) + public init?(rawValue: Swift.String) { + let value = Self.allCases.first(where: { $0.rawValue == rawValue }) + self = value ?? Self.sdkUnknown(rawValue) } - if let customDNSConfiguration = customDNSConfiguration { - var customDNSConfigurationContainer = encodeContainer.nestedUnkeyedContainer(forKey: .customDNSConfiguration) - for customdnsserver0 in customDNSConfiguration { - try customDNSConfigurationContainer.encode(customdnsserver0) + public var rawValue: Swift.String { + switch self { + case .nas1: return "NAS_1" + case let .sdkUnknown(s): return s } } - if let dedicatedServiceAccountId = self.dedicatedServiceAccountId { - try encodeContainer.encode(dedicatedServiceAccountId, forKey: .dedicatedServiceAccountId) - } - if let description = self.description { - try encodeContainer.encode(description, forKey: .description) - } - if let dnsStatus = self.dnsStatus { - try encodeContainer.encode(dnsStatus.rawValue, forKey: .dnsStatus) - } - if let environmentArn = self.environmentArn { - try encodeContainer.encode(environmentArn, forKey: .environmentArn) - } - if let environmentId = self.environmentId { - try encodeContainer.encode(environmentId, forKey: .environmentId) - } - if let errorMessage = self.errorMessage { - try encodeContainer.encode(errorMessage, forKey: .errorMessage) - } - if let kmsKeyId = self.kmsKeyId { - try encodeContainer.encode(kmsKeyId, forKey: .kmsKeyId) - } - if let name = self.name { - try encodeContainer.encode(name, forKey: .name) - } - if let status = self.status { - try encodeContainer.encode(status.rawValue, forKey: .status) + public init(from decoder: Swift.Decoder) throws { + let container = try decoder.singleValueContainer() + let rawValue = try container.decode(RawValue.self) + self = KxVolumeType(rawValue: rawValue) ?? KxVolumeType.sdkUnknown(rawValue) } - if let tgwStatus = self.tgwStatus { - try encodeContainer.encode(tgwStatus.rawValue, forKey: .tgwStatus) + } +} + +extension LimitExceededException { + 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: LimitExceededExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + } else { + self.properties.message = nil } - if let transitGatewayConfiguration = self.transitGatewayConfiguration { - try encodeContainer.encode(transitGatewayConfiguration, forKey: .transitGatewayConfiguration) + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// A service limit or quota is exceeded. +public struct LimitExceededException: 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 { "LimitExceededException" } + 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 LimitExceededExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension LimitExceededExceptionBody: 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 ListEnvironmentsInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } + if let maxResults = maxResults { + let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) + items.append(maxResultsQueryItem) + } + return items } - if let updateTimestamp = self.updateTimestamp { - try encodeContainer.encodeTimestamp(updateTimestamp, format: .epochSeconds, forKey: .updateTimestamp) + } +} + +extension ListEnvironmentsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/environment" + } +} + +public struct ListEnvironmentsInput: Swift.Equatable { + /// The maximum number of results to return in this request. + public var maxResults: Swift.Int? + /// A token generated by FinSpace that specifies where to continue pagination if a previous request was truncated. To get the next set of pages, pass in the nextTokennextToken value from the response object of the previous page call. + public var nextToken: Swift.String? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListEnvironmentsInputBody: Swift.Equatable { +} + +extension ListEnvironmentsInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension ListEnvironmentsOutput: 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: ListEnvironmentsOutputBody = try responseDecoder.decode(responseBody: data) + self.environments = output.environments + self.nextToken = output.nextToken + } else { + self.environments = nil + self.nextToken = nil } } +} + +public struct ListEnvironmentsOutput: Swift.Equatable { + /// A list of all of your FinSpace environments. + public var environments: [FinspaceClientTypes.Environment]? + /// A token that you can use in a subsequent call to retrieve the next set of results. + public var nextToken: Swift.String? + + public init( + environments: [FinspaceClientTypes.Environment]? = nil, + nextToken: Swift.String? = nil + ) + { + self.environments = environments + self.nextToken = nextToken + } +} + +struct ListEnvironmentsOutputBody: Swift.Equatable { + let environments: [FinspaceClientTypes.Environment]? + let nextToken: Swift.String? +} + +extension ListEnvironmentsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case environments + case nextToken + } 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 environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) - environmentId = environmentIdDecoded - let awsAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .awsAccountId) - awsAccountId = awsAccountIdDecoded - let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.EnvironmentStatus.self, forKey: .status) - status = statusDecoded - let tgwStatusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.TgwStatus.self, forKey: .tgwStatus) - tgwStatus = tgwStatusDecoded - let dnsStatusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.DnsStatus.self, forKey: .dnsStatus) - dnsStatus = dnsStatusDecoded - let errorMessageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorMessage) - errorMessage = errorMessageDecoded - let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) - description = descriptionDecoded - let environmentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentArn) - environmentArn = environmentArnDecoded - let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) - kmsKeyId = kmsKeyIdDecoded - let dedicatedServiceAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dedicatedServiceAccountId) - dedicatedServiceAccountId = dedicatedServiceAccountIdDecoded - let transitGatewayConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.TransitGatewayConfiguration.self, forKey: .transitGatewayConfiguration) - transitGatewayConfiguration = transitGatewayConfigurationDecoded - let customDNSConfigurationContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.CustomDNSServer?].self, forKey: .customDNSConfiguration) - var customDNSConfigurationDecoded0:[FinspaceClientTypes.CustomDNSServer]? = nil - if let customDNSConfigurationContainer = customDNSConfigurationContainer { - customDNSConfigurationDecoded0 = [FinspaceClientTypes.CustomDNSServer]() - for structure0 in customDNSConfigurationContainer { + let environmentsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.Environment?].self, forKey: .environments) + var environmentsDecoded0:[FinspaceClientTypes.Environment]? = nil + if let environmentsContainer = environmentsContainer { + environmentsDecoded0 = [FinspaceClientTypes.Environment]() + for structure0 in environmentsContainer { if let structure0 = structure0 { - customDNSConfigurationDecoded0?.append(structure0) - } - } - } - customDNSConfiguration = customDNSConfigurationDecoded0 - let creationTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .creationTimestamp) - creationTimestamp = creationTimestampDecoded - let updateTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .updateTimestamp) - updateTimestamp = updateTimestampDecoded - let availabilityZoneIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .availabilityZoneIds) - var availabilityZoneIdsDecoded0:[Swift.String]? = nil - if let availabilityZoneIdsContainer = availabilityZoneIdsContainer { - availabilityZoneIdsDecoded0 = [Swift.String]() - for string0 in availabilityZoneIdsContainer { - if let string0 = string0 { - availabilityZoneIdsDecoded0?.append(string0) + environmentsDecoded0?.append(structure0) } } } - availabilityZoneIds = availabilityZoneIdsDecoded0 - let certificateAuthorityArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .certificateAuthorityArn) - certificateAuthorityArn = certificateAuthorityArnDecoded + environments = environmentsDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded } } -extension FinspaceClientTypes { - /// The details of a kdb environment. - public struct KxEnvironment: Swift.Equatable { - /// The identifier of the availability zones where subnets for the environment are created. - public var availabilityZoneIds: [Swift.String]? - /// The unique identifier of the AWS account in which you create the kdb environment. - public var awsAccountId: Swift.String? - /// The Amazon Resource Name (ARN) of the certificate authority: - public var certificateAuthorityArn: Swift.String? - /// The timestamp at which the kdb environment was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var creationTimestamp: ClientRuntime.Date? - /// A list of DNS server name and server IP. This is used to set up Route-53 outbound resolvers. - public var customDNSConfiguration: [FinspaceClientTypes.CustomDNSServer]? - /// A unique identifier for the AWS environment infrastructure account. - public var dedicatedServiceAccountId: Swift.String? - /// A description of the kdb environment. - public var description: Swift.String? - /// The status of DNS configuration. - public var dnsStatus: FinspaceClientTypes.DnsStatus? - /// The Amazon Resource Name (ARN) of your kdb environment. - public var environmentArn: Swift.String? - /// A unique identifier for the kdb environment. - public var environmentId: Swift.String? - /// Specifies the error message that appears if a flow fails. - public var errorMessage: Swift.String? - /// The unique identifier of the KMS key. - public var kmsKeyId: Swift.String? - /// The name of the kdb environment. - public var name: Swift.String? - /// The status of the environment creation. - /// - /// * CREATE_REQUESTED – Environment creation has been requested. - /// - /// * CREATING – Environment is in the process of being created. - /// - /// * FAILED_CREATION – Environment creation has failed. - /// - /// * CREATED – Environment is successfully created and is currently active. - /// - /// * DELETE REQUESTED – Environment deletion has been requested. - /// - /// * DELETING – Environment is in the process of being deleted. - /// - /// * RETRY_DELETION – Initial environment deletion failed, system is reattempting delete. - /// - /// * DELETED – Environment has been deleted. - /// - /// * FAILED_DELETION – Environment deletion has failed. - public var status: FinspaceClientTypes.EnvironmentStatus? - /// The status of the network configuration. - public var tgwStatus: FinspaceClientTypes.TgwStatus? - /// Specifies the transit gateway and network configuration to connect the kdb environment to an internal network. - public var transitGatewayConfiguration: FinspaceClientTypes.TransitGatewayConfiguration? - /// The timestamp at which the kdb environment was modified in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var updateTimestamp: ClientRuntime.Date? - - public init( - availabilityZoneIds: [Swift.String]? = nil, - awsAccountId: Swift.String? = nil, - certificateAuthorityArn: Swift.String? = nil, - creationTimestamp: ClientRuntime.Date? = nil, - customDNSConfiguration: [FinspaceClientTypes.CustomDNSServer]? = nil, - dedicatedServiceAccountId: Swift.String? = nil, - description: Swift.String? = nil, - dnsStatus: FinspaceClientTypes.DnsStatus? = nil, - environmentArn: Swift.String? = nil, - environmentId: Swift.String? = nil, - errorMessage: Swift.String? = nil, - kmsKeyId: Swift.String? = nil, - name: Swift.String? = nil, - status: FinspaceClientTypes.EnvironmentStatus? = nil, - tgwStatus: FinspaceClientTypes.TgwStatus? = nil, - transitGatewayConfiguration: FinspaceClientTypes.TransitGatewayConfiguration? = nil, - updateTimestamp: ClientRuntime.Date? = nil - ) - { - self.availabilityZoneIds = availabilityZoneIds - self.awsAccountId = awsAccountId - self.certificateAuthorityArn = certificateAuthorityArn - self.creationTimestamp = creationTimestamp - self.customDNSConfiguration = customDNSConfiguration - self.dedicatedServiceAccountId = dedicatedServiceAccountId - self.description = description - self.dnsStatus = dnsStatus - self.environmentArn = environmentArn - self.environmentId = environmentId - self.errorMessage = errorMessage - self.kmsKeyId = kmsKeyId - self.name = name - self.status = status - self.tgwStatus = tgwStatus - self.transitGatewayConfiguration = transitGatewayConfiguration - self.updateTimestamp = updateTimestamp +enum ListEnvironmentsOutputError: 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 "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 FinspaceClientTypes.KxNode: Swift.Codable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case availabilityZoneId - case launchTime - case nodeId +extension ListKxChangesetsInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } + if let maxResults = maxResults { + let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) + items.append(maxResultsQueryItem) + } + return items + } } +} - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let availabilityZoneId = self.availabilityZoneId { - try encodeContainer.encode(availabilityZoneId, forKey: .availabilityZoneId) - } - if let launchTime = self.launchTime { - try encodeContainer.encodeTimestamp(launchTime, format: .epochSeconds, forKey: .launchTime) +extension ListKxChangesetsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil } - if let nodeId = self.nodeId { - try encodeContainer.encode(nodeId, forKey: .nodeId) + guard let databaseName = databaseName else { + return nil } + return "/kx/environments/\(environmentId.urlPercentEncoding())/databases/\(databaseName.urlPercentEncoding())/changesets" + } +} + +public struct ListKxChangesetsInput: Swift.Equatable { + /// The name of the kdb database. + /// This member is required. + public var databaseName: Swift.String? + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? + /// The maximum number of results to return in this request. + public var maxResults: Swift.Int? + /// A token that indicates where a results page should begin. + public var nextToken: Swift.String? + + public init( + databaseName: Swift.String? = nil, + environmentId: Swift.String? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.databaseName = databaseName + self.environmentId = environmentId + self.maxResults = maxResults + self.nextToken = nextToken } +} + +struct ListKxChangesetsInputBody: Swift.Equatable { +} + +extension ListKxChangesetsInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let nodeIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nodeId) - nodeId = nodeIdDecoded - let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) - availabilityZoneId = availabilityZoneIdDecoded - let launchTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .launchTime) - launchTime = launchTimeDecoded } } -extension FinspaceClientTypes { - /// A structure that stores metadata for a kdb node. - public struct KxNode: Swift.Equatable { - /// The identifier of the availability zones where subnets for the environment are created. - public var availabilityZoneId: Swift.String? - /// The time when a particular node is started. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. - public var launchTime: ClientRuntime.Date? - /// A unique identifier for the node. - public var nodeId: Swift.String? - - public init( - availabilityZoneId: Swift.String? = nil, - launchTime: ClientRuntime.Date? = nil, - nodeId: Swift.String? = nil - ) - { - self.availabilityZoneId = availabilityZoneId - self.launchTime = launchTime - self.nodeId = nodeId +extension ListKxChangesetsOutput: 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: ListKxChangesetsOutputBody = try responseDecoder.decode(responseBody: data) + self.kxChangesets = output.kxChangesets + self.nextToken = output.nextToken + } else { + self.kxChangesets = nil + self.nextToken = nil } } - } -extension FinspaceClientTypes.KxSavedownStorageConfiguration: Swift.Codable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case size - case type +public struct ListKxChangesetsOutput: Swift.Equatable { + /// A list of changesets for a database. + public var kxChangesets: [FinspaceClientTypes.KxChangesetListEntry]? + /// A token that indicates where a results page should begin. + public var nextToken: Swift.String? + + public init( + kxChangesets: [FinspaceClientTypes.KxChangesetListEntry]? = nil, + nextToken: Swift.String? = nil + ) + { + self.kxChangesets = kxChangesets + self.nextToken = nextToken } +} - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let size = self.size { - try encodeContainer.encode(size, forKey: .size) - } - if let type = self.type { - try encodeContainer.encode(type.rawValue, forKey: .type) - } +struct ListKxChangesetsOutputBody: Swift.Equatable { + let kxChangesets: [FinspaceClientTypes.KxChangesetListEntry]? + let nextToken: Swift.String? +} + +extension ListKxChangesetsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case kxChangesets + case nextToken } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let typeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxSavedownStorageType.self, forKey: .type) - type = typeDecoded - let sizeDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .size) - size = sizeDecoded + let kxChangesetsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxChangesetListEntry?].self, forKey: .kxChangesets) + var kxChangesetsDecoded0:[FinspaceClientTypes.KxChangesetListEntry]? = nil + if let kxChangesetsContainer = kxChangesetsContainer { + kxChangesetsDecoded0 = [FinspaceClientTypes.KxChangesetListEntry]() + for structure0 in kxChangesetsContainer { + if let structure0 = structure0 { + kxChangesetsDecoded0?.append(structure0) + } + } + } + kxChangesets = kxChangesetsDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded } } -extension FinspaceClientTypes { - /// The size and type of temporary storage that is used to hold data during the savedown process. All the data written to this storage space is lost when the cluster node is restarted. - public struct KxSavedownStorageConfiguration: Swift.Equatable { - /// The size of temporary storage in gibibytes. - /// This member is required. - public var size: Swift.Int? - /// The type of writeable storage space for temporarily storing your savedown data. The valid values are: - /// - /// * SDS01 – This type represents 3000 IOPS and io2 ebs volume type. - /// This member is required. - public var type: FinspaceClientTypes.KxSavedownStorageType? - - public init( - size: Swift.Int? = nil, - type: FinspaceClientTypes.KxSavedownStorageType? = nil - ) - { - self.size = size - self.type = type +enum ListKxChangesetsOutputError: 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 "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 FinspaceClientTypes { - public enum KxSavedownStorageType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case sds01 - case sdkUnknown(Swift.String) - - public static var allCases: [KxSavedownStorageType] { - return [ - .sds01, - .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 .sds01: return "SDS01" - case let .sdkUnknown(s): return s +extension ListKxClusterNodesInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) } - } - public init(from decoder: Swift.Decoder) throws { - let container = try decoder.singleValueContainer() - let rawValue = try container.decode(RawValue.self) - self = KxSavedownStorageType(rawValue: rawValue) ?? KxSavedownStorageType.sdkUnknown(rawValue) + if let maxResults = maxResults { + let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) + items.append(maxResultsQueryItem) + } + return items } } } -extension FinspaceClientTypes.KxUser: Swift.Codable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case createTimestamp - case iamRole - case updateTimestamp - case userArn - case userName - } - - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let createTimestamp = self.createTimestamp { - try encodeContainer.encodeTimestamp(createTimestamp, format: .epochSeconds, forKey: .createTimestamp) - } - if let iamRole = self.iamRole { - try encodeContainer.encode(iamRole, forKey: .iamRole) - } - if let updateTimestamp = self.updateTimestamp { - try encodeContainer.encodeTimestamp(updateTimestamp, format: .epochSeconds, forKey: .updateTimestamp) - } - if let userArn = self.userArn { - try encodeContainer.encode(userArn, forKey: .userArn) +extension ListKxClusterNodesInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil } - if let userName = self.userName { - try encodeContainer.encode(userName, forKey: .userName) + guard let clusterName = clusterName else { + return nil } - } - - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let userArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userArn) - userArn = userArnDecoded - let userNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userName) - userName = userNameDecoded - let iamRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .iamRole) - iamRole = iamRoleDecoded - let createTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createTimestamp) - createTimestamp = createTimestampDecoded - let updateTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .updateTimestamp) - updateTimestamp = updateTimestampDecoded + return "/kx/environments/\(environmentId.urlPercentEncoding())/clusters/\(clusterName.urlPercentEncoding())/nodes" } } -extension FinspaceClientTypes { - /// A structure that stores metadata for a kdb user. - public struct KxUser: Swift.Equatable { - /// The timestamp at which the kdb user was created. - public var createTimestamp: ClientRuntime.Date? - /// The IAM role ARN that is associated with the user. - public var iamRole: Swift.String? - /// The timestamp at which the kdb user was updated. - public var updateTimestamp: ClientRuntime.Date? - /// The Amazon Resource Name (ARN) that identifies the user. For more information about ARNs and how to use ARNs in policies, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html) in the IAM User Guide. - public var userArn: Swift.String? - /// A unique identifier for the user. - public var userName: Swift.String? +public struct ListKxClusterNodesInput: Swift.Equatable { + /// A unique name for the cluster. + /// This member is required. + public var clusterName: Swift.String? + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? + /// The maximum number of results to return in this request. + public var maxResults: Swift.Int? + /// A token that indicates where a results page should begin. + public var nextToken: Swift.String? - public init( - createTimestamp: ClientRuntime.Date? = nil, - iamRole: Swift.String? = nil, - updateTimestamp: ClientRuntime.Date? = nil, - userArn: Swift.String? = nil, - userName: Swift.String? = nil - ) - { - self.createTimestamp = createTimestamp - self.iamRole = iamRole - self.updateTimestamp = updateTimestamp - self.userArn = userArn - self.userName = userName - } + public init( + clusterName: Swift.String? = nil, + environmentId: Swift.String? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.clusterName = clusterName + self.environmentId = environmentId + self.maxResults = maxResults + self.nextToken = nextToken } +} +struct ListKxClusterNodesInputBody: Swift.Equatable { } -extension LimitExceededException { - public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { +extension ListKxClusterNodesInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension ListKxClusterNodesOutput: 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: LimitExceededExceptionBody = try responseDecoder.decode(responseBody: data) - self.properties.message = output.message + let output: ListKxClusterNodesOutputBody = try responseDecoder.decode(responseBody: data) + self.nextToken = output.nextToken + self.nodes = output.nodes } else { - self.properties.message = nil + self.nextToken = nil + self.nodes = nil } - self.httpResponse = httpResponse - self.requestID = requestID - self.message = message } } -/// A service limit or quota is exceeded. -public struct LimitExceededException: 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 { "LimitExceededException" } - 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 struct ListKxClusterNodesOutput: Swift.Equatable { + /// A token that indicates where a results page should begin. + public var nextToken: Swift.String? + /// A list of nodes associated with the cluster. + public var nodes: [FinspaceClientTypes.KxNode]? public init( - message: Swift.String? = nil + nextToken: Swift.String? = nil, + nodes: [FinspaceClientTypes.KxNode]? = nil ) { - self.properties.message = message + self.nextToken = nextToken + self.nodes = nodes } } -struct LimitExceededExceptionBody: Swift.Equatable { - let message: Swift.String? +struct ListKxClusterNodesOutputBody: Swift.Equatable { + let nodes: [FinspaceClientTypes.KxNode]? + let nextToken: Swift.String? } -extension LimitExceededExceptionBody: Swift.Decodable { +extension ListKxClusterNodesOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case message + case nextToken + case nodes } 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 + let nodesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxNode?].self, forKey: .nodes) + var nodesDecoded0:[FinspaceClientTypes.KxNode]? = nil + if let nodesContainer = nodesContainer { + nodesDecoded0 = [FinspaceClientTypes.KxNode]() + for structure0 in nodesContainer { + if let structure0 = structure0 { + nodesDecoded0?.append(structure0) + } + } + } + nodes = nodesDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded } } -extension ListEnvironmentsInput: ClientRuntime.QueryItemProvider { +enum ListKxClusterNodesOutputError: 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 "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 ListKxClustersInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { var items = [ClientRuntime.URLQueryItem]() - if let nextToken = nextToken { - let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) - items.append(nextTokenQueryItem) + if let clusterType = clusterType { + let clusterTypeQueryItem = ClientRuntime.URLQueryItem(name: "clusterType".urlPercentEncoding(), value: Swift.String(clusterType.rawValue).urlPercentEncoding()) + items.append(clusterTypeQueryItem) } if let maxResults = maxResults { let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) items.append(maxResultsQueryItem) } + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } return items } } } -extension ListEnvironmentsInput: ClientRuntime.URLPathProvider { +extension ListKxClustersInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - return "/environment" + guard let environmentId = environmentId else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/clusters" } } -public struct ListEnvironmentsInput: Swift.Equatable { +public struct ListKxClustersInput: Swift.Equatable { + /// Specifies the type of KDB database that is being created. The following types are available: + /// + /// * HDB – A Historical Database. The data is only accessible with read-only permissions from one of the FinSpace managed kdb databases mounted to the cluster. + /// + /// * RDB – A Realtime Database. This type of database captures all the data from a ticker plant and stores it in memory until the end of day, after which it writes all of its data to a disk and reloads the HDB. This cluster type requires local storage for temporary storage of data during the savedown process. If you specify this field in your request, you must provide the savedownStorageConfiguration parameter. + /// + /// * GATEWAY – A gateway cluster allows you to access data across processes in kdb systems. It allows you to create your own routing logic using the initialization scripts and custom code. This type of cluster does not require a writable local storage. + /// + /// * GP – A general purpose cluster allows you to quickly iterate on code during development by granting greater access to system commands and enabling a fast reload of custom code. This cluster type can optionally mount databases including cache and savedown storage. For this cluster type, the node count is fixed at 1. It does not support autoscaling and supports only SINGLE AZ mode. + /// + /// * Tickerplant – A tickerplant cluster allows you to subscribe to feed handlers based on IAM permissions. It can publish to RDBs, other Tickerplants, and real-time subscribers (RTS). Tickerplants can persist messages to log, which is readable by any RDB environment. It supports only single-node that is only one kdb process. + public var clusterType: FinspaceClientTypes.KxClusterType? + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? /// The maximum number of results to return in this request. public var maxResults: Swift.Int? - /// A token generated by FinSpace that specifies where to continue pagination if a previous request was truncated. To get the next set of pages, pass in the nextTokennextToken value from the response object of the previous page call. + /// A token that indicates where a results page should begin. public var nextToken: Swift.String? public init( + clusterType: FinspaceClientTypes.KxClusterType? = nil, + environmentId: Swift.String? = nil, maxResults: Swift.Int? = nil, nextToken: Swift.String? = nil ) { + self.clusterType = clusterType + self.environmentId = environmentId self.maxResults = maxResults self.nextToken = nextToken } } -struct ListEnvironmentsInputBody: Swift.Equatable { +struct ListKxClustersInputBody: Swift.Equatable { } -extension ListEnvironmentsInputBody: Swift.Decodable { +extension ListKxClustersInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { } } -extension ListEnvironmentsOutput: ClientRuntime.HttpResponseBinding { +extension ListKxClustersOutput: 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: ListEnvironmentsOutputBody = try responseDecoder.decode(responseBody: data) - self.environments = output.environments + let output: ListKxClustersOutputBody = try responseDecoder.decode(responseBody: data) + self.kxClusterSummaries = output.kxClusterSummaries self.nextToken = output.nextToken } else { - self.environments = nil + self.kxClusterSummaries = nil self.nextToken = nil } } } -public struct ListEnvironmentsOutput: Swift.Equatable { - /// A list of all of your FinSpace environments. - public var environments: [FinspaceClientTypes.Environment]? - /// A token that you can use in a subsequent call to retrieve the next set of results. +public struct ListKxClustersOutput: Swift.Equatable { + /// Lists the cluster details. + public var kxClusterSummaries: [FinspaceClientTypes.KxCluster]? + /// A token that indicates where a results page should begin. public var nextToken: Swift.String? public init( - environments: [FinspaceClientTypes.Environment]? = nil, + kxClusterSummaries: [FinspaceClientTypes.KxCluster]? = nil, nextToken: Swift.String? = nil ) { - self.environments = environments + self.kxClusterSummaries = kxClusterSummaries self.nextToken = nextToken } } -struct ListEnvironmentsOutputBody: Swift.Equatable { - let environments: [FinspaceClientTypes.Environment]? +struct ListKxClustersOutputBody: Swift.Equatable { + let kxClusterSummaries: [FinspaceClientTypes.KxCluster]? let nextToken: Swift.String? } -extension ListEnvironmentsOutputBody: Swift.Decodable { +extension ListKxClustersOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case environments + case kxClusterSummaries case nextToken } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let environmentsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.Environment?].self, forKey: .environments) - var environmentsDecoded0:[FinspaceClientTypes.Environment]? = nil - if let environmentsContainer = environmentsContainer { - environmentsDecoded0 = [FinspaceClientTypes.Environment]() - for structure0 in environmentsContainer { + let kxClusterSummariesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxCluster?].self, forKey: .kxClusterSummaries) + var kxClusterSummariesDecoded0:[FinspaceClientTypes.KxCluster]? = nil + if let kxClusterSummariesContainer = kxClusterSummariesContainer { + kxClusterSummariesDecoded0 = [FinspaceClientTypes.KxCluster]() + for structure0 in kxClusterSummariesContainer { if let structure0 = structure0 { - environmentsDecoded0?.append(structure0) + kxClusterSummariesDecoded0?.append(structure0) } } } - environments = environmentsDecoded0 + kxClusterSummaries = kxClusterSummariesDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded } } -enum ListEnvironmentsOutputError: ClientRuntime.HttpResponseErrorBinding { +enum ListKxClustersOutputError: 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 ListKxChangesetsInput: ClientRuntime.QueryItemProvider { +extension ListKxDatabasesInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { var items = [ClientRuntime.URLQueryItem]() @@ -6055,22 +9732,16 @@ extension ListKxChangesetsInput: ClientRuntime.QueryItemProvider { } } -extension ListKxChangesetsInput: ClientRuntime.URLPathProvider { +extension ListKxDatabasesInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { guard let environmentId = environmentId else { return nil } - guard let databaseName = databaseName else { - return nil - } - return "/kx/environments/\(environmentId.urlPercentEncoding())/databases/\(databaseName.urlPercentEncoding())/changesets" + return "/kx/environments/\(environmentId.urlPercentEncoding())/databases" } } -public struct ListKxChangesetsInput: Swift.Equatable { - /// The name of the kdb database. - /// This member is required. - public var databaseName: Swift.String? +public struct ListKxDatabasesInput: Swift.Equatable { /// A unique identifier for the kdb environment. /// This member is required. public var environmentId: Swift.String? @@ -6080,88 +9751,86 @@ public struct ListKxChangesetsInput: Swift.Equatable { public var nextToken: Swift.String? public init( - databaseName: Swift.String? = nil, environmentId: Swift.String? = nil, maxResults: Swift.Int? = nil, nextToken: Swift.String? = nil ) { - self.databaseName = databaseName self.environmentId = environmentId self.maxResults = maxResults self.nextToken = nextToken } } -struct ListKxChangesetsInputBody: Swift.Equatable { +struct ListKxDatabasesInputBody: Swift.Equatable { } -extension ListKxChangesetsInputBody: Swift.Decodable { +extension ListKxDatabasesInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { } } -extension ListKxChangesetsOutput: ClientRuntime.HttpResponseBinding { +extension ListKxDatabasesOutput: 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: ListKxChangesetsOutputBody = try responseDecoder.decode(responseBody: data) - self.kxChangesets = output.kxChangesets + let output: ListKxDatabasesOutputBody = try responseDecoder.decode(responseBody: data) + self.kxDatabases = output.kxDatabases self.nextToken = output.nextToken } else { - self.kxChangesets = nil + self.kxDatabases = nil self.nextToken = nil } } } -public struct ListKxChangesetsOutput: Swift.Equatable { - /// A list of changesets for a database. - public var kxChangesets: [FinspaceClientTypes.KxChangesetListEntry]? +public struct ListKxDatabasesOutput: Swift.Equatable { + /// A list of databases in the kdb environment. + public var kxDatabases: [FinspaceClientTypes.KxDatabaseListEntry]? /// A token that indicates where a results page should begin. public var nextToken: Swift.String? public init( - kxChangesets: [FinspaceClientTypes.KxChangesetListEntry]? = nil, + kxDatabases: [FinspaceClientTypes.KxDatabaseListEntry]? = nil, nextToken: Swift.String? = nil ) { - self.kxChangesets = kxChangesets + self.kxDatabases = kxDatabases self.nextToken = nextToken } } -struct ListKxChangesetsOutputBody: Swift.Equatable { - let kxChangesets: [FinspaceClientTypes.KxChangesetListEntry]? +struct ListKxDatabasesOutputBody: Swift.Equatable { + let kxDatabases: [FinspaceClientTypes.KxDatabaseListEntry]? let nextToken: Swift.String? } -extension ListKxChangesetsOutputBody: Swift.Decodable { +extension ListKxDatabasesOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case kxChangesets + case kxDatabases case nextToken } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let kxChangesetsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxChangesetListEntry?].self, forKey: .kxChangesets) - var kxChangesetsDecoded0:[FinspaceClientTypes.KxChangesetListEntry]? = nil - if let kxChangesetsContainer = kxChangesetsContainer { - kxChangesetsDecoded0 = [FinspaceClientTypes.KxChangesetListEntry]() - for structure0 in kxChangesetsContainer { + let kxDatabasesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDatabaseListEntry?].self, forKey: .kxDatabases) + var kxDatabasesDecoded0:[FinspaceClientTypes.KxDatabaseListEntry]? = nil + if let kxDatabasesContainer = kxDatabasesContainer { + kxDatabasesDecoded0 = [FinspaceClientTypes.KxDatabaseListEntry]() + for structure0 in kxDatabasesContainer { if let structure0 = structure0 { - kxChangesetsDecoded0?.append(structure0) + kxDatabasesDecoded0?.append(structure0) } } } - kxChangesets = kxChangesetsDecoded0 + kxDatabases = kxDatabasesDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded } } -enum ListKxChangesetsOutputError: ClientRuntime.HttpResponseErrorBinding { +enum ListKxDatabasesOutputError: 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 @@ -6176,7 +9845,7 @@ enum ListKxChangesetsOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension ListKxClusterNodesInput: ClientRuntime.QueryItemProvider { +extension ListKxDataviewsInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { var items = [ClientRuntime.URLQueryItem]() @@ -6193,23 +9862,23 @@ extension ListKxClusterNodesInput: ClientRuntime.QueryItemProvider { } } -extension ListKxClusterNodesInput: ClientRuntime.URLPathProvider { +extension ListKxDataviewsInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { guard let environmentId = environmentId else { return nil } - guard let clusterName = clusterName else { + guard let databaseName = databaseName else { return nil } - return "/kx/environments/\(environmentId.urlPercentEncoding())/clusters/\(clusterName.urlPercentEncoding())/nodes" + return "/kx/environments/\(environmentId.urlPercentEncoding())/databases/\(databaseName.urlPercentEncoding())/dataviews" } } -public struct ListKxClusterNodesInput: Swift.Equatable { - /// A unique name for the cluster. +public struct ListKxDataviewsInput: Swift.Equatable { + /// The name of the database where the dataviews were created. /// This member is required. - public var clusterName: Swift.String? - /// A unique identifier for the kdb environment. + public var databaseName: Swift.String? + /// A unique identifier for the kdb environment, for which you want to retrieve a list of dataviews. /// This member is required. public var environmentId: Swift.String? /// The maximum number of results to return in this request. @@ -6218,95 +9887,94 @@ public struct ListKxClusterNodesInput: Swift.Equatable { public var nextToken: Swift.String? public init( - clusterName: Swift.String? = nil, + databaseName: Swift.String? = nil, environmentId: Swift.String? = nil, maxResults: Swift.Int? = nil, nextToken: Swift.String? = nil ) { - self.clusterName = clusterName + self.databaseName = databaseName self.environmentId = environmentId self.maxResults = maxResults self.nextToken = nextToken } } -struct ListKxClusterNodesInputBody: Swift.Equatable { +struct ListKxDataviewsInputBody: Swift.Equatable { } -extension ListKxClusterNodesInputBody: Swift.Decodable { +extension ListKxDataviewsInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { } } -extension ListKxClusterNodesOutput: ClientRuntime.HttpResponseBinding { +extension ListKxDataviewsOutput: 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: ListKxClusterNodesOutputBody = try responseDecoder.decode(responseBody: data) + let output: ListKxDataviewsOutputBody = try responseDecoder.decode(responseBody: data) + self.kxDataviews = output.kxDataviews self.nextToken = output.nextToken - self.nodes = output.nodes } else { + self.kxDataviews = nil self.nextToken = nil - self.nodes = nil } } } -public struct ListKxClusterNodesOutput: Swift.Equatable { +public struct ListKxDataviewsOutput: Swift.Equatable { + /// The list of kdb dataviews that are currently active for the given database. + public var kxDataviews: [FinspaceClientTypes.KxDataviewListEntry]? /// A token that indicates where a results page should begin. public var nextToken: Swift.String? - /// A list of nodes associated with the cluster. - public var nodes: [FinspaceClientTypes.KxNode]? public init( - nextToken: Swift.String? = nil, - nodes: [FinspaceClientTypes.KxNode]? = nil + kxDataviews: [FinspaceClientTypes.KxDataviewListEntry]? = nil, + nextToken: Swift.String? = nil ) { + self.kxDataviews = kxDataviews self.nextToken = nextToken - self.nodes = nodes } } -struct ListKxClusterNodesOutputBody: Swift.Equatable { - let nodes: [FinspaceClientTypes.KxNode]? +struct ListKxDataviewsOutputBody: Swift.Equatable { + let kxDataviews: [FinspaceClientTypes.KxDataviewListEntry]? let nextToken: Swift.String? } -extension ListKxClusterNodesOutputBody: Swift.Decodable { +extension ListKxDataviewsOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case kxDataviews case nextToken - case nodes } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let nodesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxNode?].self, forKey: .nodes) - var nodesDecoded0:[FinspaceClientTypes.KxNode]? = nil - if let nodesContainer = nodesContainer { - nodesDecoded0 = [FinspaceClientTypes.KxNode]() - for structure0 in nodesContainer { + let kxDataviewsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDataviewListEntry?].self, forKey: .kxDataviews) + var kxDataviewsDecoded0:[FinspaceClientTypes.KxDataviewListEntry]? = nil + if let kxDataviewsContainer = kxDataviewsContainer { + kxDataviewsDecoded0 = [FinspaceClientTypes.KxDataviewListEntry]() + for structure0 in kxDataviewsContainer { if let structure0 = structure0 { - nodesDecoded0?.append(structure0) + kxDataviewsDecoded0?.append(structure0) } } } - nodes = nodesDecoded0 + kxDataviews = kxDataviewsDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded } } -enum ListKxClusterNodesOutputError: ClientRuntime.HttpResponseErrorBinding { +enum ListKxDataviewsOutputError: 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 "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) @@ -6315,182 +9983,154 @@ enum ListKxClusterNodesOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension ListKxClustersInput: ClientRuntime.QueryItemProvider { +extension ListKxEnvironmentsInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { var items = [ClientRuntime.URLQueryItem]() - if let clusterType = clusterType { - let clusterTypeQueryItem = ClientRuntime.URLQueryItem(name: "clusterType".urlPercentEncoding(), value: Swift.String(clusterType.rawValue).urlPercentEncoding()) - items.append(clusterTypeQueryItem) + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) } if let maxResults = maxResults { let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) items.append(maxResultsQueryItem) } - if let nextToken = nextToken { - let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) - items.append(nextTokenQueryItem) - } return items } } } -extension ListKxClustersInput: ClientRuntime.URLPathProvider { +extension ListKxEnvironmentsInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - guard let environmentId = environmentId else { - return nil - } - return "/kx/environments/\(environmentId.urlPercentEncoding())/clusters" + return "/kx/environments" } } -public struct ListKxClustersInput: Swift.Equatable { - /// Specifies the type of KDB database that is being created. The following types are available: - /// - /// * HDB – A Historical Database. The data is only accessible with read-only permissions from one of the FinSpace managed kdb databases mounted to the cluster. - /// - /// * RDB – A Realtime Database. This type of database captures all the data from a ticker plant and stores it in memory until the end of day, after which it writes all of its data to a disk and reloads the HDB. This cluster type requires local storage for temporary storage of data during the savedown process. If you specify this field in your request, you must provide the savedownStorageConfiguration parameter. - /// - /// * GATEWAY – A gateway cluster allows you to access data across processes in kdb systems. It allows you to create your own routing logic using the initialization scripts and custom code. This type of cluster does not require a writable local storage. - /// - /// * GP – A general purpose cluster allows you to quickly iterate on code during development by granting greater access to system commands and enabling a fast reload of custom code. This cluster type can optionally mount databases including cache and savedown storage. For this cluster type, the node count is fixed at 1. It does not support autoscaling and supports only SINGLE AZ mode. - public var clusterType: FinspaceClientTypes.KxClusterType? - /// A unique identifier for the kdb environment. - /// This member is required. - public var environmentId: Swift.String? +public struct ListKxEnvironmentsInput: Swift.Equatable { /// The maximum number of results to return in this request. public var maxResults: Swift.Int? /// A token that indicates where a results page should begin. public var nextToken: Swift.String? public init( - clusterType: FinspaceClientTypes.KxClusterType? = nil, - environmentId: Swift.String? = nil, maxResults: Swift.Int? = nil, nextToken: Swift.String? = nil ) { - self.clusterType = clusterType - self.environmentId = environmentId self.maxResults = maxResults self.nextToken = nextToken } } -struct ListKxClustersInputBody: Swift.Equatable { +struct ListKxEnvironmentsInputBody: Swift.Equatable { } -extension ListKxClustersInputBody: Swift.Decodable { +extension ListKxEnvironmentsInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { } } -extension ListKxClustersOutput: ClientRuntime.HttpResponseBinding { +extension ListKxEnvironmentsOutput: 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: ListKxClustersOutputBody = try responseDecoder.decode(responseBody: data) - self.kxClusterSummaries = output.kxClusterSummaries + let output: ListKxEnvironmentsOutputBody = try responseDecoder.decode(responseBody: data) + self.environments = output.environments self.nextToken = output.nextToken } else { - self.kxClusterSummaries = nil + self.environments = nil self.nextToken = nil } } } -public struct ListKxClustersOutput: Swift.Equatable { - /// Lists the cluster details. - public var kxClusterSummaries: [FinspaceClientTypes.KxCluster]? +public struct ListKxEnvironmentsOutput: Swift.Equatable { + /// A list of environments in an account. + public var environments: [FinspaceClientTypes.KxEnvironment]? /// A token that indicates where a results page should begin. public var nextToken: Swift.String? public init( - kxClusterSummaries: [FinspaceClientTypes.KxCluster]? = nil, + environments: [FinspaceClientTypes.KxEnvironment]? = nil, nextToken: Swift.String? = nil ) { - self.kxClusterSummaries = kxClusterSummaries + self.environments = environments self.nextToken = nextToken } } -struct ListKxClustersOutputBody: Swift.Equatable { - let kxClusterSummaries: [FinspaceClientTypes.KxCluster]? +struct ListKxEnvironmentsOutputBody: Swift.Equatable { + let environments: [FinspaceClientTypes.KxEnvironment]? let nextToken: Swift.String? } -extension ListKxClustersOutputBody: Swift.Decodable { +extension ListKxEnvironmentsOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case kxClusterSummaries + case environments case nextToken } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let kxClusterSummariesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxCluster?].self, forKey: .kxClusterSummaries) - var kxClusterSummariesDecoded0:[FinspaceClientTypes.KxCluster]? = nil - if let kxClusterSummariesContainer = kxClusterSummariesContainer { - kxClusterSummariesDecoded0 = [FinspaceClientTypes.KxCluster]() - for structure0 in kxClusterSummariesContainer { + let environmentsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxEnvironment?].self, forKey: .environments) + var environmentsDecoded0:[FinspaceClientTypes.KxEnvironment]? = nil + if let environmentsContainer = environmentsContainer { + environmentsDecoded0 = [FinspaceClientTypes.KxEnvironment]() + for structure0 in environmentsContainer { if let structure0 = structure0 { - kxClusterSummariesDecoded0?.append(structure0) + environmentsDecoded0?.append(structure0) } } } - kxClusterSummaries = kxClusterSummariesDecoded0 + environments = environmentsDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded } } -enum ListKxClustersOutputError: ClientRuntime.HttpResponseErrorBinding { +enum ListKxEnvironmentsOutputError: 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 ListKxDatabasesInput: ClientRuntime.QueryItemProvider { +extension ListKxScalingGroupsInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { var items = [ClientRuntime.URLQueryItem]() - if let nextToken = nextToken { - let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) - items.append(nextTokenQueryItem) - } if let maxResults = maxResults { let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) items.append(maxResultsQueryItem) } + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } return items } } } -extension ListKxDatabasesInput: ClientRuntime.URLPathProvider { +extension ListKxScalingGroupsInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { guard let environmentId = environmentId else { return nil } - return "/kx/environments/\(environmentId.urlPercentEncoding())/databases" + return "/kx/environments/\(environmentId.urlPercentEncoding())/scalingGroups" } } -public struct ListKxDatabasesInput: Swift.Equatable { - /// A unique identifier for the kdb environment. +public struct ListKxScalingGroupsInput: Swift.Equatable { + /// A unique identifier for the kdb environment, for which you want to retrieve a list of scaling groups. /// This member is required. public var environmentId: Swift.String? /// The maximum number of results to return in this request. @@ -6510,81 +10150,83 @@ public struct ListKxDatabasesInput: Swift.Equatable { } } -struct ListKxDatabasesInputBody: Swift.Equatable { +struct ListKxScalingGroupsInputBody: Swift.Equatable { } -extension ListKxDatabasesInputBody: Swift.Decodable { +extension ListKxScalingGroupsInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { } } -extension ListKxDatabasesOutput: ClientRuntime.HttpResponseBinding { +extension ListKxScalingGroupsOutput: 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: ListKxDatabasesOutputBody = try responseDecoder.decode(responseBody: data) - self.kxDatabases = output.kxDatabases + let output: ListKxScalingGroupsOutputBody = try responseDecoder.decode(responseBody: data) self.nextToken = output.nextToken + self.scalingGroups = output.scalingGroups } else { - self.kxDatabases = nil self.nextToken = nil + self.scalingGroups = nil } } } -public struct ListKxDatabasesOutput: Swift.Equatable { - /// A list of databases in the kdb environment. - public var kxDatabases: [FinspaceClientTypes.KxDatabaseListEntry]? +public struct ListKxScalingGroupsOutput: Swift.Equatable { /// A token that indicates where a results page should begin. public var nextToken: Swift.String? + /// A list of scaling groups available in a kdb environment. + public var scalingGroups: [FinspaceClientTypes.KxScalingGroup]? public init( - kxDatabases: [FinspaceClientTypes.KxDatabaseListEntry]? = nil, - nextToken: Swift.String? = nil + nextToken: Swift.String? = nil, + scalingGroups: [FinspaceClientTypes.KxScalingGroup]? = nil ) { - self.kxDatabases = kxDatabases self.nextToken = nextToken + self.scalingGroups = scalingGroups } } -struct ListKxDatabasesOutputBody: Swift.Equatable { - let kxDatabases: [FinspaceClientTypes.KxDatabaseListEntry]? +struct ListKxScalingGroupsOutputBody: Swift.Equatable { + let scalingGroups: [FinspaceClientTypes.KxScalingGroup]? let nextToken: Swift.String? } -extension ListKxDatabasesOutputBody: Swift.Decodable { +extension ListKxScalingGroupsOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case kxDatabases case nextToken + case scalingGroups } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let kxDatabasesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDatabaseListEntry?].self, forKey: .kxDatabases) - var kxDatabasesDecoded0:[FinspaceClientTypes.KxDatabaseListEntry]? = nil - if let kxDatabasesContainer = kxDatabasesContainer { - kxDatabasesDecoded0 = [FinspaceClientTypes.KxDatabaseListEntry]() - for structure0 in kxDatabasesContainer { + let scalingGroupsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxScalingGroup?].self, forKey: .scalingGroups) + var scalingGroupsDecoded0:[FinspaceClientTypes.KxScalingGroup]? = nil + if let scalingGroupsContainer = scalingGroupsContainer { + scalingGroupsDecoded0 = [FinspaceClientTypes.KxScalingGroup]() + for structure0 in scalingGroupsContainer { if let structure0 = structure0 { - kxDatabasesDecoded0?.append(structure0) + scalingGroupsDecoded0?.append(structure0) } } } - kxDatabases = kxDatabasesDecoded0 + scalingGroups = scalingGroupsDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded } } -enum ListKxDatabasesOutputError: ClientRuntime.HttpResponseErrorBinding { +enum ListKxScalingGroupsOutputError: 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) @@ -6593,7 +10235,7 @@ enum ListKxDatabasesOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension ListKxEnvironmentsInput: ClientRuntime.QueryItemProvider { +extension ListKxUsersInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { var items = [ClientRuntime.URLQueryItem]() @@ -6610,230 +10252,251 @@ extension ListKxEnvironmentsInput: ClientRuntime.QueryItemProvider { } } -extension ListKxEnvironmentsInput: ClientRuntime.URLPathProvider { +extension ListKxUsersInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - return "/kx/environments" + guard let environmentId = environmentId else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/users" } } -public struct ListKxEnvironmentsInput: Swift.Equatable { +public struct ListKxUsersInput: Swift.Equatable { + /// A unique identifier for the kdb environment. + /// This member is required. + public var environmentId: Swift.String? /// The maximum number of results to return in this request. public var maxResults: Swift.Int? /// A token that indicates where a results page should begin. public var nextToken: Swift.String? public init( + environmentId: Swift.String? = nil, maxResults: Swift.Int? = nil, nextToken: Swift.String? = nil ) { + self.environmentId = environmentId self.maxResults = maxResults self.nextToken = nextToken } } -struct ListKxEnvironmentsInputBody: Swift.Equatable { +struct ListKxUsersInputBody: Swift.Equatable { } -extension ListKxEnvironmentsInputBody: Swift.Decodable { +extension ListKxUsersInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { } } -extension ListKxEnvironmentsOutput: ClientRuntime.HttpResponseBinding { +extension ListKxUsersOutput: 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: ListKxEnvironmentsOutputBody = try responseDecoder.decode(responseBody: data) - self.environments = output.environments + let output: ListKxUsersOutputBody = try responseDecoder.decode(responseBody: data) self.nextToken = output.nextToken + self.users = output.users } else { - self.environments = nil self.nextToken = nil + self.users = nil } } } -public struct ListKxEnvironmentsOutput: Swift.Equatable { - /// A list of environments in an account. - public var environments: [FinspaceClientTypes.KxEnvironment]? +public struct ListKxUsersOutput: Swift.Equatable { /// A token that indicates where a results page should begin. public var nextToken: Swift.String? + /// A list of users in a kdb environment. + public var users: [FinspaceClientTypes.KxUser]? public init( - environments: [FinspaceClientTypes.KxEnvironment]? = nil, - nextToken: Swift.String? = nil + nextToken: Swift.String? = nil, + users: [FinspaceClientTypes.KxUser]? = nil ) { - self.environments = environments self.nextToken = nextToken + self.users = users } } -struct ListKxEnvironmentsOutputBody: Swift.Equatable { - let environments: [FinspaceClientTypes.KxEnvironment]? +struct ListKxUsersOutputBody: Swift.Equatable { + let users: [FinspaceClientTypes.KxUser]? let nextToken: Swift.String? } -extension ListKxEnvironmentsOutputBody: Swift.Decodable { +extension ListKxUsersOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case environments case nextToken + case users } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let environmentsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxEnvironment?].self, forKey: .environments) - var environmentsDecoded0:[FinspaceClientTypes.KxEnvironment]? = nil - if let environmentsContainer = environmentsContainer { - environmentsDecoded0 = [FinspaceClientTypes.KxEnvironment]() - for structure0 in environmentsContainer { + let usersContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxUser?].self, forKey: .users) + var usersDecoded0:[FinspaceClientTypes.KxUser]? = nil + if let usersContainer = usersContainer { + usersDecoded0 = [FinspaceClientTypes.KxUser]() + for structure0 in usersContainer { if let structure0 = structure0 { - environmentsDecoded0?.append(structure0) + usersDecoded0?.append(structure0) } } } - environments = environmentsDecoded0 + users = usersDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded } } -enum ListKxEnvironmentsOutputError: ClientRuntime.HttpResponseErrorBinding { +enum ListKxUsersOutputError: 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 "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 ListKxUsersInput: ClientRuntime.QueryItemProvider { +extension ListKxVolumesInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { var items = [ClientRuntime.URLQueryItem]() - if let nextToken = nextToken { - let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) - items.append(nextTokenQueryItem) + if let volumeType = volumeType { + let volumeTypeQueryItem = ClientRuntime.URLQueryItem(name: "volumeType".urlPercentEncoding(), value: Swift.String(volumeType.rawValue).urlPercentEncoding()) + items.append(volumeTypeQueryItem) } if let maxResults = maxResults { let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) items.append(maxResultsQueryItem) } + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } return items } } } -extension ListKxUsersInput: ClientRuntime.URLPathProvider { +extension ListKxVolumesInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { guard let environmentId = environmentId else { return nil } - return "/kx/environments/\(environmentId.urlPercentEncoding())/users" + return "/kx/environments/\(environmentId.urlPercentEncoding())/kxvolumes" } } -public struct ListKxUsersInput: Swift.Equatable { - /// A unique identifier for the kdb environment. +public struct ListKxVolumesInput: Swift.Equatable { + /// A unique identifier for the kdb environment, whose clusters can attach to the volume. /// This member is required. public var environmentId: Swift.String? /// The maximum number of results to return in this request. public var maxResults: Swift.Int? /// A token that indicates where a results page should begin. public var nextToken: Swift.String? + /// The type of file system volume. Currently, FinSpace only supports NAS_1 volume type. + public var volumeType: FinspaceClientTypes.KxVolumeType? public init( environmentId: Swift.String? = nil, maxResults: Swift.Int? = nil, - nextToken: Swift.String? = nil + nextToken: Swift.String? = nil, + volumeType: FinspaceClientTypes.KxVolumeType? = nil ) { self.environmentId = environmentId self.maxResults = maxResults self.nextToken = nextToken + self.volumeType = volumeType } } -struct ListKxUsersInputBody: Swift.Equatable { +struct ListKxVolumesInputBody: Swift.Equatable { } -extension ListKxUsersInputBody: Swift.Decodable { +extension ListKxVolumesInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { } } -extension ListKxUsersOutput: ClientRuntime.HttpResponseBinding { +extension ListKxVolumesOutput: 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: ListKxUsersOutputBody = try responseDecoder.decode(responseBody: data) + let output: ListKxVolumesOutputBody = try responseDecoder.decode(responseBody: data) + self.kxVolumeSummaries = output.kxVolumeSummaries self.nextToken = output.nextToken - self.users = output.users } else { + self.kxVolumeSummaries = nil self.nextToken = nil - self.users = nil } } } -public struct ListKxUsersOutput: Swift.Equatable { +public struct ListKxVolumesOutput: Swift.Equatable { + /// A summary of volumes. + public var kxVolumeSummaries: [FinspaceClientTypes.KxVolume]? /// A token that indicates where a results page should begin. public var nextToken: Swift.String? - /// A list of users in a kdb environment. - public var users: [FinspaceClientTypes.KxUser]? - public init( - nextToken: Swift.String? = nil, - users: [FinspaceClientTypes.KxUser]? = nil + public init( + kxVolumeSummaries: [FinspaceClientTypes.KxVolume]? = nil, + nextToken: Swift.String? = nil ) { + self.kxVolumeSummaries = kxVolumeSummaries self.nextToken = nextToken - self.users = users } } -struct ListKxUsersOutputBody: Swift.Equatable { - let users: [FinspaceClientTypes.KxUser]? +struct ListKxVolumesOutputBody: Swift.Equatable { + let kxVolumeSummaries: [FinspaceClientTypes.KxVolume]? let nextToken: Swift.String? } -extension ListKxUsersOutputBody: Swift.Decodable { +extension ListKxVolumesOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case kxVolumeSummaries case nextToken - case users } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let usersContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxUser?].self, forKey: .users) - var usersDecoded0:[FinspaceClientTypes.KxUser]? = nil - if let usersContainer = usersContainer { - usersDecoded0 = [FinspaceClientTypes.KxUser]() - for structure0 in usersContainer { + let kxVolumeSummariesContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxVolume?].self, forKey: .kxVolumeSummaries) + var kxVolumeSummariesDecoded0:[FinspaceClientTypes.KxVolume]? = nil + if let kxVolumeSummariesContainer = kxVolumeSummariesContainer { + kxVolumeSummariesDecoded0 = [FinspaceClientTypes.KxVolume]() + for structure0 in kxVolumeSummariesContainer { if let structure0 = structure0 { - usersDecoded0?.append(structure0) + kxVolumeSummariesDecoded0?.append(structure0) } } } - users = usersDecoded0 + kxVolumeSummaries = kxVolumeSummariesDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded } } -enum ListKxUsersOutputError: ClientRuntime.HttpResponseErrorBinding { +enum ListKxVolumesOutputError: 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) @@ -7518,6 +11181,53 @@ extension ThrottlingExceptionBody: Swift.Decodable { } } +extension FinspaceClientTypes.TickerplantLogConfiguration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case tickerplantLogVolumes + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let tickerplantLogVolumes = tickerplantLogVolumes { + var tickerplantLogVolumesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .tickerplantLogVolumes) + for volumename0 in tickerplantLogVolumes { + try tickerplantLogVolumesContainer.encode(volumename0) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let tickerplantLogVolumesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .tickerplantLogVolumes) + var tickerplantLogVolumesDecoded0:[Swift.String]? = nil + if let tickerplantLogVolumesContainer = tickerplantLogVolumesContainer { + tickerplantLogVolumesDecoded0 = [Swift.String]() + for string0 in tickerplantLogVolumesContainer { + if let string0 = string0 { + tickerplantLogVolumesDecoded0?.append(string0) + } + } + } + tickerplantLogVolumes = tickerplantLogVolumesDecoded0 + } +} + +extension FinspaceClientTypes { + /// A configuration to store the Tickerplant logs. It consists of a list of volumes that will be mounted to your cluster. For the cluster type Tickerplant, the location of the TP volume on the cluster will be available by using the global variable .aws.tp_log_path. + public struct TickerplantLogConfiguration: Swift.Equatable { + /// The name of the volumes for tickerplant logs. + public var tickerplantLogVolumes: [Swift.String]? + + public init( + tickerplantLogVolumes: [Swift.String]? = nil + ) + { + self.tickerplantLogVolumes = tickerplantLogVolumes + } + } + +} + extension FinspaceClientTypes.TransitGatewayConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case attachmentNetworkAclConfiguration @@ -8237,7 +11947,331 @@ extension UpdateKxDatabaseOutputBody: Swift.Decodable { } } -enum UpdateKxDatabaseOutputError: ClientRuntime.HttpResponseErrorBinding { +enum UpdateKxDatabaseOutputError: 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 UpdateKxDataviewInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case changesetId + case clientToken + case description + case segmentConfigurations + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let changesetId = self.changesetId { + try encodeContainer.encode(changesetId, forKey: .changesetId) + } + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let segmentConfigurations = segmentConfigurations { + var segmentConfigurationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .segmentConfigurations) + for kxdataviewsegmentconfiguration0 in segmentConfigurations { + try segmentConfigurationsContainer.encode(kxdataviewsegmentconfiguration0) + } + } + } +} + +extension UpdateKxDataviewInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + guard let databaseName = databaseName else { + return nil + } + guard let dataviewName = dataviewName else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/databases/\(databaseName.urlPercentEncoding())/dataviews/\(dataviewName.urlPercentEncoding())" + } +} + +public struct UpdateKxDataviewInput: Swift.Equatable { + /// A unique identifier for the changeset. + public var changesetId: Swift.String? + /// A token that ensures idempotency. This token expires in 10 minutes. + /// This member is required. + public var clientToken: Swift.String? + /// The name of the database. + /// This member is required. + public var databaseName: Swift.String? + /// The name of the dataview that you want to update. + /// This member is required. + public var dataviewName: Swift.String? + /// The description for a dataview. + public var description: Swift.String? + /// A unique identifier for the kdb environment, where you want to update the dataview. + /// This member is required. + public var environmentId: Swift.String? + /// The configuration that contains the database path of the data that you want to place on each selected volume. Each segment must have a unique database path for each volume. If you do not explicitly specify any database path for a volume, they are accessible from the cluster through the default S3/object store segment. + public var segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? + + public init( + changesetId: Swift.String? = nil, + clientToken: Swift.String? = nil, + databaseName: Swift.String? = nil, + dataviewName: Swift.String? = nil, + description: Swift.String? = nil, + environmentId: Swift.String? = nil, + segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil + ) + { + self.changesetId = changesetId + self.clientToken = clientToken + self.databaseName = databaseName + self.dataviewName = dataviewName + self.description = description + self.environmentId = environmentId + self.segmentConfigurations = segmentConfigurations + } +} + +struct UpdateKxDataviewInputBody: Swift.Equatable { + let description: Swift.String? + let changesetId: Swift.String? + let segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? + let clientToken: Swift.String? +} + +extension UpdateKxDataviewInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case changesetId + case clientToken + case description + case segmentConfigurations + } + + 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 changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) + changesetId = changesetIdDecoded + let segmentConfigurationsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDataviewSegmentConfiguration?].self, forKey: .segmentConfigurations) + var segmentConfigurationsDecoded0:[FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil + if let segmentConfigurationsContainer = segmentConfigurationsContainer { + segmentConfigurationsDecoded0 = [FinspaceClientTypes.KxDataviewSegmentConfiguration]() + for structure0 in segmentConfigurationsContainer { + if let structure0 = structure0 { + segmentConfigurationsDecoded0?.append(structure0) + } + } + } + segmentConfigurations = segmentConfigurationsDecoded0 + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + } +} + +extension UpdateKxDataviewOutput: 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: UpdateKxDataviewOutputBody = try responseDecoder.decode(responseBody: data) + self.activeVersions = output.activeVersions + self.autoUpdate = output.autoUpdate + self.availabilityZoneId = output.availabilityZoneId + self.azMode = output.azMode + self.changesetId = output.changesetId + self.createdTimestamp = output.createdTimestamp + self.databaseName = output.databaseName + self.dataviewName = output.dataviewName + self.description = output.description + self.environmentId = output.environmentId + self.lastModifiedTimestamp = output.lastModifiedTimestamp + self.segmentConfigurations = output.segmentConfigurations + self.status = output.status + } else { + self.activeVersions = nil + self.autoUpdate = false + self.availabilityZoneId = nil + self.azMode = nil + self.changesetId = nil + self.createdTimestamp = nil + self.databaseName = nil + self.dataviewName = nil + self.description = nil + self.environmentId = nil + self.lastModifiedTimestamp = nil + self.segmentConfigurations = nil + self.status = nil + } + } +} + +public struct UpdateKxDataviewOutput: Swift.Equatable { + /// The current active changeset versions of the database on the given dataview. + public var activeVersions: [FinspaceClientTypes.KxDataviewActiveVersion]? + /// The option to specify whether you want to apply all the future additions and corrections automatically to the dataview when new changesets are ingested. The default value is false. + public var autoUpdate: Swift.Bool + /// The identifier of the availability zones. + public var availabilityZoneId: Swift.String? + /// The number of availability zones you want to assign per cluster. This can be one of the following + /// + /// * SINGLE – Assigns one availability zone per cluster. + /// + /// * MULTI – Assigns all the availability zones per cluster. + public var azMode: FinspaceClientTypes.KxAzMode? + /// A unique identifier for the changeset. + public var changesetId: Swift.String? + /// The timestamp at which the dataview was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// The name of the database. + public var databaseName: Swift.String? + /// The name of the database under which the dataview was created. + public var dataviewName: Swift.String? + /// A description of the dataview. + public var description: Swift.String? + /// A unique identifier for the kdb environment, where you want to update the dataview. + public var environmentId: Swift.String? + /// The last time that the dataview was updated in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// The configuration that contains the database path of the data that you want to place on each selected volume. Each segment must have a unique database path for each volume. If you do not explicitly specify any database path for a volume, they are accessible from the cluster through the default S3/object store segment. + public var segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? + /// The status of dataview creation. + /// + /// * CREATING – The dataview creation is in progress. + /// + /// * UPDATING – The dataview is in the process of being updated. + /// + /// * ACTIVE – The dataview is active. + public var status: FinspaceClientTypes.KxDataviewStatus? + + public init( + activeVersions: [FinspaceClientTypes.KxDataviewActiveVersion]? = nil, + autoUpdate: Swift.Bool = false, + availabilityZoneId: Swift.String? = nil, + azMode: FinspaceClientTypes.KxAzMode? = nil, + changesetId: Swift.String? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + databaseName: Swift.String? = nil, + dataviewName: Swift.String? = nil, + description: Swift.String? = nil, + environmentId: Swift.String? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil, + status: FinspaceClientTypes.KxDataviewStatus? = nil + ) + { + self.activeVersions = activeVersions + self.autoUpdate = autoUpdate + self.availabilityZoneId = availabilityZoneId + self.azMode = azMode + self.changesetId = changesetId + self.createdTimestamp = createdTimestamp + self.databaseName = databaseName + self.dataviewName = dataviewName + self.description = description + self.environmentId = environmentId + self.lastModifiedTimestamp = lastModifiedTimestamp + self.segmentConfigurations = segmentConfigurations + self.status = status + } +} + +struct UpdateKxDataviewOutputBody: Swift.Equatable { + let environmentId: Swift.String? + let databaseName: Swift.String? + let dataviewName: Swift.String? + let azMode: FinspaceClientTypes.KxAzMode? + let availabilityZoneId: Swift.String? + let changesetId: Swift.String? + let segmentConfigurations: [FinspaceClientTypes.KxDataviewSegmentConfiguration]? + let activeVersions: [FinspaceClientTypes.KxDataviewActiveVersion]? + let status: FinspaceClientTypes.KxDataviewStatus? + let autoUpdate: Swift.Bool + let description: Swift.String? + let createdTimestamp: ClientRuntime.Date? + let lastModifiedTimestamp: ClientRuntime.Date? +} + +extension UpdateKxDataviewOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case activeVersions + case autoUpdate + case availabilityZoneId + case azMode + case changesetId + case createdTimestamp + case databaseName + case dataviewName + case description + case environmentId + case lastModifiedTimestamp + case segmentConfigurations + case status + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let databaseNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .databaseName) + databaseName = databaseNameDecoded + let dataviewNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dataviewName) + dataviewName = dataviewNameDecoded + let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) + azMode = azModeDecoded + let availabilityZoneIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .availabilityZoneId) + availabilityZoneId = availabilityZoneIdDecoded + let changesetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changesetId) + changesetId = changesetIdDecoded + let segmentConfigurationsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDataviewSegmentConfiguration?].self, forKey: .segmentConfigurations) + var segmentConfigurationsDecoded0:[FinspaceClientTypes.KxDataviewSegmentConfiguration]? = nil + if let segmentConfigurationsContainer = segmentConfigurationsContainer { + segmentConfigurationsDecoded0 = [FinspaceClientTypes.KxDataviewSegmentConfiguration]() + for structure0 in segmentConfigurationsContainer { + if let structure0 = structure0 { + segmentConfigurationsDecoded0?.append(structure0) + } + } + } + segmentConfigurations = segmentConfigurationsDecoded0 + let activeVersionsContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxDataviewActiveVersion?].self, forKey: .activeVersions) + var activeVersionsDecoded0:[FinspaceClientTypes.KxDataviewActiveVersion]? = nil + if let activeVersionsContainer = activeVersionsContainer { + activeVersionsDecoded0 = [FinspaceClientTypes.KxDataviewActiveVersion]() + for structure0 in activeVersionsContainer { + if let structure0 = structure0 { + activeVersionsDecoded0?.append(structure0) + } + } + } + activeVersions = activeVersionsDecoded0 + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxDataviewStatus.self, forKey: .status) + status = statusDecoded + let autoUpdateDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .autoUpdate) ?? false + autoUpdate = autoUpdateDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + } +} + +enum UpdateKxDataviewOutputError: 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 @@ -8245,6 +12279,7 @@ enum UpdateKxDatabaseOutputError: ClientRuntime.HttpResponseErrorBinding { 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 "ResourceAlreadyExistsException": return try await ResourceAlreadyExistsException(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) @@ -9034,6 +13069,306 @@ enum UpdateKxUserOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension UpdateKxVolumeInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case description + case nas1Configuration + } + + 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 nas1Configuration = self.nas1Configuration { + try encodeContainer.encode(nas1Configuration, forKey: .nas1Configuration) + } + } +} + +extension UpdateKxVolumeInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let environmentId = environmentId else { + return nil + } + guard let volumeName = volumeName else { + return nil + } + return "/kx/environments/\(environmentId.urlPercentEncoding())/kxvolumes/\(volumeName.urlPercentEncoding())" + } +} + +public struct UpdateKxVolumeInput: Swift.Equatable { + /// A token that ensures idempotency. This token expires in 10 minutes. + public var clientToken: Swift.String? + /// A description of the volume. + public var description: Swift.String? + /// A unique identifier for the kdb environment where you created the storage volume. + /// This member is required. + public var environmentId: Swift.String? + /// Specifies the configuration for the Network attached storage (NAS_1) file system volume. + public var nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? + /// A unique identifier for the volume. + /// This member is required. + public var volumeName: Swift.String? + + public init( + clientToken: Swift.String? = nil, + description: Swift.String? = nil, + environmentId: Swift.String? = nil, + nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? = nil, + volumeName: Swift.String? = nil + ) + { + self.clientToken = clientToken + self.description = description + self.environmentId = environmentId + self.nas1Configuration = nas1Configuration + self.volumeName = volumeName + } +} + +struct UpdateKxVolumeInputBody: Swift.Equatable { + let description: Swift.String? + let clientToken: Swift.String? + let nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? +} + +extension UpdateKxVolumeInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case description + case nas1Configuration + } + + 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 clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + let nas1ConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxNAS1Configuration.self, forKey: .nas1Configuration) + nas1Configuration = nas1ConfigurationDecoded + } +} + +extension UpdateKxVolumeOutput: 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: UpdateKxVolumeOutputBody = try responseDecoder.decode(responseBody: data) + self.attachedClusters = output.attachedClusters + self.availabilityZoneIds = output.availabilityZoneIds + self.azMode = output.azMode + self.createdTimestamp = output.createdTimestamp + self.description = output.description + self.environmentId = output.environmentId + self.lastModifiedTimestamp = output.lastModifiedTimestamp + self.nas1Configuration = output.nas1Configuration + self.status = output.status + self.statusReason = output.statusReason + self.volumeArn = output.volumeArn + self.volumeName = output.volumeName + self.volumeType = output.volumeType + } else { + self.attachedClusters = nil + self.availabilityZoneIds = nil + self.azMode = nil + self.createdTimestamp = nil + self.description = nil + self.environmentId = nil + self.lastModifiedTimestamp = nil + self.nas1Configuration = nil + self.status = nil + self.statusReason = nil + self.volumeArn = nil + self.volumeName = nil + self.volumeType = nil + } + } +} + +public struct UpdateKxVolumeOutput: Swift.Equatable { + /// Specifies the clusters that a volume is attached to. + public var attachedClusters: [FinspaceClientTypes.KxAttachedCluster]? + /// The identifier of the availability zones. + public var availabilityZoneIds: [Swift.String]? + /// The number of availability zones you want to assign per cluster. Currently, FinSpace only support SINGLE for volumes. + public var azMode: FinspaceClientTypes.KxAzMode? + /// The timestamp at which the volume was created in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var createdTimestamp: ClientRuntime.Date? + /// The description for the volume. + public var description: Swift.String? + /// A unique identifier for the kdb environment where you want to update the volume. + public var environmentId: Swift.String? + /// The last time that the volume was updated in FinSpace. The value is determined as epoch time in milliseconds. For example, the value for Monday, November 1, 2021 12:00:00 PM UTC is specified as 1635768000000. + public var lastModifiedTimestamp: ClientRuntime.Date? + /// Specifies the configuration for the Network attached storage (NAS_1) file system volume. + public var nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? + /// The status of the volume. + /// + /// * CREATING – The volume creation is in progress. + /// + /// * CREATE_FAILED – The volume creation has failed. + /// + /// * ACTIVE – The volume is active. + /// + /// * UPDATING – The volume is in the process of being updated. + /// + /// * UPDATE_FAILED – The update action failed. + /// + /// * UPDATED – The volume is successfully updated. + /// + /// * DELETING – The volume is in the process of being deleted. + /// + /// * DELETE_FAILED – The system failed to delete the volume. + /// + /// * DELETED – The volume is successfully deleted. + public var status: FinspaceClientTypes.KxVolumeStatus? + /// The error message when a failed state occurs. + public var statusReason: Swift.String? + /// The ARN identifier of the volume. + public var volumeArn: Swift.String? + /// A unique identifier for the volume that you want to update. + public var volumeName: Swift.String? + /// The type of file system volume. Currently, FinSpace only supports NAS_1 volume type. + public var volumeType: FinspaceClientTypes.KxVolumeType? + + public init( + attachedClusters: [FinspaceClientTypes.KxAttachedCluster]? = nil, + availabilityZoneIds: [Swift.String]? = nil, + azMode: FinspaceClientTypes.KxAzMode? = nil, + createdTimestamp: ClientRuntime.Date? = nil, + description: Swift.String? = nil, + environmentId: Swift.String? = nil, + lastModifiedTimestamp: ClientRuntime.Date? = nil, + nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? = nil, + status: FinspaceClientTypes.KxVolumeStatus? = nil, + statusReason: Swift.String? = nil, + volumeArn: Swift.String? = nil, + volumeName: Swift.String? = nil, + volumeType: FinspaceClientTypes.KxVolumeType? = nil + ) + { + self.attachedClusters = attachedClusters + self.availabilityZoneIds = availabilityZoneIds + self.azMode = azMode + self.createdTimestamp = createdTimestamp + self.description = description + self.environmentId = environmentId + self.lastModifiedTimestamp = lastModifiedTimestamp + self.nas1Configuration = nas1Configuration + self.status = status + self.statusReason = statusReason + self.volumeArn = volumeArn + self.volumeName = volumeName + self.volumeType = volumeType + } +} + +struct UpdateKxVolumeOutputBody: Swift.Equatable { + let environmentId: Swift.String? + let volumeName: Swift.String? + let volumeType: FinspaceClientTypes.KxVolumeType? + let volumeArn: Swift.String? + let nas1Configuration: FinspaceClientTypes.KxNAS1Configuration? + let status: FinspaceClientTypes.KxVolumeStatus? + let description: Swift.String? + let statusReason: Swift.String? + let createdTimestamp: ClientRuntime.Date? + let azMode: FinspaceClientTypes.KxAzMode? + let availabilityZoneIds: [Swift.String]? + let lastModifiedTimestamp: ClientRuntime.Date? + let attachedClusters: [FinspaceClientTypes.KxAttachedCluster]? +} + +extension UpdateKxVolumeOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case attachedClusters + case availabilityZoneIds + case azMode + case createdTimestamp + case description + case environmentId + case lastModifiedTimestamp + case nas1Configuration + case status + case statusReason + case volumeArn + case volumeName + case volumeType + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let environmentIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .environmentId) + environmentId = environmentIdDecoded + let volumeNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .volumeName) + volumeName = volumeNameDecoded + let volumeTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxVolumeType.self, forKey: .volumeType) + volumeType = volumeTypeDecoded + let volumeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .volumeArn) + volumeArn = volumeArnDecoded + let nas1ConfigurationDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxNAS1Configuration.self, forKey: .nas1Configuration) + nas1Configuration = nas1ConfigurationDecoded + let statusDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxVolumeStatus.self, forKey: .status) + status = statusDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let createdTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createdTimestamp) + createdTimestamp = createdTimestampDecoded + let azModeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.KxAzMode.self, forKey: .azMode) + azMode = azModeDecoded + let availabilityZoneIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .availabilityZoneIds) + var availabilityZoneIdsDecoded0:[Swift.String]? = nil + if let availabilityZoneIdsContainer = availabilityZoneIdsContainer { + availabilityZoneIdsDecoded0 = [Swift.String]() + for string0 in availabilityZoneIdsContainer { + if let string0 = string0 { + availabilityZoneIdsDecoded0?.append(string0) + } + } + } + availabilityZoneIds = availabilityZoneIdsDecoded0 + let lastModifiedTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTimestamp) + lastModifiedTimestamp = lastModifiedTimestampDecoded + let attachedClustersContainer = try containerValues.decodeIfPresent([FinspaceClientTypes.KxAttachedCluster?].self, forKey: .attachedClusters) + var attachedClustersDecoded0:[FinspaceClientTypes.KxAttachedCluster]? = nil + if let attachedClustersContainer = attachedClustersContainer { + attachedClustersDecoded0 = [FinspaceClientTypes.KxAttachedCluster]() + for structure0 in attachedClustersContainer { + if let structure0 = structure0 { + attachedClustersDecoded0?.append(structure0) + } + } + } + attachedClusters = attachedClustersDecoded0 + } +} + +enum UpdateKxVolumeOutputError: 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 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(), @@ -9089,6 +13424,80 @@ extension ValidationExceptionBody: Swift.Decodable { } } +extension FinspaceClientTypes.Volume: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case volumeName + case volumeType + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let volumeName = self.volumeName { + try encodeContainer.encode(volumeName, forKey: .volumeName) + } + if let volumeType = self.volumeType { + try encodeContainer.encode(volumeType.rawValue, forKey: .volumeType) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let volumeNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .volumeName) + volumeName = volumeNameDecoded + let volumeTypeDecoded = try containerValues.decodeIfPresent(FinspaceClientTypes.VolumeType.self, forKey: .volumeType) + volumeType = volumeTypeDecoded + } +} + +extension FinspaceClientTypes { + /// The structure that consists of name and type of volume. + public struct Volume: Swift.Equatable { + /// A unique identifier for the volume. + public var volumeName: Swift.String? + /// The type of file system volume. Currently, FinSpace only supports NAS_1 volume type. + public var volumeType: FinspaceClientTypes.VolumeType? + + public init( + volumeName: Swift.String? = nil, + volumeType: FinspaceClientTypes.VolumeType? = nil + ) + { + self.volumeName = volumeName + self.volumeType = volumeType + } + } + +} + +extension FinspaceClientTypes { + public enum VolumeType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case nas1 + case sdkUnknown(Swift.String) + + public static var allCases: [VolumeType] { + return [ + .nas1, + .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 .nas1: return "NAS_1" + 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 = VolumeType(rawValue: rawValue) ?? VolumeType.sdkUnknown(rawValue) + } + } +} + extension FinspaceClientTypes.VpcConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case ipAddressType diff --git a/Sources/Services/AWSFirehose/FirehoseClient.swift b/Sources/Services/AWSFirehose/FirehoseClient.swift index a41e62b2a09..ad6c1c092a0 100644 --- a/Sources/Services/AWSFirehose/FirehoseClient.swift +++ b/Sources/Services/AWSFirehose/FirehoseClient.swift @@ -325,6 +325,7 @@ extension FirehoseClient: FirehoseClientProtocol { /// __Possible Exceptions:__ /// - `InvalidArgumentException` : The specified input parameter has a value that is not valid. /// - `InvalidKMSResourceException` : Kinesis Data Firehose throws this exception when an attempt to put records or to start or stop delivery stream encryption fails. This happens when the KMS service throws one of the following exception types: AccessDeniedException, InvalidStateException, DisabledException, or NotFoundException. + /// - `InvalidSourceException` : Only requests from CloudWatch Logs are supported when CloudWatch Logs decompression is enabled. /// - `ResourceNotFoundException` : The specified resource could not be found. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. If you continue to see the exception, throughput limits for the delivery stream may have been exceeded. For more information about limits and how to request an increase, see [Amazon Kinesis Data Firehose Limits](https://docs.aws.amazon.com/firehose/latest/dev/limits.html). public func putRecord(input: PutRecordInput) async throws -> PutRecordOutput @@ -375,6 +376,7 @@ extension FirehoseClient: FirehoseClientProtocol { /// __Possible Exceptions:__ /// - `InvalidArgumentException` : The specified input parameter has a value that is not valid. /// - `InvalidKMSResourceException` : Kinesis Data Firehose throws this exception when an attempt to put records or to start or stop delivery stream encryption fails. This happens when the KMS service throws one of the following exception types: AccessDeniedException, InvalidStateException, DisabledException, or NotFoundException. + /// - `InvalidSourceException` : Only requests from CloudWatch Logs are supported when CloudWatch Logs decompression is enabled. /// - `ResourceNotFoundException` : The specified resource could not be found. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. If you continue to see the exception, throughput limits for the delivery stream may have been exceeded. For more information about limits and how to request an increase, see [Amazon Kinesis Data Firehose Limits](https://docs.aws.amazon.com/firehose/latest/dev/limits.html). public func putRecordBatch(input: PutRecordBatchInput) async throws -> PutRecordBatchOutput diff --git a/Sources/Services/AWSFirehose/FirehoseClientProtocol.swift b/Sources/Services/AWSFirehose/FirehoseClientProtocol.swift index 67b8c83cf40..b4b903ed74a 100644 --- a/Sources/Services/AWSFirehose/FirehoseClientProtocol.swift +++ b/Sources/Services/AWSFirehose/FirehoseClientProtocol.swift @@ -92,6 +92,7 @@ public protocol FirehoseClientProtocol { /// __Possible Exceptions:__ /// - `InvalidArgumentException` : The specified input parameter has a value that is not valid. /// - `InvalidKMSResourceException` : Kinesis Data Firehose throws this exception when an attempt to put records or to start or stop delivery stream encryption fails. This happens when the KMS service throws one of the following exception types: AccessDeniedException, InvalidStateException, DisabledException, or NotFoundException. + /// - `InvalidSourceException` : Only requests from CloudWatch Logs are supported when CloudWatch Logs decompression is enabled. /// - `ResourceNotFoundException` : The specified resource could not be found. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. If you continue to see the exception, throughput limits for the delivery stream may have been exceeded. For more information about limits and how to request an increase, see [Amazon Kinesis Data Firehose Limits](https://docs.aws.amazon.com/firehose/latest/dev/limits.html). func putRecord(input: PutRecordInput) async throws -> PutRecordOutput @@ -108,6 +109,7 @@ public protocol FirehoseClientProtocol { /// __Possible Exceptions:__ /// - `InvalidArgumentException` : The specified input parameter has a value that is not valid. /// - `InvalidKMSResourceException` : Kinesis Data Firehose throws this exception when an attempt to put records or to start or stop delivery stream encryption fails. This happens when the KMS service throws one of the following exception types: AccessDeniedException, InvalidStateException, DisabledException, or NotFoundException. + /// - `InvalidSourceException` : Only requests from CloudWatch Logs are supported when CloudWatch Logs decompression is enabled. /// - `ResourceNotFoundException` : The specified resource could not be found. /// - `ServiceUnavailableException` : The service is unavailable. Back off and retry the operation. If you continue to see the exception, throughput limits for the delivery stream may have been exceeded. For more information about limits and how to request an increase, see [Amazon Kinesis Data Firehose Limits](https://docs.aws.amazon.com/firehose/latest/dev/limits.html). func putRecordBatch(input: PutRecordBatchInput) async throws -> PutRecordBatchOutput diff --git a/Sources/Services/AWSFirehose/models/Models.swift b/Sources/Services/AWSFirehose/models/Models.swift index f1227ab5d51..b84c7e84ebe 100644 --- a/Sources/Services/AWSFirehose/models/Models.swift +++ b/Sources/Services/AWSFirehose/models/Models.swift @@ -4865,6 +4865,70 @@ extension InvalidKMSResourceExceptionBody: Swift.Decodable { } } +extension InvalidSourceException { + 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: InvalidSourceExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.code = output.code + self.properties.message = output.message + } else { + self.properties.code = nil + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// Only requests from CloudWatch Logs are supported when CloudWatch Logs decompression is enabled. +public struct InvalidSourceException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var code: Swift.String? = nil + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "InvalidSourceException" } + 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( + code: Swift.String? = nil, + message: Swift.String? = nil + ) + { + self.properties.code = code + self.properties.message = message + } +} + +struct InvalidSourceExceptionBody: Swift.Equatable { + let code: Swift.String? + let message: Swift.String? +} + +extension InvalidSourceExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case code + case message + } + + 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 + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + extension FirehoseClientTypes.KMSEncryptionConfig: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case awskmsKeyARN = "AWSKMSKeyARN" @@ -6406,6 +6470,7 @@ enum PutRecordBatchOutputError: ClientRuntime.HttpResponseErrorBinding { switch restJSONError.errorType { case "InvalidArgumentException": return try await InvalidArgumentException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InvalidKMSResourceException": return try await InvalidKMSResourceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidSourceException": return try await InvalidSourceException(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) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) @@ -6587,6 +6652,7 @@ enum PutRecordOutputError: ClientRuntime.HttpResponseErrorBinding { switch restJSONError.errorType { case "InvalidArgumentException": return try await InvalidArgumentException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "InvalidKMSResourceException": return try await InvalidKMSResourceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidSourceException": return try await InvalidSourceException(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) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) @@ -7850,8 +7916,54 @@ extension FirehoseClientTypes { } +extension FirehoseClientTypes.SplunkBufferingHints: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case intervalInSeconds = "IntervalInSeconds" + case sizeInMBs = "SizeInMBs" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let intervalInSeconds = self.intervalInSeconds { + try encodeContainer.encode(intervalInSeconds, forKey: .intervalInSeconds) + } + if let sizeInMBs = self.sizeInMBs { + try encodeContainer.encode(sizeInMBs, forKey: .sizeInMBs) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let intervalInSecondsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .intervalInSeconds) + intervalInSeconds = intervalInSecondsDecoded + let sizeInMBsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .sizeInMBs) + sizeInMBs = sizeInMBsDecoded + } +} + +extension FirehoseClientTypes { + /// The buffering options. If no value is specified, the default values for Splunk are used. + public struct SplunkBufferingHints: Swift.Equatable { + /// Buffer incoming data for the specified period of time, in seconds, before delivering it to the destination. The default value is 60 (1 minute). + public var intervalInSeconds: Swift.Int? + /// Buffer incoming data to the specified size, in MBs, before delivering it to the destination. The default value is 5. + public var sizeInMBs: Swift.Int? + + public init( + intervalInSeconds: Swift.Int? = nil, + sizeInMBs: Swift.Int? = nil + ) + { + self.intervalInSeconds = intervalInSeconds + self.sizeInMBs = sizeInMBs + } + } + +} + extension FirehoseClientTypes.SplunkDestinationConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case bufferingHints = "BufferingHints" case cloudWatchLoggingOptions = "CloudWatchLoggingOptions" case hecAcknowledgmentTimeoutInSeconds = "HECAcknowledgmentTimeoutInSeconds" case hecEndpoint = "HECEndpoint" @@ -7865,6 +7977,9 @@ extension FirehoseClientTypes.SplunkDestinationConfiguration: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let bufferingHints = self.bufferingHints { + try encodeContainer.encode(bufferingHints, forKey: .bufferingHints) + } if let cloudWatchLoggingOptions = self.cloudWatchLoggingOptions { try encodeContainer.encode(cloudWatchLoggingOptions, forKey: .cloudWatchLoggingOptions) } @@ -7914,12 +8029,16 @@ extension FirehoseClientTypes.SplunkDestinationConfiguration: Swift.Codable { processingConfiguration = processingConfigurationDecoded let cloudWatchLoggingOptionsDecoded = try containerValues.decodeIfPresent(FirehoseClientTypes.CloudWatchLoggingOptions.self, forKey: .cloudWatchLoggingOptions) cloudWatchLoggingOptions = cloudWatchLoggingOptionsDecoded + let bufferingHintsDecoded = try containerValues.decodeIfPresent(FirehoseClientTypes.SplunkBufferingHints.self, forKey: .bufferingHints) + bufferingHints = bufferingHintsDecoded } } extension FirehoseClientTypes { /// Describes the configuration of a destination in Splunk. public struct SplunkDestinationConfiguration: Swift.Equatable { + /// The buffering options. If no value is specified, the default values for Splunk are used. + public var bufferingHints: FirehoseClientTypes.SplunkBufferingHints? /// The Amazon CloudWatch logging options for your delivery stream. public var cloudWatchLoggingOptions: FirehoseClientTypes.CloudWatchLoggingOptions? /// The amount of time that Kinesis Data Firehose waits to receive an acknowledgment from Splunk after it sends it data. At the end of the timeout period, Kinesis Data Firehose either tries to send the data again or considers it an error, based on your retry settings. @@ -7944,6 +8063,7 @@ extension FirehoseClientTypes { public var s3Configuration: FirehoseClientTypes.S3DestinationConfiguration? public init( + bufferingHints: FirehoseClientTypes.SplunkBufferingHints? = nil, cloudWatchLoggingOptions: FirehoseClientTypes.CloudWatchLoggingOptions? = nil, hecAcknowledgmentTimeoutInSeconds: Swift.Int? = nil, hecEndpoint: Swift.String? = nil, @@ -7955,6 +8075,7 @@ extension FirehoseClientTypes { s3Configuration: FirehoseClientTypes.S3DestinationConfiguration? = nil ) { + self.bufferingHints = bufferingHints self.cloudWatchLoggingOptions = cloudWatchLoggingOptions self.hecAcknowledgmentTimeoutInSeconds = hecAcknowledgmentTimeoutInSeconds self.hecEndpoint = hecEndpoint @@ -7971,6 +8092,7 @@ extension FirehoseClientTypes { extension FirehoseClientTypes.SplunkDestinationDescription: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case bufferingHints = "BufferingHints" case cloudWatchLoggingOptions = "CloudWatchLoggingOptions" case hecAcknowledgmentTimeoutInSeconds = "HECAcknowledgmentTimeoutInSeconds" case hecEndpoint = "HECEndpoint" @@ -7984,6 +8106,9 @@ extension FirehoseClientTypes.SplunkDestinationDescription: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let bufferingHints = self.bufferingHints { + try encodeContainer.encode(bufferingHints, forKey: .bufferingHints) + } if let cloudWatchLoggingOptions = self.cloudWatchLoggingOptions { try encodeContainer.encode(cloudWatchLoggingOptions, forKey: .cloudWatchLoggingOptions) } @@ -8033,12 +8158,16 @@ extension FirehoseClientTypes.SplunkDestinationDescription: Swift.Codable { processingConfiguration = processingConfigurationDecoded let cloudWatchLoggingOptionsDecoded = try containerValues.decodeIfPresent(FirehoseClientTypes.CloudWatchLoggingOptions.self, forKey: .cloudWatchLoggingOptions) cloudWatchLoggingOptions = cloudWatchLoggingOptionsDecoded + let bufferingHintsDecoded = try containerValues.decodeIfPresent(FirehoseClientTypes.SplunkBufferingHints.self, forKey: .bufferingHints) + bufferingHints = bufferingHintsDecoded } } extension FirehoseClientTypes { /// Describes a destination in Splunk. public struct SplunkDestinationDescription: Swift.Equatable { + /// The buffering options. If no value is specified, the default values for Splunk are used. + public var bufferingHints: FirehoseClientTypes.SplunkBufferingHints? /// The Amazon CloudWatch logging options for your delivery stream. public var cloudWatchLoggingOptions: FirehoseClientTypes.CloudWatchLoggingOptions? /// The amount of time that Kinesis Data Firehose waits to receive an acknowledgment from Splunk after it sends it data. At the end of the timeout period, Kinesis Data Firehose either tries to send the data again or considers it an error, based on your retry settings. @@ -8059,6 +8188,7 @@ extension FirehoseClientTypes { public var s3DestinationDescription: FirehoseClientTypes.S3DestinationDescription? public init( + bufferingHints: FirehoseClientTypes.SplunkBufferingHints? = nil, cloudWatchLoggingOptions: FirehoseClientTypes.CloudWatchLoggingOptions? = nil, hecAcknowledgmentTimeoutInSeconds: Swift.Int? = nil, hecEndpoint: Swift.String? = nil, @@ -8070,6 +8200,7 @@ extension FirehoseClientTypes { s3DestinationDescription: FirehoseClientTypes.S3DestinationDescription? = nil ) { + self.bufferingHints = bufferingHints self.cloudWatchLoggingOptions = cloudWatchLoggingOptions self.hecAcknowledgmentTimeoutInSeconds = hecAcknowledgmentTimeoutInSeconds self.hecEndpoint = hecEndpoint @@ -8086,6 +8217,7 @@ extension FirehoseClientTypes { extension FirehoseClientTypes.SplunkDestinationUpdate: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case bufferingHints = "BufferingHints" case cloudWatchLoggingOptions = "CloudWatchLoggingOptions" case hecAcknowledgmentTimeoutInSeconds = "HECAcknowledgmentTimeoutInSeconds" case hecEndpoint = "HECEndpoint" @@ -8099,6 +8231,9 @@ extension FirehoseClientTypes.SplunkDestinationUpdate: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let bufferingHints = self.bufferingHints { + try encodeContainer.encode(bufferingHints, forKey: .bufferingHints) + } if let cloudWatchLoggingOptions = self.cloudWatchLoggingOptions { try encodeContainer.encode(cloudWatchLoggingOptions, forKey: .cloudWatchLoggingOptions) } @@ -8148,12 +8283,16 @@ extension FirehoseClientTypes.SplunkDestinationUpdate: Swift.Codable { processingConfiguration = processingConfigurationDecoded let cloudWatchLoggingOptionsDecoded = try containerValues.decodeIfPresent(FirehoseClientTypes.CloudWatchLoggingOptions.self, forKey: .cloudWatchLoggingOptions) cloudWatchLoggingOptions = cloudWatchLoggingOptionsDecoded + let bufferingHintsDecoded = try containerValues.decodeIfPresent(FirehoseClientTypes.SplunkBufferingHints.self, forKey: .bufferingHints) + bufferingHints = bufferingHintsDecoded } } extension FirehoseClientTypes { /// Describes an update for a destination in Splunk. public struct SplunkDestinationUpdate: Swift.Equatable { + /// The buffering options. If no value is specified, the default values for Splunk are used. + public var bufferingHints: FirehoseClientTypes.SplunkBufferingHints? /// The Amazon CloudWatch logging options for your delivery stream. public var cloudWatchLoggingOptions: FirehoseClientTypes.CloudWatchLoggingOptions? /// The amount of time that Kinesis Data Firehose waits to receive an acknowledgment from Splunk after it sends data. At the end of the timeout period, Kinesis Data Firehose either tries to send the data again or considers it an error, based on your retry settings. @@ -8174,6 +8313,7 @@ extension FirehoseClientTypes { public var s3Update: FirehoseClientTypes.S3DestinationUpdate? public init( + bufferingHints: FirehoseClientTypes.SplunkBufferingHints? = nil, cloudWatchLoggingOptions: FirehoseClientTypes.CloudWatchLoggingOptions? = nil, hecAcknowledgmentTimeoutInSeconds: Swift.Int? = nil, hecEndpoint: Swift.String? = nil, @@ -8185,6 +8325,7 @@ extension FirehoseClientTypes { s3Update: FirehoseClientTypes.S3DestinationUpdate? = nil ) { + self.bufferingHints = bufferingHints self.cloudWatchLoggingOptions = cloudWatchLoggingOptions self.hecAcknowledgmentTimeoutInSeconds = hecAcknowledgmentTimeoutInSeconds self.hecEndpoint = hecEndpoint diff --git a/Sources/Services/AWSGameLift/GameLiftClient.swift b/Sources/Services/AWSGameLift/GameLiftClient.swift index a850595ddc6..6933baf0e30 100644 --- a/Sources/Services/AWSGameLift/GameLiftClient.swift +++ b/Sources/Services/AWSGameLift/GameLiftClient.swift @@ -4296,20 +4296,20 @@ extension GameLiftClient: GameLiftClientProtocol { /// Performs the `SearchGameSessions` operation on the `GameLift` service. /// - /// Retrieves all active game sessions that match a set of search criteria and sorts them into a specified order. This operation is not designed to be continually called to track game session status. This practice can cause you to exceed your API limit, which results in errors. Instead, you must configure configure an Amazon Simple Notification Service (SNS) topic to receive notifications from FlexMatch or queues. Continuously polling game session status with DescribeGameSessions should only be used for games in development with low game session usage. When searching for game sessions, you specify exactly where you want to search and provide a search filter expression, a sort expression, or both. A search request can search only one fleet, but it can search all of a fleet's locations. This operation can be used in the following ways: + /// Retrieves all active game sessions that match a set of search criteria and sorts them into a specified order. This operation is not designed to continually track game session status because that practice can cause you to exceed your API limit and generate errors. Instead, configure an Amazon Simple Notification Service (Amazon SNS) topic to receive notifications from a matchmaker or game session placement queue. When searching for game sessions, you specify exactly where you want to search and provide a search filter expression, a sort expression, or both. A search request can search only one fleet, but it can search all of a fleet's locations. This operation can be used in the following ways: /// /// * To search all game sessions that are currently running on all locations in a fleet, provide a fleet or alias ID. This approach returns game sessions in the fleet's home Region and all remote locations that fit the search criteria. /// /// * To search all game sessions that are currently running on a specific fleet location, provide a fleet or alias ID and a location name. For location, you can specify a fleet's home Region or any remote location. /// /// - /// Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a GameSession object is returned for each game session that matches the request. Search finds game sessions that are in ACTIVE status only. To retrieve information on game sessions in other statuses, use [DescribeGameSessions](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeGameSessions.html) . You can search or sort by the following game session attributes: + /// Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a GameSession object is returned for each game session that matches the request. Search finds game sessions that are in ACTIVE status only. To retrieve information on game sessions in other statuses, use [DescribeGameSessions](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeGameSessions.html) . To set search and sort criteria, create a filter expression using the following game session attributes. For game session search examples, see the Examples section of this topic. /// /// * gameSessionId -- A unique identifier for the game session. You can use either a GameSessionId or GameSessionArn value. /// /// * gameSessionName -- Name assigned to a game session. Game session names do not need to be unique to a game session. /// - /// * gameSessionProperties -- Custom data defined in a game session's GameProperty parameter. GameProperty values are stored as key:value pairs; the filter expression must indicate the key and a string to search the data values for. For example, to search for game sessions with custom data containing the key:value pair "gameMode:brawl", specify the following: gameSessionProperties.gameMode = "brawl". All custom data values are searched as strings. + /// * gameSessionProperties -- A set of key-value pairs that can store custom data in a game session. For example: {"Key": "difficulty", "Value": "novice"}. The filter expression must specify the [GameProperty] -- a Key and a string Value to search for the game sessions. For example, to search for the above key-value pair, specify the following search filter: gameSessionProperties.difficulty = "novice". All game property values are searched as strings. For examples of searching game sessions, see the ones below, and also see [Search game sessions by game property](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-client-api.html#game-properties-search). /// /// * maximumSessions -- Maximum number of player sessions allowed for a game session. /// diff --git a/Sources/Services/AWSGameLift/GameLiftClientProtocol.swift b/Sources/Services/AWSGameLift/GameLiftClientProtocol.swift index ed3109c1ba0..95e0d1814a2 100644 --- a/Sources/Services/AWSGameLift/GameLiftClientProtocol.swift +++ b/Sources/Services/AWSGameLift/GameLiftClientProtocol.swift @@ -1528,20 +1528,20 @@ public protocol GameLiftClientProtocol { func resumeGameServerGroup(input: ResumeGameServerGroupInput) async throws -> ResumeGameServerGroupOutput /// Performs the `SearchGameSessions` operation on the `GameLift` service. /// - /// Retrieves all active game sessions that match a set of search criteria and sorts them into a specified order. This operation is not designed to be continually called to track game session status. This practice can cause you to exceed your API limit, which results in errors. Instead, you must configure configure an Amazon Simple Notification Service (SNS) topic to receive notifications from FlexMatch or queues. Continuously polling game session status with DescribeGameSessions should only be used for games in development with low game session usage. When searching for game sessions, you specify exactly where you want to search and provide a search filter expression, a sort expression, or both. A search request can search only one fleet, but it can search all of a fleet's locations. This operation can be used in the following ways: + /// Retrieves all active game sessions that match a set of search criteria and sorts them into a specified order. This operation is not designed to continually track game session status because that practice can cause you to exceed your API limit and generate errors. Instead, configure an Amazon Simple Notification Service (Amazon SNS) topic to receive notifications from a matchmaker or game session placement queue. When searching for game sessions, you specify exactly where you want to search and provide a search filter expression, a sort expression, or both. A search request can search only one fleet, but it can search all of a fleet's locations. This operation can be used in the following ways: /// /// * To search all game sessions that are currently running on all locations in a fleet, provide a fleet or alias ID. This approach returns game sessions in the fleet's home Region and all remote locations that fit the search criteria. /// /// * To search all game sessions that are currently running on a specific fleet location, provide a fleet or alias ID and a location name. For location, you can specify a fleet's home Region or any remote location. /// /// - /// Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a GameSession object is returned for each game session that matches the request. Search finds game sessions that are in ACTIVE status only. To retrieve information on game sessions in other statuses, use [DescribeGameSessions](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeGameSessions.html) . You can search or sort by the following game session attributes: + /// Use the pagination parameters to retrieve results as a set of sequential pages. If successful, a GameSession object is returned for each game session that matches the request. Search finds game sessions that are in ACTIVE status only. To retrieve information on game sessions in other statuses, use [DescribeGameSessions](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeGameSessions.html) . To set search and sort criteria, create a filter expression using the following game session attributes. For game session search examples, see the Examples section of this topic. /// /// * gameSessionId -- A unique identifier for the game session. You can use either a GameSessionId or GameSessionArn value. /// /// * gameSessionName -- Name assigned to a game session. Game session names do not need to be unique to a game session. /// - /// * gameSessionProperties -- Custom data defined in a game session's GameProperty parameter. GameProperty values are stored as key:value pairs; the filter expression must indicate the key and a string to search the data values for. For example, to search for game sessions with custom data containing the key:value pair "gameMode:brawl", specify the following: gameSessionProperties.gameMode = "brawl". All custom data values are searched as strings. + /// * gameSessionProperties -- A set of key-value pairs that can store custom data in a game session. For example: {"Key": "difficulty", "Value": "novice"}. The filter expression must specify the [GameProperty] -- a Key and a string Value to search for the game sessions. For example, to search for the above key-value pair, specify the following search filter: gameSessionProperties.difficulty = "novice". All game property values are searched as strings. For examples of searching game sessions, see the ones below, and also see [Search game sessions by game property](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-client-api.html#game-properties-search). /// /// * maximumSessions -- Maximum number of player sessions allowed for a game session. /// diff --git a/Sources/Services/AWSGameLift/models/Models.swift b/Sources/Services/AWSGameLift/models/Models.swift index 0bef979e2a7..1c2d7225876 100644 --- a/Sources/Services/AWSGameLift/models/Models.swift +++ b/Sources/Services/AWSGameLift/models/Models.swift @@ -2526,7 +2526,7 @@ public struct CreateGameSessionInput: Swift.Equatable { public var creatorId: Swift.String? /// A unique identifier for the fleet to create a game session in. You can use either the fleet ID or ARN value. Each request must reference either a fleet ID or alias ID, but not both. public var fleetId: Swift.String? - /// A set of custom properties for a game session, formatted as key:value pairs. These properties are passed to a game server process with a request to start a new game session (see [Start a Game Session](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession)). + /// A set of key-value pairs that can store custom data in a game session. For example: {"Key": "difficulty", "Value": "novice"}. For an example, see [Create a game session with custom properties](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-client-api.html#game-properties-create). public var gameProperties: [GameLiftClientTypes.GameProperty]? /// A set of custom game session properties, formatted as a single string value. This data is passed to a game server process with a request to start a new game session (see [Start a Game Session](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession)). public var gameSessionData: Swift.String? @@ -3158,7 +3158,7 @@ public struct CreateMatchmakingConfigurationInput: Swift.Equatable { /// /// * WITH_QUEUE - FlexMatch forms matches and uses the specified Amazon GameLift queue to start a game session for the match. public var flexMatchMode: GameLiftClientTypes.FlexMatchMode? - /// A set of custom properties for a game session, formatted as key:value pairs. These properties are passed to a game server process with a request to start a new game session (see [Start a Game Session](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession)). This information is added to the new GameSession object that is created for a successful match. This parameter is not used if FlexMatchMode is set to STANDALONE. + /// A set of key-value pairs that can store custom data in a game session. For example: {"Key": "difficulty", "Value": "novice"}. This information is added to the new GameSession object that is created for a successful match. This parameter is not used if FlexMatchMode is set to STANDALONE. public var gameProperties: [GameLiftClientTypes.GameProperty]? /// A set of custom game session properties, formatted as a single string value. This data is passed to a game server process with a request to start a new game session (see [Start a Game Session](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession)). This information is added to the new GameSession object that is created for a successful match. This parameter is not used if FlexMatchMode is set to STANDALONE. public var gameSessionData: Swift.String? @@ -10440,17 +10440,17 @@ extension GameLiftClientTypes { /// /// * SERVER_PROCESS_INVALID_PATH -- The game server executable or script could not be found based on the Fleet runtime configuration. Check that the launch path is correct based on the operating system of the Fleet. /// - /// * SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT -- The server process did not call InitSDK() within the time expected. Check your game session log to see why InitSDK() was not called in time. + /// * SERVER_PROCESS_SDK_INITIALIZATION_TIMEOUT -- The server process did not call InitSDK() within the time expected (5 minutes). Check your game session log to see why InitSDK() was not called in time. /// - /// * SERVER_PROCESS_PROCESS_READY_TIMEOUT -- The server process did not call ProcessReady() within the time expected after calling InitSDK(). Check your game session log to see why ProcessReady() was not called in time. + /// * SERVER_PROCESS_PROCESS_READY_TIMEOUT -- The server process did not call ProcessReady() within the time expected (5 minutes) after calling InitSDK(). Check your game session log to see why ProcessReady() was not called in time. /// /// * SERVER_PROCESS_CRASHED -- The server process exited without calling ProcessEnding(). Check your game session log to see why ProcessEnding() was not called. /// /// * SERVER_PROCESS_TERMINATED_UNHEALTHY -- The server process did not report a valid health check for too long and was therefore terminated by GameLift. Check your game session log to see if the thread became stuck processing a synchronous task for too long. /// - /// * SERVER_PROCESS_FORCE_TERMINATED -- The server process did not exit cleanly after OnProcessTerminate() was sent within the time expected. Check your game session log to see why termination took longer than expected. + /// * SERVER_PROCESS_FORCE_TERMINATED -- The server process did not exit cleanly within the time expected after OnProcessTerminate() was sent. Check your game session log to see why termination took longer than expected. /// - /// * SERVER_PROCESS_PROCESS_EXIT_TIMEOUT -- The server process did not exit cleanly within the time expected after calling ProcessEnding(). Check your game session log to see why termination took longer than expected. + /// * SERVER_PROCESS_PROCESS_EXIT_TIMEOUT -- The server process did not exit cleanly within the time expected (30 seconds) after calling ProcessEnding(). Check your game session log to see why termination took longer than expected. /// /// /// Game session events: @@ -11443,7 +11443,7 @@ extension GameLiftClientTypes.GameProperty: Swift.Codable { } extension GameLiftClientTypes { - /// Set of key-value pairs that contain information about a game session. When included in a game session request, these properties communicate details to be used when setting up the new game session. For example, a game property might specify a game mode, level, or map. Game properties are passed to the game server process when initiating a new game session. For more information, see the [ Amazon GameLift Developer Guide](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-client-api.html#gamelift-sdk-client-api-create). + /// This key-value pair can store custom data about a game session. For example, you might use a GameProperty to track a game session's map, level of difficulty, or remaining time. The difficulty level could be specified like this: {"Key": "difficulty", "Value":"Novice"}. You can set game properties when creating a game session. You can also modify game properties of an active game session. When searching for game sessions, you can filter on game property keys and values. You can't delete game properties from a game session. For examples of working with game properties, see [Create a game session with properties](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-client-api.html#game-properties). public struct GameProperty: Swift.Equatable { /// The game property identifier. /// This member is required. @@ -12627,7 +12627,7 @@ extension GameLiftClientTypes { public var fleetArn: Swift.String? /// A unique identifier for the fleet that the game session is running on. public var fleetId: Swift.String? - /// A set of custom properties for a game session, formatted as key:value pairs. These properties are passed to a game server process with a request to start a new game session (see [Start a Game Session](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession)). + /// A set of key-value pairs that can store custom data in a game session. For example: {"Key": "difficulty", "Value": "novice"}. public var gameProperties: [GameLiftClientTypes.GameProperty]? /// A set of custom game session properties, formatted as a single string value. This data is passed to a game server process with a request to start a new game session (see [Start a Game Session](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession)). public var gameSessionData: Swift.String? @@ -13079,7 +13079,7 @@ extension GameLiftClientTypes { public var dnsName: Swift.String? /// Time stamp indicating when this request was completed, canceled, or timed out. public var endTime: ClientRuntime.Date? - /// A set of custom properties for a game session, formatted as key:value pairs. These properties are passed to a game server process with a request to start a new game session (see [Start a Game Session](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession)). + /// A set of key-value pairs that can store custom data in a game session. For example: {"Key": "difficulty", "Value": "novice"}. public var gameProperties: [GameLiftClientTypes.GameProperty]? /// Identifier for the game session created by this placement request. This identifier is unique across all Regions. This value isn't final until placement status is FULFILLED. public var gameSessionArn: Swift.String? @@ -16654,7 +16654,7 @@ extension GameLiftClientTypes { /// /// * WITH_QUEUE - FlexMatch forms matches and uses the specified Amazon GameLift queue to start a game session for the match. public var flexMatchMode: GameLiftClientTypes.FlexMatchMode? - /// A set of custom properties for a game session, formatted as key:value pairs. These properties are passed to a game server process with a request to start a new game session (see [Start a Game Session](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession)). This information is added to the new GameSession object that is created for a successful match. This parameter is not used when FlexMatchMode is set to STANDALONE. + /// A set of key-value pairs that can store custom data in a game session. For example: {"Key": "difficulty", "Value": "novice"}. This information is added to the new GameSession object that is created for a successful match. This parameter is not used when FlexMatchMode is set to STANDALONE. public var gameProperties: [GameLiftClientTypes.GameProperty]? /// A set of custom game session properties, formatted as a single string value. This data is passed to a game server process with a request to start a new game session (see [Start a Game Session](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession)). This information is added to the new GameSession object that is created for a successful match. This parameter is not used when FlexMatchMode is set to STANDALONE. public var gameSessionData: Swift.String? @@ -19985,7 +19985,7 @@ extension StartGameSessionPlacementInput: ClientRuntime.URLPathProvider { public struct StartGameSessionPlacementInput: Swift.Equatable { /// Set of information on each player to create a player session for. public var desiredPlayerSessions: [GameLiftClientTypes.DesiredPlayerSession]? - /// A set of custom properties for a game session, formatted as key:value pairs. These properties are passed to a game server process with a request to start a new game session (see [Start a Game Session](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession)). + /// A set of key-value pairs that can store custom data in a game session. For example: {"Key": "difficulty", "Value": "novice"}. public var gameProperties: [GameLiftClientTypes.GameProperty]? /// A set of custom game session properties, formatted as a single string value. This data is passed to a game server process in the GameSession object with a request to start a new game session (see [Start a Game Session](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession)). public var gameSessionData: Swift.String? @@ -22553,6 +22553,7 @@ enum UpdateGameServerOutputError: ClientRuntime.HttpResponseErrorBinding { extension UpdateGameSessionInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case gameProperties = "GameProperties" case gameSessionId = "GameSessionId" case maximumPlayerSessionCount = "MaximumPlayerSessionCount" case name = "Name" @@ -22562,6 +22563,12 @@ extension UpdateGameSessionInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let gameProperties = gameProperties { + var gamePropertiesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .gameProperties) + for gameproperty0 in gameProperties { + try gamePropertiesContainer.encode(gameproperty0) + } + } if let gameSessionId = self.gameSessionId { try encodeContainer.encode(gameSessionId, forKey: .gameSessionId) } @@ -22587,6 +22594,8 @@ extension UpdateGameSessionInput: ClientRuntime.URLPathProvider { } public struct UpdateGameSessionInput: Swift.Equatable { + /// A set of key-value pairs that can store custom data in a game session. For example: {"Key": "difficulty", "Value": "novice"}. You can use this parameter to modify game properties in an active game session. This action adds new properties and modifies existing properties. There is no way to delete properties. For an example, see [Update the value of a game property](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-client-api.html#game-properties-update). + public var gameProperties: [GameLiftClientTypes.GameProperty]? /// A unique identifier for the game session to update. /// This member is required. public var gameSessionId: Swift.String? @@ -22604,6 +22613,7 @@ public struct UpdateGameSessionInput: Swift.Equatable { public var protectionPolicy: GameLiftClientTypes.ProtectionPolicy? public init( + gameProperties: [GameLiftClientTypes.GameProperty]? = nil, gameSessionId: Swift.String? = nil, maximumPlayerSessionCount: Swift.Int? = nil, name: Swift.String? = nil, @@ -22611,6 +22621,7 @@ public struct UpdateGameSessionInput: Swift.Equatable { protectionPolicy: GameLiftClientTypes.ProtectionPolicy? = nil ) { + self.gameProperties = gameProperties self.gameSessionId = gameSessionId self.maximumPlayerSessionCount = maximumPlayerSessionCount self.name = name @@ -22625,10 +22636,12 @@ struct UpdateGameSessionInputBody: Swift.Equatable { let name: Swift.String? let playerSessionCreationPolicy: GameLiftClientTypes.PlayerSessionCreationPolicy? let protectionPolicy: GameLiftClientTypes.ProtectionPolicy? + let gameProperties: [GameLiftClientTypes.GameProperty]? } extension UpdateGameSessionInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case gameProperties = "GameProperties" case gameSessionId = "GameSessionId" case maximumPlayerSessionCount = "MaximumPlayerSessionCount" case name = "Name" @@ -22648,6 +22661,17 @@ extension UpdateGameSessionInputBody: Swift.Decodable { playerSessionCreationPolicy = playerSessionCreationPolicyDecoded let protectionPolicyDecoded = try containerValues.decodeIfPresent(GameLiftClientTypes.ProtectionPolicy.self, forKey: .protectionPolicy) protectionPolicy = protectionPolicyDecoded + let gamePropertiesContainer = try containerValues.decodeIfPresent([GameLiftClientTypes.GameProperty?].self, forKey: .gameProperties) + var gamePropertiesDecoded0:[GameLiftClientTypes.GameProperty]? = nil + if let gamePropertiesContainer = gamePropertiesContainer { + gamePropertiesDecoded0 = [GameLiftClientTypes.GameProperty]() + for structure0 in gamePropertiesContainer { + if let structure0 = structure0 { + gamePropertiesDecoded0?.append(structure0) + } + } + } + gameProperties = gamePropertiesDecoded0 } } @@ -23013,7 +23037,7 @@ public struct UpdateMatchmakingConfigurationInput: Swift.Equatable { /// /// * WITH_QUEUE - FlexMatch forms matches and uses the specified Amazon GameLift queue to start a game session for the match. public var flexMatchMode: GameLiftClientTypes.FlexMatchMode? - /// A set of custom properties for a game session, formatted as key:value pairs. These properties are passed to a game server process with a request to start a new game session (see [Start a Game Session](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession)). This information is added to the new GameSession object that is created for a successful match. This parameter is not used if FlexMatchMode is set to STANDALONE. + /// A set of key-value pairs that can store custom data in a game session. For example: {"Key": "difficulty", "Value": "novice"}. This information is added to the new GameSession object that is created for a successful match. This parameter is not used if FlexMatchMode is set to STANDALONE. public var gameProperties: [GameLiftClientTypes.GameProperty]? /// A set of custom game session properties, formatted as a single string value. This data is passed to a game server process with a request to start a new game session (see [Start a Game Session](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession)). This information is added to the game session that is created for a successful match. This parameter is not used if FlexMatchMode is set to STANDALONE. public var gameSessionData: Swift.String? diff --git a/Sources/Services/AWSImagebuilder/ImagebuilderClient.swift b/Sources/Services/AWSImagebuilder/ImagebuilderClient.swift index 7b22cdfd177..a4d6267aad6 100644 --- a/Sources/Services/AWSImagebuilder/ImagebuilderClient.swift +++ b/Sources/Services/AWSImagebuilder/ImagebuilderClient.swift @@ -630,6 +630,63 @@ extension ImagebuilderClient: ImagebuilderClientProtocol { return result } + /// Performs the `CreateWorkflow` operation on the `imagebuilder` service. + /// + /// Create a new workflow or a new version of an existing workflow. + /// + /// - Parameter CreateWorkflowInput : [no documentation found] + /// + /// - Returns: `CreateWorkflowOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `IdempotentParameterMismatchException` : You have specified a client token for an operation using parameter values that differ from a previous request that used the same client token. + /// - `InvalidParameterCombinationException` : You have specified two or more mutually exclusive parameters. Review the error message for details. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `InvalidVersionNumberException` : Your version number is out of bounds or does not follow the required syntax. + /// - `ResourceInUseException` : The resource that you are trying to operate on is currently in use. Review the message details and retry later. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceQuotaExceededException` : You have exceeded the number of permitted resources or operations for this service. For service quotas, see [EC2 Image Builder endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder). + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + public func createWorkflow(input: CreateWorkflowInput) async throws -> CreateWorkflowOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .put) + .withServiceName(value: serviceName) + .withOperation(value: "createWorkflow") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "imagebuilder") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "createWorkflow") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(CreateWorkflowOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `DeleteComponent` operation on the `imagebuilder` service. /// /// Deletes a component build version. @@ -1036,6 +1093,56 @@ extension ImagebuilderClient: ImagebuilderClientProtocol { return result } + /// Performs the `DeleteWorkflow` operation on the `imagebuilder` service. + /// + /// Deletes a specific workflow resource. + /// + /// - Parameter DeleteWorkflowInput : [no documentation found] + /// + /// - Returns: `DeleteWorkflowOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `ResourceDependencyException` : You have attempted to mutate or delete a resource with a dependency that prohibits this action. See the error message for more details. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + public func deleteWorkflow(input: DeleteWorkflowInput) async throws -> DeleteWorkflowOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .delete) + .withServiceName(value: serviceName) + .withOperation(value: "deleteWorkflow") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "imagebuilder") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deleteWorkflow") + 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(DeleteWorkflowOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `GetComponent` operation on the `imagebuilder` service. /// /// Gets a component object. @@ -1673,6 +1780,55 @@ extension ImagebuilderClient: ImagebuilderClientProtocol { return result } + /// Performs the `GetWorkflow` operation on the `imagebuilder` service. + /// + /// Get a workflow resource object. + /// + /// - Parameter GetWorkflowInput : [no documentation found] + /// + /// - Returns: `GetWorkflowOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + public func getWorkflow(input: GetWorkflowInput) async throws -> GetWorkflowOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "getWorkflow") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "imagebuilder") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "getWorkflow") + 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(GetWorkflowOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `GetWorkflowExecution` operation on the `imagebuilder` service. /// /// Get the runtime information that was logged for a specific runtime instance of the workflow. @@ -2763,6 +2919,110 @@ extension ImagebuilderClient: ImagebuilderClientProtocol { return result } + /// Performs the `ListWaitingWorkflowSteps` operation on the `imagebuilder` service. + /// + /// Get a list of workflow steps that are waiting for action for workflows in your Amazon Web Services account. + /// + /// - Parameter ListWaitingWorkflowStepsInput : [no documentation found] + /// + /// - Returns: `ListWaitingWorkflowStepsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `InvalidPaginationTokenException` : You have provided an invalid pagination token in your request. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + public func listWaitingWorkflowSteps(input: ListWaitingWorkflowStepsInput) async throws -> ListWaitingWorkflowStepsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listWaitingWorkflowSteps") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "imagebuilder") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listWaitingWorkflowSteps") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListWaitingWorkflowStepsOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `ListWorkflowBuildVersions` operation on the `imagebuilder` service. + /// + /// Returns a list of build versions for a specific workflow resource. + /// + /// - Parameter ListWorkflowBuildVersionsInput : [no documentation found] + /// + /// - Returns: `ListWorkflowBuildVersionsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `InvalidPaginationTokenException` : You have provided an invalid pagination token in your request. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + public func listWorkflowBuildVersions(input: ListWorkflowBuildVersionsInput) async throws -> ListWorkflowBuildVersionsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listWorkflowBuildVersions") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "imagebuilder") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listWorkflowBuildVersions") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListWorkflowBuildVersionsOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `ListWorkflowExecutions` operation on the `imagebuilder` service. /// /// Returns a list of workflow runtime instance metadata objects for a specific image build version. @@ -2817,7 +3077,7 @@ extension ImagebuilderClient: ImagebuilderClientProtocol { /// Performs the `ListWorkflowStepExecutions` operation on the `imagebuilder` service. /// - /// Shows runtime data for each step in a runtime instance of the workflow that you specify in the request. + /// Returns runtime data for each step in a runtime instance of the workflow that you specify in the request. /// /// - Parameter ListWorkflowStepExecutionsInput : [no documentation found] /// @@ -2867,6 +3127,58 @@ extension ImagebuilderClient: ImagebuilderClientProtocol { return result } + /// Performs the `ListWorkflows` operation on the `imagebuilder` service. + /// + /// Lists workflow build versions based on filtering parameters. + /// + /// - Parameter ListWorkflowsInput : [no documentation found] + /// + /// - Returns: `ListWorkflowsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `InvalidPaginationTokenException` : You have provided an invalid pagination token in your request. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + public func listWorkflows(input: ListWorkflowsInput) async throws -> ListWorkflowsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listWorkflows") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "imagebuilder") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listWorkflows") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListWorkflowsOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `PutComponentPolicy` operation on the `imagebuilder` service. /// /// Applies a policy to a component. We recommend that you call the RAM API [CreateResourceShare](https://docs.aws.amazon.com/ram/latest/APIReference/API_CreateResourceShare.html) to share resources. If you call the Image Builder API PutComponentPolicy, you must also call the RAM API [PromoteResourceShareCreatedFromPolicy](https://docs.aws.amazon.com/ram/latest/APIReference/API_PromoteResourceShareCreatedFromPolicy.html) in order for the resource to be visible to all principals with whom the resource is shared. @@ -3079,6 +3391,62 @@ extension ImagebuilderClient: ImagebuilderClientProtocol { return result } + /// Performs the `SendWorkflowStepAction` operation on the `imagebuilder` service. + /// + /// Pauses or resumes image creation when the associated workflow runs a WaitForAction step. + /// + /// - Parameter SendWorkflowStepActionInput : [no documentation found] + /// + /// - Returns: `SendWorkflowStepActionOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `IdempotentParameterMismatchException` : You have specified a client token for an operation using parameter values that differ from a previous request that used the same client token. + /// - `InvalidParameterValueException` : The value that you provided for the specified parameter is invalid. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `ResourceInUseException` : The resource that you are trying to operate on is currently in use. Review the message details and retry later. + /// - `ResourceNotFoundException` : At least one of the resources referenced by your request does not exist. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + public func sendWorkflowStepAction(input: SendWorkflowStepActionInput) async throws -> SendWorkflowStepActionOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .put) + .withServiceName(value: serviceName) + .withOperation(value: "sendWorkflowStepAction") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "imagebuilder") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "sendWorkflowStepAction") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(SendWorkflowStepActionOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `StartImagePipelineExecution` operation on the `imagebuilder` service. /// /// Manually triggers a pipeline to create an image. @@ -3340,7 +3708,7 @@ extension ImagebuilderClient: ImagebuilderClientProtocol { /// Performs the `UpdateImagePipeline` operation on the `imagebuilder` service. /// - /// Updates an image pipeline. Image pipelines enable you to automate the creation and distribution of images. UpdateImagePipeline does not support selective updates for the pipeline. You must specify all of the required properties in the update request, not just the properties that have changed. + /// Updates an image pipeline. Image pipelines enable you to automate the creation and distribution of images. You must specify exactly one recipe for your image, using either a containerRecipeArn or an imageRecipeArn. UpdateImagePipeline does not support selective updates for the pipeline. You must specify all of the required properties in the update request, not just the properties that have changed. /// /// - Parameter UpdateImagePipelineInput : [no documentation found] /// diff --git a/Sources/Services/AWSImagebuilder/ImagebuilderClientProtocol.swift b/Sources/Services/AWSImagebuilder/ImagebuilderClientProtocol.swift index 61f2e52092c..a533715bcf6 100644 --- a/Sources/Services/AWSImagebuilder/ImagebuilderClientProtocol.swift +++ b/Sources/Services/AWSImagebuilder/ImagebuilderClientProtocol.swift @@ -227,6 +227,29 @@ public protocol ImagebuilderClientProtocol { /// - `ServiceQuotaExceededException` : You have exceeded the number of permitted resources or operations for this service. For service quotas, see [EC2 Image Builder endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder). /// - `ServiceUnavailableException` : The service is unable to process your request at this time. func createLifecyclePolicy(input: CreateLifecyclePolicyInput) async throws -> CreateLifecyclePolicyOutput + /// Performs the `CreateWorkflow` operation on the `imagebuilder` service. + /// + /// Create a new workflow or a new version of an existing workflow. + /// + /// - Parameter CreateWorkflowInput : [no documentation found] + /// + /// - Returns: `CreateWorkflowOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `IdempotentParameterMismatchException` : You have specified a client token for an operation using parameter values that differ from a previous request that used the same client token. + /// - `InvalidParameterCombinationException` : You have specified two or more mutually exclusive parameters. Review the error message for details. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `InvalidVersionNumberException` : Your version number is out of bounds or does not follow the required syntax. + /// - `ResourceInUseException` : The resource that you are trying to operate on is currently in use. Review the message details and retry later. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceQuotaExceededException` : You have exceeded the number of permitted resources or operations for this service. For service quotas, see [EC2 Image Builder endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder). + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + func createWorkflow(input: CreateWorkflowInput) async throws -> CreateWorkflowOutput /// Performs the `DeleteComponent` operation on the `imagebuilder` service. /// /// Deletes a component build version. @@ -385,6 +408,25 @@ public protocol ImagebuilderClientProtocol { /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. /// - `ServiceUnavailableException` : The service is unable to process your request at this time. func deleteLifecyclePolicy(input: DeleteLifecyclePolicyInput) async throws -> DeleteLifecyclePolicyOutput + /// Performs the `DeleteWorkflow` operation on the `imagebuilder` service. + /// + /// Deletes a specific workflow resource. + /// + /// - Parameter DeleteWorkflowInput : [no documentation found] + /// + /// - Returns: `DeleteWorkflowOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `ResourceDependencyException` : You have attempted to mutate or delete a resource with a dependency that prohibits this action. See the error message for more details. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + func deleteWorkflow(input: DeleteWorkflowInput) async throws -> DeleteWorkflowOutput /// Performs the `GetComponent` operation on the `imagebuilder` service. /// /// Gets a component object. @@ -619,6 +661,24 @@ public protocol ImagebuilderClientProtocol { /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. /// - `ServiceUnavailableException` : The service is unable to process your request at this time. func getLifecyclePolicy(input: GetLifecyclePolicyInput) async throws -> GetLifecyclePolicyOutput + /// Performs the `GetWorkflow` operation on the `imagebuilder` service. + /// + /// Get a workflow resource object. + /// + /// - Parameter GetWorkflowInput : [no documentation found] + /// + /// - Returns: `GetWorkflowOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + func getWorkflow(input: GetWorkflowInput) async throws -> GetWorkflowOutput /// Performs the `GetWorkflowExecution` operation on the `imagebuilder` service. /// /// Get the runtime information that was logged for a specific runtime instance of the workflow. @@ -1021,6 +1081,44 @@ public protocol ImagebuilderClientProtocol { /// - `ResourceNotFoundException` : At least one of the resources referenced by your request does not exist. /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. func listTagsForResource(input: ListTagsForResourceInput) async throws -> ListTagsForResourceOutput + /// Performs the `ListWaitingWorkflowSteps` operation on the `imagebuilder` service. + /// + /// Get a list of workflow steps that are waiting for action for workflows in your Amazon Web Services account. + /// + /// - Parameter ListWaitingWorkflowStepsInput : [no documentation found] + /// + /// - Returns: `ListWaitingWorkflowStepsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `InvalidPaginationTokenException` : You have provided an invalid pagination token in your request. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + func listWaitingWorkflowSteps(input: ListWaitingWorkflowStepsInput) async throws -> ListWaitingWorkflowStepsOutput + /// Performs the `ListWorkflowBuildVersions` operation on the `imagebuilder` service. + /// + /// Returns a list of build versions for a specific workflow resource. + /// + /// - Parameter ListWorkflowBuildVersionsInput : [no documentation found] + /// + /// - Returns: `ListWorkflowBuildVersionsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `InvalidPaginationTokenException` : You have provided an invalid pagination token in your request. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + func listWorkflowBuildVersions(input: ListWorkflowBuildVersionsInput) async throws -> ListWorkflowBuildVersionsOutput /// Performs the `ListWorkflowExecutions` operation on the `imagebuilder` service. /// /// Returns a list of workflow runtime instance metadata objects for a specific image build version. @@ -1040,9 +1138,28 @@ public protocol ImagebuilderClientProtocol { /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. /// - `ServiceUnavailableException` : The service is unable to process your request at this time. func listWorkflowExecutions(input: ListWorkflowExecutionsInput) async throws -> ListWorkflowExecutionsOutput + /// Performs the `ListWorkflows` operation on the `imagebuilder` service. + /// + /// Lists workflow build versions based on filtering parameters. + /// + /// - Parameter ListWorkflowsInput : [no documentation found] + /// + /// - Returns: `ListWorkflowsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `InvalidPaginationTokenException` : You have provided an invalid pagination token in your request. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + func listWorkflows(input: ListWorkflowsInput) async throws -> ListWorkflowsOutput /// Performs the `ListWorkflowStepExecutions` operation on the `imagebuilder` service. /// - /// Shows runtime data for each step in a runtime instance of the workflow that you specify in the request. + /// Returns runtime data for each step in a runtime instance of the workflow that you specify in the request. /// /// - Parameter ListWorkflowStepExecutionsInput : [no documentation found] /// @@ -1139,6 +1256,28 @@ public protocol ImagebuilderClientProtocol { /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. /// - `ServiceUnavailableException` : The service is unable to process your request at this time. func putImageRecipePolicy(input: PutImageRecipePolicyInput) async throws -> PutImageRecipePolicyOutput + /// Performs the `SendWorkflowStepAction` operation on the `imagebuilder` service. + /// + /// Pauses or resumes image creation when the associated workflow runs a WaitForAction step. + /// + /// - Parameter SendWorkflowStepActionInput : [no documentation found] + /// + /// - Returns: `SendWorkflowStepActionOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `CallRateLimitExceededException` : You have exceeded the permitted request rate for the specific operation. + /// - `ClientException` : These errors are usually caused by a client action, such as using an action or resource on behalf of a user that doesn't have permissions to use the action or resource, or specifying an invalid resource identifier. + /// - `ForbiddenException` : You are not authorized to perform the requested operation. + /// - `IdempotentParameterMismatchException` : You have specified a client token for an operation using parameter values that differ from a previous request that used the same client token. + /// - `InvalidParameterValueException` : The value that you provided for the specified parameter is invalid. + /// - `InvalidRequestException` : You have requested an action that that the service doesn't support. + /// - `ResourceInUseException` : The resource that you are trying to operate on is currently in use. Review the message details and retry later. + /// - `ResourceNotFoundException` : At least one of the resources referenced by your request does not exist. + /// - `ServiceException` : This exception is thrown when the service encounters an unrecoverable exception. + /// - `ServiceUnavailableException` : The service is unable to process your request at this time. + func sendWorkflowStepAction(input: SendWorkflowStepActionInput) async throws -> SendWorkflowStepActionOutput /// Performs the `StartImagePipelineExecution` operation on the `imagebuilder` service. /// /// Manually triggers a pipeline to create an image. @@ -1234,7 +1373,7 @@ public protocol ImagebuilderClientProtocol { func updateDistributionConfiguration(input: UpdateDistributionConfigurationInput) async throws -> UpdateDistributionConfigurationOutput /// Performs the `UpdateImagePipeline` operation on the `imagebuilder` service. /// - /// Updates an image pipeline. Image pipelines enable you to automate the creation and distribution of images. UpdateImagePipeline does not support selective updates for the pipeline. You must specify all of the required properties in the update request, not just the properties that have changed. + /// Updates an image pipeline. Image pipelines enable you to automate the creation and distribution of images. You must specify exactly one recipe for your image, using either a containerRecipeArn or an imageRecipeArn. UpdateImagePipeline does not support selective updates for the pipeline. You must specify all of the required properties in the update request, not just the properties that have changed. /// /// - Parameter UpdateImagePipelineInput : [no documentation found] /// diff --git a/Sources/Services/AWSImagebuilder/Paginators.swift b/Sources/Services/AWSImagebuilder/Paginators.swift index 7e5585129d0..d46a09f0e26 100644 --- a/Sources/Services/AWSImagebuilder/Paginators.swift +++ b/Sources/Services/AWSImagebuilder/Paginators.swift @@ -507,6 +507,67 @@ extension PaginatorSequence where OperationStackInput == ListLifecyclePoliciesIn return try await self.asyncCompactMap { item in item.lifecyclePolicySummaryList } } } +extension ImagebuilderClient { + /// Paginate over `[ListWaitingWorkflowStepsOutput]` 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 `[ListWaitingWorkflowStepsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListWaitingWorkflowStepsOutput` + public func listWaitingWorkflowStepsPaginated(input: ListWaitingWorkflowStepsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.listWaitingWorkflowSteps(input:)) + } +} + +extension ListWaitingWorkflowStepsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListWaitingWorkflowStepsInput { + return ListWaitingWorkflowStepsInput( + maxResults: self.maxResults, + nextToken: token + )} +} + +extension PaginatorSequence where OperationStackInput == ListWaitingWorkflowStepsInput, OperationStackOutput == ListWaitingWorkflowStepsOutput { + /// This paginator transforms the `AsyncSequence` returned by `listWaitingWorkflowStepsPaginated` + /// to access the nested member `[ImagebuilderClientTypes.WorkflowStepExecution]` + /// - Returns: `[ImagebuilderClientTypes.WorkflowStepExecution]` + public func steps() async throws -> [ImagebuilderClientTypes.WorkflowStepExecution] { + return try await self.asyncCompactMap { item in item.steps } + } +} +extension ImagebuilderClient { + /// Paginate over `[ListWorkflowBuildVersionsOutput]` 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 `[ListWorkflowBuildVersionsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListWorkflowBuildVersionsOutput` + public func listWorkflowBuildVersionsPaginated(input: ListWorkflowBuildVersionsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.listWorkflowBuildVersions(input:)) + } +} + +extension ListWorkflowBuildVersionsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListWorkflowBuildVersionsInput { + return ListWorkflowBuildVersionsInput( + maxResults: self.maxResults, + nextToken: token, + workflowVersionArn: self.workflowVersionArn + )} +} + +extension PaginatorSequence where OperationStackInput == ListWorkflowBuildVersionsInput, OperationStackOutput == ListWorkflowBuildVersionsOutput { + /// This paginator transforms the `AsyncSequence` returned by `listWorkflowBuildVersionsPaginated` + /// to access the nested member `[ImagebuilderClientTypes.WorkflowSummary]` + /// - Returns: `[ImagebuilderClientTypes.WorkflowSummary]` + public func workflowSummaryList() async throws -> [ImagebuilderClientTypes.WorkflowSummary] { + return try await self.asyncCompactMap { item in item.workflowSummaryList } + } +} extension ImagebuilderClient { /// Paginate over `[ListWorkflowExecutionsOutput]` results. /// @@ -538,6 +599,39 @@ extension PaginatorSequence where OperationStackInput == ListWorkflowExecutionsI return try await self.asyncCompactMap { item in item.workflowExecutions } } } +extension ImagebuilderClient { + /// Paginate over `[ListWorkflowsOutput]` 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 `[ListWorkflowsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListWorkflowsOutput` + public func listWorkflowsPaginated(input: ListWorkflowsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.listWorkflows(input:)) + } +} + +extension ListWorkflowsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListWorkflowsInput { + return ListWorkflowsInput( + byName: self.byName, + filters: self.filters, + maxResults: self.maxResults, + nextToken: token, + owner: self.owner + )} +} + +extension PaginatorSequence where OperationStackInput == ListWorkflowsInput, OperationStackOutput == ListWorkflowsOutput { + /// This paginator transforms the `AsyncSequence` returned by `listWorkflowsPaginated` + /// to access the nested member `[ImagebuilderClientTypes.WorkflowVersion]` + /// - Returns: `[ImagebuilderClientTypes.WorkflowVersion]` + public func workflowVersionList() async throws -> [ImagebuilderClientTypes.WorkflowVersion] { + return try await self.asyncCompactMap { item in item.workflowVersionList } + } +} extension ImagebuilderClient { /// Paginate over `[ListWorkflowStepExecutionsOutput]` results. /// diff --git a/Sources/Services/AWSImagebuilder/models/Models.swift b/Sources/Services/AWSImagebuilder/models/Models.swift index 9850803986d..30bd2d360bc 100644 --- a/Sources/Services/AWSImagebuilder/models/Models.swift +++ b/Sources/Services/AWSImagebuilder/models/Models.swift @@ -851,7 +851,7 @@ extension ImagebuilderClientTypes { public struct Component: Swift.Equatable { /// The Amazon Resource Name (ARN) of the component. public var arn: Swift.String? - /// The change description of the component. + /// Describes what change has been made in this version of the component, or what makes this version different from other versions of the component. public var changeDescription: Swift.String? /// Component data contains the YAML document content for the component. public var data: Swift.String? @@ -1181,7 +1181,7 @@ extension ImagebuilderClientTypes.ComponentState: Swift.Codable { } extension ImagebuilderClientTypes { - /// A group of fields that describe the current status of components that are no longer active. + /// A group of fields that describe the current status of components. public struct ComponentState: Swift.Equatable { /// Describes how or why the component changed state. public var reason: Swift.String? @@ -2174,7 +2174,7 @@ extension CreateComponentInput: ClientRuntime.URLPathProvider { } public struct CreateComponentInput: Swift.Equatable { - /// The change description of the component. Describes what change has been made in this version, or what makes this version different from other versions of this component. + /// The change description of the component. Describes what change has been made in this version, or what makes this version different from other versions of the component. public var changeDescription: Swift.String? /// Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) in the Amazon EC2 API Reference. /// This member is required. @@ -2932,11 +2932,13 @@ extension CreateImageInput: Swift.Encodable { case containerRecipeArn case distributionConfigurationArn case enhancedImageMetadataEnabled + case executionRole case imageRecipeArn case imageScanningConfiguration case imageTestsConfiguration case infrastructureConfigurationArn case tags + case workflows } public func encode(to encoder: Swift.Encoder) throws { @@ -2953,6 +2955,9 @@ extension CreateImageInput: Swift.Encodable { if let enhancedImageMetadataEnabled = self.enhancedImageMetadataEnabled { try encodeContainer.encode(enhancedImageMetadataEnabled, forKey: .enhancedImageMetadataEnabled) } + if let executionRole = self.executionRole { + try encodeContainer.encode(executionRole, forKey: .executionRole) + } if let imageRecipeArn = self.imageRecipeArn { try encodeContainer.encode(imageRecipeArn, forKey: .imageRecipeArn) } @@ -2971,6 +2976,12 @@ extension CreateImageInput: Swift.Encodable { try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) } } + if let workflows = workflows { + var workflowsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .workflows) + for workflowconfiguration0 in workflows { + try workflowsContainer.encode(workflowconfiguration0) + } + } } } @@ -2990,6 +3001,8 @@ public struct CreateImageInput: Swift.Equatable { public var distributionConfigurationArn: Swift.String? /// Collects additional information about the image being created, including the operating system (OS) version and package list. This information is used to enhance the overall experience of using EC2 Image Builder. Enabled by default. public var enhancedImageMetadataEnabled: Swift.Bool? + /// The name or Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to perform workflow actions. + public var executionRole: Swift.String? /// The Amazon Resource Name (ARN) of the image recipe that defines how images are configured, tested, and assessed. public var imageRecipeArn: Swift.String? /// Contains settings for vulnerability scans. @@ -3001,28 +3014,34 @@ public struct CreateImageInput: Swift.Equatable { public var infrastructureConfigurationArn: Swift.String? /// The tags of the image. public var tags: [Swift.String:Swift.String]? + /// Contains an array of workflow configuration objects. + public var workflows: [ImagebuilderClientTypes.WorkflowConfiguration]? public init( clientToken: Swift.String? = nil, containerRecipeArn: Swift.String? = nil, distributionConfigurationArn: Swift.String? = nil, enhancedImageMetadataEnabled: Swift.Bool? = nil, + executionRole: Swift.String? = nil, imageRecipeArn: Swift.String? = nil, imageScanningConfiguration: ImagebuilderClientTypes.ImageScanningConfiguration? = nil, imageTestsConfiguration: ImagebuilderClientTypes.ImageTestsConfiguration? = nil, infrastructureConfigurationArn: Swift.String? = nil, - tags: [Swift.String:Swift.String]? = nil + tags: [Swift.String:Swift.String]? = nil, + workflows: [ImagebuilderClientTypes.WorkflowConfiguration]? = nil ) { self.clientToken = clientToken self.containerRecipeArn = containerRecipeArn self.distributionConfigurationArn = distributionConfigurationArn self.enhancedImageMetadataEnabled = enhancedImageMetadataEnabled + self.executionRole = executionRole self.imageRecipeArn = imageRecipeArn self.imageScanningConfiguration = imageScanningConfiguration self.imageTestsConfiguration = imageTestsConfiguration self.infrastructureConfigurationArn = infrastructureConfigurationArn self.tags = tags + self.workflows = workflows } } @@ -3036,6 +3055,8 @@ struct CreateImageInputBody: Swift.Equatable { let tags: [Swift.String:Swift.String]? let clientToken: Swift.String? let imageScanningConfiguration: ImagebuilderClientTypes.ImageScanningConfiguration? + let workflows: [ImagebuilderClientTypes.WorkflowConfiguration]? + let executionRole: Swift.String? } extension CreateImageInputBody: Swift.Decodable { @@ -3044,11 +3065,13 @@ extension CreateImageInputBody: Swift.Decodable { case containerRecipeArn case distributionConfigurationArn case enhancedImageMetadataEnabled + case executionRole case imageRecipeArn case imageScanningConfiguration case imageTestsConfiguration case infrastructureConfigurationArn case tags + case workflows } public init(from decoder: Swift.Decoder) throws { @@ -3080,6 +3103,19 @@ extension CreateImageInputBody: Swift.Decodable { clientToken = clientTokenDecoded let imageScanningConfigurationDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ImageScanningConfiguration.self, forKey: .imageScanningConfiguration) imageScanningConfiguration = imageScanningConfigurationDecoded + let workflowsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowConfiguration?].self, forKey: .workflows) + var workflowsDecoded0:[ImagebuilderClientTypes.WorkflowConfiguration]? = nil + if let workflowsContainer = workflowsContainer { + workflowsDecoded0 = [ImagebuilderClientTypes.WorkflowConfiguration]() + for structure0 in workflowsContainer { + if let structure0 = structure0 { + workflowsDecoded0?.append(structure0) + } + } + } + workflows = workflowsDecoded0 + let executionRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .executionRole) + executionRole = executionRoleDecoded } } @@ -3169,6 +3205,7 @@ extension CreateImagePipelineInput: Swift.Encodable { case description case distributionConfigurationArn case enhancedImageMetadataEnabled + case executionRole case imageRecipeArn case imageScanningConfiguration case imageTestsConfiguration @@ -3177,6 +3214,7 @@ extension CreateImagePipelineInput: Swift.Encodable { case schedule case status case tags + case workflows } public func encode(to encoder: Swift.Encoder) throws { @@ -3196,6 +3234,9 @@ extension CreateImagePipelineInput: Swift.Encodable { if let enhancedImageMetadataEnabled = self.enhancedImageMetadataEnabled { try encodeContainer.encode(enhancedImageMetadataEnabled, forKey: .enhancedImageMetadataEnabled) } + if let executionRole = self.executionRole { + try encodeContainer.encode(executionRole, forKey: .executionRole) + } if let imageRecipeArn = self.imageRecipeArn { try encodeContainer.encode(imageRecipeArn, forKey: .imageRecipeArn) } @@ -3223,6 +3264,12 @@ extension CreateImagePipelineInput: Swift.Encodable { try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) } } + if let workflows = workflows { + var workflowsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .workflows) + for workflowconfiguration0 in workflows { + try workflowsContainer.encode(workflowconfiguration0) + } + } } } @@ -3244,6 +3291,8 @@ public struct CreateImagePipelineInput: Swift.Equatable { public var distributionConfigurationArn: Swift.String? /// Collects additional information about the image being created, including the operating system (OS) version and package list. This information is used to enhance the overall experience of using EC2 Image Builder. Enabled by default. public var enhancedImageMetadataEnabled: Swift.Bool? + /// The name or Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to perform workflow actions. + public var executionRole: Swift.String? /// The Amazon Resource Name (ARN) of the image recipe that will be used to configure images created by this image pipeline. public var imageRecipeArn: Swift.String? /// Contains settings for vulnerability scans. @@ -3262,6 +3311,8 @@ public struct CreateImagePipelineInput: Swift.Equatable { public var status: ImagebuilderClientTypes.PipelineStatus? /// The tags of the image pipeline. public var tags: [Swift.String:Swift.String]? + /// Contains an array of workflow configuration objects. + public var workflows: [ImagebuilderClientTypes.WorkflowConfiguration]? public init( clientToken: Swift.String? = nil, @@ -3269,6 +3320,7 @@ public struct CreateImagePipelineInput: Swift.Equatable { description: Swift.String? = nil, distributionConfigurationArn: Swift.String? = nil, enhancedImageMetadataEnabled: Swift.Bool? = nil, + executionRole: Swift.String? = nil, imageRecipeArn: Swift.String? = nil, imageScanningConfiguration: ImagebuilderClientTypes.ImageScanningConfiguration? = nil, imageTestsConfiguration: ImagebuilderClientTypes.ImageTestsConfiguration? = nil, @@ -3276,7 +3328,8 @@ public struct CreateImagePipelineInput: Swift.Equatable { name: Swift.String? = nil, schedule: ImagebuilderClientTypes.Schedule? = nil, status: ImagebuilderClientTypes.PipelineStatus? = nil, - tags: [Swift.String:Swift.String]? = nil + tags: [Swift.String:Swift.String]? = nil, + workflows: [ImagebuilderClientTypes.WorkflowConfiguration]? = nil ) { self.clientToken = clientToken @@ -3284,6 +3337,7 @@ public struct CreateImagePipelineInput: Swift.Equatable { self.description = description self.distributionConfigurationArn = distributionConfigurationArn self.enhancedImageMetadataEnabled = enhancedImageMetadataEnabled + self.executionRole = executionRole self.imageRecipeArn = imageRecipeArn self.imageScanningConfiguration = imageScanningConfiguration self.imageTestsConfiguration = imageTestsConfiguration @@ -3292,6 +3346,7 @@ public struct CreateImagePipelineInput: Swift.Equatable { self.schedule = schedule self.status = status self.tags = tags + self.workflows = workflows } } @@ -3309,6 +3364,8 @@ struct CreateImagePipelineInputBody: Swift.Equatable { let tags: [Swift.String:Swift.String]? let clientToken: Swift.String? let imageScanningConfiguration: ImagebuilderClientTypes.ImageScanningConfiguration? + let workflows: [ImagebuilderClientTypes.WorkflowConfiguration]? + let executionRole: Swift.String? } extension CreateImagePipelineInputBody: Swift.Decodable { @@ -3318,6 +3375,7 @@ extension CreateImagePipelineInputBody: Swift.Decodable { case description case distributionConfigurationArn case enhancedImageMetadataEnabled + case executionRole case imageRecipeArn case imageScanningConfiguration case imageTestsConfiguration @@ -3326,6 +3384,7 @@ extension CreateImagePipelineInputBody: Swift.Decodable { case schedule case status case tags + case workflows } public init(from decoder: Swift.Decoder) throws { @@ -3365,6 +3424,19 @@ extension CreateImagePipelineInputBody: Swift.Decodable { clientToken = clientTokenDecoded let imageScanningConfigurationDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ImageScanningConfiguration.self, forKey: .imageScanningConfiguration) imageScanningConfiguration = imageScanningConfigurationDecoded + let workflowsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowConfiguration?].self, forKey: .workflows) + var workflowsDecoded0:[ImagebuilderClientTypes.WorkflowConfiguration]? = nil + if let workflowsContainer = workflowsContainer { + workflowsDecoded0 = [ImagebuilderClientTypes.WorkflowConfiguration]() + for structure0 in workflowsContainer { + if let structure0 = structure0 { + workflowsDecoded0?.append(structure0) + } + } + } + workflows = workflowsDecoded0 + let executionRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .executionRole) + executionRole = executionRoleDecoded } } @@ -4122,7 +4194,7 @@ public struct CreateLifecyclePolicyInput: Swift.Equatable { public var clientToken: Swift.String? /// Optional description for the lifecycle policy. public var description: Swift.String? - /// The role name or Amazon Resource Name (ARN) for the IAM role that grants Image Builder access to run lifecycle actions. + /// The name or Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to run lifecycle actions. /// This member is required. public var executionRole: Swift.String? /// The name of the lifecycle policy to create. @@ -4302,117 +4374,359 @@ enum CreateLifecyclePolicyOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension ImagebuilderClientTypes.CvssScore: Swift.Codable { +extension CreateWorkflowInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case baseScore - case scoringVector - case source - case version + case changeDescription + case clientToken + case data + case description + case kmsKeyId + case name + case semanticVersion + case tags + case type + case uri } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let baseScore = self.baseScore { - try encodeContainer.encode(baseScore, forKey: .baseScore) + if let changeDescription = self.changeDescription { + try encodeContainer.encode(changeDescription, forKey: .changeDescription) } - if let scoringVector = self.scoringVector { - try encodeContainer.encode(scoringVector, forKey: .scoringVector) + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) } - if let source = self.source { - try encodeContainer.encode(source, forKey: .source) + if let data = self.data { + try encodeContainer.encode(data, forKey: .data) } - if let version = self.version { - try encodeContainer.encode(version, forKey: .version) + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let kmsKeyId = self.kmsKeyId { + try encodeContainer.encode(kmsKeyId, forKey: .kmsKeyId) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let semanticVersion = self.semanticVersion { + try encodeContainer.encode(semanticVersion, forKey: .semanticVersion) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + if let uri = self.uri { + try encodeContainer.encode(uri, forKey: .uri) } } +} - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let baseScoreDecoded = try containerValues.decodeIfPresent(Swift.Double.self, forKey: .baseScore) - baseScore = baseScoreDecoded - let scoringVectorDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .scoringVector) - scoringVector = scoringVectorDecoded - let versionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .version) - version = versionDecoded - let sourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .source) - source = sourceDecoded +extension CreateWorkflowInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/CreateWorkflow" } } -extension ImagebuilderClientTypes { - /// Amazon Inspector generates a risk score for each finding. This score helps you to prioritize findings, to focus on the most critical findings and the most vulnerable resources. The score uses the Common Vulnerability Scoring System (CVSS) format. This format is a modification of the base CVSS score that the National Vulnerability Database (NVD) provides. For more information about severity levels, see [Severity levels for Amazon Inspector findings](https://docs.aws.amazon.com/inspector/latest/user/findings-understanding-severity.html) in the Amazon Inspector User Guide. - public struct CvssScore: Swift.Equatable { - /// The CVSS base score. - public var baseScore: Swift.Double? - /// The vector string of the CVSS score. - public var scoringVector: Swift.String? - /// The source of the CVSS score. - public var source: Swift.String? - /// The CVSS version that generated the score. - public var version: Swift.String? +public struct CreateWorkflowInput: Swift.Equatable { + /// Describes what change has been made in this version of the workflow, or what makes this version different from other versions of the workflow. + public var changeDescription: Swift.String? + /// Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) in the Amazon EC2 API Reference. + /// This member is required. + public var clientToken: Swift.String? + /// Contains the UTF-8 encoded YAML document content for the workflow. Alternatively, you can specify the uri of a YAML document file stored in Amazon S3. However, you cannot specify both properties. + public var data: Swift.String? + /// Describes the workflow. + public var description: Swift.String? + /// The ID of the KMS key that is used to encrypt this workflow resource. + public var kmsKeyId: Swift.String? + /// The name of the workflow to create. + /// This member is required. + public var name: Swift.String? + /// The semantic version of this workflow resource. The semantic version syntax adheres to the following rules. The semantic version has four nodes: ../. You can assign values for the first three, and can filter on all of them. Assignment: For the first three nodes you can assign any positive integer value, including zero, with an upper limit of 2^30-1, or 1073741823 for each node. Image Builder automatically assigns the build number to the fourth node. Patterns: You can use any numeric pattern that adheres to the assignment requirements for the nodes that you can assign. For example, you might choose a software version pattern, such as 1.0.0, or a date, such as 2021.01.01. + /// This member is required. + public var semanticVersion: Swift.String? + /// Tags that apply to the workflow resource. + public var tags: [Swift.String:Swift.String]? + /// The phase in the image build process for which the workflow resource is responsible. + /// This member is required. + public var type: ImagebuilderClientTypes.WorkflowType? + /// The uri of a YAML component document file. This must be an S3 URL (s3://bucket/key), and the requester must have permission to access the S3 bucket it points to. If you use Amazon S3, you can specify component content up to your service quota. Alternatively, you can specify the YAML document inline, using the component data property. You cannot specify both properties. + public var uri: Swift.String? - public init( - baseScore: Swift.Double? = nil, - scoringVector: Swift.String? = nil, - source: Swift.String? = nil, - version: Swift.String? = nil - ) - { - self.baseScore = baseScore - self.scoringVector = scoringVector - self.source = source - self.version = version - } + public init( + changeDescription: Swift.String? = nil, + clientToken: Swift.String? = nil, + data: Swift.String? = nil, + description: Swift.String? = nil, + kmsKeyId: Swift.String? = nil, + name: Swift.String? = nil, + semanticVersion: Swift.String? = nil, + tags: [Swift.String:Swift.String]? = nil, + type: ImagebuilderClientTypes.WorkflowType? = nil, + uri: Swift.String? = nil + ) + { + self.changeDescription = changeDescription + self.clientToken = clientToken + self.data = data + self.description = description + self.kmsKeyId = kmsKeyId + self.name = name + self.semanticVersion = semanticVersion + self.tags = tags + self.type = type + self.uri = uri } +} +struct CreateWorkflowInputBody: Swift.Equatable { + let name: Swift.String? + let semanticVersion: Swift.String? + let description: Swift.String? + let changeDescription: Swift.String? + let data: Swift.String? + let uri: Swift.String? + let kmsKeyId: Swift.String? + let tags: [Swift.String:Swift.String]? + let clientToken: Swift.String? + let type: ImagebuilderClientTypes.WorkflowType? } -extension ImagebuilderClientTypes.CvssScoreAdjustment: Swift.Codable { +extension CreateWorkflowInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case metric - case reason - } - - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let metric = self.metric { - try encodeContainer.encode(metric, forKey: .metric) - } - if let reason = self.reason { - try encodeContainer.encode(reason, forKey: .reason) - } + case changeDescription + case clientToken + case data + case description + case kmsKeyId + case name + case semanticVersion + case tags + case type + case uri } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let metricDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .metric) - metric = metricDecoded - let reasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .reason) - reason = reasonDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let semanticVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .semanticVersion) + semanticVersion = semanticVersionDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let changeDescriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changeDescription) + changeDescription = changeDescriptionDecoded + let dataDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .data) + data = dataDecoded + let uriDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .uri) + uri = uriDecoded + let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) + kmsKeyId = kmsKeyIdDecoded + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + let typeDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.WorkflowType.self, forKey: .type) + type = typeDecoded } } -extension ImagebuilderClientTypes { - /// Details about an adjustment that Amazon Inspector made to the CVSS score for a finding. - public struct CvssScoreAdjustment: Swift.Equatable { - /// The metric that Amazon Inspector used to adjust the CVSS score. - public var metric: Swift.String? - /// The reason for the CVSS score adjustment. - public var reason: Swift.String? - - public init( - metric: Swift.String? = nil, - reason: Swift.String? = nil - ) - { - self.metric = metric - self.reason = reason +extension CreateWorkflowOutput: 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: CreateWorkflowOutputBody = try responseDecoder.decode(responseBody: data) + self.clientToken = output.clientToken + self.workflowBuildVersionArn = output.workflowBuildVersionArn + } else { + self.clientToken = nil + self.workflowBuildVersionArn = nil } } - } -extension ImagebuilderClientTypes.CvssScoreDetails: Swift.Codable { +public struct CreateWorkflowOutput: Swift.Equatable { + /// The client token that uniquely identifies the request. + public var clientToken: Swift.String? + /// The Amazon Resource Name (ARN) of the workflow resource that the request created. + public var workflowBuildVersionArn: Swift.String? + + public init( + clientToken: Swift.String? = nil, + workflowBuildVersionArn: Swift.String? = nil + ) + { + self.clientToken = clientToken + self.workflowBuildVersionArn = workflowBuildVersionArn + } +} + +struct CreateWorkflowOutputBody: Swift.Equatable { + let clientToken: Swift.String? + let workflowBuildVersionArn: Swift.String? +} + +extension CreateWorkflowOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case workflowBuildVersionArn + } + + 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 workflowBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowBuildVersionArn) + workflowBuildVersionArn = workflowBuildVersionArnDecoded + } +} + +enum CreateWorkflowOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "IdempotentParameterMismatchException": return try await IdempotentParameterMismatchException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidParameterCombinationException": return try await InvalidParameterCombinationException(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 "InvalidVersionNumberException": return try await InvalidVersionNumberException(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 "ServiceException": return try await ServiceException(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 "ServiceUnavailableException": return try await ServiceUnavailableException(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 ImagebuilderClientTypes.CvssScore: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case baseScore + case scoringVector + case source + case version + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let baseScore = self.baseScore { + try encodeContainer.encode(baseScore, forKey: .baseScore) + } + if let scoringVector = self.scoringVector { + try encodeContainer.encode(scoringVector, forKey: .scoringVector) + } + if let source = self.source { + try encodeContainer.encode(source, forKey: .source) + } + 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 baseScoreDecoded = try containerValues.decodeIfPresent(Swift.Double.self, forKey: .baseScore) + baseScore = baseScoreDecoded + let scoringVectorDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .scoringVector) + scoringVector = scoringVectorDecoded + let versionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .version) + version = versionDecoded + let sourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .source) + source = sourceDecoded + } +} + +extension ImagebuilderClientTypes { + /// Amazon Inspector generates a risk score for each finding. This score helps you to prioritize findings, to focus on the most critical findings and the most vulnerable resources. The score uses the Common Vulnerability Scoring System (CVSS) format. This format is a modification of the base CVSS score that the National Vulnerability Database (NVD) provides. For more information about severity levels, see [Severity levels for Amazon Inspector findings](https://docs.aws.amazon.com/inspector/latest/user/findings-understanding-severity.html) in the Amazon Inspector User Guide. + public struct CvssScore: Swift.Equatable { + /// The CVSS base score. + public var baseScore: Swift.Double? + /// The vector string of the CVSS score. + public var scoringVector: Swift.String? + /// The source of the CVSS score. + public var source: Swift.String? + /// The CVSS version that generated the score. + public var version: Swift.String? + + public init( + baseScore: Swift.Double? = nil, + scoringVector: Swift.String? = nil, + source: Swift.String? = nil, + version: Swift.String? = nil + ) + { + self.baseScore = baseScore + self.scoringVector = scoringVector + self.source = source + self.version = version + } + } + +} + +extension ImagebuilderClientTypes.CvssScoreAdjustment: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case metric + case reason + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let metric = self.metric { + try encodeContainer.encode(metric, forKey: .metric) + } + if let reason = self.reason { + try encodeContainer.encode(reason, forKey: .reason) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let metricDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .metric) + metric = metricDecoded + let reasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .reason) + reason = reasonDecoded + } +} + +extension ImagebuilderClientTypes { + /// Details about an adjustment that Amazon Inspector made to the CVSS score for a finding. + public struct CvssScoreAdjustment: Swift.Equatable { + /// The metric that Amazon Inspector used to adjust the CVSS score. + public var metric: Swift.String? + /// The reason for the CVSS score adjustment. + public var reason: Swift.String? + + public init( + metric: Swift.String? = nil, + reason: Swift.String? = nil + ) + { + self.metric = metric + self.reason = reason + } + } + +} + +extension ImagebuilderClientTypes.CvssScoreDetails: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case adjustments case cvssSource @@ -5379,6 +5693,106 @@ enum DeleteLifecyclePolicyOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DeleteWorkflowInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + guard let workflowBuildVersionArn = workflowBuildVersionArn else { + let message = "Creating a URL Query Item failed. workflowBuildVersionArn is required and must not be nil." + throw ClientRuntime.ClientError.unknownError(message) + } + let workflowBuildVersionArnQueryItem = ClientRuntime.URLQueryItem(name: "workflowBuildVersionArn".urlPercentEncoding(), value: Swift.String(workflowBuildVersionArn).urlPercentEncoding()) + items.append(workflowBuildVersionArnQueryItem) + return items + } + } +} + +extension DeleteWorkflowInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/DeleteWorkflow" + } +} + +public struct DeleteWorkflowInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the workflow resource to delete. + /// This member is required. + public var workflowBuildVersionArn: Swift.String? + + public init( + workflowBuildVersionArn: Swift.String? = nil + ) + { + self.workflowBuildVersionArn = workflowBuildVersionArn + } +} + +struct DeleteWorkflowInputBody: Swift.Equatable { +} + +extension DeleteWorkflowInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension DeleteWorkflowOutput: 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: DeleteWorkflowOutputBody = try responseDecoder.decode(responseBody: data) + self.workflowBuildVersionArn = output.workflowBuildVersionArn + } else { + self.workflowBuildVersionArn = nil + } + } +} + +public struct DeleteWorkflowOutput: Swift.Equatable { + /// The ARN of the workflow resource that this request deleted. + public var workflowBuildVersionArn: Swift.String? + + public init( + workflowBuildVersionArn: Swift.String? = nil + ) + { + self.workflowBuildVersionArn = workflowBuildVersionArn + } +} + +struct DeleteWorkflowOutputBody: Swift.Equatable { + let workflowBuildVersionArn: Swift.String? +} + +extension DeleteWorkflowOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case workflowBuildVersionArn + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workflowBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowBuildVersionArn) + workflowBuildVersionArn = workflowBuildVersionArnDecoded + } +} + +enum DeleteWorkflowOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ForbiddenException": return try await ForbiddenException(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 "ResourceDependencyException": return try await ResourceDependencyException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(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 ImagebuilderClientTypes { public enum DiskImageFormat: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case raw @@ -6340,7 +6754,7 @@ extension GetComponentOutput: ClientRuntime.HttpResponseBinding { } public struct GetComponentOutput: Swift.Equatable { - /// The component object associated with the specified ARN. + /// The component object specified in the request. public var component: ImagebuilderClientTypes.Component? /// The request ID that uniquely identifies this request. public var requestId: Swift.String? @@ -7732,6 +8146,7 @@ extension GetWorkflowExecutionOutput: ClientRuntime.HttpResponseBinding { self.endTime = output.endTime self.imageBuildVersionArn = output.imageBuildVersionArn self.message = output.message + self.parallelGroup = output.parallelGroup self.requestId = output.requestId self.startTime = output.startTime self.status = output.status @@ -7746,6 +8161,7 @@ extension GetWorkflowExecutionOutput: ClientRuntime.HttpResponseBinding { self.endTime = nil self.imageBuildVersionArn = nil self.message = nil + self.parallelGroup = nil self.requestId = nil self.startTime = nil self.status = nil @@ -7767,6 +8183,8 @@ public struct GetWorkflowExecutionOutput: Swift.Equatable { public var imageBuildVersionArn: Swift.String? /// The output message from the specified runtime instance of the workflow, if applicable. public var message: Swift.String? + /// Test workflows are defined within named runtime groups. The parallel group is a named group that contains one or more test workflows. + public var parallelGroup: Swift.String? /// The request ID that uniquely identifies this request. public var requestId: Swift.String? /// The timestamp when the specified runtime instance of the workflow started. @@ -7792,6 +8210,7 @@ public struct GetWorkflowExecutionOutput: Swift.Equatable { endTime: Swift.String? = nil, imageBuildVersionArn: Swift.String? = nil, message: Swift.String? = nil, + parallelGroup: Swift.String? = nil, requestId: Swift.String? = nil, startTime: Swift.String? = nil, status: ImagebuilderClientTypes.WorkflowExecutionStatus? = nil, @@ -7807,6 +8226,7 @@ public struct GetWorkflowExecutionOutput: Swift.Equatable { self.endTime = endTime self.imageBuildVersionArn = imageBuildVersionArn self.message = message + self.parallelGroup = parallelGroup self.requestId = requestId self.startTime = startTime self.status = status @@ -7834,6 +8254,7 @@ struct GetWorkflowExecutionOutputBody: Swift.Equatable { let totalStepsSkipped: Swift.Int let startTime: Swift.String? let endTime: Swift.String? + let parallelGroup: Swift.String? } extension GetWorkflowExecutionOutputBody: Swift.Decodable { @@ -7841,6 +8262,7 @@ extension GetWorkflowExecutionOutputBody: Swift.Decodable { case endTime case imageBuildVersionArn case message + case parallelGroup case requestId case startTime case status @@ -7881,6 +8303,8 @@ extension GetWorkflowExecutionOutputBody: Swift.Decodable { startTime = startTimeDecoded let endTimeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endTime) endTime = endTimeDecoded + let parallelGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .parallelGroup) + parallelGroup = parallelGroupDecoded } } @@ -7900,37 +8324,136 @@ enum GetWorkflowExecutionOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension GetWorkflowStepExecutionInput: ClientRuntime.QueryItemProvider { +extension GetWorkflowInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { var items = [ClientRuntime.URLQueryItem]() - guard let stepExecutionId = stepExecutionId else { - let message = "Creating a URL Query Item failed. stepExecutionId is required and must not be nil." + guard let workflowBuildVersionArn = workflowBuildVersionArn else { + let message = "Creating a URL Query Item failed. workflowBuildVersionArn is required and must not be nil." throw ClientRuntime.ClientError.unknownError(message) } - let stepExecutionIdQueryItem = ClientRuntime.URLQueryItem(name: "stepExecutionId".urlPercentEncoding(), value: Swift.String(stepExecutionId).urlPercentEncoding()) - items.append(stepExecutionIdQueryItem) + let workflowBuildVersionArnQueryItem = ClientRuntime.URLQueryItem(name: "workflowBuildVersionArn".urlPercentEncoding(), value: Swift.String(workflowBuildVersionArn).urlPercentEncoding()) + items.append(workflowBuildVersionArnQueryItem) return items } } } -extension GetWorkflowStepExecutionInput: ClientRuntime.URLPathProvider { +extension GetWorkflowInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - return "/GetWorkflowStepExecution" + return "/GetWorkflow" } } -public struct GetWorkflowStepExecutionInput: Swift.Equatable { - /// Use the unique identifier for a specific runtime instance of the workflow step to get runtime details for that step. +public struct GetWorkflowInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the workflow resource that you want to get. /// This member is required. - public var stepExecutionId: Swift.String? + public var workflowBuildVersionArn: Swift.String? public init( - stepExecutionId: Swift.String? = nil + workflowBuildVersionArn: Swift.String? = nil ) { - self.stepExecutionId = stepExecutionId + self.workflowBuildVersionArn = workflowBuildVersionArn + } +} + +struct GetWorkflowInputBody: Swift.Equatable { +} + +extension GetWorkflowInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetWorkflowOutput: 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: GetWorkflowOutputBody = try responseDecoder.decode(responseBody: data) + self.workflow = output.workflow + } else { + self.workflow = nil + } + } +} + +public struct GetWorkflowOutput: Swift.Equatable { + /// The workflow resource specified in the request. + public var workflow: ImagebuilderClientTypes.Workflow? + + public init( + workflow: ImagebuilderClientTypes.Workflow? = nil + ) + { + self.workflow = workflow + } +} + +struct GetWorkflowOutputBody: Swift.Equatable { + let workflow: ImagebuilderClientTypes.Workflow? +} + +extension GetWorkflowOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case workflow + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workflowDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.Workflow.self, forKey: .workflow) + workflow = workflowDecoded + } +} + +enum GetWorkflowOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ForbiddenException": return try await ForbiddenException(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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(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 GetWorkflowStepExecutionInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + guard let stepExecutionId = stepExecutionId else { + let message = "Creating a URL Query Item failed. stepExecutionId is required and must not be nil." + throw ClientRuntime.ClientError.unknownError(message) + } + let stepExecutionIdQueryItem = ClientRuntime.URLQueryItem(name: "stepExecutionId".urlPercentEncoding(), value: Swift.String(stepExecutionId).urlPercentEncoding()) + items.append(stepExecutionIdQueryItem) + return items + } + } +} + +extension GetWorkflowStepExecutionInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/GetWorkflowStepExecution" + } +} + +public struct GetWorkflowStepExecutionInput: Swift.Equatable { + /// Use the unique identifier for a specific runtime instance of the workflow step to get runtime details for that step. + /// This member is required. + public var stepExecutionId: Swift.String? + + public init( + stepExecutionId: Swift.String? = nil + ) + { + self.stepExecutionId = stepExecutionId } } @@ -8223,6 +8746,7 @@ extension ImagebuilderClientTypes.Image: Swift.Codable { case deprecationTime case distributionConfiguration case enhancedImageMetadataEnabled + case executionRole case imageRecipe case imageScanningConfiguration case imageSource @@ -8240,6 +8764,7 @@ extension ImagebuilderClientTypes.Image: Swift.Codable { case tags case type case version + case workflows } public func encode(to encoder: Swift.Encoder) throws { @@ -8265,6 +8790,9 @@ extension ImagebuilderClientTypes.Image: Swift.Codable { if let enhancedImageMetadataEnabled = self.enhancedImageMetadataEnabled { try encodeContainer.encode(enhancedImageMetadataEnabled, forKey: .enhancedImageMetadataEnabled) } + if let executionRole = self.executionRole { + try encodeContainer.encode(executionRole, forKey: .executionRole) + } if let imageRecipe = self.imageRecipe { try encodeContainer.encode(imageRecipe, forKey: .imageRecipe) } @@ -8319,6 +8847,12 @@ extension ImagebuilderClientTypes.Image: Swift.Codable { if let version = self.version { try encodeContainer.encode(version, forKey: .version) } + if let workflows = workflows { + var workflowsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .workflows) + for workflowconfiguration0 in workflows { + try workflowsContainer.encode(workflowconfiguration0) + } + } } public init(from decoder: Swift.Decoder) throws { @@ -8380,6 +8914,19 @@ extension ImagebuilderClientTypes.Image: Swift.Codable { deprecationTime = deprecationTimeDecoded let lifecycleExecutionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lifecycleExecutionId) lifecycleExecutionId = lifecycleExecutionIdDecoded + let executionRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .executionRole) + executionRole = executionRoleDecoded + let workflowsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowConfiguration?].self, forKey: .workflows) + var workflowsDecoded0:[ImagebuilderClientTypes.WorkflowConfiguration]? = nil + if let workflowsContainer = workflowsContainer { + workflowsDecoded0 = [ImagebuilderClientTypes.WorkflowConfiguration]() + for structure0 in workflowsContainer { + if let structure0 = structure0 { + workflowsDecoded0?.append(structure0) + } + } + } + workflows = workflowsDecoded0 } } @@ -8412,6 +8959,8 @@ extension ImagebuilderClientTypes { public var distributionConfiguration: ImagebuilderClientTypes.DistributionConfiguration? /// Indicates whether Image Builder collects additional information about the image, such as the operating system (OS) version and package list. public var enhancedImageMetadataEnabled: Swift.Bool? + /// The name or Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to perform workflow actions. + public var executionRole: Swift.String? /// For images that distribute an AMI, this is the image recipe that Image Builder used to create the image. For container images, this is empty. public var imageRecipe: ImagebuilderClientTypes.ImageRecipe? /// Contains settings for vulnerability scans. @@ -8446,6 +8995,8 @@ extension ImagebuilderClientTypes { public var type: ImagebuilderClientTypes.ImageType? /// The semantic version of the image. The semantic version has four nodes: ../. You can assign values for the first three, and can filter on all of them. Assignment: For the first three nodes you can assign any positive integer value, including zero, with an upper limit of 2^30-1, or 1073741823 for each node. Image Builder automatically assigns the build number to the fourth node. Patterns: You can use any numeric pattern that adheres to the assignment requirements for the nodes that you can assign. For example, you might choose a software version pattern, such as 1.0.0, or a date, such as 2021.01.01. Filtering: With semantic versioning, you have the flexibility to use wildcards (x) to specify the most recent versions or nodes when selecting the base image or components for your recipe. When you use a wildcard in any node, all nodes to the right of the first wildcard must also be wildcards. public var version: Swift.String? + /// Contains the build and test workflows that are associated with the image. + public var workflows: [ImagebuilderClientTypes.WorkflowConfiguration]? public init( arn: Swift.String? = nil, @@ -8455,6 +9006,7 @@ extension ImagebuilderClientTypes { deprecationTime: ClientRuntime.Date? = nil, distributionConfiguration: ImagebuilderClientTypes.DistributionConfiguration? = nil, enhancedImageMetadataEnabled: Swift.Bool? = nil, + executionRole: Swift.String? = nil, imageRecipe: ImagebuilderClientTypes.ImageRecipe? = nil, imageScanningConfiguration: ImagebuilderClientTypes.ImageScanningConfiguration? = nil, imageSource: ImagebuilderClientTypes.ImageSource? = nil, @@ -8471,7 +9023,8 @@ extension ImagebuilderClientTypes { state: ImagebuilderClientTypes.ImageState? = nil, tags: [Swift.String:Swift.String]? = nil, type: ImagebuilderClientTypes.ImageType? = nil, - version: Swift.String? = nil + version: Swift.String? = nil, + workflows: [ImagebuilderClientTypes.WorkflowConfiguration]? = nil ) { self.arn = arn @@ -8481,6 +9034,7 @@ extension ImagebuilderClientTypes { self.deprecationTime = deprecationTime self.distributionConfiguration = distributionConfiguration self.enhancedImageMetadataEnabled = enhancedImageMetadataEnabled + self.executionRole = executionRole self.imageRecipe = imageRecipe self.imageScanningConfiguration = imageScanningConfiguration self.imageSource = imageSource @@ -8498,6 +9052,7 @@ extension ImagebuilderClientTypes { self.tags = tags self.type = type self.version = version + self.workflows = workflows } } @@ -8604,6 +9159,7 @@ extension ImagebuilderClientTypes.ImagePipeline: Swift.Codable { case description case distributionConfigurationArn case enhancedImageMetadataEnabled + case executionRole case imageRecipeArn case imageScanningConfiguration case imageTestsConfiguration @@ -8613,6 +9169,7 @@ extension ImagebuilderClientTypes.ImagePipeline: Swift.Codable { case schedule case status case tags + case workflows } public func encode(to encoder: Swift.Encoder) throws { @@ -8644,6 +9201,9 @@ extension ImagebuilderClientTypes.ImagePipeline: Swift.Codable { if let enhancedImageMetadataEnabled = self.enhancedImageMetadataEnabled { try encodeContainer.encode(enhancedImageMetadataEnabled, forKey: .enhancedImageMetadataEnabled) } + if let executionRole = self.executionRole { + try encodeContainer.encode(executionRole, forKey: .executionRole) + } if let imageRecipeArn = self.imageRecipeArn { try encodeContainer.encode(imageRecipeArn, forKey: .imageRecipeArn) } @@ -8674,6 +9234,12 @@ extension ImagebuilderClientTypes.ImagePipeline: Swift.Codable { try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) } } + if let workflows = workflows { + var workflowsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .workflows) + for workflowconfiguration0 in workflows { + try workflowsContainer.encode(workflowconfiguration0) + } + } } public init(from decoder: Swift.Decoder) throws { @@ -8723,6 +9289,19 @@ extension ImagebuilderClientTypes.ImagePipeline: Swift.Codable { tags = tagsDecoded0 let imageScanningConfigurationDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ImageScanningConfiguration.self, forKey: .imageScanningConfiguration) imageScanningConfiguration = imageScanningConfigurationDecoded + let executionRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .executionRole) + executionRole = executionRoleDecoded + let workflowsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowConfiguration?].self, forKey: .workflows) + var workflowsDecoded0:[ImagebuilderClientTypes.WorkflowConfiguration]? = nil + if let workflowsContainer = workflowsContainer { + workflowsDecoded0 = [ImagebuilderClientTypes.WorkflowConfiguration]() + for structure0 in workflowsContainer { + if let structure0 = structure0 { + workflowsDecoded0?.append(structure0) + } + } + } + workflows = workflowsDecoded0 } } @@ -8747,6 +9326,8 @@ extension ImagebuilderClientTypes { public var distributionConfigurationArn: Swift.String? /// Collects additional information about the image being created, including the operating system (OS) version and package list. This information is used to enhance the overall experience of using EC2 Image Builder. Enabled by default. public var enhancedImageMetadataEnabled: Swift.Bool? + /// The name or Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to perform workflow actions. + public var executionRole: Swift.String? /// The Amazon Resource Name (ARN) of the image recipe associated with this image pipeline. public var imageRecipeArn: Swift.String? /// Contains settings for vulnerability scans. @@ -8765,6 +9346,8 @@ extension ImagebuilderClientTypes { public var status: ImagebuilderClientTypes.PipelineStatus? /// The tags of this image pipeline. public var tags: [Swift.String:Swift.String]? + /// Contains the workflows that run for the image pipeline. + public var workflows: [ImagebuilderClientTypes.WorkflowConfiguration]? public init( arn: Swift.String? = nil, @@ -8776,6 +9359,7 @@ extension ImagebuilderClientTypes { description: Swift.String? = nil, distributionConfigurationArn: Swift.String? = nil, enhancedImageMetadataEnabled: Swift.Bool? = nil, + executionRole: Swift.String? = nil, imageRecipeArn: Swift.String? = nil, imageScanningConfiguration: ImagebuilderClientTypes.ImageScanningConfiguration? = nil, imageTestsConfiguration: ImagebuilderClientTypes.ImageTestsConfiguration? = nil, @@ -8784,7 +9368,8 @@ extension ImagebuilderClientTypes { platform: ImagebuilderClientTypes.Platform? = nil, schedule: ImagebuilderClientTypes.Schedule? = nil, status: ImagebuilderClientTypes.PipelineStatus? = nil, - tags: [Swift.String:Swift.String]? = nil + tags: [Swift.String:Swift.String]? = nil, + workflows: [ImagebuilderClientTypes.WorkflowConfiguration]? = nil ) { self.arn = arn @@ -8796,6 +9381,7 @@ extension ImagebuilderClientTypes { self.description = description self.distributionConfigurationArn = distributionConfigurationArn self.enhancedImageMetadataEnabled = enhancedImageMetadataEnabled + self.executionRole = executionRole self.imageRecipeArn = imageRecipeArn self.imageScanningConfiguration = imageScanningConfiguration self.imageTestsConfiguration = imageTestsConfiguration @@ -8805,6 +9391,7 @@ extension ImagebuilderClientTypes { self.schedule = schedule self.status = status self.tags = tags + self.workflows = workflows } } @@ -10206,7 +10793,7 @@ extension ImportComponentInput: ClientRuntime.URLPathProvider { } public struct ImportComponentInput: Swift.Equatable { - /// The change description of the component. This description indicates the change that has been made in this version, or what makes this version different from other versions of this component. + /// The change description of the component. This description indicates the change that has been made in this version, or what makes this version different from other versions of the component. public var changeDescription: Swift.String? /// Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) in the Amazon EC2 API Reference. /// This member is required. @@ -12393,7 +12980,7 @@ extension ImagebuilderClientTypes { public var dateUpdated: ClientRuntime.Date? /// Optional description for the lifecycle policy. public var description: Swift.String? - /// The name of the IAM role that Image Builder uses to run the lifecycle policy. This is a custom role that you create. + /// The name or Amazon Resource Name (ARN) of the IAM role that Image Builder uses to run the lifecycle policy. This is a custom role that you create. public var executionRole: Swift.String? /// The name of the lifecycle policy. public var name: Swift.String? @@ -12675,7 +13262,7 @@ extension ImagebuilderClientTypes { public struct LifecyclePolicyDetailExclusionRules: Swift.Equatable { /// Lists configuration values that apply to AMIs that Image Builder should exclude from the lifecycle action. public var amis: ImagebuilderClientTypes.LifecyclePolicyDetailExclusionRulesAmis? - /// Contains a list of tags that Image Builder uses to skip lifecycle actions for AMIs that have them. + /// Contains a list of tags that Image Builder uses to skip lifecycle actions for resources that have them. public var tagMap: [Swift.String:Swift.String]? public init( @@ -12774,11 +13361,11 @@ extension ImagebuilderClientTypes { public struct LifecyclePolicyDetailExclusionRulesAmis: Swift.Equatable { /// Configures whether public AMIs are excluded from the lifecycle action. public var isPublic: Swift.Bool - /// Configures Amazon Web Services Regions that are excluded from the lifecycle action. + /// Specifies configuration details for Image Builder to exclude the most recent resources from lifecycle actions. public var lastLaunched: ImagebuilderClientTypes.LifecyclePolicyDetailExclusionRulesAmisLastLaunched? - /// Specifies Amazon Web Services accounts whose resources are excluded from the lifecycle action. + /// Configures Amazon Web Services Regions that are excluded from the lifecycle action. public var regions: [Swift.String]? - /// Specifies configuration details for Image Builder to exclude the most recent resources from lifecycle actions. + /// Specifies Amazon Web Services accounts whose resources are excluded from the lifecycle action. public var sharedAccounts: [Swift.String]? /// Lists tags that should be excluded from lifecycle actions for the AMIs that have them. public var tagMap: [Swift.String:Swift.String]? @@ -13225,7 +13812,7 @@ extension ImagebuilderClientTypes { public var dateUpdated: ClientRuntime.Date? /// Optional description for the lifecycle policy. public var description: Swift.String? - /// The name of the IAM role that Image Builder uses to run the lifecycle policy. + /// The name or Amazon Resource Name (ARN) of the IAM role that Image Builder uses to run the lifecycle policy. public var executionRole: Swift.String? /// The name of the lifecycle policy. public var name: Swift.String? @@ -16239,18 +16826,14 @@ enum ListTagsForResourceOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension ListWorkflowExecutionsInput: Swift.Encodable { +extension ListWaitingWorkflowStepsInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case imageBuildVersionArn case maxResults case nextToken } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let imageBuildVersionArn = self.imageBuildVersionArn { - try encodeContainer.encode(imageBuildVersionArn, forKey: .imageBuildVersionArn) - } if let maxResults = self.maxResults { try encodeContainer.encode(maxResults, forKey: .maxResults) } @@ -16260,42 +16843,35 @@ extension ListWorkflowExecutionsInput: Swift.Encodable { } } -extension ListWorkflowExecutionsInput: ClientRuntime.URLPathProvider { +extension ListWaitingWorkflowStepsInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - return "/ListWorkflowExecutions" + return "/ListWaitingWorkflowSteps" } } -public struct ListWorkflowExecutionsInput: Swift.Equatable { - /// List all workflow runtime instances for the specified image build version resource ARN. - /// This member is required. - public var imageBuildVersionArn: Swift.String? +public struct ListWaitingWorkflowStepsInput: Swift.Equatable { /// The maximum items to return in a request. public var maxResults: Swift.Int? /// A token to specify where to start paginating. This is the nextToken from a previously truncated response. public var nextToken: Swift.String? public init( - imageBuildVersionArn: Swift.String? = nil, maxResults: Swift.Int? = nil, nextToken: Swift.String? = nil ) { - self.imageBuildVersionArn = imageBuildVersionArn self.maxResults = maxResults self.nextToken = nextToken } } -struct ListWorkflowExecutionsInputBody: Swift.Equatable { +struct ListWaitingWorkflowStepsInputBody: Swift.Equatable { let maxResults: Swift.Int? let nextToken: Swift.String? - let imageBuildVersionArn: Swift.String? } -extension ListWorkflowExecutionsInputBody: Swift.Decodable { +extension ListWaitingWorkflowStepsInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case imageBuildVersionArn case maxResults case nextToken } @@ -16306,101 +16882,69 @@ extension ListWorkflowExecutionsInputBody: Swift.Decodable { maxResults = maxResultsDecoded let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded - let imageBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageBuildVersionArn) - imageBuildVersionArn = imageBuildVersionArnDecoded } } -extension ListWorkflowExecutionsOutput: ClientRuntime.HttpResponseBinding { +extension ListWaitingWorkflowStepsOutput: 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: ListWorkflowExecutionsOutputBody = try responseDecoder.decode(responseBody: data) - self.imageBuildVersionArn = output.imageBuildVersionArn - self.message = output.message + let output: ListWaitingWorkflowStepsOutputBody = try responseDecoder.decode(responseBody: data) self.nextToken = output.nextToken - self.requestId = output.requestId - self.workflowExecutions = output.workflowExecutions + self.steps = output.steps } else { - self.imageBuildVersionArn = nil - self.message = nil self.nextToken = nil - self.requestId = nil - self.workflowExecutions = nil + self.steps = nil } } } -public struct ListWorkflowExecutionsOutput: Swift.Equatable { - /// The resource ARN of the image build version for which you requested a list of workflow runtime details. - public var imageBuildVersionArn: Swift.String? - /// The output message from the list action, if applicable. - public var message: Swift.String? +public struct ListWaitingWorkflowStepsOutput: Swift.Equatable { /// The next token used for paginated responses. When this field isn't empty, there are additional elements that the service hasn't included in this request. Use this token with the next request to retrieve additional objects. public var nextToken: Swift.String? - /// The request ID that uniquely identifies this request. - public var requestId: Swift.String? - /// Contains an array of runtime details that represents each time a workflow ran for the requested image build version. - public var workflowExecutions: [ImagebuilderClientTypes.WorkflowExecutionMetadata]? + /// An array of the workflow steps that are waiting for action in your Amazon Web Services account. + public var steps: [ImagebuilderClientTypes.WorkflowStepExecution]? public init( - imageBuildVersionArn: Swift.String? = nil, - message: Swift.String? = nil, nextToken: Swift.String? = nil, - requestId: Swift.String? = nil, - workflowExecutions: [ImagebuilderClientTypes.WorkflowExecutionMetadata]? = nil + steps: [ImagebuilderClientTypes.WorkflowStepExecution]? = nil ) { - self.imageBuildVersionArn = imageBuildVersionArn - self.message = message self.nextToken = nextToken - self.requestId = requestId - self.workflowExecutions = workflowExecutions + self.steps = steps } } -struct ListWorkflowExecutionsOutputBody: Swift.Equatable { - let requestId: Swift.String? - let workflowExecutions: [ImagebuilderClientTypes.WorkflowExecutionMetadata]? - let imageBuildVersionArn: Swift.String? - let message: Swift.String? +struct ListWaitingWorkflowStepsOutputBody: Swift.Equatable { + let steps: [ImagebuilderClientTypes.WorkflowStepExecution]? let nextToken: Swift.String? } -extension ListWorkflowExecutionsOutputBody: Swift.Decodable { +extension ListWaitingWorkflowStepsOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case imageBuildVersionArn - case message case nextToken - case requestId - case workflowExecutions + case steps } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) - requestId = requestIdDecoded - let workflowExecutionsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowExecutionMetadata?].self, forKey: .workflowExecutions) - var workflowExecutionsDecoded0:[ImagebuilderClientTypes.WorkflowExecutionMetadata]? = nil - if let workflowExecutionsContainer = workflowExecutionsContainer { - workflowExecutionsDecoded0 = [ImagebuilderClientTypes.WorkflowExecutionMetadata]() - for structure0 in workflowExecutionsContainer { + let stepsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowStepExecution?].self, forKey: .steps) + var stepsDecoded0:[ImagebuilderClientTypes.WorkflowStepExecution]? = nil + if let stepsContainer = stepsContainer { + stepsDecoded0 = [ImagebuilderClientTypes.WorkflowStepExecution]() + for structure0 in stepsContainer { if let structure0 = structure0 { - workflowExecutionsDecoded0?.append(structure0) + stepsDecoded0?.append(structure0) } } } - workflowExecutions = workflowExecutionsDecoded0 - let imageBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageBuildVersionArn) - imageBuildVersionArn = imageBuildVersionArnDecoded - let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) - message = messageDecoded + steps = stepsDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded } } -enum ListWorkflowExecutionsOutputError: ClientRuntime.HttpResponseErrorBinding { +enum ListWaitingWorkflowStepsOutputError: 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 @@ -16417,11 +16961,11 @@ enum ListWorkflowExecutionsOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension ListWorkflowStepExecutionsInput: Swift.Encodable { +extension ListWorkflowBuildVersionsInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case maxResults case nextToken - case workflowExecutionId + case workflowVersionArn } public func encode(to encoder: Swift.Encoder) throws { @@ -16432,173 +16976,123 @@ extension ListWorkflowStepExecutionsInput: Swift.Encodable { if let nextToken = self.nextToken { try encodeContainer.encode(nextToken, forKey: .nextToken) } - if let workflowExecutionId = self.workflowExecutionId { - try encodeContainer.encode(workflowExecutionId, forKey: .workflowExecutionId) + if let workflowVersionArn = self.workflowVersionArn { + try encodeContainer.encode(workflowVersionArn, forKey: .workflowVersionArn) } } } -extension ListWorkflowStepExecutionsInput: ClientRuntime.URLPathProvider { +extension ListWorkflowBuildVersionsInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - return "/ListWorkflowStepExecutions" + return "/ListWorkflowBuildVersions" } } -public struct ListWorkflowStepExecutionsInput: Swift.Equatable { +public struct ListWorkflowBuildVersionsInput: Swift.Equatable { /// The maximum items to return in a request. public var maxResults: Swift.Int? /// A token to specify where to start paginating. This is the nextToken from a previously truncated response. public var nextToken: Swift.String? - /// The unique identifier that Image Builder assigned to keep track of runtime details when it ran the workflow. + /// The Amazon Resource Name (ARN) of the workflow resource for which to get a list of build versions. /// This member is required. - public var workflowExecutionId: Swift.String? + public var workflowVersionArn: Swift.String? public init( maxResults: Swift.Int? = nil, nextToken: Swift.String? = nil, - workflowExecutionId: Swift.String? = nil + workflowVersionArn: Swift.String? = nil ) { self.maxResults = maxResults self.nextToken = nextToken - self.workflowExecutionId = workflowExecutionId + self.workflowVersionArn = workflowVersionArn } } -struct ListWorkflowStepExecutionsInputBody: Swift.Equatable { +struct ListWorkflowBuildVersionsInputBody: Swift.Equatable { + let workflowVersionArn: Swift.String? let maxResults: Swift.Int? let nextToken: Swift.String? - let workflowExecutionId: Swift.String? } -extension ListWorkflowStepExecutionsInputBody: Swift.Decodable { +extension ListWorkflowBuildVersionsInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case maxResults case nextToken - case workflowExecutionId + case workflowVersionArn } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workflowVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowVersionArn) + workflowVersionArn = workflowVersionArnDecoded let maxResultsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxResults) maxResults = maxResultsDecoded let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded - let workflowExecutionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowExecutionId) - workflowExecutionId = workflowExecutionIdDecoded } } -extension ListWorkflowStepExecutionsOutput: ClientRuntime.HttpResponseBinding { +extension ListWorkflowBuildVersionsOutput: 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: ListWorkflowStepExecutionsOutputBody = try responseDecoder.decode(responseBody: data) - self.imageBuildVersionArn = output.imageBuildVersionArn - self.message = output.message + let output: ListWorkflowBuildVersionsOutputBody = try responseDecoder.decode(responseBody: data) self.nextToken = output.nextToken - self.requestId = output.requestId - self.steps = output.steps - self.workflowBuildVersionArn = output.workflowBuildVersionArn - self.workflowExecutionId = output.workflowExecutionId + self.workflowSummaryList = output.workflowSummaryList } else { - self.imageBuildVersionArn = nil - self.message = nil self.nextToken = nil - self.requestId = nil - self.steps = nil - self.workflowBuildVersionArn = nil - self.workflowExecutionId = nil + self.workflowSummaryList = nil } } } -public struct ListWorkflowStepExecutionsOutput: Swift.Equatable { - /// The image build version resource ARN that's associated with the specified runtime instance of the workflow. - public var imageBuildVersionArn: Swift.String? - /// The output message from the list action, if applicable. - public var message: Swift.String? +public struct ListWorkflowBuildVersionsOutput: Swift.Equatable { /// The next token used for paginated responses. When this field isn't empty, there are additional elements that the service hasn't included in this request. Use this token with the next request to retrieve additional objects. public var nextToken: Swift.String? - /// The request ID that uniquely identifies this request. - public var requestId: Swift.String? - /// Contains an array of runtime details that represents each step in this runtime instance of the workflow. - public var steps: [ImagebuilderClientTypes.WorkflowStepMetadata]? - /// The build version ARN for the Image Builder workflow resource that defines the steps for this runtime instance of the workflow. - public var workflowBuildVersionArn: Swift.String? - /// The unique identifier that Image Builder assigned to keep track of runtime details when it ran the workflow. - public var workflowExecutionId: Swift.String? + /// A list that contains metadata for the workflow builds that have run for the workflow resource specified in the request. + public var workflowSummaryList: [ImagebuilderClientTypes.WorkflowSummary]? public init( - imageBuildVersionArn: Swift.String? = nil, - message: Swift.String? = nil, nextToken: Swift.String? = nil, - requestId: Swift.String? = nil, - steps: [ImagebuilderClientTypes.WorkflowStepMetadata]? = nil, - workflowBuildVersionArn: Swift.String? = nil, - workflowExecutionId: Swift.String? = nil + workflowSummaryList: [ImagebuilderClientTypes.WorkflowSummary]? = nil ) { - self.imageBuildVersionArn = imageBuildVersionArn - self.message = message self.nextToken = nextToken - self.requestId = requestId - self.steps = steps - self.workflowBuildVersionArn = workflowBuildVersionArn - self.workflowExecutionId = workflowExecutionId + self.workflowSummaryList = workflowSummaryList } } -struct ListWorkflowStepExecutionsOutputBody: Swift.Equatable { - let requestId: Swift.String? - let steps: [ImagebuilderClientTypes.WorkflowStepMetadata]? - let workflowBuildVersionArn: Swift.String? - let workflowExecutionId: Swift.String? - let imageBuildVersionArn: Swift.String? - let message: Swift.String? +struct ListWorkflowBuildVersionsOutputBody: Swift.Equatable { + let workflowSummaryList: [ImagebuilderClientTypes.WorkflowSummary]? let nextToken: Swift.String? } -extension ListWorkflowStepExecutionsOutputBody: Swift.Decodable { +extension ListWorkflowBuildVersionsOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case imageBuildVersionArn - case message case nextToken - case requestId - case steps - case workflowBuildVersionArn - case workflowExecutionId + case workflowSummaryList } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) - requestId = requestIdDecoded - let stepsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowStepMetadata?].self, forKey: .steps) - var stepsDecoded0:[ImagebuilderClientTypes.WorkflowStepMetadata]? = nil - if let stepsContainer = stepsContainer { - stepsDecoded0 = [ImagebuilderClientTypes.WorkflowStepMetadata]() - for structure0 in stepsContainer { + let workflowSummaryListContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowSummary?].self, forKey: .workflowSummaryList) + var workflowSummaryListDecoded0:[ImagebuilderClientTypes.WorkflowSummary]? = nil + if let workflowSummaryListContainer = workflowSummaryListContainer { + workflowSummaryListDecoded0 = [ImagebuilderClientTypes.WorkflowSummary]() + for structure0 in workflowSummaryListContainer { if let structure0 = structure0 { - stepsDecoded0?.append(structure0) + workflowSummaryListDecoded0?.append(structure0) } } } - steps = stepsDecoded0 - let workflowBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowBuildVersionArn) - workflowBuildVersionArn = workflowBuildVersionArnDecoded - let workflowExecutionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowExecutionId) - workflowExecutionId = workflowExecutionIdDecoded - let imageBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageBuildVersionArn) - imageBuildVersionArn = imageBuildVersionArnDecoded - let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) - message = messageDecoded + workflowSummaryList = workflowSummaryListDecoded0 let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) nextToken = nextTokenDecoded } } -enum ListWorkflowStepExecutionsOutputError: ClientRuntime.HttpResponseErrorBinding { +enum ListWorkflowBuildVersionsOutputError: 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 @@ -16615,124 +17109,923 @@ enum ListWorkflowStepExecutionsOutputError: ClientRuntime.HttpResponseErrorBindi } } -extension ImagebuilderClientTypes.Logging: Swift.Codable { +extension ListWorkflowExecutionsInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case s3Logs + case imageBuildVersionArn + case maxResults + case nextToken } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let s3Logs = self.s3Logs { - try encodeContainer.encode(s3Logs, forKey: .s3Logs) + if let imageBuildVersionArn = self.imageBuildVersionArn { + try encodeContainer.encode(imageBuildVersionArn, forKey: .imageBuildVersionArn) + } + if let maxResults = self.maxResults { + try encodeContainer.encode(maxResults, forKey: .maxResults) + } + if let nextToken = self.nextToken { + try encodeContainer.encode(nextToken, forKey: .nextToken) } } +} - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let s3LogsDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.S3Logs.self, forKey: .s3Logs) - s3Logs = s3LogsDecoded +extension ListWorkflowExecutionsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/ListWorkflowExecutions" } } -extension ImagebuilderClientTypes { - /// Logging configuration defines where Image Builder uploads your logs. - public struct Logging: Swift.Equatable { - /// The Amazon S3 logging configuration. - public var s3Logs: ImagebuilderClientTypes.S3Logs? +public struct ListWorkflowExecutionsInput: Swift.Equatable { + /// List all workflow runtime instances for the specified image build version resource ARN. + /// This member is required. + public var imageBuildVersionArn: Swift.String? + /// The maximum items to return in a request. + public var maxResults: Swift.Int? + /// A token to specify where to start paginating. This is the nextToken from a previously truncated response. + public var nextToken: Swift.String? - public init( - s3Logs: ImagebuilderClientTypes.S3Logs? = nil - ) - { - self.s3Logs = s3Logs - } + public init( + imageBuildVersionArn: Swift.String? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.imageBuildVersionArn = imageBuildVersionArn + self.maxResults = maxResults + self.nextToken = nextToken } +} +struct ListWorkflowExecutionsInputBody: Swift.Equatable { + let maxResults: Swift.Int? + let nextToken: Swift.String? + let imageBuildVersionArn: Swift.String? } -extension ImagebuilderClientTypes.OutputResources: Swift.Codable { +extension ListWorkflowExecutionsInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case amis - case containers + case imageBuildVersionArn + case maxResults + case nextToken } - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let amis = amis { - var amisContainer = encodeContainer.nestedUnkeyedContainer(forKey: .amis) - for ami0 in amis { - try amisContainer.encode(ami0) - } - } - if let containers = containers { - var containersContainer = encodeContainer.nestedUnkeyedContainer(forKey: .containers) - for container0 in containers { - try containersContainer.encode(container0) - } + 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 + let imageBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageBuildVersionArn) + imageBuildVersionArn = imageBuildVersionArnDecoded + } +} + +extension ListWorkflowExecutionsOutput: 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: ListWorkflowExecutionsOutputBody = try responseDecoder.decode(responseBody: data) + self.imageBuildVersionArn = output.imageBuildVersionArn + self.message = output.message + self.nextToken = output.nextToken + self.requestId = output.requestId + self.workflowExecutions = output.workflowExecutions + } else { + self.imageBuildVersionArn = nil + self.message = nil + self.nextToken = nil + self.requestId = nil + self.workflowExecutions = nil } } +} + +public struct ListWorkflowExecutionsOutput: Swift.Equatable { + /// The resource ARN of the image build version for which you requested a list of workflow runtime details. + public var imageBuildVersionArn: Swift.String? + /// The output message from the list action, if applicable. + public var message: Swift.String? + /// The next token used for paginated responses. When this field isn't empty, there are additional elements that the service hasn't included in this request. Use this token with the next request to retrieve additional objects. + public var nextToken: Swift.String? + /// The request ID that uniquely identifies this request. + public var requestId: Swift.String? + /// Contains an array of runtime details that represents each time a workflow ran for the requested image build version. + public var workflowExecutions: [ImagebuilderClientTypes.WorkflowExecutionMetadata]? + + public init( + imageBuildVersionArn: Swift.String? = nil, + message: Swift.String? = nil, + nextToken: Swift.String? = nil, + requestId: Swift.String? = nil, + workflowExecutions: [ImagebuilderClientTypes.WorkflowExecutionMetadata]? = nil + ) + { + self.imageBuildVersionArn = imageBuildVersionArn + self.message = message + self.nextToken = nextToken + self.requestId = requestId + self.workflowExecutions = workflowExecutions + } +} + +struct ListWorkflowExecutionsOutputBody: Swift.Equatable { + let requestId: Swift.String? + let workflowExecutions: [ImagebuilderClientTypes.WorkflowExecutionMetadata]? + let imageBuildVersionArn: Swift.String? + let message: Swift.String? + let nextToken: Swift.String? +} + +extension ListWorkflowExecutionsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case imageBuildVersionArn + case message + case nextToken + case requestId + case workflowExecutions + } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let amisContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.Ami?].self, forKey: .amis) - var amisDecoded0:[ImagebuilderClientTypes.Ami]? = nil - if let amisContainer = amisContainer { - amisDecoded0 = [ImagebuilderClientTypes.Ami]() - for structure0 in amisContainer { - if let structure0 = structure0 { - amisDecoded0?.append(structure0) - } - } - } - amis = amisDecoded0 - let containersContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.Container?].self, forKey: .containers) - var containersDecoded0:[ImagebuilderClientTypes.Container]? = nil - if let containersContainer = containersContainer { - containersDecoded0 = [ImagebuilderClientTypes.Container]() - for structure0 in containersContainer { + let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) + requestId = requestIdDecoded + let workflowExecutionsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowExecutionMetadata?].self, forKey: .workflowExecutions) + var workflowExecutionsDecoded0:[ImagebuilderClientTypes.WorkflowExecutionMetadata]? = nil + if let workflowExecutionsContainer = workflowExecutionsContainer { + workflowExecutionsDecoded0 = [ImagebuilderClientTypes.WorkflowExecutionMetadata]() + for structure0 in workflowExecutionsContainer { if let structure0 = structure0 { - containersDecoded0?.append(structure0) + workflowExecutionsDecoded0?.append(structure0) } } } - containers = containersDecoded0 + workflowExecutions = workflowExecutionsDecoded0 + let imageBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageBuildVersionArn) + imageBuildVersionArn = imageBuildVersionArnDecoded + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded } } -extension ImagebuilderClientTypes { - /// The resources produced by this image. - public struct OutputResources: Swift.Equatable { - /// The Amazon EC2 AMIs created by this image. - public var amis: [ImagebuilderClientTypes.Ami]? - /// Container images that the pipeline has generated and stored in the output repository. - public var containers: [ImagebuilderClientTypes.Container]? - - public init( - amis: [ImagebuilderClientTypes.Ami]? = nil, - containers: [ImagebuilderClientTypes.Container]? = nil - ) - { - self.amis = amis - self.containers = containers +enum ListWorkflowExecutionsOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidPaginationTokenException": return try await InvalidPaginationTokenException(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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(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 ImagebuilderClientTypes { - public enum Ownership: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case amazon - case `self` - case shared - case thirdparty - case sdkUnknown(Swift.String) +extension ListWorkflowStepExecutionsInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults + case nextToken + case workflowExecutionId + } + + 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 workflowExecutionId = self.workflowExecutionId { + try encodeContainer.encode(workflowExecutionId, forKey: .workflowExecutionId) + } + } +} + +extension ListWorkflowStepExecutionsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/ListWorkflowStepExecutions" + } +} + +public struct ListWorkflowStepExecutionsInput: Swift.Equatable { + /// The maximum items to return in a request. + public var maxResults: Swift.Int? + /// A token to specify where to start paginating. This is the nextToken from a previously truncated response. + public var nextToken: Swift.String? + /// The unique identifier that Image Builder assigned to keep track of runtime details when it ran the workflow. + /// This member is required. + public var workflowExecutionId: Swift.String? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil, + workflowExecutionId: Swift.String? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + self.workflowExecutionId = workflowExecutionId + } +} + +struct ListWorkflowStepExecutionsInputBody: Swift.Equatable { + let maxResults: Swift.Int? + let nextToken: Swift.String? + let workflowExecutionId: Swift.String? +} + +extension ListWorkflowStepExecutionsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case maxResults + case nextToken + case workflowExecutionId + } + + 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 + let workflowExecutionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowExecutionId) + workflowExecutionId = workflowExecutionIdDecoded + } +} + +extension ListWorkflowStepExecutionsOutput: 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: ListWorkflowStepExecutionsOutputBody = try responseDecoder.decode(responseBody: data) + self.imageBuildVersionArn = output.imageBuildVersionArn + self.message = output.message + self.nextToken = output.nextToken + self.requestId = output.requestId + self.steps = output.steps + self.workflowBuildVersionArn = output.workflowBuildVersionArn + self.workflowExecutionId = output.workflowExecutionId + } else { + self.imageBuildVersionArn = nil + self.message = nil + self.nextToken = nil + self.requestId = nil + self.steps = nil + self.workflowBuildVersionArn = nil + self.workflowExecutionId = nil + } + } +} + +public struct ListWorkflowStepExecutionsOutput: Swift.Equatable { + /// The image build version resource ARN that's associated with the specified runtime instance of the workflow. + public var imageBuildVersionArn: Swift.String? + /// The output message from the list action, if applicable. + public var message: Swift.String? + /// The next token used for paginated responses. When this field isn't empty, there are additional elements that the service hasn't included in this request. Use this token with the next request to retrieve additional objects. + public var nextToken: Swift.String? + /// The request ID that uniquely identifies this request. + public var requestId: Swift.String? + /// Contains an array of runtime details that represents each step in this runtime instance of the workflow. + public var steps: [ImagebuilderClientTypes.WorkflowStepMetadata]? + /// The build version ARN for the Image Builder workflow resource that defines the steps for this runtime instance of the workflow. + public var workflowBuildVersionArn: Swift.String? + /// The unique identifier that Image Builder assigned to keep track of runtime details when it ran the workflow. + public var workflowExecutionId: Swift.String? + + public init( + imageBuildVersionArn: Swift.String? = nil, + message: Swift.String? = nil, + nextToken: Swift.String? = nil, + requestId: Swift.String? = nil, + steps: [ImagebuilderClientTypes.WorkflowStepMetadata]? = nil, + workflowBuildVersionArn: Swift.String? = nil, + workflowExecutionId: Swift.String? = nil + ) + { + self.imageBuildVersionArn = imageBuildVersionArn + self.message = message + self.nextToken = nextToken + self.requestId = requestId + self.steps = steps + self.workflowBuildVersionArn = workflowBuildVersionArn + self.workflowExecutionId = workflowExecutionId + } +} + +struct ListWorkflowStepExecutionsOutputBody: Swift.Equatable { + let requestId: Swift.String? + let steps: [ImagebuilderClientTypes.WorkflowStepMetadata]? + let workflowBuildVersionArn: Swift.String? + let workflowExecutionId: Swift.String? + let imageBuildVersionArn: Swift.String? + let message: Swift.String? + let nextToken: Swift.String? +} + +extension ListWorkflowStepExecutionsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case imageBuildVersionArn + case message + case nextToken + case requestId + case steps + case workflowBuildVersionArn + case workflowExecutionId + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) + requestId = requestIdDecoded + let stepsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowStepMetadata?].self, forKey: .steps) + var stepsDecoded0:[ImagebuilderClientTypes.WorkflowStepMetadata]? = nil + if let stepsContainer = stepsContainer { + stepsDecoded0 = [ImagebuilderClientTypes.WorkflowStepMetadata]() + for structure0 in stepsContainer { + if let structure0 = structure0 { + stepsDecoded0?.append(structure0) + } + } + } + steps = stepsDecoded0 + let workflowBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowBuildVersionArn) + workflowBuildVersionArn = workflowBuildVersionArnDecoded + let workflowExecutionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowExecutionId) + workflowExecutionId = workflowExecutionIdDecoded + let imageBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageBuildVersionArn) + imageBuildVersionArn = imageBuildVersionArnDecoded + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListWorkflowStepExecutionsOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidPaginationTokenException": return try await InvalidPaginationTokenException(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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(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 ListWorkflowsInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case byName + case filters + case maxResults + case nextToken + case owner + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let byName = self.byName { + try encodeContainer.encode(byName, forKey: .byName) + } + 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) + } + if let nextToken = self.nextToken { + try encodeContainer.encode(nextToken, forKey: .nextToken) + } + if let owner = self.owner { + try encodeContainer.encode(owner.rawValue, forKey: .owner) + } + } +} + +extension ListWorkflowsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/ListWorkflows" + } +} + +public struct ListWorkflowsInput: Swift.Equatable { + /// Specify all or part of the workflow name to streamline results. + public var byName: Swift.Bool? + /// Used to streamline search results. + public var filters: [ImagebuilderClientTypes.Filter]? + /// The maximum items to return in a request. + public var maxResults: Swift.Int? + /// A token to specify where to start paginating. This is the nextToken from a previously truncated response. + public var nextToken: Swift.String? + /// Used to get a list of workflow build version filtered by the identity of the creator. + public var owner: ImagebuilderClientTypes.Ownership? + + public init( + byName: Swift.Bool? = nil, + filters: [ImagebuilderClientTypes.Filter]? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil, + owner: ImagebuilderClientTypes.Ownership? = nil + ) + { + self.byName = byName + self.filters = filters + self.maxResults = maxResults + self.nextToken = nextToken + self.owner = owner + } +} + +struct ListWorkflowsInputBody: Swift.Equatable { + let owner: ImagebuilderClientTypes.Ownership? + let filters: [ImagebuilderClientTypes.Filter]? + let byName: Swift.Bool? + let maxResults: Swift.Int? + let nextToken: Swift.String? +} + +extension ListWorkflowsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case byName + case filters + case maxResults + case nextToken + case owner + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let ownerDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.Ownership.self, forKey: .owner) + owner = ownerDecoded + let filtersContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.Filter?].self, forKey: .filters) + var filtersDecoded0:[ImagebuilderClientTypes.Filter]? = nil + if let filtersContainer = filtersContainer { + filtersDecoded0 = [ImagebuilderClientTypes.Filter]() + for structure0 in filtersContainer { + if let structure0 = structure0 { + filtersDecoded0?.append(structure0) + } + } + } + filters = filtersDecoded0 + let byNameDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .byName) + byName = byNameDecoded + 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 ListWorkflowsOutput: 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: ListWorkflowsOutputBody = try responseDecoder.decode(responseBody: data) + self.nextToken = output.nextToken + self.workflowVersionList = output.workflowVersionList + } else { + self.nextToken = nil + self.workflowVersionList = nil + } + } +} + +public struct ListWorkflowsOutput: Swift.Equatable { + /// The next token used for paginated responses. When this field isn't empty, there are additional elements that the service hasn't included in this request. Use this token with the next request to retrieve additional objects. + public var nextToken: Swift.String? + /// A list of workflow build versions that match the request criteria. + public var workflowVersionList: [ImagebuilderClientTypes.WorkflowVersion]? + + public init( + nextToken: Swift.String? = nil, + workflowVersionList: [ImagebuilderClientTypes.WorkflowVersion]? = nil + ) + { + self.nextToken = nextToken + self.workflowVersionList = workflowVersionList + } +} + +struct ListWorkflowsOutputBody: Swift.Equatable { + let workflowVersionList: [ImagebuilderClientTypes.WorkflowVersion]? + let nextToken: Swift.String? +} + +extension ListWorkflowsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case nextToken + case workflowVersionList + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workflowVersionListContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowVersion?].self, forKey: .workflowVersionList) + var workflowVersionListDecoded0:[ImagebuilderClientTypes.WorkflowVersion]? = nil + if let workflowVersionListContainer = workflowVersionListContainer { + workflowVersionListDecoded0 = [ImagebuilderClientTypes.WorkflowVersion]() + for structure0 in workflowVersionListContainer { + if let structure0 = structure0 { + workflowVersionListDecoded0?.append(structure0) + } + } + } + workflowVersionList = workflowVersionListDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListWorkflowsOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidPaginationTokenException": return try await InvalidPaginationTokenException(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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(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 ImagebuilderClientTypes.Logging: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case s3Logs + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let s3Logs = self.s3Logs { + try encodeContainer.encode(s3Logs, forKey: .s3Logs) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let s3LogsDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.S3Logs.self, forKey: .s3Logs) + s3Logs = s3LogsDecoded + } +} + +extension ImagebuilderClientTypes { + /// Logging configuration defines where Image Builder uploads your logs. + public struct Logging: Swift.Equatable { + /// The Amazon S3 logging configuration. + public var s3Logs: ImagebuilderClientTypes.S3Logs? + + public init( + s3Logs: ImagebuilderClientTypes.S3Logs? = nil + ) + { + self.s3Logs = s3Logs + } + } + +} + +extension ImagebuilderClientTypes { + public enum OnWorkflowFailure: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case abort + case `continue` + case sdkUnknown(Swift.String) + + public static var allCases: [OnWorkflowFailure] { + return [ + .abort, + .continue, + .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 .abort: return "ABORT" + case .continue: return "CONTINUE" + 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 = OnWorkflowFailure(rawValue: rawValue) ?? OnWorkflowFailure.sdkUnknown(rawValue) + } + } +} + +extension ImagebuilderClientTypes.OutputResources: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case amis + case containers + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let amis = amis { + var amisContainer = encodeContainer.nestedUnkeyedContainer(forKey: .amis) + for ami0 in amis { + try amisContainer.encode(ami0) + } + } + if let containers = containers { + var containersContainer = encodeContainer.nestedUnkeyedContainer(forKey: .containers) + for container0 in containers { + try containersContainer.encode(container0) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let amisContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.Ami?].self, forKey: .amis) + var amisDecoded0:[ImagebuilderClientTypes.Ami]? = nil + if let amisContainer = amisContainer { + amisDecoded0 = [ImagebuilderClientTypes.Ami]() + for structure0 in amisContainer { + if let structure0 = structure0 { + amisDecoded0?.append(structure0) + } + } + } + amis = amisDecoded0 + let containersContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.Container?].self, forKey: .containers) + var containersDecoded0:[ImagebuilderClientTypes.Container]? = nil + if let containersContainer = containersContainer { + containersDecoded0 = [ImagebuilderClientTypes.Container]() + for structure0 in containersContainer { + if let structure0 = structure0 { + containersDecoded0?.append(structure0) + } + } + } + containers = containersDecoded0 + } +} + +extension ImagebuilderClientTypes { + /// The resources produced by this image. + public struct OutputResources: Swift.Equatable { + /// The Amazon EC2 AMIs created by this image. + public var amis: [ImagebuilderClientTypes.Ami]? + /// Container images that the pipeline has generated and stored in the output repository. + public var containers: [ImagebuilderClientTypes.Container]? + + public init( + amis: [ImagebuilderClientTypes.Ami]? = nil, + containers: [ImagebuilderClientTypes.Container]? = nil + ) + { + self.amis = amis + self.containers = containers + } + } + +} + +extension ImagebuilderClientTypes { + public enum Ownership: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case amazon + case `self` + case shared + case thirdparty + case sdkUnknown(Swift.String) public static var allCases: [Ownership] { return [ - .amazon, - .self, - .shared, - .thirdparty, + .amazon, + .self, + .shared, + .thirdparty, + .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 .amazon: return "Amazon" + case .self: return "Self" + case .shared: return "Shared" + case .thirdparty: return "ThirdParty" + 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 = Ownership(rawValue: rawValue) ?? Ownership.sdkUnknown(rawValue) + } + } +} + +extension ImagebuilderClientTypes.PackageVulnerabilityDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case cvss + case referenceUrls + case relatedVulnerabilities + case source + case sourceUrl + case vendorCreatedAt + case vendorSeverity + case vendorUpdatedAt + case vulnerabilityId + case vulnerablePackages + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let cvss = cvss { + var cvssContainer = encodeContainer.nestedUnkeyedContainer(forKey: .cvss) + for cvssscore0 in cvss { + try cvssContainer.encode(cvssscore0) + } + } + if let referenceUrls = referenceUrls { + var referenceUrlsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .referenceUrls) + for nonemptystring0 in referenceUrls { + try referenceUrlsContainer.encode(nonemptystring0) + } + } + if let relatedVulnerabilities = relatedVulnerabilities { + var relatedVulnerabilitiesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .relatedVulnerabilities) + for vulnerabilityid0 in relatedVulnerabilities { + try relatedVulnerabilitiesContainer.encode(vulnerabilityid0) + } + } + if let source = self.source { + try encodeContainer.encode(source, forKey: .source) + } + if let sourceUrl = self.sourceUrl { + try encodeContainer.encode(sourceUrl, forKey: .sourceUrl) + } + if let vendorCreatedAt = self.vendorCreatedAt { + try encodeContainer.encodeTimestamp(vendorCreatedAt, format: .epochSeconds, forKey: .vendorCreatedAt) + } + if let vendorSeverity = self.vendorSeverity { + try encodeContainer.encode(vendorSeverity, forKey: .vendorSeverity) + } + if let vendorUpdatedAt = self.vendorUpdatedAt { + try encodeContainer.encodeTimestamp(vendorUpdatedAt, format: .epochSeconds, forKey: .vendorUpdatedAt) + } + if let vulnerabilityId = self.vulnerabilityId { + try encodeContainer.encode(vulnerabilityId, forKey: .vulnerabilityId) + } + if let vulnerablePackages = vulnerablePackages { + var vulnerablePackagesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .vulnerablePackages) + for vulnerablepackage0 in vulnerablePackages { + try vulnerablePackagesContainer.encode(vulnerablepackage0) + } + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let vulnerabilityIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .vulnerabilityId) + vulnerabilityId = vulnerabilityIdDecoded + let vulnerablePackagesContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.VulnerablePackage?].self, forKey: .vulnerablePackages) + var vulnerablePackagesDecoded0:[ImagebuilderClientTypes.VulnerablePackage]? = nil + if let vulnerablePackagesContainer = vulnerablePackagesContainer { + vulnerablePackagesDecoded0 = [ImagebuilderClientTypes.VulnerablePackage]() + for structure0 in vulnerablePackagesContainer { + if let structure0 = structure0 { + vulnerablePackagesDecoded0?.append(structure0) + } + } + } + vulnerablePackages = vulnerablePackagesDecoded0 + let sourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .source) + source = sourceDecoded + let cvssContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.CvssScore?].self, forKey: .cvss) + var cvssDecoded0:[ImagebuilderClientTypes.CvssScore]? = nil + if let cvssContainer = cvssContainer { + cvssDecoded0 = [ImagebuilderClientTypes.CvssScore]() + for structure0 in cvssContainer { + if let structure0 = structure0 { + cvssDecoded0?.append(structure0) + } + } + } + cvss = cvssDecoded0 + let relatedVulnerabilitiesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .relatedVulnerabilities) + var relatedVulnerabilitiesDecoded0:[Swift.String]? = nil + if let relatedVulnerabilitiesContainer = relatedVulnerabilitiesContainer { + relatedVulnerabilitiesDecoded0 = [Swift.String]() + for string0 in relatedVulnerabilitiesContainer { + if let string0 = string0 { + relatedVulnerabilitiesDecoded0?.append(string0) + } + } + } + relatedVulnerabilities = relatedVulnerabilitiesDecoded0 + let sourceUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceUrl) + sourceUrl = sourceUrlDecoded + let vendorSeverityDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .vendorSeverity) + vendorSeverity = vendorSeverityDecoded + let vendorCreatedAtDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .vendorCreatedAt) + vendorCreatedAt = vendorCreatedAtDecoded + let vendorUpdatedAtDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .vendorUpdatedAt) + vendorUpdatedAt = vendorUpdatedAtDecoded + let referenceUrlsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .referenceUrls) + var referenceUrlsDecoded0:[Swift.String]? = nil + if let referenceUrlsContainer = referenceUrlsContainer { + referenceUrlsDecoded0 = [Swift.String]() + for string0 in referenceUrlsContainer { + if let string0 = string0 { + referenceUrlsDecoded0?.append(string0) + } + } + } + referenceUrls = referenceUrlsDecoded0 + } +} + +extension ImagebuilderClientTypes { + /// Information about package vulnerability findings. + public struct PackageVulnerabilityDetails: Swift.Equatable { + /// CVSS scores for one or more vulnerabilities that Amazon Inspector identified for a package. + public var cvss: [ImagebuilderClientTypes.CvssScore]? + /// Links to web pages that contain details about the vulnerabilities that Amazon Inspector identified for the package. + public var referenceUrls: [Swift.String]? + /// Vulnerabilities that are often related to the findings for the package. + public var relatedVulnerabilities: [Swift.String]? + /// The source of the vulnerability information. + public var source: Swift.String? + /// A link to the source of the vulnerability information. + public var sourceUrl: Swift.String? + /// The date and time when this vulnerability was first added to the vendor's database. + public var vendorCreatedAt: ClientRuntime.Date? + /// The severity that the vendor assigned to this vulnerability type. + public var vendorSeverity: Swift.String? + /// The date and time when the vendor last updated this vulnerability in their database. + public var vendorUpdatedAt: ClientRuntime.Date? + /// A unique identifier for this vulnerability. + /// This member is required. + public var vulnerabilityId: Swift.String? + /// The packages that this vulnerability impacts. + public var vulnerablePackages: [ImagebuilderClientTypes.VulnerablePackage]? + + public init( + cvss: [ImagebuilderClientTypes.CvssScore]? = nil, + referenceUrls: [Swift.String]? = nil, + relatedVulnerabilities: [Swift.String]? = nil, + source: Swift.String? = nil, + sourceUrl: Swift.String? = nil, + vendorCreatedAt: ClientRuntime.Date? = nil, + vendorSeverity: Swift.String? = nil, + vendorUpdatedAt: ClientRuntime.Date? = nil, + vulnerabilityId: Swift.String? = nil, + vulnerablePackages: [ImagebuilderClientTypes.VulnerablePackage]? = nil + ) + { + self.cvss = cvss + self.referenceUrls = referenceUrls + self.relatedVulnerabilities = relatedVulnerabilities + self.source = source + self.sourceUrl = sourceUrl + self.vendorCreatedAt = vendorCreatedAt + self.vendorSeverity = vendorSeverity + self.vendorUpdatedAt = vendorUpdatedAt + self.vulnerabilityId = vulnerabilityId + self.vulnerablePackages = vulnerablePackages + } + } + +} + +extension ImagebuilderClientTypes { + public enum PipelineExecutionStartCondition: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case expressionMatchAndDependencyUpdatesAvailable + case expressionMatchOnly + case sdkUnknown(Swift.String) + + public static var allCases: [PipelineExecutionStartCondition] { + return [ + .expressionMatchAndDependencyUpdatesAvailable, + .expressionMatchOnly, .sdkUnknown("") ] } @@ -16742,301 +18035,480 @@ extension ImagebuilderClientTypes { } public var rawValue: Swift.String { switch self { - case .amazon: return "Amazon" - case .self: return "Self" - case .shared: return "Shared" - case .thirdparty: return "ThirdParty" + case .expressionMatchAndDependencyUpdatesAvailable: return "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE" + case .expressionMatchOnly: return "EXPRESSION_MATCH_ONLY" + 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 = PipelineExecutionStartCondition(rawValue: rawValue) ?? PipelineExecutionStartCondition.sdkUnknown(rawValue) + } + } +} + +extension ImagebuilderClientTypes { + public enum PipelineStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case disabled + case enabled + case sdkUnknown(Swift.String) + + public static var allCases: [PipelineStatus] { + return [ + .disabled, + .enabled, + .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 .disabled: return "DISABLED" + case .enabled: return "ENABLED" + 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 = PipelineStatus(rawValue: rawValue) ?? PipelineStatus.sdkUnknown(rawValue) + } + } +} + +extension ImagebuilderClientTypes { + public enum Platform: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case linux + case windows + case sdkUnknown(Swift.String) + + public static var allCases: [Platform] { + return [ + .linux, + .windows, + .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 .linux: return "Linux" + case .windows: return "Windows" 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 = Ownership(rawValue: rawValue) ?? Ownership.sdkUnknown(rawValue) + self = Platform(rawValue: rawValue) ?? Platform.sdkUnknown(rawValue) + } + } +} + +extension PutComponentPolicyInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case componentArn + case policy + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let componentArn = self.componentArn { + try encodeContainer.encode(componentArn, forKey: .componentArn) + } + if let policy = self.policy { + try encodeContainer.encode(policy, forKey: .policy) + } + } +} + +extension PutComponentPolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/PutComponentPolicy" + } +} + +public struct PutComponentPolicyInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the component that this policy should be applied to. + /// This member is required. + public var componentArn: Swift.String? + /// The policy to apply. + /// This member is required. + public var policy: Swift.String? + + public init( + componentArn: Swift.String? = nil, + policy: Swift.String? = nil + ) + { + self.componentArn = componentArn + self.policy = policy + } +} + +struct PutComponentPolicyInputBody: Swift.Equatable { + let componentArn: Swift.String? + let policy: Swift.String? +} + +extension PutComponentPolicyInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case componentArn + case policy + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let componentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .componentArn) + componentArn = componentArnDecoded + let policyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policy) + policy = policyDecoded + } +} + +extension PutComponentPolicyOutput: 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: PutComponentPolicyOutputBody = try responseDecoder.decode(responseBody: data) + self.componentArn = output.componentArn + self.requestId = output.requestId + } else { + self.componentArn = nil + self.requestId = nil + } + } +} + +public struct PutComponentPolicyOutput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the component that this policy was applied to. + public var componentArn: Swift.String? + /// The request ID that uniquely identifies this request. + public var requestId: Swift.String? + + public init( + componentArn: Swift.String? = nil, + requestId: Swift.String? = nil + ) + { + self.componentArn = componentArn + self.requestId = requestId + } +} + +struct PutComponentPolicyOutputBody: Swift.Equatable { + let requestId: Swift.String? + let componentArn: Swift.String? +} + +extension PutComponentPolicyOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case componentArn + case requestId + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) + requestId = requestIdDecoded + let componentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .componentArn) + componentArn = componentArnDecoded + } +} + +enum PutComponentPolicyOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidParameterValueException": return try await InvalidParameterValueException(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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(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 PutContainerRecipePolicyInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case containerRecipeArn + case policy + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let containerRecipeArn = self.containerRecipeArn { + try encodeContainer.encode(containerRecipeArn, forKey: .containerRecipeArn) + } + if let policy = self.policy { + try encodeContainer.encode(policy, forKey: .policy) + } + } +} + +extension PutContainerRecipePolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/PutContainerRecipePolicy" + } +} + +public struct PutContainerRecipePolicyInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the container recipe that this policy should be applied to. + /// This member is required. + public var containerRecipeArn: Swift.String? + /// The policy to apply to the container recipe. + /// This member is required. + public var policy: Swift.String? + + public init( + containerRecipeArn: Swift.String? = nil, + policy: Swift.String? = nil + ) + { + self.containerRecipeArn = containerRecipeArn + self.policy = policy + } +} + +struct PutContainerRecipePolicyInputBody: Swift.Equatable { + let containerRecipeArn: Swift.String? + let policy: Swift.String? +} + +extension PutContainerRecipePolicyInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case containerRecipeArn + case policy + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let containerRecipeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .containerRecipeArn) + containerRecipeArn = containerRecipeArnDecoded + let policyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policy) + policy = policyDecoded + } +} + +extension PutContainerRecipePolicyOutput: 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: PutContainerRecipePolicyOutputBody = try responseDecoder.decode(responseBody: data) + self.containerRecipeArn = output.containerRecipeArn + self.requestId = output.requestId + } else { + self.containerRecipeArn = nil + self.requestId = nil + } + } +} + +public struct PutContainerRecipePolicyOutput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the container recipe that this policy was applied to. + public var containerRecipeArn: Swift.String? + /// The request ID that uniquely identifies this request. + public var requestId: Swift.String? + + public init( + containerRecipeArn: Swift.String? = nil, + requestId: Swift.String? = nil + ) + { + self.containerRecipeArn = containerRecipeArn + self.requestId = requestId + } +} + +struct PutContainerRecipePolicyOutputBody: Swift.Equatable { + let requestId: Swift.String? + let containerRecipeArn: Swift.String? +} + +extension PutContainerRecipePolicyOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case containerRecipeArn + case requestId + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) + requestId = requestIdDecoded + let containerRecipeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .containerRecipeArn) + containerRecipeArn = containerRecipeArnDecoded + } +} + +enum PutContainerRecipePolicyOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidParameterValueException": return try await InvalidParameterValueException(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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(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 ImagebuilderClientTypes.PackageVulnerabilityDetails: Swift.Codable { +extension PutImagePolicyInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case cvss - case referenceUrls - case relatedVulnerabilities - case source - case sourceUrl - case vendorCreatedAt - case vendorSeverity - case vendorUpdatedAt - case vulnerabilityId - case vulnerablePackages + case imageArn + case policy } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let cvss = cvss { - var cvssContainer = encodeContainer.nestedUnkeyedContainer(forKey: .cvss) - for cvssscore0 in cvss { - try cvssContainer.encode(cvssscore0) - } - } - if let referenceUrls = referenceUrls { - var referenceUrlsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .referenceUrls) - for nonemptystring0 in referenceUrls { - try referenceUrlsContainer.encode(nonemptystring0) - } - } - if let relatedVulnerabilities = relatedVulnerabilities { - var relatedVulnerabilitiesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .relatedVulnerabilities) - for vulnerabilityid0 in relatedVulnerabilities { - try relatedVulnerabilitiesContainer.encode(vulnerabilityid0) - } - } - if let source = self.source { - try encodeContainer.encode(source, forKey: .source) - } - if let sourceUrl = self.sourceUrl { - try encodeContainer.encode(sourceUrl, forKey: .sourceUrl) - } - if let vendorCreatedAt = self.vendorCreatedAt { - try encodeContainer.encodeTimestamp(vendorCreatedAt, format: .epochSeconds, forKey: .vendorCreatedAt) - } - if let vendorSeverity = self.vendorSeverity { - try encodeContainer.encode(vendorSeverity, forKey: .vendorSeverity) - } - if let vendorUpdatedAt = self.vendorUpdatedAt { - try encodeContainer.encodeTimestamp(vendorUpdatedAt, format: .epochSeconds, forKey: .vendorUpdatedAt) - } - if let vulnerabilityId = self.vulnerabilityId { - try encodeContainer.encode(vulnerabilityId, forKey: .vulnerabilityId) + if let imageArn = self.imageArn { + try encodeContainer.encode(imageArn, forKey: .imageArn) } - if let vulnerablePackages = vulnerablePackages { - var vulnerablePackagesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .vulnerablePackages) - for vulnerablepackage0 in vulnerablePackages { - try vulnerablePackagesContainer.encode(vulnerablepackage0) - } + if let policy = self.policy { + try encodeContainer.encode(policy, forKey: .policy) } } +} - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let vulnerabilityIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .vulnerabilityId) - vulnerabilityId = vulnerabilityIdDecoded - let vulnerablePackagesContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.VulnerablePackage?].self, forKey: .vulnerablePackages) - var vulnerablePackagesDecoded0:[ImagebuilderClientTypes.VulnerablePackage]? = nil - if let vulnerablePackagesContainer = vulnerablePackagesContainer { - vulnerablePackagesDecoded0 = [ImagebuilderClientTypes.VulnerablePackage]() - for structure0 in vulnerablePackagesContainer { - if let structure0 = structure0 { - vulnerablePackagesDecoded0?.append(structure0) - } - } - } - vulnerablePackages = vulnerablePackagesDecoded0 - let sourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .source) - source = sourceDecoded - let cvssContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.CvssScore?].self, forKey: .cvss) - var cvssDecoded0:[ImagebuilderClientTypes.CvssScore]? = nil - if let cvssContainer = cvssContainer { - cvssDecoded0 = [ImagebuilderClientTypes.CvssScore]() - for structure0 in cvssContainer { - if let structure0 = structure0 { - cvssDecoded0?.append(structure0) - } - } - } - cvss = cvssDecoded0 - let relatedVulnerabilitiesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .relatedVulnerabilities) - var relatedVulnerabilitiesDecoded0:[Swift.String]? = nil - if let relatedVulnerabilitiesContainer = relatedVulnerabilitiesContainer { - relatedVulnerabilitiesDecoded0 = [Swift.String]() - for string0 in relatedVulnerabilitiesContainer { - if let string0 = string0 { - relatedVulnerabilitiesDecoded0?.append(string0) - } - } - } - relatedVulnerabilities = relatedVulnerabilitiesDecoded0 - let sourceUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceUrl) - sourceUrl = sourceUrlDecoded - let vendorSeverityDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .vendorSeverity) - vendorSeverity = vendorSeverityDecoded - let vendorCreatedAtDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .vendorCreatedAt) - vendorCreatedAt = vendorCreatedAtDecoded - let vendorUpdatedAtDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .vendorUpdatedAt) - vendorUpdatedAt = vendorUpdatedAtDecoded - let referenceUrlsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .referenceUrls) - var referenceUrlsDecoded0:[Swift.String]? = nil - if let referenceUrlsContainer = referenceUrlsContainer { - referenceUrlsDecoded0 = [Swift.String]() - for string0 in referenceUrlsContainer { - if let string0 = string0 { - referenceUrlsDecoded0?.append(string0) - } - } - } - referenceUrls = referenceUrlsDecoded0 +extension PutImagePolicyInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/PutImagePolicy" } } -extension ImagebuilderClientTypes { - /// Information about package vulnerability findings. - public struct PackageVulnerabilityDetails: Swift.Equatable { - /// CVSS scores for one or more vulnerabilities that Amazon Inspector identified for a package. - public var cvss: [ImagebuilderClientTypes.CvssScore]? - /// Links to web pages that contain details about the vulnerabilities that Amazon Inspector identified for the package. - public var referenceUrls: [Swift.String]? - /// Vulnerabilities that are often related to the findings for the package. - public var relatedVulnerabilities: [Swift.String]? - /// The source of the vulnerability information. - public var source: Swift.String? - /// A link to the source of the vulnerability information. - public var sourceUrl: Swift.String? - /// The date and time when this vulnerability was first added to the vendor's database. - public var vendorCreatedAt: ClientRuntime.Date? - /// The severity that the vendor assigned to this vulnerability type. - public var vendorSeverity: Swift.String? - /// The date and time when the vendor last updated this vulnerability in their database. - public var vendorUpdatedAt: ClientRuntime.Date? - /// A unique identifier for this vulnerability. - /// This member is required. - public var vulnerabilityId: Swift.String? - /// The packages that this vulnerability impacts. - public var vulnerablePackages: [ImagebuilderClientTypes.VulnerablePackage]? +public struct PutImagePolicyInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the image that this policy should be applied to. + /// This member is required. + public var imageArn: Swift.String? + /// The policy to apply. + /// This member is required. + public var policy: Swift.String? - public init( - cvss: [ImagebuilderClientTypes.CvssScore]? = nil, - referenceUrls: [Swift.String]? = nil, - relatedVulnerabilities: [Swift.String]? = nil, - source: Swift.String? = nil, - sourceUrl: Swift.String? = nil, - vendorCreatedAt: ClientRuntime.Date? = nil, - vendorSeverity: Swift.String? = nil, - vendorUpdatedAt: ClientRuntime.Date? = nil, - vulnerabilityId: Swift.String? = nil, - vulnerablePackages: [ImagebuilderClientTypes.VulnerablePackage]? = nil - ) - { - self.cvss = cvss - self.referenceUrls = referenceUrls - self.relatedVulnerabilities = relatedVulnerabilities - self.source = source - self.sourceUrl = sourceUrl - self.vendorCreatedAt = vendorCreatedAt - self.vendorSeverity = vendorSeverity - self.vendorUpdatedAt = vendorUpdatedAt - self.vulnerabilityId = vulnerabilityId - self.vulnerablePackages = vulnerablePackages - } + public init( + imageArn: Swift.String? = nil, + policy: Swift.String? = nil + ) + { + self.imageArn = imageArn + self.policy = policy } +} +struct PutImagePolicyInputBody: Swift.Equatable { + let imageArn: Swift.String? + let policy: Swift.String? } -extension ImagebuilderClientTypes { - public enum PipelineExecutionStartCondition: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case expressionMatchAndDependencyUpdatesAvailable - case expressionMatchOnly - case sdkUnknown(Swift.String) +extension PutImagePolicyInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case imageArn + case policy + } - public static var allCases: [PipelineExecutionStartCondition] { - return [ - .expressionMatchAndDependencyUpdatesAvailable, - .expressionMatchOnly, - .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 .expressionMatchAndDependencyUpdatesAvailable: return "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE" - case .expressionMatchOnly: return "EXPRESSION_MATCH_ONLY" - 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 = PipelineExecutionStartCondition(rawValue: rawValue) ?? PipelineExecutionStartCondition.sdkUnknown(rawValue) + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let imageArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageArn) + imageArn = imageArnDecoded + let policyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policy) + policy = policyDecoded + } +} + +extension PutImagePolicyOutput: 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: PutImagePolicyOutputBody = try responseDecoder.decode(responseBody: data) + self.imageArn = output.imageArn + self.requestId = output.requestId + } else { + self.imageArn = nil + self.requestId = nil } } } -extension ImagebuilderClientTypes { - public enum PipelineStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case disabled - case enabled - case sdkUnknown(Swift.String) +public struct PutImagePolicyOutput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the image that this policy was applied to. + public var imageArn: Swift.String? + /// The request ID that uniquely identifies this request. + public var requestId: Swift.String? + + public init( + imageArn: Swift.String? = nil, + requestId: Swift.String? = nil + ) + { + self.imageArn = imageArn + self.requestId = requestId + } +} + +struct PutImagePolicyOutputBody: Swift.Equatable { + let requestId: Swift.String? + let imageArn: Swift.String? +} - public static var allCases: [PipelineStatus] { - return [ - .disabled, - .enabled, - .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 .disabled: return "DISABLED" - case .enabled: return "ENABLED" - 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 = PipelineStatus(rawValue: rawValue) ?? PipelineStatus.sdkUnknown(rawValue) - } +extension PutImagePolicyOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case imageArn + case requestId } -} -extension ImagebuilderClientTypes { - public enum Platform: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case linux - case windows - case sdkUnknown(Swift.String) + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) + requestId = requestIdDecoded + let imageArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageArn) + imageArn = imageArnDecoded + } +} - public static var allCases: [Platform] { - return [ - .linux, - .windows, - .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 .linux: return "Linux" - case .windows: return "Windows" - 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 = Platform(rawValue: rawValue) ?? Platform.sdkUnknown(rawValue) +enum PutImagePolicyOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidParameterValueException": return try await InvalidParameterValueException(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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(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 PutComponentPolicyInput: Swift.Encodable { +extension PutImageRecipePolicyInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case componentArn + case imageRecipeArn case policy } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let componentArn = self.componentArn { - try encodeContainer.encode(componentArn, forKey: .componentArn) + if let imageRecipeArn = self.imageRecipeArn { + try encodeContainer.encode(imageRecipeArn, forKey: .imageRecipeArn) } if let policy = self.policy { try encodeContainer.encode(policy, forKey: .policy) @@ -17044,88 +18516,88 @@ extension PutComponentPolicyInput: Swift.Encodable { } } -extension PutComponentPolicyInput: ClientRuntime.URLPathProvider { +extension PutImageRecipePolicyInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - return "/PutComponentPolicy" + return "/PutImageRecipePolicy" } } -public struct PutComponentPolicyInput: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the component that this policy should be applied to. +public struct PutImageRecipePolicyInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the image recipe that this policy should be applied to. /// This member is required. - public var componentArn: Swift.String? + public var imageRecipeArn: Swift.String? /// The policy to apply. /// This member is required. public var policy: Swift.String? public init( - componentArn: Swift.String? = nil, + imageRecipeArn: Swift.String? = nil, policy: Swift.String? = nil ) { - self.componentArn = componentArn + self.imageRecipeArn = imageRecipeArn self.policy = policy } } -struct PutComponentPolicyInputBody: Swift.Equatable { - let componentArn: Swift.String? +struct PutImageRecipePolicyInputBody: Swift.Equatable { + let imageRecipeArn: Swift.String? let policy: Swift.String? } -extension PutComponentPolicyInputBody: Swift.Decodable { +extension PutImageRecipePolicyInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case componentArn + case imageRecipeArn case policy } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let componentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .componentArn) - componentArn = componentArnDecoded + let imageRecipeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageRecipeArn) + imageRecipeArn = imageRecipeArnDecoded let policyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policy) policy = policyDecoded } } -extension PutComponentPolicyOutput: ClientRuntime.HttpResponseBinding { +extension PutImageRecipePolicyOutput: 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: PutComponentPolicyOutputBody = try responseDecoder.decode(responseBody: data) - self.componentArn = output.componentArn + let output: PutImageRecipePolicyOutputBody = try responseDecoder.decode(responseBody: data) + self.imageRecipeArn = output.imageRecipeArn self.requestId = output.requestId } else { - self.componentArn = nil + self.imageRecipeArn = nil self.requestId = nil } } } -public struct PutComponentPolicyOutput: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the component that this policy was applied to. - public var componentArn: Swift.String? +public struct PutImageRecipePolicyOutput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the image recipe that this policy was applied to. + public var imageRecipeArn: Swift.String? /// The request ID that uniquely identifies this request. public var requestId: Swift.String? public init( - componentArn: Swift.String? = nil, + imageRecipeArn: Swift.String? = nil, requestId: Swift.String? = nil ) { - self.componentArn = componentArn + self.imageRecipeArn = imageRecipeArn self.requestId = requestId } } -struct PutComponentPolicyOutputBody: Swift.Equatable { +struct PutImageRecipePolicyOutputBody: Swift.Equatable { let requestId: Swift.String? - let componentArn: Swift.String? + let imageRecipeArn: Swift.String? } -extension PutComponentPolicyOutputBody: Swift.Decodable { +extension PutImageRecipePolicyOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case componentArn + case imageRecipeArn case requestId } @@ -17133,12 +18605,12 @@ extension PutComponentPolicyOutputBody: Swift.Decodable { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) requestId = requestIdDecoded - let componentArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .componentArn) - componentArn = componentArnDecoded + let imageRecipeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageRecipeArn) + imageRecipeArn = imageRecipeArnDecoded } } -enum PutComponentPolicyOutputError: ClientRuntime.HttpResponseErrorBinding { +enum PutImageRecipePolicyOutputError: 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 @@ -17156,533 +18628,827 @@ enum PutComponentPolicyOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension PutContainerRecipePolicyInput: Swift.Encodable { +extension ImagebuilderClientTypes.Remediation: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case containerRecipeArn - case policy + case recommendation } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let containerRecipeArn = self.containerRecipeArn { - try encodeContainer.encode(containerRecipeArn, forKey: .containerRecipeArn) + if let recommendation = self.recommendation { + try encodeContainer.encode(recommendation, forKey: .recommendation) } - if let policy = self.policy { - try encodeContainer.encode(policy, forKey: .policy) + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let recommendationDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.RemediationRecommendation.self, forKey: .recommendation) + recommendation = recommendationDecoded + } +} + +extension ImagebuilderClientTypes { + /// Information about how to remediate a finding. + public struct Remediation: Swift.Equatable { + /// An object that contains information about the recommended course of action to remediate the finding. + public var recommendation: ImagebuilderClientTypes.RemediationRecommendation? + + public init( + recommendation: ImagebuilderClientTypes.RemediationRecommendation? = nil + ) + { + self.recommendation = recommendation } } + } -extension PutContainerRecipePolicyInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - return "/PutContainerRecipePolicy" +extension ImagebuilderClientTypes.RemediationRecommendation: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case text + case url + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let text = self.text { + try encodeContainer.encode(text, forKey: .text) + } + if let url = self.url { + try encodeContainer.encode(url, forKey: .url) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let textDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .text) + text = textDecoded + let urlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .url) + url = urlDecoded + } +} + +extension ImagebuilderClientTypes { + /// Details about the recommended course of action to remediate the finding. + public struct RemediationRecommendation: Swift.Equatable { + /// The recommended course of action to remediate the finding. + public var text: Swift.String? + /// A link to more information about the recommended remediation for this vulnerability. + public var url: Swift.String? + + public init( + text: Swift.String? = nil, + url: Swift.String? = nil + ) + { + self.text = text + self.url = url + } + } + +} + +extension ResourceAlreadyExistsException { + 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: ResourceAlreadyExistsExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + } else { + self.properties.message = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message } } -public struct PutContainerRecipePolicyInput: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the container recipe that this policy should be applied to. - /// This member is required. - public var containerRecipeArn: Swift.String? - /// The policy to apply to the container recipe. - /// This member is required. - public var policy: Swift.String? +/// The resource that you are trying to create already exists. +public struct ResourceAlreadyExistsException: 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 { "ResourceAlreadyExistsException" } + 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( - containerRecipeArn: Swift.String? = nil, - policy: Swift.String? = nil + message: Swift.String? = nil ) { - self.containerRecipeArn = containerRecipeArn - self.policy = policy + self.properties.message = message } } -struct PutContainerRecipePolicyInputBody: Swift.Equatable { - let containerRecipeArn: Swift.String? - let policy: Swift.String? +struct ResourceAlreadyExistsExceptionBody: Swift.Equatable { + let message: Swift.String? } -extension PutContainerRecipePolicyInputBody: Swift.Decodable { +extension ResourceAlreadyExistsExceptionBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case containerRecipeArn - case policy + case message } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let containerRecipeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .containerRecipeArn) - containerRecipeArn = containerRecipeArnDecoded - let policyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policy) - policy = policyDecoded + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded } } -extension PutContainerRecipePolicyOutput: ClientRuntime.HttpResponseBinding { - public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { +extension ResourceDependencyException { + 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: PutContainerRecipePolicyOutputBody = try responseDecoder.decode(responseBody: data) - self.containerRecipeArn = output.containerRecipeArn - self.requestId = output.requestId + let output: ResourceDependencyExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message } else { - self.containerRecipeArn = nil - self.requestId = nil + self.properties.message = nil } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message } } -public struct PutContainerRecipePolicyOutput: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the container recipe that this policy was applied to. - public var containerRecipeArn: Swift.String? - /// The request ID that uniquely identifies this request. - public var requestId: Swift.String? +/// You have attempted to mutate or delete a resource with a dependency that prohibits this action. See the error message for more details. +public struct ResourceDependencyException: 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 { "ResourceDependencyException" } + 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( - containerRecipeArn: Swift.String? = nil, - requestId: Swift.String? = nil + message: Swift.String? = nil ) { - self.containerRecipeArn = containerRecipeArn - self.requestId = requestId + self.properties.message = message } } -struct PutContainerRecipePolicyOutputBody: Swift.Equatable { - let requestId: Swift.String? - let containerRecipeArn: Swift.String? +struct ResourceDependencyExceptionBody: Swift.Equatable { + let message: Swift.String? } -extension PutContainerRecipePolicyOutputBody: Swift.Decodable { +extension ResourceDependencyExceptionBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case containerRecipeArn - case requestId + case message } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) - requestId = requestIdDecoded - let containerRecipeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .containerRecipeArn) - containerRecipeArn = containerRecipeArnDecoded + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded } } -enum PutContainerRecipePolicyOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "InvalidParameterValueException": return try await InvalidParameterValueException(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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ServiceUnavailableException": return try await ServiceUnavailableException(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 ResourceInUseException { + 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: ResourceInUseExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + } else { + self.properties.message = nil } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message } } -extension PutImagePolicyInput: Swift.Encodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case imageArn - case policy - } - - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let imageArn = self.imageArn { - try encodeContainer.encode(imageArn, forKey: .imageArn) - } - if let policy = self.policy { - try encodeContainer.encode(policy, forKey: .policy) - } - } -} +/// The resource that you are trying to operate on is currently in use. Review the message details and retry later. +public struct ResourceInUseException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { -extension PutImagePolicyInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - return "/PutImagePolicy" + public struct Properties { + public internal(set) var message: Swift.String? = nil } -} -public struct PutImagePolicyInput: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the image that this policy should be applied to. - /// This member is required. - public var imageArn: Swift.String? - /// The policy to apply. - /// This member is required. - public var policy: Swift.String? + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ResourceInUseException" } + 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( - imageArn: Swift.String? = nil, - policy: Swift.String? = nil + message: Swift.String? = nil ) { - self.imageArn = imageArn - self.policy = policy + self.properties.message = message } } -struct PutImagePolicyInputBody: Swift.Equatable { - let imageArn: Swift.String? - let policy: Swift.String? +struct ResourceInUseExceptionBody: Swift.Equatable { + let message: Swift.String? } -extension PutImagePolicyInputBody: Swift.Decodable { +extension ResourceInUseExceptionBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case imageArn - case policy + case message } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let imageArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageArn) - imageArn = imageArnDecoded - let policyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policy) - policy = policyDecoded + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded } } -extension PutImagePolicyOutput: ClientRuntime.HttpResponseBinding { - public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { +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: PutImagePolicyOutputBody = try responseDecoder.decode(responseBody: data) - self.imageArn = output.imageArn - self.requestId = output.requestId + let output: ResourceNotFoundExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message } else { - self.imageArn = nil - self.requestId = nil + self.properties.message = nil } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message } } -public struct PutImagePolicyOutput: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the image that this policy was applied to. - public var imageArn: Swift.String? - /// The request ID that uniquely identifies this request. - public var requestId: Swift.String? +/// At least one of the resources referenced by your request does not exist. +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( - imageArn: Swift.String? = nil, - requestId: Swift.String? = nil + message: Swift.String? = nil ) { - self.imageArn = imageArn - self.requestId = requestId + self.properties.message = message } } -struct PutImagePolicyOutputBody: Swift.Equatable { - let requestId: Swift.String? - let imageArn: Swift.String? +struct ResourceNotFoundExceptionBody: Swift.Equatable { + let message: Swift.String? } -extension PutImagePolicyOutputBody: Swift.Decodable { +extension ResourceNotFoundExceptionBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case imageArn - case requestId + case message } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) - requestId = requestIdDecoded - let imageArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageArn) - imageArn = imageArnDecoded + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + +extension ImagebuilderClientTypes.ResourceState: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case status + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let statusDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ResourceStatus.self, forKey: .status) + status = statusDecoded } } -enum PutImagePolicyOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "InvalidParameterValueException": return try await InvalidParameterValueException(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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ServiceUnavailableException": return try await ServiceUnavailableException(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 ImagebuilderClientTypes { + /// The current state of an impacted resource. + public struct ResourceState: Swift.Equatable { + /// Shows the current lifecycle policy action that was applied to an impacted resource. + public var status: ImagebuilderClientTypes.ResourceStatus? + + public init( + status: ImagebuilderClientTypes.ResourceStatus? = nil + ) + { + self.status = status } } + } -extension PutImageRecipePolicyInput: Swift.Encodable { +extension ImagebuilderClientTypes.ResourceStateUpdateExclusionRules: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case imageRecipeArn - case policy + case amis } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let imageRecipeArn = self.imageRecipeArn { - try encodeContainer.encode(imageRecipeArn, forKey: .imageRecipeArn) - } - if let policy = self.policy { - try encodeContainer.encode(policy, forKey: .policy) + if let amis = self.amis { + try encodeContainer.encode(amis, forKey: .amis) } } -} -extension PutImageRecipePolicyInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - return "/PutImageRecipePolicy" + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let amisDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.LifecyclePolicyDetailExclusionRulesAmis.self, forKey: .amis) + amis = amisDecoded } } -public struct PutImageRecipePolicyInput: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the image recipe that this policy should be applied to. - /// This member is required. - public var imageRecipeArn: Swift.String? - /// The policy to apply. - /// This member is required. - public var policy: Swift.String? +extension ImagebuilderClientTypes { + /// Additional rules to specify resources that should be exempt from ad-hoc lifecycle actions. + public struct ResourceStateUpdateExclusionRules: Swift.Equatable { + /// Defines criteria for AMIs that are excluded from lifecycle actions. + public var amis: ImagebuilderClientTypes.LifecyclePolicyDetailExclusionRulesAmis? - public init( - imageRecipeArn: Swift.String? = nil, - policy: Swift.String? = nil - ) - { - self.imageRecipeArn = imageRecipeArn - self.policy = policy + public init( + amis: ImagebuilderClientTypes.LifecyclePolicyDetailExclusionRulesAmis? = nil + ) + { + self.amis = amis + } } -} -struct PutImageRecipePolicyInputBody: Swift.Equatable { - let imageRecipeArn: Swift.String? - let policy: Swift.String? } -extension PutImageRecipePolicyInputBody: Swift.Decodable { +extension ImagebuilderClientTypes.ResourceStateUpdateIncludeResources: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case imageRecipeArn - case policy + case amis + case containers + case snapshots + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if amis != false { + try encodeContainer.encode(amis, forKey: .amis) + } + if containers != false { + try encodeContainer.encode(containers, forKey: .containers) + } + if snapshots != false { + try encodeContainer.encode(snapshots, forKey: .snapshots) + } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let imageRecipeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageRecipeArn) - imageRecipeArn = imageRecipeArnDecoded - let policyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .policy) - policy = policyDecoded + let amisDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .amis) ?? false + amis = amisDecoded + let snapshotsDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .snapshots) ?? false + snapshots = snapshotsDecoded + let containersDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .containers) ?? false + containers = containersDecoded } } -extension PutImageRecipePolicyOutput: 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: PutImageRecipePolicyOutputBody = try responseDecoder.decode(responseBody: data) - self.imageRecipeArn = output.imageRecipeArn - self.requestId = output.requestId - } else { - self.imageRecipeArn = nil - self.requestId = nil +extension ImagebuilderClientTypes { + /// Specifies if the lifecycle policy should apply actions to selected resources. + public struct ResourceStateUpdateIncludeResources: Swift.Equatable { + /// Specifies whether the lifecycle action should apply to distributed AMIs + public var amis: Swift.Bool + /// Specifies whether the lifecycle action should apply to distributed containers. + public var containers: Swift.Bool + /// Specifies whether the lifecycle action should apply to snapshots associated with distributed AMIs. + public var snapshots: Swift.Bool + + public init( + amis: Swift.Bool = false, + containers: Swift.Bool = false, + snapshots: Swift.Bool = false + ) + { + self.amis = amis + self.containers = containers + self.snapshots = snapshots } } + } -public struct PutImageRecipePolicyOutput: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the image recipe that this policy was applied to. - public var imageRecipeArn: Swift.String? - /// The request ID that uniquely identifies this request. - public var requestId: Swift.String? +extension ImagebuilderClientTypes { + public enum ResourceStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case available + case deleted + case deprecated + case disabled + case sdkUnknown(Swift.String) - public init( - imageRecipeArn: Swift.String? = nil, - requestId: Swift.String? = nil - ) - { - self.imageRecipeArn = imageRecipeArn - self.requestId = requestId + public static var allCases: [ResourceStatus] { + return [ + .available, + .deleted, + .deprecated, + .disabled, + .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 .available: return "AVAILABLE" + case .deleted: return "DELETED" + case .deprecated: return "DEPRECATED" + case .disabled: return "DISABLED" + 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 = ResourceStatus(rawValue: rawValue) ?? ResourceStatus.sdkUnknown(rawValue) + } } } -struct PutImageRecipePolicyOutputBody: Swift.Equatable { - let requestId: Swift.String? - let imageRecipeArn: Swift.String? -} - -extension PutImageRecipePolicyOutputBody: Swift.Decodable { +extension ImagebuilderClientTypes.S3ExportConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case imageRecipeArn - case requestId + case diskImageFormat + case roleName + case s3Bucket + case s3Prefix + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let diskImageFormat = self.diskImageFormat { + try encodeContainer.encode(diskImageFormat.rawValue, forKey: .diskImageFormat) + } + if let roleName = self.roleName { + try encodeContainer.encode(roleName, forKey: .roleName) + } + if let s3Bucket = self.s3Bucket { + try encodeContainer.encode(s3Bucket, forKey: .s3Bucket) + } + if let s3Prefix = self.s3Prefix { + try encodeContainer.encode(s3Prefix, forKey: .s3Prefix) + } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) - requestId = requestIdDecoded - let imageRecipeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageRecipeArn) - imageRecipeArn = imageRecipeArnDecoded + let roleNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .roleName) + roleName = roleNameDecoded + let diskImageFormatDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.DiskImageFormat.self, forKey: .diskImageFormat) + diskImageFormat = diskImageFormatDecoded + let s3BucketDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .s3Bucket) + s3Bucket = s3BucketDecoded + let s3PrefixDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .s3Prefix) + s3Prefix = s3PrefixDecoded } } -enum PutImageRecipePolicyOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "InvalidParameterValueException": return try await InvalidParameterValueException(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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ServiceUnavailableException": return try await ServiceUnavailableException(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 ImagebuilderClientTypes { + /// Properties that configure export from your build instance to a compatible file format for your VM. + public struct S3ExportConfiguration: Swift.Equatable { + /// Export the updated image to one of the following supported disk image formats: + /// + /// * Virtual Hard Disk (VHD) – Compatible with Citrix Xen and Microsoft Hyper-V virtualization products. + /// + /// * Stream-optimized ESX Virtual Machine Disk (VMDK) – Compatible with VMware ESX and VMware vSphere versions 4, 5, and 6. + /// + /// * Raw – Raw format. + /// This member is required. + public var diskImageFormat: ImagebuilderClientTypes.DiskImageFormat? + /// The name of the role that grants VM Import/Export permission to export images to your S3 bucket. + /// This member is required. + public var roleName: Swift.String? + /// The S3 bucket in which to store the output disk images for your VM. + /// This member is required. + public var s3Bucket: Swift.String? + /// The Amazon S3 path for the bucket where the output disk images for your VM are stored. + public var s3Prefix: Swift.String? + + public init( + diskImageFormat: ImagebuilderClientTypes.DiskImageFormat? = nil, + roleName: Swift.String? = nil, + s3Bucket: Swift.String? = nil, + s3Prefix: Swift.String? = nil + ) + { + self.diskImageFormat = diskImageFormat + self.roleName = roleName + self.s3Bucket = s3Bucket + self.s3Prefix = s3Prefix } } + } -extension ImagebuilderClientTypes.Remediation: Swift.Codable { +extension ImagebuilderClientTypes.S3Logs: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case recommendation + case s3BucketName + case s3KeyPrefix } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let recommendation = self.recommendation { - try encodeContainer.encode(recommendation, forKey: .recommendation) + if let s3BucketName = self.s3BucketName { + try encodeContainer.encode(s3BucketName, forKey: .s3BucketName) + } + if let s3KeyPrefix = self.s3KeyPrefix { + try encodeContainer.encode(s3KeyPrefix, forKey: .s3KeyPrefix) } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let recommendationDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.RemediationRecommendation.self, forKey: .recommendation) - recommendation = recommendationDecoded + let s3BucketNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .s3BucketName) + s3BucketName = s3BucketNameDecoded + let s3KeyPrefixDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .s3KeyPrefix) + s3KeyPrefix = s3KeyPrefixDecoded } } extension ImagebuilderClientTypes { - /// Information about how to remediate a finding. - public struct Remediation: Swift.Equatable { - /// An object that contains information about the recommended course of action to remediate the finding. - public var recommendation: ImagebuilderClientTypes.RemediationRecommendation? + /// Amazon S3 logging configuration. + public struct S3Logs: Swift.Equatable { + /// The S3 bucket in which to store the logs. + public var s3BucketName: Swift.String? + /// The Amazon S3 path to the bucket where the logs are stored. + public var s3KeyPrefix: Swift.String? public init( - recommendation: ImagebuilderClientTypes.RemediationRecommendation? = nil + s3BucketName: Swift.String? = nil, + s3KeyPrefix: Swift.String? = nil ) { - self.recommendation = recommendation + self.s3BucketName = s3BucketName + self.s3KeyPrefix = s3KeyPrefix } } } -extension ImagebuilderClientTypes.RemediationRecommendation: Swift.Codable { +extension ImagebuilderClientTypes.Schedule: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case text - case url + case pipelineExecutionStartCondition + case scheduleExpression + case timezone } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let text = self.text { - try encodeContainer.encode(text, forKey: .text) + if let pipelineExecutionStartCondition = self.pipelineExecutionStartCondition { + try encodeContainer.encode(pipelineExecutionStartCondition.rawValue, forKey: .pipelineExecutionStartCondition) } - if let url = self.url { - try encodeContainer.encode(url, forKey: .url) + if let scheduleExpression = self.scheduleExpression { + try encodeContainer.encode(scheduleExpression, forKey: .scheduleExpression) + } + if let timezone = self.timezone { + try encodeContainer.encode(timezone, forKey: .timezone) } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let textDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .text) - text = textDecoded - let urlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .url) - url = urlDecoded + let scheduleExpressionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .scheduleExpression) + scheduleExpression = scheduleExpressionDecoded + let timezoneDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .timezone) + timezone = timezoneDecoded + let pipelineExecutionStartConditionDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.PipelineExecutionStartCondition.self, forKey: .pipelineExecutionStartCondition) + pipelineExecutionStartCondition = pipelineExecutionStartConditionDecoded } } extension ImagebuilderClientTypes { - /// Details about the recommended course of action to remediate the finding. - public struct RemediationRecommendation: Swift.Equatable { - /// The recommended course of action to remediate the finding. - public var text: Swift.String? - /// A link to more information about the recommended remediation for this vulnerability. - public var url: Swift.String? + /// A schedule configures when and how often a pipeline will automatically create a new image. + public struct Schedule: Swift.Equatable { + /// The condition configures when the pipeline should trigger a new image build. When the pipelineExecutionStartCondition is set to EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE, and you use semantic version filters on the base image or components in your image recipe, EC2 Image Builder will build a new image only when there are new versions of the image or components in your recipe that match the semantic version filter. When it is set to EXPRESSION_MATCH_ONLY, it will build a new image every time the CRON expression matches the current time. For semantic version syntax, see [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html) in the EC2 Image Builder API Reference. + public var pipelineExecutionStartCondition: ImagebuilderClientTypes.PipelineExecutionStartCondition? + /// The cron expression determines how often EC2 Image Builder evaluates your pipelineExecutionStartCondition. For information on how to format a cron expression in Image Builder, see [Use cron expressions in EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-builder-cron.html). + public var scheduleExpression: Swift.String? + /// The timezone that applies to the scheduling expression. For example, "Etc/UTC", "America/Los_Angeles" in the [IANA timezone format](https://www.joda.org/joda-time/timezones.html). If not specified this defaults to UTC. + public var timezone: Swift.String? public init( - text: Swift.String? = nil, - url: Swift.String? = nil + pipelineExecutionStartCondition: ImagebuilderClientTypes.PipelineExecutionStartCondition? = nil, + scheduleExpression: Swift.String? = nil, + timezone: Swift.String? = nil ) { - self.text = text - self.url = url + self.pipelineExecutionStartCondition = pipelineExecutionStartCondition + self.scheduleExpression = scheduleExpression + self.timezone = timezone } } } -extension ResourceAlreadyExistsException { - 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: ResourceAlreadyExistsExceptionBody = try responseDecoder.decode(responseBody: data) - self.properties.message = output.message - } else { - self.properties.message = nil +extension SendWorkflowStepActionInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case action + case clientToken + case imageBuildVersionArn + case reason + case stepExecutionId + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let action = self.action { + try encodeContainer.encode(action.rawValue, forKey: .action) + } + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) + } + if let imageBuildVersionArn = self.imageBuildVersionArn { + try encodeContainer.encode(imageBuildVersionArn, forKey: .imageBuildVersionArn) + } + if let reason = self.reason { + try encodeContainer.encode(reason, forKey: .reason) + } + if let stepExecutionId = self.stepExecutionId { + try encodeContainer.encode(stepExecutionId, forKey: .stepExecutionId) } - self.httpResponse = httpResponse - self.requestID = requestID - self.message = message } } -/// The resource that you are trying to create already exists. -public struct ResourceAlreadyExistsException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { +extension SendWorkflowStepActionInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/SendWorkflowStepAction" + } +} - public struct Properties { - public internal(set) var message: Swift.String? = nil +public struct SendWorkflowStepActionInput: Swift.Equatable { + /// The action for the image creation process to take while a workflow WaitForAction step waits for an asynchronous action to complete. + /// This member is required. + public var action: ImagebuilderClientTypes.WorkflowStepActionType? + /// Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) in the Amazon EC2 API Reference. + /// This member is required. + public var clientToken: Swift.String? + /// The Amazon Resource Name (ARN) of the image build version to send action for. + /// This member is required. + public var imageBuildVersionArn: Swift.String? + /// The reason why this action is sent. + public var reason: Swift.String? + /// Uniquely identifies the workflow step that sent the step action. + /// This member is required. + public var stepExecutionId: Swift.String? + + public init( + action: ImagebuilderClientTypes.WorkflowStepActionType? = nil, + clientToken: Swift.String? = nil, + imageBuildVersionArn: Swift.String? = nil, + reason: Swift.String? = nil, + stepExecutionId: Swift.String? = nil + ) + { + self.action = action + self.clientToken = clientToken + self.imageBuildVersionArn = imageBuildVersionArn + self.reason = reason + self.stepExecutionId = stepExecutionId } +} - public internal(set) var properties = Properties() - public static var typeName: Swift.String { "ResourceAlreadyExistsException" } - 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? +struct SendWorkflowStepActionInputBody: Swift.Equatable { + let stepExecutionId: Swift.String? + let imageBuildVersionArn: Swift.String? + let action: ImagebuilderClientTypes.WorkflowStepActionType? + let reason: Swift.String? + let clientToken: Swift.String? +} + +extension SendWorkflowStepActionInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case action + case clientToken + case imageBuildVersionArn + case reason + case stepExecutionId + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let stepExecutionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .stepExecutionId) + stepExecutionId = stepExecutionIdDecoded + let imageBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageBuildVersionArn) + imageBuildVersionArn = imageBuildVersionArnDecoded + let actionDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.WorkflowStepActionType.self, forKey: .action) + action = actionDecoded + let reasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .reason) + reason = reasonDecoded + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + } +} + +extension SendWorkflowStepActionOutput: 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: SendWorkflowStepActionOutputBody = try responseDecoder.decode(responseBody: data) + self.clientToken = output.clientToken + self.imageBuildVersionArn = output.imageBuildVersionArn + self.stepExecutionId = output.stepExecutionId + } else { + self.clientToken = nil + self.imageBuildVersionArn = nil + self.stepExecutionId = nil + } + } +} + +public struct SendWorkflowStepActionOutput: Swift.Equatable { + /// The client token that uniquely identifies the request. + public var clientToken: Swift.String? + /// The Amazon Resource Name (ARN) of the image build version that received the action request. + public var imageBuildVersionArn: Swift.String? + /// The workflow step that sent the step action. + public var stepExecutionId: Swift.String? public init( - message: Swift.String? = nil + clientToken: Swift.String? = nil, + imageBuildVersionArn: Swift.String? = nil, + stepExecutionId: Swift.String? = nil ) { - self.properties.message = message + self.clientToken = clientToken + self.imageBuildVersionArn = imageBuildVersionArn + self.stepExecutionId = stepExecutionId } } -struct ResourceAlreadyExistsExceptionBody: Swift.Equatable { - let message: Swift.String? +struct SendWorkflowStepActionOutputBody: Swift.Equatable { + let stepExecutionId: Swift.String? + let imageBuildVersionArn: Swift.String? + let clientToken: Swift.String? } -extension ResourceAlreadyExistsExceptionBody: Swift.Decodable { +extension SendWorkflowStepActionOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case message + case clientToken + case imageBuildVersionArn + case stepExecutionId } 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 + let stepExecutionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .stepExecutionId) + stepExecutionId = stepExecutionIdDecoded + let imageBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageBuildVersionArn) + imageBuildVersionArn = imageBuildVersionArnDecoded + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + } +} + +enum SendWorkflowStepActionOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "IdempotentParameterMismatchException": return try await IdempotentParameterMismatchException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidParameterValueException": return try await InvalidParameterValueException(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 "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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(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 ResourceDependencyException { +extension ServiceException { 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: ResourceDependencyExceptionBody = try responseDecoder.decode(responseBody: data) + let output: ServiceExceptionBody = try responseDecoder.decode(responseBody: data) self.properties.message = output.message } else { self.properties.message = nil @@ -17693,16 +19459,16 @@ extension ResourceDependencyException { } } -/// You have attempted to mutate or delete a resource with a dependency that prohibits this action. See the error message for more details. -public struct ResourceDependencyException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { +/// This exception is thrown when the service encounters an unrecoverable exception. +public struct ServiceException: 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 { "ResourceDependencyException" } - public static var fault: ErrorFault { .client } + public static var typeName: Swift.String { "ServiceException" } + 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() @@ -17717,11 +19483,11 @@ public struct ResourceDependencyException: ClientRuntime.ModeledError, AWSClient } } -struct ResourceDependencyExceptionBody: Swift.Equatable { +struct ServiceExceptionBody: Swift.Equatable { let message: Swift.String? } -extension ResourceDependencyExceptionBody: Swift.Decodable { +extension ServiceExceptionBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case message } @@ -17733,11 +19499,11 @@ extension ResourceDependencyExceptionBody: Swift.Decodable { } } -extension ResourceInUseException { +extension ServiceQuotaExceededException { 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: ResourceInUseExceptionBody = try responseDecoder.decode(responseBody: data) + let output: ServiceQuotaExceededExceptionBody = try responseDecoder.decode(responseBody: data) self.properties.message = output.message } else { self.properties.message = nil @@ -17748,15 +19514,15 @@ extension ResourceInUseException { } } -/// The resource that you are trying to operate on is currently in use. Review the message details and retry later. -public struct ResourceInUseException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { +/// You have exceeded the number of permitted resources or operations for this service. For service quotas, see [EC2 Image Builder endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder). +public struct ServiceQuotaExceededException: 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 { "ResourceInUseException" } + public static var typeName: Swift.String { "ServiceQuotaExceededException" } public static var fault: ErrorFault { .client } public static var isRetryable: Swift.Bool { false } public static var isThrottling: Swift.Bool { false } @@ -17772,11 +19538,11 @@ public struct ResourceInUseException: ClientRuntime.ModeledError, AWSClientRunti } } -struct ResourceInUseExceptionBody: Swift.Equatable { +struct ServiceQuotaExceededExceptionBody: Swift.Equatable { let message: Swift.String? } -extension ResourceInUseExceptionBody: Swift.Decodable { +extension ServiceQuotaExceededExceptionBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case message } @@ -17788,11 +19554,11 @@ extension ResourceInUseExceptionBody: Swift.Decodable { } } -extension ResourceNotFoundException { +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: ResourceNotFoundExceptionBody = try responseDecoder.decode(responseBody: data) + let output: ServiceUnavailableExceptionBody = try responseDecoder.decode(responseBody: data) self.properties.message = output.message } else { self.properties.message = nil @@ -17803,16 +19569,16 @@ extension ResourceNotFoundException { } } -/// At least one of the resources referenced by your request does not exist. -public struct ResourceNotFoundException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { +/// The service is unable to process your request at this time. +public struct ServiceUnavailableException: 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 typeName: Swift.String { "ServiceUnavailableException" } + 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() @@ -17827,11 +19593,11 @@ public struct ResourceNotFoundException: ClientRuntime.ModeledError, AWSClientRu } } -struct ResourceNotFoundExceptionBody: Swift.Equatable { +struct ServiceUnavailableExceptionBody: Swift.Equatable { let message: Swift.String? } -extension ResourceNotFoundExceptionBody: Swift.Decodable { +extension ServiceUnavailableExceptionBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case message } @@ -17843,722 +19609,657 @@ extension ResourceNotFoundExceptionBody: Swift.Decodable { } } -extension ImagebuilderClientTypes.ResourceState: Swift.Codable { +extension ImagebuilderClientTypes.SeverityCounts: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case status + case all + case critical + case high + case medium } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let status = self.status { - try encodeContainer.encode(status.rawValue, forKey: .status) + if let all = self.all { + try encodeContainer.encode(all, forKey: .all) + } + if let critical = self.critical { + try encodeContainer.encode(critical, forKey: .critical) + } + if let high = self.high { + try encodeContainer.encode(high, forKey: .high) + } + if let medium = self.medium { + try encodeContainer.encode(medium, forKey: .medium) } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let statusDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ResourceStatus.self, forKey: .status) - status = statusDecoded + let allDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .all) + all = allDecoded + let criticalDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .critical) + critical = criticalDecoded + let highDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .high) + high = highDecoded + let mediumDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .medium) + medium = mediumDecoded } } extension ImagebuilderClientTypes { - /// The current state of an impacted resource. - public struct ResourceState: Swift.Equatable { - /// Shows the current lifecycle policy action that was applied to an impacted resource. - public var status: ImagebuilderClientTypes.ResourceStatus? + /// Includes counts by severity level for medium severity and higher level findings, plus a total for all of the findings for the specified filter. + public struct SeverityCounts: Swift.Equatable { + /// The total number of findings across all severity levels for the specified filter. + public var all: Swift.Int? + /// The number of critical severity findings for the specified filter. + public var critical: Swift.Int? + /// The number of high severity findings for the specified filter. + public var high: Swift.Int? + /// The number of medium severity findings for the specified filter. + public var medium: Swift.Int? public init( - status: ImagebuilderClientTypes.ResourceStatus? = nil + all: Swift.Int? = nil, + critical: Swift.Int? = nil, + high: Swift.Int? = nil, + medium: Swift.Int? = nil ) { - self.status = status + self.all = all + self.critical = critical + self.high = high + self.medium = medium } } } -extension ImagebuilderClientTypes.ResourceStateUpdateExclusionRules: Swift.Codable { +extension StartImagePipelineExecutionInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case amis + case clientToken + case imagePipelineArn } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let amis = self.amis { - try encodeContainer.encode(amis, forKey: .amis) + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) + } + if let imagePipelineArn = self.imagePipelineArn { + try encodeContainer.encode(imagePipelineArn, forKey: .imagePipelineArn) } } +} - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let amisDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.LifecyclePolicyDetailExclusionRulesAmis.self, forKey: .amis) - amis = amisDecoded +extension StartImagePipelineExecutionInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/StartImagePipelineExecution" } } -extension ImagebuilderClientTypes { - /// Additional rules to specify resources that should be exempt from ad-hoc lifecycle actions. - public struct ResourceStateUpdateExclusionRules: Swift.Equatable { - /// Defines criteria for AMIs that are excluded from lifecycle actions. - public var amis: ImagebuilderClientTypes.LifecyclePolicyDetailExclusionRulesAmis? +public struct StartImagePipelineExecutionInput: Swift.Equatable { + /// Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) in the Amazon EC2 API Reference. + /// This member is required. + public var clientToken: Swift.String? + /// The Amazon Resource Name (ARN) of the image pipeline that you want to manually invoke. + /// This member is required. + public var imagePipelineArn: Swift.String? - public init( - amis: ImagebuilderClientTypes.LifecyclePolicyDetailExclusionRulesAmis? = nil - ) - { - self.amis = amis - } + public init( + clientToken: Swift.String? = nil, + imagePipelineArn: Swift.String? = nil + ) + { + self.clientToken = clientToken + self.imagePipelineArn = imagePipelineArn } +} +struct StartImagePipelineExecutionInputBody: Swift.Equatable { + let imagePipelineArn: Swift.String? + let clientToken: Swift.String? } -extension ImagebuilderClientTypes.ResourceStateUpdateIncludeResources: Swift.Codable { +extension StartImagePipelineExecutionInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case amis - case containers - case snapshots - } - - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if amis != false { - try encodeContainer.encode(amis, forKey: .amis) - } - if containers != false { - try encodeContainer.encode(containers, forKey: .containers) - } - if snapshots != false { - try encodeContainer.encode(snapshots, forKey: .snapshots) - } + case clientToken + case imagePipelineArn } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let amisDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .amis) ?? false - amis = amisDecoded - let snapshotsDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .snapshots) ?? false - snapshots = snapshotsDecoded - let containersDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .containers) ?? false - containers = containersDecoded + let imagePipelineArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imagePipelineArn) + imagePipelineArn = imagePipelineArnDecoded + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded } } -extension ImagebuilderClientTypes { - /// Specifies if the lifecycle policy should apply actions to selected resources. - public struct ResourceStateUpdateIncludeResources: Swift.Equatable { - /// Specifies whether the lifecycle action should apply to distributed AMIs - public var amis: Swift.Bool - /// Specifies whether the lifecycle action should apply to distributed containers. - public var containers: Swift.Bool - /// Specifies whether the lifecycle action should apply to snapshots associated with distributed AMIs. - public var snapshots: Swift.Bool - - public init( - amis: Swift.Bool = false, - containers: Swift.Bool = false, - snapshots: Swift.Bool = false - ) - { - self.amis = amis - self.containers = containers - self.snapshots = snapshots +extension StartImagePipelineExecutionOutput: 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: StartImagePipelineExecutionOutputBody = try responseDecoder.decode(responseBody: data) + self.clientToken = output.clientToken + self.imageBuildVersionArn = output.imageBuildVersionArn + self.requestId = output.requestId + } else { + self.clientToken = nil + self.imageBuildVersionArn = nil + self.requestId = nil } } - } -extension ImagebuilderClientTypes { - public enum ResourceStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case available - case deleted - case deprecated - case disabled - case sdkUnknown(Swift.String) +public struct StartImagePipelineExecutionOutput: Swift.Equatable { + /// The client token that uniquely identifies the request. + public var clientToken: Swift.String? + /// The Amazon Resource Name (ARN) of the image that the request created. + public var imageBuildVersionArn: Swift.String? + /// The request ID that uniquely identifies this request. + public var requestId: Swift.String? - public static var allCases: [ResourceStatus] { - return [ - .available, - .deleted, - .deprecated, - .disabled, - .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 .available: return "AVAILABLE" - case .deleted: return "DELETED" - case .deprecated: return "DEPRECATED" - case .disabled: return "DISABLED" - 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 = ResourceStatus(rawValue: rawValue) ?? ResourceStatus.sdkUnknown(rawValue) - } + public init( + clientToken: Swift.String? = nil, + imageBuildVersionArn: Swift.String? = nil, + requestId: Swift.String? = nil + ) + { + self.clientToken = clientToken + self.imageBuildVersionArn = imageBuildVersionArn + self.requestId = requestId } } -extension ImagebuilderClientTypes.S3ExportConfiguration: Swift.Codable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case diskImageFormat - case roleName - case s3Bucket - case s3Prefix - } +struct StartImagePipelineExecutionOutputBody: Swift.Equatable { + let requestId: Swift.String? + let clientToken: Swift.String? + let imageBuildVersionArn: Swift.String? +} - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let diskImageFormat = self.diskImageFormat { - try encodeContainer.encode(diskImageFormat.rawValue, forKey: .diskImageFormat) - } - if let roleName = self.roleName { - try encodeContainer.encode(roleName, forKey: .roleName) - } - if let s3Bucket = self.s3Bucket { - try encodeContainer.encode(s3Bucket, forKey: .s3Bucket) - } - if let s3Prefix = self.s3Prefix { - try encodeContainer.encode(s3Prefix, forKey: .s3Prefix) - } +extension StartImagePipelineExecutionOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case imageBuildVersionArn + case requestId } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let roleNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .roleName) - roleName = roleNameDecoded - let diskImageFormatDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.DiskImageFormat.self, forKey: .diskImageFormat) - diskImageFormat = diskImageFormatDecoded - let s3BucketDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .s3Bucket) - s3Bucket = s3BucketDecoded - let s3PrefixDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .s3Prefix) - s3Prefix = s3PrefixDecoded + let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) + requestId = requestIdDecoded + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + let imageBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageBuildVersionArn) + imageBuildVersionArn = imageBuildVersionArnDecoded } } -extension ImagebuilderClientTypes { - /// Properties that configure export from your build instance to a compatible file format for your VM. - public struct S3ExportConfiguration: Swift.Equatable { - /// Export the updated image to one of the following supported disk image formats: - /// - /// * Virtual Hard Disk (VHD) – Compatible with Citrix Xen and Microsoft Hyper-V virtualization products. - /// - /// * Stream-optimized ESX Virtual Machine Disk (VMDK) – Compatible with VMware ESX and VMware vSphere versions 4, 5, and 6. - /// - /// * Raw – Raw format. - /// This member is required. - public var diskImageFormat: ImagebuilderClientTypes.DiskImageFormat? - /// The name of the role that grants VM Import/Export permission to export images to your S3 bucket. - /// This member is required. - public var roleName: Swift.String? - /// The S3 bucket in which to store the output disk images for your VM. - /// This member is required. - public var s3Bucket: Swift.String? - /// The Amazon S3 path for the bucket where the output disk images for your VM are stored. - public var s3Prefix: Swift.String? - - public init( - diskImageFormat: ImagebuilderClientTypes.DiskImageFormat? = nil, - roleName: Swift.String? = nil, - s3Bucket: Swift.String? = nil, - s3Prefix: Swift.String? = nil - ) - { - self.diskImageFormat = diskImageFormat - self.roleName = roleName - self.s3Bucket = s3Bucket - self.s3Prefix = s3Prefix +enum StartImagePipelineExecutionOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "IdempotentParameterMismatchException": return try await IdempotentParameterMismatchException(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 "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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(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 ImagebuilderClientTypes.S3Logs: Swift.Codable { +extension StartResourceStateUpdateInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case s3BucketName - case s3KeyPrefix + case clientToken + case exclusionRules + case executionRole + case includeResources + case resourceArn + case state + case updateAt } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let s3BucketName = self.s3BucketName { - try encodeContainer.encode(s3BucketName, forKey: .s3BucketName) + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) } - if let s3KeyPrefix = self.s3KeyPrefix { - try encodeContainer.encode(s3KeyPrefix, forKey: .s3KeyPrefix) + if let exclusionRules = self.exclusionRules { + try encodeContainer.encode(exclusionRules, forKey: .exclusionRules) + } + if let executionRole = self.executionRole { + try encodeContainer.encode(executionRole, forKey: .executionRole) + } + if let includeResources = self.includeResources { + try encodeContainer.encode(includeResources, forKey: .includeResources) + } + if let resourceArn = self.resourceArn { + try encodeContainer.encode(resourceArn, forKey: .resourceArn) + } + if let state = self.state { + try encodeContainer.encode(state, forKey: .state) + } + if let updateAt = self.updateAt { + try encodeContainer.encodeTimestamp(updateAt, format: .epochSeconds, forKey: .updateAt) } } +} - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let s3BucketNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .s3BucketName) - s3BucketName = s3BucketNameDecoded - let s3KeyPrefixDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .s3KeyPrefix) - s3KeyPrefix = s3KeyPrefixDecoded +extension StartResourceStateUpdateInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/StartResourceStateUpdate" } } -extension ImagebuilderClientTypes { - /// Amazon S3 logging configuration. - public struct S3Logs: Swift.Equatable { - /// The S3 bucket in which to store the logs. - public var s3BucketName: Swift.String? - /// The Amazon S3 path to the bucket where the logs are stored. - public var s3KeyPrefix: Swift.String? +public struct StartResourceStateUpdateInput: Swift.Equatable { + /// Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) in the Amazon EC2 API Reference. + /// This member is required. + public var clientToken: Swift.String? + /// Skip action on the image resource and associated resources if specified exclusion rules are met. + public var exclusionRules: ImagebuilderClientTypes.ResourceStateUpdateExclusionRules? + /// The name or Amazon Resource Name (ARN) of the IAM role that’s used to update image state. + public var executionRole: Swift.String? + /// A list of image resources to update state for. + public var includeResources: ImagebuilderClientTypes.ResourceStateUpdateIncludeResources? + /// The ARN of the Image Builder resource that is updated. The state update might also impact associated resources. + /// This member is required. + public var resourceArn: Swift.String? + /// Indicates the lifecycle action to take for this request. + /// This member is required. + public var state: ImagebuilderClientTypes.ResourceState? + /// The timestamp that indicates when resources are updated by a lifecycle action. + public var updateAt: ClientRuntime.Date? - public init( - s3BucketName: Swift.String? = nil, - s3KeyPrefix: Swift.String? = nil - ) - { - self.s3BucketName = s3BucketName - self.s3KeyPrefix = s3KeyPrefix - } + public init( + clientToken: Swift.String? = nil, + exclusionRules: ImagebuilderClientTypes.ResourceStateUpdateExclusionRules? = nil, + executionRole: Swift.String? = nil, + includeResources: ImagebuilderClientTypes.ResourceStateUpdateIncludeResources? = nil, + resourceArn: Swift.String? = nil, + state: ImagebuilderClientTypes.ResourceState? = nil, + updateAt: ClientRuntime.Date? = nil + ) + { + self.clientToken = clientToken + self.exclusionRules = exclusionRules + self.executionRole = executionRole + self.includeResources = includeResources + self.resourceArn = resourceArn + self.state = state + self.updateAt = updateAt } +} +struct StartResourceStateUpdateInputBody: Swift.Equatable { + let resourceArn: Swift.String? + let state: ImagebuilderClientTypes.ResourceState? + let executionRole: Swift.String? + let includeResources: ImagebuilderClientTypes.ResourceStateUpdateIncludeResources? + let exclusionRules: ImagebuilderClientTypes.ResourceStateUpdateExclusionRules? + let updateAt: ClientRuntime.Date? + let clientToken: Swift.String? } -extension ImagebuilderClientTypes.Schedule: Swift.Codable { +extension StartResourceStateUpdateInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case pipelineExecutionStartCondition - case scheduleExpression - case timezone - } - - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let pipelineExecutionStartCondition = self.pipelineExecutionStartCondition { - try encodeContainer.encode(pipelineExecutionStartCondition.rawValue, forKey: .pipelineExecutionStartCondition) - } - if let scheduleExpression = self.scheduleExpression { - try encodeContainer.encode(scheduleExpression, forKey: .scheduleExpression) - } - if let timezone = self.timezone { - try encodeContainer.encode(timezone, forKey: .timezone) - } + case clientToken + case exclusionRules + case executionRole + case includeResources + case resourceArn + case state + case updateAt } public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let scheduleExpressionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .scheduleExpression) - scheduleExpression = scheduleExpressionDecoded - let timezoneDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .timezone) - timezone = timezoneDecoded - let pipelineExecutionStartConditionDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.PipelineExecutionStartCondition.self, forKey: .pipelineExecutionStartCondition) - pipelineExecutionStartCondition = pipelineExecutionStartConditionDecoded - } -} - -extension ImagebuilderClientTypes { - /// A schedule configures how often and when a pipeline will automatically create a new image. - public struct Schedule: Swift.Equatable { - /// The condition configures when the pipeline should trigger a new image build. When the pipelineExecutionStartCondition is set to EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE, and you use semantic version filters on the base image or components in your image recipe, EC2 Image Builder will build a new image only when there are new versions of the image or components in your recipe that match the semantic version filter. When it is set to EXPRESSION_MATCH_ONLY, it will build a new image every time the CRON expression matches the current time. For semantic version syntax, see [CreateComponent](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateComponent.html) in the EC2 Image Builder API Reference. - public var pipelineExecutionStartCondition: ImagebuilderClientTypes.PipelineExecutionStartCondition? - /// The cron expression determines how often EC2 Image Builder evaluates your pipelineExecutionStartCondition. For information on how to format a cron expression in Image Builder, see [Use cron expressions in EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/image-builder-cron.html). - public var scheduleExpression: Swift.String? - /// The timezone that applies to the scheduling expression. For example, "Etc/UTC", "America/Los_Angeles" in the [IANA timezone format](https://www.joda.org/joda-time/timezones.html). If not specified this defaults to UTC. - public var timezone: Swift.String? - - public init( - pipelineExecutionStartCondition: ImagebuilderClientTypes.PipelineExecutionStartCondition? = nil, - scheduleExpression: Swift.String? = nil, - timezone: Swift.String? = nil - ) - { - self.pipelineExecutionStartCondition = pipelineExecutionStartCondition - self.scheduleExpression = scheduleExpression - self.timezone = timezone - } + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let resourceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceArn) + resourceArn = resourceArnDecoded + let stateDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ResourceState.self, forKey: .state) + state = stateDecoded + let executionRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .executionRole) + executionRole = executionRoleDecoded + let includeResourcesDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ResourceStateUpdateIncludeResources.self, forKey: .includeResources) + includeResources = includeResourcesDecoded + let exclusionRulesDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ResourceStateUpdateExclusionRules.self, forKey: .exclusionRules) + exclusionRules = exclusionRulesDecoded + let updateAtDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .updateAt) + updateAt = updateAtDecoded + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded } - } -extension ServiceException { - public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil, message: Swift.String? = nil, requestID: Swift.String? = nil) async throws { +extension StartResourceStateUpdateOutput: 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: ServiceExceptionBody = try responseDecoder.decode(responseBody: data) - self.properties.message = output.message + let output: StartResourceStateUpdateOutputBody = try responseDecoder.decode(responseBody: data) + self.lifecycleExecutionId = output.lifecycleExecutionId + self.resourceArn = output.resourceArn } else { - self.properties.message = nil + self.lifecycleExecutionId = nil + self.resourceArn = nil } - self.httpResponse = httpResponse - self.requestID = requestID - self.message = message } } -/// This exception is thrown when the service encounters an unrecoverable exception. -public struct ServiceException: 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 { "ServiceException" } - 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 struct StartResourceStateUpdateOutput: Swift.Equatable { + /// Identifies the lifecycle runtime instance that started the resource state update. + public var lifecycleExecutionId: Swift.String? + /// The requested ARN of the Image Builder resource for the asynchronous update. + public var resourceArn: Swift.String? public init( - message: Swift.String? = nil + lifecycleExecutionId: Swift.String? = nil, + resourceArn: Swift.String? = nil ) { - self.properties.message = message + self.lifecycleExecutionId = lifecycleExecutionId + self.resourceArn = resourceArn } } -struct ServiceExceptionBody: Swift.Equatable { - let message: Swift.String? +struct StartResourceStateUpdateOutputBody: Swift.Equatable { + let lifecycleExecutionId: Swift.String? + let resourceArn: Swift.String? } -extension ServiceExceptionBody: Swift.Decodable { +extension StartResourceStateUpdateOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case message + case lifecycleExecutionId + case resourceArn } 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 + let lifecycleExecutionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lifecycleExecutionId) + lifecycleExecutionId = lifecycleExecutionIdDecoded + let resourceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceArn) + resourceArn = resourceArnDecoded } } -extension ServiceQuotaExceededException { - 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: ServiceQuotaExceededExceptionBody = try responseDecoder.decode(responseBody: data) - self.properties.message = output.message - } else { - self.properties.message = nil +enum StartResourceStateUpdateOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "IdempotentParameterMismatchException": return try await IdempotentParameterMismatchException(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 "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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(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) } - self.httpResponse = httpResponse - self.requestID = requestID - self.message = message } } -/// You have exceeded the number of permitted resources or operations for this service. For service quotas, see [EC2 Image Builder endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/imagebuilder.html#limits_imagebuilder). -public struct ServiceQuotaExceededException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { - - public struct Properties { - public internal(set) var message: Swift.String? = nil +extension ImagebuilderClientTypes.SystemsManagerAgent: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case uninstallAfterBuild } - public internal(set) var properties = Properties() - public static var typeName: Swift.String { "ServiceQuotaExceededException" } - 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 func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let uninstallAfterBuild = self.uninstallAfterBuild { + try encodeContainer.encode(uninstallAfterBuild, forKey: .uninstallAfterBuild) + } + } - public init( - message: Swift.String? = nil - ) - { - self.properties.message = message + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let uninstallAfterBuildDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .uninstallAfterBuild) + uninstallAfterBuild = uninstallAfterBuildDecoded } } -struct ServiceQuotaExceededExceptionBody: Swift.Equatable { - let message: Swift.String? +extension ImagebuilderClientTypes { + /// Contains settings for the Systems Manager agent on your build instance. + public struct SystemsManagerAgent: Swift.Equatable { + /// Controls whether the Systems Manager agent is removed from your final build image, prior to creating the new AMI. If this is set to true, then the agent is removed from the final image. If it's set to false, then the agent is left in, so that it is included in the new AMI. The default value is false. + public var uninstallAfterBuild: Swift.Bool? + + public init( + uninstallAfterBuild: Swift.Bool? = nil + ) + { + self.uninstallAfterBuild = uninstallAfterBuild + } + } + } -extension ServiceQuotaExceededExceptionBody: Swift.Decodable { +extension TagResourceInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case message + case tags } - 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 + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } } } -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 +extension TagResourceInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let resourceArn = resourceArn else { + return nil } - self.httpResponse = httpResponse - self.requestID = requestID - self.message = message + return "/tags/\(resourceArn.urlPercentEncoding())" } } -/// The service is unable to process your request at this time. -public struct ServiceUnavailableException: 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 { "ServiceUnavailableException" } - 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 struct TagResourceInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the resource that you want to tag. + /// This member is required. + public var resourceArn: Swift.String? + /// The tags to apply to the resource. + /// This member is required. + public var tags: [Swift.String:Swift.String]? public init( - message: Swift.String? = nil + resourceArn: Swift.String? = nil, + tags: [Swift.String:Swift.String]? = nil ) { - self.properties.message = message + self.resourceArn = resourceArn + self.tags = tags } } -struct ServiceUnavailableExceptionBody: Swift.Equatable { - let message: Swift.String? +struct TagResourceInputBody: Swift.Equatable { + let tags: [Swift.String:Swift.String]? } -extension ServiceUnavailableExceptionBody: Swift.Decodable { +extension TagResourceInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case message + case tags } 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 + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 } } -extension ImagebuilderClientTypes.SeverityCounts: Swift.Codable { +extension TagResourceOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct TagResourceOutput: Swift.Equatable { + + public init() { } +} + +enum TagResourceOutputError: 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 "InvalidParameterException": return try await InvalidParameterException(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 "ServiceException": return try await ServiceException(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 ImagebuilderClientTypes.TargetContainerRepository: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case all - case critical - case high - case medium + case repositoryName + case service } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let all = self.all { - try encodeContainer.encode(all, forKey: .all) - } - if let critical = self.critical { - try encodeContainer.encode(critical, forKey: .critical) - } - if let high = self.high { - try encodeContainer.encode(high, forKey: .high) + if let repositoryName = self.repositoryName { + try encodeContainer.encode(repositoryName, forKey: .repositoryName) } - if let medium = self.medium { - try encodeContainer.encode(medium, forKey: .medium) + if let service = self.service { + try encodeContainer.encode(service.rawValue, forKey: .service) } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let allDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .all) - all = allDecoded - let criticalDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .critical) - critical = criticalDecoded - let highDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .high) - high = highDecoded - let mediumDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .medium) - medium = mediumDecoded + let serviceDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ContainerRepositoryService.self, forKey: .service) + service = serviceDecoded + let repositoryNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .repositoryName) + repositoryName = repositoryNameDecoded } } extension ImagebuilderClientTypes { - /// Includes counts by severity level for medium severity and higher level findings, plus a total for all of the findings for the specified filter. - public struct SeverityCounts: Swift.Equatable { - /// The total number of findings across all severity levels for the specified filter. - public var all: Swift.Int? - /// The number of critical severity findings for the specified filter. - public var critical: Swift.Int? - /// The number of high severity findings for the specified filter. - public var high: Swift.Int? - /// The number of medium severity findings for the specified filter. - public var medium: Swift.Int? + /// The container repository where the output container image is stored. + public struct TargetContainerRepository: Swift.Equatable { + /// The name of the container repository where the output container image is stored. This name is prefixed by the repository location. + /// This member is required. + public var repositoryName: Swift.String? + /// Specifies the service in which this image was registered. + /// This member is required. + public var service: ImagebuilderClientTypes.ContainerRepositoryService? public init( - all: Swift.Int? = nil, - critical: Swift.Int? = nil, - high: Swift.Int? = nil, - medium: Swift.Int? = nil + repositoryName: Swift.String? = nil, + service: ImagebuilderClientTypes.ContainerRepositoryService? = nil ) { - self.all = all - self.critical = critical - self.high = high - self.medium = medium + self.repositoryName = repositoryName + self.service = service } } } -extension StartImagePipelineExecutionInput: Swift.Encodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case clientToken - case imagePipelineArn - } - - 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 imagePipelineArn = self.imagePipelineArn { - try encodeContainer.encode(imagePipelineArn, forKey: .imagePipelineArn) +extension UntagResourceInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + guard let tagKeys = tagKeys else { + let message = "Creating a URL Query Item failed. tagKeys is required and must not be nil." + throw ClientRuntime.ClientError.unknownError(message) + } + tagKeys.forEach { queryItemValue in + let queryItem = ClientRuntime.URLQueryItem(name: "tagKeys".urlPercentEncoding(), value: Swift.String(queryItemValue).urlPercentEncoding()) + items.append(queryItem) + } + return items } } } -extension StartImagePipelineExecutionInput: ClientRuntime.URLPathProvider { +extension UntagResourceInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - return "/StartImagePipelineExecution" + guard let resourceArn = resourceArn else { + return nil + } + return "/tags/\(resourceArn.urlPercentEncoding())" } } -public struct StartImagePipelineExecutionInput: Swift.Equatable { - /// Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) in the Amazon EC2 API Reference. +public struct UntagResourceInput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the resource that you want to untag. /// This member is required. - public var clientToken: Swift.String? - /// The Amazon Resource Name (ARN) of the image pipeline that you want to manually invoke. + public var resourceArn: Swift.String? + /// The tag keys to remove from the resource. /// This member is required. - public var imagePipelineArn: Swift.String? + public var tagKeys: [Swift.String]? public init( - clientToken: Swift.String? = nil, - imagePipelineArn: Swift.String? = nil + resourceArn: Swift.String? = nil, + tagKeys: [Swift.String]? = nil ) { - self.clientToken = clientToken - self.imagePipelineArn = imagePipelineArn + self.resourceArn = resourceArn + self.tagKeys = tagKeys } } -struct StartImagePipelineExecutionInputBody: Swift.Equatable { - let imagePipelineArn: Swift.String? - let clientToken: Swift.String? +struct UntagResourceInputBody: Swift.Equatable { } -extension StartImagePipelineExecutionInputBody: Swift.Decodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case clientToken - case imagePipelineArn - } +extension UntagResourceInputBody: Swift.Decodable { public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let imagePipelineArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imagePipelineArn) - imagePipelineArn = imagePipelineArnDecoded - let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) - clientToken = clientTokenDecoded } } -extension StartImagePipelineExecutionOutput: ClientRuntime.HttpResponseBinding { +extension UntagResourceOutput: 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: StartImagePipelineExecutionOutputBody = try responseDecoder.decode(responseBody: data) - self.clientToken = output.clientToken - self.imageBuildVersionArn = output.imageBuildVersionArn - self.requestId = output.requestId - } else { - self.clientToken = nil - self.imageBuildVersionArn = nil - self.requestId = nil - } - } -} - -public struct StartImagePipelineExecutionOutput: Swift.Equatable { - /// The client token that uniquely identifies the request. - public var clientToken: Swift.String? - /// The Amazon Resource Name (ARN) of the image that the request created. - public var imageBuildVersionArn: Swift.String? - /// The request ID that uniquely identifies this request. - public var requestId: Swift.String? - - public init( - clientToken: Swift.String? = nil, - imageBuildVersionArn: Swift.String? = nil, - requestId: Swift.String? = nil - ) - { - self.clientToken = clientToken - self.imageBuildVersionArn = imageBuildVersionArn - self.requestId = requestId } } -struct StartImagePipelineExecutionOutputBody: Swift.Equatable { - let requestId: Swift.String? - let clientToken: Swift.String? - let imageBuildVersionArn: Swift.String? -} - -extension StartImagePipelineExecutionOutputBody: Swift.Decodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case clientToken - case imageBuildVersionArn - case requestId - } +public struct UntagResourceOutput: Swift.Equatable { - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) - requestId = requestIdDecoded - let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) - clientToken = clientTokenDecoded - let imageBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageBuildVersionArn) - imageBuildVersionArn = imageBuildVersionArnDecoded - } + public init() { } } -enum StartImagePipelineExecutionOutputError: ClientRuntime.HttpResponseErrorBinding { +enum UntagResourceOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "IdempotentParameterMismatchException": return try await IdempotentParameterMismatchException(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 "ResourceInUseException": return try await ResourceInUseException(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 "ResourceNotFoundException": return try await ResourceNotFoundException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ServiceUnavailableException": return try await ServiceUnavailableException(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 StartResourceStateUpdateInput: Swift.Encodable { +extension UpdateDistributionConfigurationInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken - case exclusionRules - case executionRole - case includeResources - case resourceArn - case state - case updateAt + case description + case distributionConfigurationArn + case distributions } public func encode(to encoder: Swift.Encoder) throws { @@ -18566,163 +20267,152 @@ extension StartResourceStateUpdateInput: Swift.Encodable { if let clientToken = self.clientToken { try encodeContainer.encode(clientToken, forKey: .clientToken) } - if let exclusionRules = self.exclusionRules { - try encodeContainer.encode(exclusionRules, forKey: .exclusionRules) - } - if let executionRole = self.executionRole { - try encodeContainer.encode(executionRole, forKey: .executionRole) - } - if let includeResources = self.includeResources { - try encodeContainer.encode(includeResources, forKey: .includeResources) - } - if let resourceArn = self.resourceArn { - try encodeContainer.encode(resourceArn, forKey: .resourceArn) + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) } - if let state = self.state { - try encodeContainer.encode(state, forKey: .state) + if let distributionConfigurationArn = self.distributionConfigurationArn { + try encodeContainer.encode(distributionConfigurationArn, forKey: .distributionConfigurationArn) } - if let updateAt = self.updateAt { - try encodeContainer.encodeTimestamp(updateAt, format: .epochSeconds, forKey: .updateAt) + if let distributions = distributions { + var distributionsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .distributions) + for distribution0 in distributions { + try distributionsContainer.encode(distribution0) + } } } } -extension StartResourceStateUpdateInput: ClientRuntime.URLPathProvider { +extension UpdateDistributionConfigurationInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - return "/StartResourceStateUpdate" + return "/UpdateDistributionConfiguration" } } -public struct StartResourceStateUpdateInput: Swift.Equatable { +public struct UpdateDistributionConfigurationInput: Swift.Equatable { /// Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) in the Amazon EC2 API Reference. /// This member is required. public var clientToken: Swift.String? - /// Skip action on the image resource and associated resources if specified exclusion rules are met. - public var exclusionRules: ImagebuilderClientTypes.ResourceStateUpdateExclusionRules? - /// The name or Amazon Resource Name (ARN) of the IAM role that’s used to update image state. - public var executionRole: Swift.String? - /// A list of image resources to update state for. - public var includeResources: ImagebuilderClientTypes.ResourceStateUpdateIncludeResources? - /// The ARN of the Image Builder resource that is updated. The state update might also impact associated resources. + /// The description of the distribution configuration. + public var description: Swift.String? + /// The Amazon Resource Name (ARN) of the distribution configuration that you want to update. /// This member is required. - public var resourceArn: Swift.String? - /// Indicates the lifecycle action to take for this request. + public var distributionConfigurationArn: Swift.String? + /// The distributions of the distribution configuration. /// This member is required. - public var state: ImagebuilderClientTypes.ResourceState? - /// The timestamp that indicates when resources are updated by a lifecycle action. - public var updateAt: ClientRuntime.Date? + public var distributions: [ImagebuilderClientTypes.Distribution]? public init( clientToken: Swift.String? = nil, - exclusionRules: ImagebuilderClientTypes.ResourceStateUpdateExclusionRules? = nil, - executionRole: Swift.String? = nil, - includeResources: ImagebuilderClientTypes.ResourceStateUpdateIncludeResources? = nil, - resourceArn: Swift.String? = nil, - state: ImagebuilderClientTypes.ResourceState? = nil, - updateAt: ClientRuntime.Date? = nil + description: Swift.String? = nil, + distributionConfigurationArn: Swift.String? = nil, + distributions: [ImagebuilderClientTypes.Distribution]? = nil ) { self.clientToken = clientToken - self.exclusionRules = exclusionRules - self.executionRole = executionRole - self.includeResources = includeResources - self.resourceArn = resourceArn - self.state = state - self.updateAt = updateAt + self.description = description + self.distributionConfigurationArn = distributionConfigurationArn + self.distributions = distributions } } -struct StartResourceStateUpdateInputBody: Swift.Equatable { - let resourceArn: Swift.String? - let state: ImagebuilderClientTypes.ResourceState? - let executionRole: Swift.String? - let includeResources: ImagebuilderClientTypes.ResourceStateUpdateIncludeResources? - let exclusionRules: ImagebuilderClientTypes.ResourceStateUpdateExclusionRules? - let updateAt: ClientRuntime.Date? +struct UpdateDistributionConfigurationInputBody: Swift.Equatable { + let distributionConfigurationArn: Swift.String? + let description: Swift.String? + let distributions: [ImagebuilderClientTypes.Distribution]? let clientToken: Swift.String? } -extension StartResourceStateUpdateInputBody: Swift.Decodable { +extension UpdateDistributionConfigurationInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken - case exclusionRules - case executionRole - case includeResources - case resourceArn - case state - case updateAt + case description + case distributionConfigurationArn + case distributions } 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 stateDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ResourceState.self, forKey: .state) - state = stateDecoded - let executionRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .executionRole) - executionRole = executionRoleDecoded - let includeResourcesDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ResourceStateUpdateIncludeResources.self, forKey: .includeResources) - includeResources = includeResourcesDecoded - let exclusionRulesDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ResourceStateUpdateExclusionRules.self, forKey: .exclusionRules) - exclusionRules = exclusionRulesDecoded - let updateAtDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .updateAt) - updateAt = updateAtDecoded + let distributionConfigurationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .distributionConfigurationArn) + distributionConfigurationArn = distributionConfigurationArnDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let distributionsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.Distribution?].self, forKey: .distributions) + var distributionsDecoded0:[ImagebuilderClientTypes.Distribution]? = nil + if let distributionsContainer = distributionsContainer { + distributionsDecoded0 = [ImagebuilderClientTypes.Distribution]() + for structure0 in distributionsContainer { + if let structure0 = structure0 { + distributionsDecoded0?.append(structure0) + } + } + } + distributions = distributionsDecoded0 let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) clientToken = clientTokenDecoded } } -extension StartResourceStateUpdateOutput: ClientRuntime.HttpResponseBinding { +extension UpdateDistributionConfigurationOutput: 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: StartResourceStateUpdateOutputBody = try responseDecoder.decode(responseBody: data) - self.lifecycleExecutionId = output.lifecycleExecutionId - self.resourceArn = output.resourceArn + let output: UpdateDistributionConfigurationOutputBody = try responseDecoder.decode(responseBody: data) + self.clientToken = output.clientToken + self.distributionConfigurationArn = output.distributionConfigurationArn + self.requestId = output.requestId } else { - self.lifecycleExecutionId = nil - self.resourceArn = nil + self.clientToken = nil + self.distributionConfigurationArn = nil + self.requestId = nil } } } -public struct StartResourceStateUpdateOutput: Swift.Equatable { - /// Identifies the lifecycle runtime instance that started the resource state update. - public var lifecycleExecutionId: Swift.String? - /// The requested ARN of the Image Builder resource for the asynchronous update. - public var resourceArn: Swift.String? +public struct UpdateDistributionConfigurationOutput: Swift.Equatable { + /// The client token that uniquely identifies the request. + public var clientToken: Swift.String? + /// The Amazon Resource Name (ARN) of the distribution configuration that was updated by this request. + public var distributionConfigurationArn: Swift.String? + /// The request ID that uniquely identifies this request. + public var requestId: Swift.String? public init( - lifecycleExecutionId: Swift.String? = nil, - resourceArn: Swift.String? = nil + clientToken: Swift.String? = nil, + distributionConfigurationArn: Swift.String? = nil, + requestId: Swift.String? = nil ) { - self.lifecycleExecutionId = lifecycleExecutionId - self.resourceArn = resourceArn + self.clientToken = clientToken + self.distributionConfigurationArn = distributionConfigurationArn + self.requestId = requestId } } -struct StartResourceStateUpdateOutputBody: Swift.Equatable { - let lifecycleExecutionId: Swift.String? - let resourceArn: Swift.String? +struct UpdateDistributionConfigurationOutputBody: Swift.Equatable { + let requestId: Swift.String? + let clientToken: Swift.String? + let distributionConfigurationArn: Swift.String? } -extension StartResourceStateUpdateOutputBody: Swift.Decodable { +extension UpdateDistributionConfigurationOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case lifecycleExecutionId - case resourceArn + case clientToken + case distributionConfigurationArn + case requestId } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let lifecycleExecutionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lifecycleExecutionId) - lifecycleExecutionId = lifecycleExecutionIdDecoded - let resourceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceArn) - resourceArn = resourceArnDecoded + let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) + requestId = requestIdDecoded + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + let distributionConfigurationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .distributionConfigurationArn) + distributionConfigurationArn = distributionConfigurationArnDecoded } } -enum StartResourceStateUpdateOutputError: ClientRuntime.HttpResponseErrorBinding { +enum UpdateDistributionConfigurationOutputError: 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 @@ -18731,9 +20421,9 @@ enum StartResourceStateUpdateOutputError: ClientRuntime.HttpResponseErrorBinding case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "IdempotentParameterMismatchException": return try await IdempotentParameterMismatchException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidParameterCombinationException": return try await InvalidParameterCombinationException(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 "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 "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ServiceUnavailableException": return try await ServiceUnavailableException(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) @@ -18741,261 +20431,317 @@ enum StartResourceStateUpdateOutputError: ClientRuntime.HttpResponseErrorBinding } } -extension ImagebuilderClientTypes.SystemsManagerAgent: Swift.Codable { +extension UpdateImagePipelineInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case uninstallAfterBuild + case clientToken + case containerRecipeArn + case description + case distributionConfigurationArn + case enhancedImageMetadataEnabled + case executionRole + case imagePipelineArn + case imageRecipeArn + case imageScanningConfiguration + case imageTestsConfiguration + case infrastructureConfigurationArn + case schedule + case status + case workflows } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let uninstallAfterBuild = self.uninstallAfterBuild { - try encodeContainer.encode(uninstallAfterBuild, forKey: .uninstallAfterBuild) + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) } - } - - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let uninstallAfterBuildDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .uninstallAfterBuild) - uninstallAfterBuild = uninstallAfterBuildDecoded - } -} - -extension ImagebuilderClientTypes { - /// Contains settings for the Systems Manager agent on your build instance. - public struct SystemsManagerAgent: Swift.Equatable { - /// Controls whether the Systems Manager agent is removed from your final build image, prior to creating the new AMI. If this is set to true, then the agent is removed from the final image. If it's set to false, then the agent is left in, so that it is included in the new AMI. The default value is false. - public var uninstallAfterBuild: Swift.Bool? - - public init( - uninstallAfterBuild: Swift.Bool? = nil - ) - { - self.uninstallAfterBuild = uninstallAfterBuild + if let containerRecipeArn = self.containerRecipeArn { + try encodeContainer.encode(containerRecipeArn, forKey: .containerRecipeArn) } - } - -} - -extension TagResourceInput: Swift.Encodable { - 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 = tags { - var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) - for (dictKey0, tagMap0) in tags { - try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) - } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) } - } -} - -extension TagResourceInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - guard let resourceArn = resourceArn else { - return nil + if let distributionConfigurationArn = self.distributionConfigurationArn { + try encodeContainer.encode(distributionConfigurationArn, forKey: .distributionConfigurationArn) } - return "/tags/\(resourceArn.urlPercentEncoding())" - } -} - -public struct TagResourceInput: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the resource that you want to tag. - /// This member is required. - public var resourceArn: Swift.String? - /// The tags to apply to the resource. - /// This member is required. - public var tags: [Swift.String:Swift.String]? - - public init( - resourceArn: Swift.String? = nil, - tags: [Swift.String:Swift.String]? = nil - ) - { - self.resourceArn = resourceArn - self.tags = tags - } -} - -struct TagResourceInputBody: Swift.Equatable { - let tags: [Swift.String:Swift.String]? -} - -extension TagResourceInputBody: Swift.Decodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case tags - } - - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) - var tagsDecoded0: [Swift.String:Swift.String]? = nil - if let tagsContainer = tagsContainer { - tagsDecoded0 = [Swift.String:Swift.String]() - for (key0, tagvalue0) in tagsContainer { - if let tagvalue0 = tagvalue0 { - tagsDecoded0?[key0] = tagvalue0 - } + if let enhancedImageMetadataEnabled = self.enhancedImageMetadataEnabled { + try encodeContainer.encode(enhancedImageMetadataEnabled, forKey: .enhancedImageMetadataEnabled) + } + if let executionRole = self.executionRole { + try encodeContainer.encode(executionRole, forKey: .executionRole) + } + if let imagePipelineArn = self.imagePipelineArn { + try encodeContainer.encode(imagePipelineArn, forKey: .imagePipelineArn) + } + if let imageRecipeArn = self.imageRecipeArn { + try encodeContainer.encode(imageRecipeArn, forKey: .imageRecipeArn) + } + if let imageScanningConfiguration = self.imageScanningConfiguration { + try encodeContainer.encode(imageScanningConfiguration, forKey: .imageScanningConfiguration) + } + if let imageTestsConfiguration = self.imageTestsConfiguration { + try encodeContainer.encode(imageTestsConfiguration, forKey: .imageTestsConfiguration) + } + if let infrastructureConfigurationArn = self.infrastructureConfigurationArn { + try encodeContainer.encode(infrastructureConfigurationArn, forKey: .infrastructureConfigurationArn) + } + if let schedule = self.schedule { + try encodeContainer.encode(schedule, forKey: .schedule) + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + if let workflows = workflows { + var workflowsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .workflows) + for workflowconfiguration0 in workflows { + try workflowsContainer.encode(workflowconfiguration0) } } - tags = tagsDecoded0 } } -extension TagResourceOutput: ClientRuntime.HttpResponseBinding { - public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { +extension UpdateImagePipelineInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/UpdateImagePipeline" } } -public struct TagResourceOutput: Swift.Equatable { +public struct UpdateImagePipelineInput: Swift.Equatable { + /// Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) in the Amazon EC2 API Reference. + /// This member is required. + public var clientToken: Swift.String? + /// The Amazon Resource Name (ARN) of the container pipeline to update. + public var containerRecipeArn: Swift.String? + /// The description of the image pipeline. + public var description: Swift.String? + /// The Amazon Resource Name (ARN) of the distribution configuration that Image Builder uses to configure and distribute images that this image pipeline has updated. + public var distributionConfigurationArn: Swift.String? + /// Collects additional information about the image being created, including the operating system (OS) version and package list. This information is used to enhance the overall experience of using EC2 Image Builder. Enabled by default. + public var enhancedImageMetadataEnabled: Swift.Bool? + /// The name or Amazon Resource Name (ARN) for the IAM role you create that grants Image Builder access to perform workflow actions. + public var executionRole: Swift.String? + /// The Amazon Resource Name (ARN) of the image pipeline that you want to update. + /// This member is required. + public var imagePipelineArn: Swift.String? + /// The Amazon Resource Name (ARN) of the image recipe that will be used to configure images updated by this image pipeline. + public var imageRecipeArn: Swift.String? + /// Contains settings for vulnerability scans. + public var imageScanningConfiguration: ImagebuilderClientTypes.ImageScanningConfiguration? + /// The image test configuration of the image pipeline. + public var imageTestsConfiguration: ImagebuilderClientTypes.ImageTestsConfiguration? + /// The Amazon Resource Name (ARN) of the infrastructure configuration that Image Builder uses to build images that this image pipeline has updated. + /// This member is required. + public var infrastructureConfigurationArn: Swift.String? + /// The schedule of the image pipeline. + public var schedule: ImagebuilderClientTypes.Schedule? + /// The status of the image pipeline. + public var status: ImagebuilderClientTypes.PipelineStatus? + /// Contains the workflows to run for the pipeline. + public var workflows: [ImagebuilderClientTypes.WorkflowConfiguration]? - public init() { } + public init( + clientToken: Swift.String? = nil, + containerRecipeArn: Swift.String? = nil, + description: Swift.String? = nil, + distributionConfigurationArn: Swift.String? = nil, + enhancedImageMetadataEnabled: Swift.Bool? = nil, + executionRole: Swift.String? = nil, + imagePipelineArn: Swift.String? = nil, + imageRecipeArn: Swift.String? = nil, + imageScanningConfiguration: ImagebuilderClientTypes.ImageScanningConfiguration? = nil, + imageTestsConfiguration: ImagebuilderClientTypes.ImageTestsConfiguration? = nil, + infrastructureConfigurationArn: Swift.String? = nil, + schedule: ImagebuilderClientTypes.Schedule? = nil, + status: ImagebuilderClientTypes.PipelineStatus? = nil, + workflows: [ImagebuilderClientTypes.WorkflowConfiguration]? = nil + ) + { + self.clientToken = clientToken + self.containerRecipeArn = containerRecipeArn + self.description = description + self.distributionConfigurationArn = distributionConfigurationArn + self.enhancedImageMetadataEnabled = enhancedImageMetadataEnabled + self.executionRole = executionRole + self.imagePipelineArn = imagePipelineArn + self.imageRecipeArn = imageRecipeArn + self.imageScanningConfiguration = imageScanningConfiguration + self.imageTestsConfiguration = imageTestsConfiguration + self.infrastructureConfigurationArn = infrastructureConfigurationArn + self.schedule = schedule + self.status = status + self.workflows = workflows + } } -enum TagResourceOutputError: 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 "InvalidParameterException": return try await InvalidParameterException(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 "ServiceException": return try await ServiceException(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) - } - } +struct UpdateImagePipelineInputBody: Swift.Equatable { + let imagePipelineArn: Swift.String? + let description: Swift.String? + let imageRecipeArn: Swift.String? + let containerRecipeArn: Swift.String? + let infrastructureConfigurationArn: Swift.String? + let distributionConfigurationArn: Swift.String? + let imageTestsConfiguration: ImagebuilderClientTypes.ImageTestsConfiguration? + let enhancedImageMetadataEnabled: Swift.Bool? + let schedule: ImagebuilderClientTypes.Schedule? + let status: ImagebuilderClientTypes.PipelineStatus? + let clientToken: Swift.String? + let imageScanningConfiguration: ImagebuilderClientTypes.ImageScanningConfiguration? + let workflows: [ImagebuilderClientTypes.WorkflowConfiguration]? + let executionRole: Swift.String? } -extension ImagebuilderClientTypes.TargetContainerRepository: Swift.Codable { +extension UpdateImagePipelineInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case repositoryName - case service - } - - public func encode(to encoder: Swift.Encoder) throws { - var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let repositoryName = self.repositoryName { - try encodeContainer.encode(repositoryName, forKey: .repositoryName) - } - if let service = self.service { - try encodeContainer.encode(service.rawValue, forKey: .service) - } + case clientToken + case containerRecipeArn + case description + case distributionConfigurationArn + case enhancedImageMetadataEnabled + case executionRole + case imagePipelineArn + case imageRecipeArn + case imageScanningConfiguration + case imageTestsConfiguration + case infrastructureConfigurationArn + case schedule + case status + case workflows } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let serviceDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ContainerRepositoryService.self, forKey: .service) - service = serviceDecoded - let repositoryNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .repositoryName) - repositoryName = repositoryNameDecoded - } -} - -extension ImagebuilderClientTypes { - /// The container repository where the output container image is stored. - public struct TargetContainerRepository: Swift.Equatable { - /// The name of the container repository where the output container image is stored. This name is prefixed by the repository location. - /// This member is required. - public var repositoryName: Swift.String? - /// Specifies the service in which this image was registered. - /// This member is required. - public var service: ImagebuilderClientTypes.ContainerRepositoryService? - - public init( - repositoryName: Swift.String? = nil, - service: ImagebuilderClientTypes.ContainerRepositoryService? = nil - ) - { - self.repositoryName = repositoryName - self.service = service - } - } - -} - -extension UntagResourceInput: ClientRuntime.QueryItemProvider { - public var queryItems: [ClientRuntime.URLQueryItem] { - get throws { - var items = [ClientRuntime.URLQueryItem]() - guard let tagKeys = tagKeys else { - let message = "Creating a URL Query Item failed. tagKeys is required and must not be nil." - throw ClientRuntime.ClientError.unknownError(message) - } - tagKeys.forEach { queryItemValue in - let queryItem = ClientRuntime.URLQueryItem(name: "tagKeys".urlPercentEncoding(), value: Swift.String(queryItemValue).urlPercentEncoding()) - items.append(queryItem) + let imagePipelineArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imagePipelineArn) + imagePipelineArn = imagePipelineArnDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let imageRecipeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageRecipeArn) + imageRecipeArn = imageRecipeArnDecoded + let containerRecipeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .containerRecipeArn) + containerRecipeArn = containerRecipeArnDecoded + let infrastructureConfigurationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .infrastructureConfigurationArn) + infrastructureConfigurationArn = infrastructureConfigurationArnDecoded + let distributionConfigurationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .distributionConfigurationArn) + distributionConfigurationArn = distributionConfigurationArnDecoded + let imageTestsConfigurationDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ImageTestsConfiguration.self, forKey: .imageTestsConfiguration) + imageTestsConfiguration = imageTestsConfigurationDecoded + let enhancedImageMetadataEnabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .enhancedImageMetadataEnabled) + enhancedImageMetadataEnabled = enhancedImageMetadataEnabledDecoded + let scheduleDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.Schedule.self, forKey: .schedule) + schedule = scheduleDecoded + let statusDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.PipelineStatus.self, forKey: .status) + status = statusDecoded + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + let imageScanningConfigurationDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ImageScanningConfiguration.self, forKey: .imageScanningConfiguration) + imageScanningConfiguration = imageScanningConfigurationDecoded + let workflowsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowConfiguration?].self, forKey: .workflows) + var workflowsDecoded0:[ImagebuilderClientTypes.WorkflowConfiguration]? = nil + if let workflowsContainer = workflowsContainer { + workflowsDecoded0 = [ImagebuilderClientTypes.WorkflowConfiguration]() + for structure0 in workflowsContainer { + if let structure0 = structure0 { + workflowsDecoded0?.append(structure0) + } } - return items } + workflows = workflowsDecoded0 + let executionRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .executionRole) + executionRole = executionRoleDecoded } } -extension UntagResourceInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - guard let resourceArn = resourceArn else { - return nil +extension UpdateImagePipelineOutput: 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: UpdateImagePipelineOutputBody = try responseDecoder.decode(responseBody: data) + self.clientToken = output.clientToken + self.imagePipelineArn = output.imagePipelineArn + self.requestId = output.requestId + } else { + self.clientToken = nil + self.imagePipelineArn = nil + self.requestId = nil } - return "/tags/\(resourceArn.urlPercentEncoding())" } } -public struct UntagResourceInput: Swift.Equatable { - /// The Amazon Resource Name (ARN) of the resource that you want to untag. - /// This member is required. - public var resourceArn: Swift.String? - /// The tag keys to remove from the resource. - /// This member is required. - public var tagKeys: [Swift.String]? +public struct UpdateImagePipelineOutput: Swift.Equatable { + /// The client token that uniquely identifies the request. + public var clientToken: Swift.String? + /// The Amazon Resource Name (ARN) of the image pipeline that was updated by this request. + public var imagePipelineArn: Swift.String? + /// The request ID that uniquely identifies this request. + public var requestId: Swift.String? public init( - resourceArn: Swift.String? = nil, - tagKeys: [Swift.String]? = nil + clientToken: Swift.String? = nil, + imagePipelineArn: Swift.String? = nil, + requestId: Swift.String? = nil ) { - self.resourceArn = resourceArn - self.tagKeys = tagKeys - } -} - -struct UntagResourceInputBody: Swift.Equatable { -} - -extension UntagResourceInputBody: Swift.Decodable { - - public init(from decoder: Swift.Decoder) throws { + self.clientToken = clientToken + self.imagePipelineArn = imagePipelineArn + self.requestId = requestId } } -extension UntagResourceOutput: ClientRuntime.HttpResponseBinding { - public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { - } +struct UpdateImagePipelineOutputBody: Swift.Equatable { + let requestId: Swift.String? + let clientToken: Swift.String? + let imagePipelineArn: Swift.String? } -public struct UntagResourceOutput: Swift.Equatable { +extension UpdateImagePipelineOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientToken + case imagePipelineArn + case requestId + } - public init() { } + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) + requestId = requestIdDecoded + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + let imagePipelineArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imagePipelineArn) + imagePipelineArn = imagePipelineArnDecoded + } } -enum UntagResourceOutputError: ClientRuntime.HttpResponseErrorBinding { +enum UpdateImagePipelineOutputError: 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 "InvalidParameterException": return try await InvalidParameterException(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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "IdempotentParameterMismatchException": return try await IdempotentParameterMismatchException(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 "ResourceInUseException": return try await ResourceInUseException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "ServiceUnavailableException": return try await ServiceUnavailableException(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 UpdateDistributionConfigurationInput: Swift.Encodable { +extension UpdateInfrastructureConfigurationInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken case description - case distributionConfigurationArn - case distributions + case infrastructureConfigurationArn + case instanceMetadataOptions + case instanceProfileName + case instanceTypes + case keyPair + case logging + case resourceTags + case securityGroupIds + case snsTopicArn + case subnetId + case terminateInstanceOnFailure } public func encode(to encoder: Swift.Encoder) throws { @@ -19006,134 +20752,261 @@ extension UpdateDistributionConfigurationInput: Swift.Encodable { if let description = self.description { try encodeContainer.encode(description, forKey: .description) } - if let distributionConfigurationArn = self.distributionConfigurationArn { - try encodeContainer.encode(distributionConfigurationArn, forKey: .distributionConfigurationArn) + if let infrastructureConfigurationArn = self.infrastructureConfigurationArn { + try encodeContainer.encode(infrastructureConfigurationArn, forKey: .infrastructureConfigurationArn) } - if let distributions = distributions { - var distributionsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .distributions) - for distribution0 in distributions { - try distributionsContainer.encode(distribution0) + if let instanceMetadataOptions = self.instanceMetadataOptions { + try encodeContainer.encode(instanceMetadataOptions, forKey: .instanceMetadataOptions) + } + if let instanceProfileName = self.instanceProfileName { + try encodeContainer.encode(instanceProfileName, forKey: .instanceProfileName) + } + if let instanceTypes = instanceTypes { + var instanceTypesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .instanceTypes) + for instancetype0 in instanceTypes { + try instanceTypesContainer.encode(instancetype0) + } + } + if let keyPair = self.keyPair { + try encodeContainer.encode(keyPair, forKey: .keyPair) + } + if let logging = self.logging { + try encodeContainer.encode(logging, forKey: .logging) + } + if let resourceTags = resourceTags { + var resourceTagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .resourceTags) + for (dictKey0, resourceTagMap0) in resourceTags { + try resourceTagsContainer.encode(resourceTagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let securityGroupIds = securityGroupIds { + var securityGroupIdsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .securityGroupIds) + for nonemptystring0 in securityGroupIds { + try securityGroupIdsContainer.encode(nonemptystring0) } } + if let snsTopicArn = self.snsTopicArn { + try encodeContainer.encode(snsTopicArn, forKey: .snsTopicArn) + } + if let subnetId = self.subnetId { + try encodeContainer.encode(subnetId, forKey: .subnetId) + } + if let terminateInstanceOnFailure = self.terminateInstanceOnFailure { + try encodeContainer.encode(terminateInstanceOnFailure, forKey: .terminateInstanceOnFailure) + } } } -extension UpdateDistributionConfigurationInput: ClientRuntime.URLPathProvider { +extension UpdateInfrastructureConfigurationInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - return "/UpdateDistributionConfiguration" + return "/UpdateInfrastructureConfiguration" } } -public struct UpdateDistributionConfigurationInput: Swift.Equatable { +public struct UpdateInfrastructureConfigurationInput: Swift.Equatable { /// Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) in the Amazon EC2 API Reference. /// This member is required. public var clientToken: Swift.String? - /// The description of the distribution configuration. + /// The description of the infrastructure configuration. public var description: Swift.String? - /// The Amazon Resource Name (ARN) of the distribution configuration that you want to update. + /// The Amazon Resource Name (ARN) of the infrastructure configuration that you want to update. /// This member is required. - public var distributionConfigurationArn: Swift.String? - /// The distributions of the distribution configuration. + public var infrastructureConfigurationArn: Swift.String? + /// The instance metadata options that you can set for the HTTP requests that pipeline builds use to launch EC2 build and test instances. For more information about instance metadata options, see one of the following links: + /// + /// * [Configure the instance metadata options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html) in the Amazon EC2 User Guide for Linux instances. + /// + /// * [Configure the instance metadata options](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/configuring-instance-metadata-options.html) in the Amazon EC2 Windows Guide for Windows instances. + public var instanceMetadataOptions: ImagebuilderClientTypes.InstanceMetadataOptions? + /// The instance profile to associate with the instance used to customize your Amazon EC2 AMI. /// This member is required. - public var distributions: [ImagebuilderClientTypes.Distribution]? + public var instanceProfileName: Swift.String? + /// The instance types of the infrastructure configuration. You can specify one or more instance types to use for this build. The service will pick one of these instance types based on availability. + public var instanceTypes: [Swift.String]? + /// The key pair of the infrastructure configuration. You can use this to log on to and debug the instance used to create your image. + public var keyPair: Swift.String? + /// The logging configuration of the infrastructure configuration. + public var logging: ImagebuilderClientTypes.Logging? + /// The tags attached to the resource created by Image Builder. + public var resourceTags: [Swift.String:Swift.String]? + /// The security group IDs to associate with the instance used to customize your Amazon EC2 AMI. + public var securityGroupIds: [Swift.String]? + /// The Amazon Resource Name (ARN) for the SNS topic to which we send image build event notifications. EC2 Image Builder is unable to send notifications to SNS topics that are encrypted using keys from other accounts. The key that is used to encrypt the SNS topic must reside in the account that the Image Builder service runs under. + public var snsTopicArn: Swift.String? + /// The subnet ID to place the instance used to customize your Amazon EC2 AMI in. + public var subnetId: Swift.String? + /// The terminate instance on failure setting of the infrastructure configuration. Set to false if you want Image Builder to retain the instance used to configure your AMI if the build or test phase of your workflow fails. + public var terminateInstanceOnFailure: Swift.Bool? public init( clientToken: Swift.String? = nil, description: Swift.String? = nil, - distributionConfigurationArn: Swift.String? = nil, - distributions: [ImagebuilderClientTypes.Distribution]? = nil + infrastructureConfigurationArn: Swift.String? = nil, + instanceMetadataOptions: ImagebuilderClientTypes.InstanceMetadataOptions? = nil, + instanceProfileName: Swift.String? = nil, + instanceTypes: [Swift.String]? = nil, + keyPair: Swift.String? = nil, + logging: ImagebuilderClientTypes.Logging? = nil, + resourceTags: [Swift.String:Swift.String]? = nil, + securityGroupIds: [Swift.String]? = nil, + snsTopicArn: Swift.String? = nil, + subnetId: Swift.String? = nil, + terminateInstanceOnFailure: Swift.Bool? = nil ) { self.clientToken = clientToken self.description = description - self.distributionConfigurationArn = distributionConfigurationArn - self.distributions = distributions + self.infrastructureConfigurationArn = infrastructureConfigurationArn + self.instanceMetadataOptions = instanceMetadataOptions + self.instanceProfileName = instanceProfileName + self.instanceTypes = instanceTypes + self.keyPair = keyPair + self.logging = logging + self.resourceTags = resourceTags + self.securityGroupIds = securityGroupIds + self.snsTopicArn = snsTopicArn + self.subnetId = subnetId + self.terminateInstanceOnFailure = terminateInstanceOnFailure } } -struct UpdateDistributionConfigurationInputBody: Swift.Equatable { - let distributionConfigurationArn: Swift.String? +struct UpdateInfrastructureConfigurationInputBody: Swift.Equatable { + let infrastructureConfigurationArn: Swift.String? let description: Swift.String? - let distributions: [ImagebuilderClientTypes.Distribution]? + let instanceTypes: [Swift.String]? + let instanceProfileName: Swift.String? + let securityGroupIds: [Swift.String]? + let subnetId: Swift.String? + let logging: ImagebuilderClientTypes.Logging? + let keyPair: Swift.String? + let terminateInstanceOnFailure: Swift.Bool? + let snsTopicArn: Swift.String? let clientToken: Swift.String? + let resourceTags: [Swift.String:Swift.String]? + let instanceMetadataOptions: ImagebuilderClientTypes.InstanceMetadataOptions? } -extension UpdateDistributionConfigurationInputBody: Swift.Decodable { +extension UpdateInfrastructureConfigurationInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken case description - case distributionConfigurationArn - case distributions + case infrastructureConfigurationArn + case instanceMetadataOptions + case instanceProfileName + case instanceTypes + case keyPair + case logging + case resourceTags + case securityGroupIds + case snsTopicArn + case subnetId + case terminateInstanceOnFailure } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let distributionConfigurationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .distributionConfigurationArn) - distributionConfigurationArn = distributionConfigurationArnDecoded + let infrastructureConfigurationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .infrastructureConfigurationArn) + infrastructureConfigurationArn = infrastructureConfigurationArnDecoded let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) description = descriptionDecoded - let distributionsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.Distribution?].self, forKey: .distributions) - var distributionsDecoded0:[ImagebuilderClientTypes.Distribution]? = nil - if let distributionsContainer = distributionsContainer { - distributionsDecoded0 = [ImagebuilderClientTypes.Distribution]() - for structure0 in distributionsContainer { - if let structure0 = structure0 { - distributionsDecoded0?.append(structure0) + let instanceTypesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .instanceTypes) + var instanceTypesDecoded0:[Swift.String]? = nil + if let instanceTypesContainer = instanceTypesContainer { + instanceTypesDecoded0 = [Swift.String]() + for string0 in instanceTypesContainer { + if let string0 = string0 { + instanceTypesDecoded0?.append(string0) } } } - distributions = distributionsDecoded0 + instanceTypes = instanceTypesDecoded0 + let instanceProfileNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceProfileName) + instanceProfileName = instanceProfileNameDecoded + let securityGroupIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .securityGroupIds) + var securityGroupIdsDecoded0:[Swift.String]? = nil + if let securityGroupIdsContainer = securityGroupIdsContainer { + securityGroupIdsDecoded0 = [Swift.String]() + for string0 in securityGroupIdsContainer { + if let string0 = string0 { + securityGroupIdsDecoded0?.append(string0) + } + } + } + securityGroupIds = securityGroupIdsDecoded0 + let subnetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .subnetId) + subnetId = subnetIdDecoded + let loggingDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.Logging.self, forKey: .logging) + logging = loggingDecoded + let keyPairDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .keyPair) + keyPair = keyPairDecoded + let terminateInstanceOnFailureDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .terminateInstanceOnFailure) + terminateInstanceOnFailure = terminateInstanceOnFailureDecoded + let snsTopicArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .snsTopicArn) + snsTopicArn = snsTopicArnDecoded let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) clientToken = clientTokenDecoded + let resourceTagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .resourceTags) + var resourceTagsDecoded0: [Swift.String:Swift.String]? = nil + if let resourceTagsContainer = resourceTagsContainer { + resourceTagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in resourceTagsContainer { + if let tagvalue0 = tagvalue0 { + resourceTagsDecoded0?[key0] = tagvalue0 + } + } + } + resourceTags = resourceTagsDecoded0 + let instanceMetadataOptionsDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.InstanceMetadataOptions.self, forKey: .instanceMetadataOptions) + instanceMetadataOptions = instanceMetadataOptionsDecoded } } -extension UpdateDistributionConfigurationOutput: ClientRuntime.HttpResponseBinding { +extension UpdateInfrastructureConfigurationOutput: 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: UpdateDistributionConfigurationOutputBody = try responseDecoder.decode(responseBody: data) + let output: UpdateInfrastructureConfigurationOutputBody = try responseDecoder.decode(responseBody: data) self.clientToken = output.clientToken - self.distributionConfigurationArn = output.distributionConfigurationArn + self.infrastructureConfigurationArn = output.infrastructureConfigurationArn self.requestId = output.requestId } else { self.clientToken = nil - self.distributionConfigurationArn = nil + self.infrastructureConfigurationArn = nil self.requestId = nil } } } -public struct UpdateDistributionConfigurationOutput: Swift.Equatable { +public struct UpdateInfrastructureConfigurationOutput: Swift.Equatable { /// The client token that uniquely identifies the request. public var clientToken: Swift.String? - /// The Amazon Resource Name (ARN) of the distribution configuration that was updated by this request. - public var distributionConfigurationArn: Swift.String? + /// The Amazon Resource Name (ARN) of the infrastructure configuration that was updated by this request. + public var infrastructureConfigurationArn: Swift.String? /// The request ID that uniquely identifies this request. public var requestId: Swift.String? public init( clientToken: Swift.String? = nil, - distributionConfigurationArn: Swift.String? = nil, + infrastructureConfigurationArn: Swift.String? = nil, requestId: Swift.String? = nil ) { self.clientToken = clientToken - self.distributionConfigurationArn = distributionConfigurationArn + self.infrastructureConfigurationArn = infrastructureConfigurationArn self.requestId = requestId } } -struct UpdateDistributionConfigurationOutputBody: Swift.Equatable { +struct UpdateInfrastructureConfigurationOutputBody: Swift.Equatable { let requestId: Swift.String? let clientToken: Swift.String? - let distributionConfigurationArn: Swift.String? + let infrastructureConfigurationArn: Swift.String? } -extension UpdateDistributionConfigurationOutputBody: Swift.Decodable { +extension UpdateInfrastructureConfigurationOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken - case distributionConfigurationArn + case infrastructureConfigurationArn case requestId } @@ -19143,12 +21016,12 @@ extension UpdateDistributionConfigurationOutputBody: Swift.Decodable { requestId = requestIdDecoded let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) clientToken = clientTokenDecoded - let distributionConfigurationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .distributionConfigurationArn) - distributionConfigurationArn = distributionConfigurationArnDecoded + let infrastructureConfigurationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .infrastructureConfigurationArn) + infrastructureConfigurationArn = infrastructureConfigurationArnDecoded } } -enum UpdateDistributionConfigurationOutputError: ClientRuntime.HttpResponseErrorBinding { +enum UpdateInfrastructureConfigurationOutputError: 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 @@ -19157,7 +21030,6 @@ enum UpdateDistributionConfigurationOutputError: ClientRuntime.HttpResponseError case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "IdempotentParameterMismatchException": return try await IdempotentParameterMismatchException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "InvalidParameterCombinationException": return try await InvalidParameterCombinationException(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 "ResourceInUseException": return try await ResourceInUseException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) @@ -19167,19 +21039,15 @@ enum UpdateDistributionConfigurationOutputError: ClientRuntime.HttpResponseError } } -extension UpdateImagePipelineInput: Swift.Encodable { +extension UpdateLifecyclePolicyInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken - case containerRecipeArn case description - case distributionConfigurationArn - case enhancedImageMetadataEnabled - case imagePipelineArn - case imageRecipeArn - case imageScanningConfiguration - case imageTestsConfiguration - case infrastructureConfigurationArn - case schedule + case executionRole + case lifecyclePolicyArn + case policyDetails + case resourceSelection + case resourceType case status } @@ -19188,35 +21056,26 @@ extension UpdateImagePipelineInput: Swift.Encodable { if let clientToken = self.clientToken { try encodeContainer.encode(clientToken, forKey: .clientToken) } - if let containerRecipeArn = self.containerRecipeArn { - try encodeContainer.encode(containerRecipeArn, forKey: .containerRecipeArn) - } if let description = self.description { try encodeContainer.encode(description, forKey: .description) } - if let distributionConfigurationArn = self.distributionConfigurationArn { - try encodeContainer.encode(distributionConfigurationArn, forKey: .distributionConfigurationArn) - } - if let enhancedImageMetadataEnabled = self.enhancedImageMetadataEnabled { - try encodeContainer.encode(enhancedImageMetadataEnabled, forKey: .enhancedImageMetadataEnabled) - } - if let imagePipelineArn = self.imagePipelineArn { - try encodeContainer.encode(imagePipelineArn, forKey: .imagePipelineArn) - } - if let imageRecipeArn = self.imageRecipeArn { - try encodeContainer.encode(imageRecipeArn, forKey: .imageRecipeArn) + if let executionRole = self.executionRole { + try encodeContainer.encode(executionRole, forKey: .executionRole) } - if let imageScanningConfiguration = self.imageScanningConfiguration { - try encodeContainer.encode(imageScanningConfiguration, forKey: .imageScanningConfiguration) + if let lifecyclePolicyArn = self.lifecyclePolicyArn { + try encodeContainer.encode(lifecyclePolicyArn, forKey: .lifecyclePolicyArn) } - if let imageTestsConfiguration = self.imageTestsConfiguration { - try encodeContainer.encode(imageTestsConfiguration, forKey: .imageTestsConfiguration) + if let policyDetails = policyDetails { + var policyDetailsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .policyDetails) + for lifecyclepolicydetail0 in policyDetails { + try policyDetailsContainer.encode(lifecyclepolicydetail0) + } } - if let infrastructureConfigurationArn = self.infrastructureConfigurationArn { - try encodeContainer.encode(infrastructureConfigurationArn, forKey: .infrastructureConfigurationArn) + if let resourceSelection = self.resourceSelection { + try encodeContainer.encode(resourceSelection, forKey: .resourceSelection) } - if let schedule = self.schedule { - try encodeContainer.encode(schedule, forKey: .schedule) + if let resourceType = self.resourceType { + try encodeContainer.encode(resourceType.rawValue, forKey: .resourceType) } if let status = self.status { try encodeContainer.encode(status.rawValue, forKey: .status) @@ -19224,192 +21083,152 @@ extension UpdateImagePipelineInput: Swift.Encodable { } } -extension UpdateImagePipelineInput: ClientRuntime.URLPathProvider { +extension UpdateLifecyclePolicyInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { - return "/UpdateImagePipeline" + return "/UpdateLifecyclePolicy" } } -public struct UpdateImagePipelineInput: Swift.Equatable { +public struct UpdateLifecyclePolicyInput: Swift.Equatable { /// Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) in the Amazon EC2 API Reference. /// This member is required. public var clientToken: Swift.String? - /// The Amazon Resource Name (ARN) of the container pipeline to update. - public var containerRecipeArn: Swift.String? - /// The description of the image pipeline. + /// Optional description for the lifecycle policy. public var description: Swift.String? - /// The Amazon Resource Name (ARN) of the distribution configuration that Image Builder uses to configure and distribute images that this image pipeline has updated. - public var distributionConfigurationArn: Swift.String? - /// Collects additional information about the image being created, including the operating system (OS) version and package list. This information is used to enhance the overall experience of using EC2 Image Builder. Enabled by default. - public var enhancedImageMetadataEnabled: Swift.Bool? - /// The Amazon Resource Name (ARN) of the image pipeline that you want to update. + /// The name or Amazon Resource Name (ARN) of the IAM role that Image Builder uses to update the lifecycle policy. /// This member is required. - public var imagePipelineArn: Swift.String? - /// The Amazon Resource Name (ARN) of the image recipe that will be used to configure images updated by this image pipeline. - public var imageRecipeArn: Swift.String? - /// Contains settings for vulnerability scans. - public var imageScanningConfiguration: ImagebuilderClientTypes.ImageScanningConfiguration? - /// The image test configuration of the image pipeline. - public var imageTestsConfiguration: ImagebuilderClientTypes.ImageTestsConfiguration? - /// The Amazon Resource Name (ARN) of the infrastructure configuration that Image Builder uses to build images that this image pipeline has updated. + public var executionRole: Swift.String? + /// The Amazon Resource Name (ARN) of the lifecycle policy resource. /// This member is required. - public var infrastructureConfigurationArn: Swift.String? - /// The schedule of the image pipeline. - public var schedule: ImagebuilderClientTypes.Schedule? - /// The status of the image pipeline. - public var status: ImagebuilderClientTypes.PipelineStatus? + public var lifecyclePolicyArn: Swift.String? + /// The configuration details for a lifecycle policy resource. + /// This member is required. + public var policyDetails: [ImagebuilderClientTypes.LifecyclePolicyDetail]? + /// Selection criteria for resources that the lifecycle policy applies to. + /// This member is required. + public var resourceSelection: ImagebuilderClientTypes.LifecyclePolicyResourceSelection? + /// The type of image resource that the lifecycle policy applies to. + /// This member is required. + public var resourceType: ImagebuilderClientTypes.LifecyclePolicyResourceType? + /// Indicates whether the lifecycle policy resource is enabled. + public var status: ImagebuilderClientTypes.LifecyclePolicyStatus? public init( clientToken: Swift.String? = nil, - containerRecipeArn: Swift.String? = nil, description: Swift.String? = nil, - distributionConfigurationArn: Swift.String? = nil, - enhancedImageMetadataEnabled: Swift.Bool? = nil, - imagePipelineArn: Swift.String? = nil, - imageRecipeArn: Swift.String? = nil, - imageScanningConfiguration: ImagebuilderClientTypes.ImageScanningConfiguration? = nil, - imageTestsConfiguration: ImagebuilderClientTypes.ImageTestsConfiguration? = nil, - infrastructureConfigurationArn: Swift.String? = nil, - schedule: ImagebuilderClientTypes.Schedule? = nil, - status: ImagebuilderClientTypes.PipelineStatus? = nil + executionRole: Swift.String? = nil, + lifecyclePolicyArn: Swift.String? = nil, + policyDetails: [ImagebuilderClientTypes.LifecyclePolicyDetail]? = nil, + resourceSelection: ImagebuilderClientTypes.LifecyclePolicyResourceSelection? = nil, + resourceType: ImagebuilderClientTypes.LifecyclePolicyResourceType? = nil, + status: ImagebuilderClientTypes.LifecyclePolicyStatus? = nil ) { self.clientToken = clientToken - self.containerRecipeArn = containerRecipeArn self.description = description - self.distributionConfigurationArn = distributionConfigurationArn - self.enhancedImageMetadataEnabled = enhancedImageMetadataEnabled - self.imagePipelineArn = imagePipelineArn - self.imageRecipeArn = imageRecipeArn - self.imageScanningConfiguration = imageScanningConfiguration - self.imageTestsConfiguration = imageTestsConfiguration - self.infrastructureConfigurationArn = infrastructureConfigurationArn - self.schedule = schedule + self.executionRole = executionRole + self.lifecyclePolicyArn = lifecyclePolicyArn + self.policyDetails = policyDetails + self.resourceSelection = resourceSelection + self.resourceType = resourceType self.status = status } } -struct UpdateImagePipelineInputBody: Swift.Equatable { - let imagePipelineArn: Swift.String? +struct UpdateLifecyclePolicyInputBody: Swift.Equatable { + let lifecyclePolicyArn: Swift.String? let description: Swift.String? - let imageRecipeArn: Swift.String? - let containerRecipeArn: Swift.String? - let infrastructureConfigurationArn: Swift.String? - let distributionConfigurationArn: Swift.String? - let imageTestsConfiguration: ImagebuilderClientTypes.ImageTestsConfiguration? - let enhancedImageMetadataEnabled: Swift.Bool? - let schedule: ImagebuilderClientTypes.Schedule? - let status: ImagebuilderClientTypes.PipelineStatus? + let status: ImagebuilderClientTypes.LifecyclePolicyStatus? + let executionRole: Swift.String? + let resourceType: ImagebuilderClientTypes.LifecyclePolicyResourceType? + let policyDetails: [ImagebuilderClientTypes.LifecyclePolicyDetail]? + let resourceSelection: ImagebuilderClientTypes.LifecyclePolicyResourceSelection? let clientToken: Swift.String? - let imageScanningConfiguration: ImagebuilderClientTypes.ImageScanningConfiguration? } -extension UpdateImagePipelineInputBody: Swift.Decodable { +extension UpdateLifecyclePolicyInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientToken - case containerRecipeArn case description - case distributionConfigurationArn - case enhancedImageMetadataEnabled - case imagePipelineArn - case imageRecipeArn - case imageScanningConfiguration - case imageTestsConfiguration - case infrastructureConfigurationArn - case schedule + case executionRole + case lifecyclePolicyArn + case policyDetails + case resourceSelection + case resourceType case status } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let imagePipelineArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imagePipelineArn) - imagePipelineArn = imagePipelineArnDecoded + let lifecyclePolicyArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lifecyclePolicyArn) + lifecyclePolicyArn = lifecyclePolicyArnDecoded let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) description = descriptionDecoded - let imageRecipeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageRecipeArn) - imageRecipeArn = imageRecipeArnDecoded - let containerRecipeArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .containerRecipeArn) - containerRecipeArn = containerRecipeArnDecoded - let infrastructureConfigurationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .infrastructureConfigurationArn) - infrastructureConfigurationArn = infrastructureConfigurationArnDecoded - let distributionConfigurationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .distributionConfigurationArn) - distributionConfigurationArn = distributionConfigurationArnDecoded - let imageTestsConfigurationDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ImageTestsConfiguration.self, forKey: .imageTestsConfiguration) - imageTestsConfiguration = imageTestsConfigurationDecoded - let enhancedImageMetadataEnabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .enhancedImageMetadataEnabled) - enhancedImageMetadataEnabled = enhancedImageMetadataEnabledDecoded - let scheduleDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.Schedule.self, forKey: .schedule) - schedule = scheduleDecoded - let statusDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.PipelineStatus.self, forKey: .status) + let statusDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.LifecyclePolicyStatus.self, forKey: .status) status = statusDecoded + let executionRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .executionRole) + executionRole = executionRoleDecoded + let resourceTypeDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.LifecyclePolicyResourceType.self, forKey: .resourceType) + resourceType = resourceTypeDecoded + let policyDetailsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.LifecyclePolicyDetail?].self, forKey: .policyDetails) + var policyDetailsDecoded0:[ImagebuilderClientTypes.LifecyclePolicyDetail]? = nil + if let policyDetailsContainer = policyDetailsContainer { + policyDetailsDecoded0 = [ImagebuilderClientTypes.LifecyclePolicyDetail]() + for structure0 in policyDetailsContainer { + if let structure0 = structure0 { + policyDetailsDecoded0?.append(structure0) + } + } + } + policyDetails = policyDetailsDecoded0 + let resourceSelectionDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.LifecyclePolicyResourceSelection.self, forKey: .resourceSelection) + resourceSelection = resourceSelectionDecoded let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) clientToken = clientTokenDecoded - let imageScanningConfigurationDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.ImageScanningConfiguration.self, forKey: .imageScanningConfiguration) - imageScanningConfiguration = imageScanningConfigurationDecoded } } -extension UpdateImagePipelineOutput: ClientRuntime.HttpResponseBinding { +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: UpdateImagePipelineOutputBody = try responseDecoder.decode(responseBody: data) - self.clientToken = output.clientToken - self.imagePipelineArn = output.imagePipelineArn - self.requestId = output.requestId + let output: UpdateLifecyclePolicyOutputBody = try responseDecoder.decode(responseBody: data) + self.lifecyclePolicyArn = output.lifecyclePolicyArn } else { - self.clientToken = nil - self.imagePipelineArn = nil - self.requestId = nil + self.lifecyclePolicyArn = nil } } } -public struct UpdateImagePipelineOutput: Swift.Equatable { - /// The client token that uniquely identifies the request. - public var clientToken: Swift.String? - /// The Amazon Resource Name (ARN) of the image pipeline that was updated by this request. - public var imagePipelineArn: Swift.String? - /// The request ID that uniquely identifies this request. - public var requestId: Swift.String? +public struct UpdateLifecyclePolicyOutput: Swift.Equatable { + /// The ARN of the image lifecycle policy resource that was updated. + public var lifecyclePolicyArn: Swift.String? public init( - clientToken: Swift.String? = nil, - imagePipelineArn: Swift.String? = nil, - requestId: Swift.String? = nil + lifecyclePolicyArn: Swift.String? = nil ) { - self.clientToken = clientToken - self.imagePipelineArn = imagePipelineArn - self.requestId = requestId + self.lifecyclePolicyArn = lifecyclePolicyArn } } -struct UpdateImagePipelineOutputBody: Swift.Equatable { - let requestId: Swift.String? - let clientToken: Swift.String? - let imagePipelineArn: Swift.String? +struct UpdateLifecyclePolicyOutputBody: Swift.Equatable { + let lifecyclePolicyArn: Swift.String? } -extension UpdateImagePipelineOutputBody: Swift.Decodable { +extension UpdateLifecyclePolicyOutputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { - case clientToken - case imagePipelineArn - case requestId + case lifecyclePolicyArn } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) - requestId = requestIdDecoded - let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) - clientToken = clientTokenDecoded - let imagePipelineArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imagePipelineArn) - imagePipelineArn = imagePipelineArnDecoded + let lifecyclePolicyArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lifecyclePolicyArn) + lifecyclePolicyArn = lifecyclePolicyArnDecoded } } -enum UpdateImagePipelineOutputError: ClientRuntime.HttpResponseErrorBinding { +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 @@ -19418,6 +21237,7 @@ enum UpdateImagePipelineOutputError: ClientRuntime.HttpResponseErrorBinding { case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "IdempotentParameterMismatchException": return try await IdempotentParameterMismatchException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidParameterCombinationException": return try await InvalidParameterCombinationException(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 "ResourceInUseException": return try await ResourceInUseException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) @@ -19427,739 +21247,899 @@ enum UpdateImagePipelineOutputError: ClientRuntime.HttpResponseErrorBinding { } } -extension UpdateInfrastructureConfigurationInput: Swift.Encodable { +extension ImagebuilderClientTypes.VulnerabilityIdAggregation: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case clientToken - case description - case infrastructureConfigurationArn - case instanceMetadataOptions - case instanceProfileName - case instanceTypes - case keyPair - case logging - case resourceTags - case securityGroupIds - case snsTopicArn - case subnetId - case terminateInstanceOnFailure + case severityCounts + case vulnerabilityId } 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 severityCounts = self.severityCounts { + try encodeContainer.encode(severityCounts, forKey: .severityCounts) } - if let description = self.description { - try encodeContainer.encode(description, forKey: .description) + if let vulnerabilityId = self.vulnerabilityId { + try encodeContainer.encode(vulnerabilityId, forKey: .vulnerabilityId) } - if let infrastructureConfigurationArn = self.infrastructureConfigurationArn { - try encodeContainer.encode(infrastructureConfigurationArn, forKey: .infrastructureConfigurationArn) + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let vulnerabilityIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .vulnerabilityId) + vulnerabilityId = vulnerabilityIdDecoded + let severityCountsDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.SeverityCounts.self, forKey: .severityCounts) + severityCounts = severityCountsDecoded + } +} + +extension ImagebuilderClientTypes { + /// Includes counts of image and pipeline resource findings by vulnerability. + public struct VulnerabilityIdAggregation: Swift.Equatable { + /// Counts by severity level for medium severity and higher level findings, plus a total for all of the findings for the specified vulnerability. + public var severityCounts: ImagebuilderClientTypes.SeverityCounts? + /// The vulnerability Id for this set of counts. + public var vulnerabilityId: Swift.String? + + public init( + severityCounts: ImagebuilderClientTypes.SeverityCounts? = nil, + vulnerabilityId: Swift.String? = nil + ) + { + self.severityCounts = severityCounts + self.vulnerabilityId = vulnerabilityId } - if let instanceMetadataOptions = self.instanceMetadataOptions { - try encodeContainer.encode(instanceMetadataOptions, forKey: .instanceMetadataOptions) + } + +} + +extension ImagebuilderClientTypes.VulnerablePackage: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arch + case epoch + case filePath + case fixedInVersion + case name + case packageManager + case release + case remediation + case sourceLayerHash + case version + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let arch = self.arch { + try encodeContainer.encode(arch, forKey: .arch) } - if let instanceProfileName = self.instanceProfileName { - try encodeContainer.encode(instanceProfileName, forKey: .instanceProfileName) + if let epoch = self.epoch { + try encodeContainer.encode(epoch, forKey: .epoch) } - if let instanceTypes = instanceTypes { - var instanceTypesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .instanceTypes) - for instancetype0 in instanceTypes { - try instanceTypesContainer.encode(instancetype0) - } + if let filePath = self.filePath { + try encodeContainer.encode(filePath, forKey: .filePath) } - if let keyPair = self.keyPair { - try encodeContainer.encode(keyPair, forKey: .keyPair) + if let fixedInVersion = self.fixedInVersion { + try encodeContainer.encode(fixedInVersion, forKey: .fixedInVersion) } - if let logging = self.logging { - try encodeContainer.encode(logging, forKey: .logging) + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) } - if let resourceTags = resourceTags { - var resourceTagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .resourceTags) - for (dictKey0, resourceTagMap0) in resourceTags { - try resourceTagsContainer.encode(resourceTagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) - } + if let packageManager = self.packageManager { + try encodeContainer.encode(packageManager, forKey: .packageManager) } - if let securityGroupIds = securityGroupIds { - var securityGroupIdsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .securityGroupIds) - for nonemptystring0 in securityGroupIds { - try securityGroupIdsContainer.encode(nonemptystring0) - } + if let release = self.release { + try encodeContainer.encode(release, forKey: .release) } - if let snsTopicArn = self.snsTopicArn { - try encodeContainer.encode(snsTopicArn, forKey: .snsTopicArn) + if let remediation = self.remediation { + try encodeContainer.encode(remediation, forKey: .remediation) } - if let subnetId = self.subnetId { - try encodeContainer.encode(subnetId, forKey: .subnetId) + if let sourceLayerHash = self.sourceLayerHash { + try encodeContainer.encode(sourceLayerHash, forKey: .sourceLayerHash) } - if let terminateInstanceOnFailure = self.terminateInstanceOnFailure { - try encodeContainer.encode(terminateInstanceOnFailure, forKey: .terminateInstanceOnFailure) + if let version = self.version { + try encodeContainer.encode(version, forKey: .version) } } -} -extension UpdateInfrastructureConfigurationInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - return "/UpdateInfrastructureConfiguration" + 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 versionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .version) + version = versionDecoded + let sourceLayerHashDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceLayerHash) + sourceLayerHash = sourceLayerHashDecoded + let epochDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .epoch) + epoch = epochDecoded + let releaseDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .release) + release = releaseDecoded + let archDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arch) + arch = archDecoded + let packageManagerDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .packageManager) + packageManager = packageManagerDecoded + let filePathDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .filePath) + filePath = filePathDecoded + let fixedInVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .fixedInVersion) + fixedInVersion = fixedInVersionDecoded + let remediationDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .remediation) + remediation = remediationDecoded } } -public struct UpdateInfrastructureConfigurationInput: Swift.Equatable { - /// Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) in the Amazon EC2 API Reference. - /// This member is required. - public var clientToken: Swift.String? - /// The description of the infrastructure configuration. - public var description: Swift.String? - /// The Amazon Resource Name (ARN) of the infrastructure configuration that you want to update. - /// This member is required. - public var infrastructureConfigurationArn: Swift.String? - /// The instance metadata options that you can set for the HTTP requests that pipeline builds use to launch EC2 build and test instances. For more information about instance metadata options, see one of the following links: - /// - /// * [Configure the instance metadata options](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html) in the Amazon EC2 User Guide for Linux instances. - /// - /// * [Configure the instance metadata options](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/configuring-instance-metadata-options.html) in the Amazon EC2 Windows Guide for Windows instances. - public var instanceMetadataOptions: ImagebuilderClientTypes.InstanceMetadataOptions? - /// The instance profile to associate with the instance used to customize your Amazon EC2 AMI. - /// This member is required. - public var instanceProfileName: Swift.String? - /// The instance types of the infrastructure configuration. You can specify one or more instance types to use for this build. The service will pick one of these instance types based on availability. - public var instanceTypes: [Swift.String]? - /// The key pair of the infrastructure configuration. You can use this to log on to and debug the instance used to create your image. - public var keyPair: Swift.String? - /// The logging configuration of the infrastructure configuration. - public var logging: ImagebuilderClientTypes.Logging? - /// The tags attached to the resource created by Image Builder. - public var resourceTags: [Swift.String:Swift.String]? - /// The security group IDs to associate with the instance used to customize your Amazon EC2 AMI. - public var securityGroupIds: [Swift.String]? - /// The Amazon Resource Name (ARN) for the SNS topic to which we send image build event notifications. EC2 Image Builder is unable to send notifications to SNS topics that are encrypted using keys from other accounts. The key that is used to encrypt the SNS topic must reside in the account that the Image Builder service runs under. - public var snsTopicArn: Swift.String? - /// The subnet ID to place the instance used to customize your Amazon EC2 AMI in. - public var subnetId: Swift.String? - /// The terminate instance on failure setting of the infrastructure configuration. Set to false if you want Image Builder to retain the instance used to configure your AMI if the build or test phase of your workflow fails. - public var terminateInstanceOnFailure: Swift.Bool? +extension ImagebuilderClientTypes { + /// Information about a vulnerable package that Amazon Inspector identifies in a finding. + public struct VulnerablePackage: Swift.Equatable { + /// The architecture of the vulnerable package. + public var arch: Swift.String? + /// The epoch of the vulnerable package. + public var epoch: Swift.Int? + /// The file path of the vulnerable package. + public var filePath: Swift.String? + /// The version of the package that contains the vulnerability fix. + public var fixedInVersion: Swift.String? + /// The name of the vulnerable package. + public var name: Swift.String? + /// The package manager of the vulnerable package. + public var packageManager: Swift.String? + /// The release of the vulnerable package. + public var release: Swift.String? + /// The code to run in your environment to update packages with a fix available. + public var remediation: Swift.String? + /// The source layer hash of the vulnerable package. + public var sourceLayerHash: Swift.String? + /// The version of the vulnerable package. + public var version: Swift.String? - public init( - clientToken: Swift.String? = nil, - description: Swift.String? = nil, - infrastructureConfigurationArn: Swift.String? = nil, - instanceMetadataOptions: ImagebuilderClientTypes.InstanceMetadataOptions? = nil, - instanceProfileName: Swift.String? = nil, - instanceTypes: [Swift.String]? = nil, - keyPair: Swift.String? = nil, - logging: ImagebuilderClientTypes.Logging? = nil, - resourceTags: [Swift.String:Swift.String]? = nil, - securityGroupIds: [Swift.String]? = nil, - snsTopicArn: Swift.String? = nil, - subnetId: Swift.String? = nil, - terminateInstanceOnFailure: Swift.Bool? = nil - ) - { - self.clientToken = clientToken - self.description = description - self.infrastructureConfigurationArn = infrastructureConfigurationArn - self.instanceMetadataOptions = instanceMetadataOptions - self.instanceProfileName = instanceProfileName - self.instanceTypes = instanceTypes - self.keyPair = keyPair - self.logging = logging - self.resourceTags = resourceTags - self.securityGroupIds = securityGroupIds - self.snsTopicArn = snsTopicArn - self.subnetId = subnetId - self.terminateInstanceOnFailure = terminateInstanceOnFailure + public init( + arch: Swift.String? = nil, + epoch: Swift.Int? = nil, + filePath: Swift.String? = nil, + fixedInVersion: Swift.String? = nil, + name: Swift.String? = nil, + packageManager: Swift.String? = nil, + release: Swift.String? = nil, + remediation: Swift.String? = nil, + sourceLayerHash: Swift.String? = nil, + version: Swift.String? = nil + ) + { + self.arch = arch + self.epoch = epoch + self.filePath = filePath + self.fixedInVersion = fixedInVersion + self.name = name + self.packageManager = packageManager + self.release = release + self.remediation = remediation + self.sourceLayerHash = sourceLayerHash + self.version = version + } } -} -struct UpdateInfrastructureConfigurationInputBody: Swift.Equatable { - let infrastructureConfigurationArn: Swift.String? - let description: Swift.String? - let instanceTypes: [Swift.String]? - let instanceProfileName: Swift.String? - let securityGroupIds: [Swift.String]? - let subnetId: Swift.String? - let logging: ImagebuilderClientTypes.Logging? - let keyPair: Swift.String? - let terminateInstanceOnFailure: Swift.Bool? - let snsTopicArn: Swift.String? - let clientToken: Swift.String? - let resourceTags: [Swift.String:Swift.String]? - let instanceMetadataOptions: ImagebuilderClientTypes.InstanceMetadataOptions? } -extension UpdateInfrastructureConfigurationInputBody: Swift.Decodable { +extension ImagebuilderClientTypes.Workflow: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case clientToken + case arn + case changeDescription + case data + case dateCreated case description - case infrastructureConfigurationArn - case instanceMetadataOptions - case instanceProfileName - case instanceTypes - case keyPair - case logging - case resourceTags - case securityGroupIds - case snsTopicArn - case subnetId - case terminateInstanceOnFailure + case kmsKeyId + case name + case owner + case parameters + case state + case tags + case type + case version + } + + 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 changeDescription = self.changeDescription { + try encodeContainer.encode(changeDescription, forKey: .changeDescription) + } + if let data = self.data { + try encodeContainer.encode(data, forKey: .data) + } + if let dateCreated = self.dateCreated { + try encodeContainer.encode(dateCreated, forKey: .dateCreated) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let kmsKeyId = self.kmsKeyId { + try encodeContainer.encode(kmsKeyId, forKey: .kmsKeyId) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let owner = self.owner { + try encodeContainer.encode(owner, forKey: .owner) + } + if let parameters = parameters { + var parametersContainer = encodeContainer.nestedUnkeyedContainer(forKey: .parameters) + for workflowparameterdetail0 in parameters { + try parametersContainer.encode(workflowparameterdetail0) + } + } + if let state = self.state { + try encodeContainer.encode(state, forKey: .state) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + 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 infrastructureConfigurationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .infrastructureConfigurationArn) - infrastructureConfigurationArn = infrastructureConfigurationArnDecoded + let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let versionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .version) + version = versionDecoded let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) description = descriptionDecoded - let instanceTypesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .instanceTypes) - var instanceTypesDecoded0:[Swift.String]? = nil - if let instanceTypesContainer = instanceTypesContainer { - instanceTypesDecoded0 = [Swift.String]() - for string0 in instanceTypesContainer { - if let string0 = string0 { - instanceTypesDecoded0?.append(string0) - } - } - } - instanceTypes = instanceTypesDecoded0 - let instanceProfileNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .instanceProfileName) - instanceProfileName = instanceProfileNameDecoded - let securityGroupIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .securityGroupIds) - var securityGroupIdsDecoded0:[Swift.String]? = nil - if let securityGroupIdsContainer = securityGroupIdsContainer { - securityGroupIdsDecoded0 = [Swift.String]() - for string0 in securityGroupIdsContainer { - if let string0 = string0 { - securityGroupIdsDecoded0?.append(string0) + let changeDescriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changeDescription) + changeDescription = changeDescriptionDecoded + let typeDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.WorkflowType.self, forKey: .type) + type = typeDecoded + let stateDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.WorkflowState.self, forKey: .state) + state = stateDecoded + let ownerDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .owner) + owner = ownerDecoded + let dataDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .data) + data = dataDecoded + let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) + kmsKeyId = kmsKeyIdDecoded + let dateCreatedDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dateCreated) + dateCreated = dateCreatedDecoded + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 } } } - securityGroupIds = securityGroupIdsDecoded0 - let subnetIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .subnetId) - subnetId = subnetIdDecoded - let loggingDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.Logging.self, forKey: .logging) - logging = loggingDecoded - let keyPairDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .keyPair) - keyPair = keyPairDecoded - let terminateInstanceOnFailureDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .terminateInstanceOnFailure) - terminateInstanceOnFailure = terminateInstanceOnFailureDecoded - let snsTopicArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .snsTopicArn) - snsTopicArn = snsTopicArnDecoded - let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) - clientToken = clientTokenDecoded - let resourceTagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .resourceTags) - var resourceTagsDecoded0: [Swift.String:Swift.String]? = nil - if let resourceTagsContainer = resourceTagsContainer { - resourceTagsDecoded0 = [Swift.String:Swift.String]() - for (key0, tagvalue0) in resourceTagsContainer { - if let tagvalue0 = tagvalue0 { - resourceTagsDecoded0?[key0] = tagvalue0 + tags = tagsDecoded0 + let parametersContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowParameterDetail?].self, forKey: .parameters) + var parametersDecoded0:[ImagebuilderClientTypes.WorkflowParameterDetail]? = nil + if let parametersContainer = parametersContainer { + parametersDecoded0 = [ImagebuilderClientTypes.WorkflowParameterDetail]() + for structure0 in parametersContainer { + if let structure0 = structure0 { + parametersDecoded0?.append(structure0) } } } - resourceTags = resourceTagsDecoded0 - let instanceMetadataOptionsDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.InstanceMetadataOptions.self, forKey: .instanceMetadataOptions) - instanceMetadataOptions = instanceMetadataOptionsDecoded - } -} - -extension UpdateInfrastructureConfigurationOutput: 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: UpdateInfrastructureConfigurationOutputBody = try responseDecoder.decode(responseBody: data) - self.clientToken = output.clientToken - self.infrastructureConfigurationArn = output.infrastructureConfigurationArn - self.requestId = output.requestId - } else { - self.clientToken = nil - self.infrastructureConfigurationArn = nil - self.requestId = nil - } - } -} - -public struct UpdateInfrastructureConfigurationOutput: Swift.Equatable { - /// The client token that uniquely identifies the request. - public var clientToken: Swift.String? - /// The Amazon Resource Name (ARN) of the infrastructure configuration that was updated by this request. - public var infrastructureConfigurationArn: Swift.String? - /// The request ID that uniquely identifies this request. - public var requestId: Swift.String? - - public init( - clientToken: Swift.String? = nil, - infrastructureConfigurationArn: Swift.String? = nil, - requestId: Swift.String? = nil - ) - { - self.clientToken = clientToken - self.infrastructureConfigurationArn = infrastructureConfigurationArn - self.requestId = requestId + parameters = parametersDecoded0 } } -struct UpdateInfrastructureConfigurationOutputBody: Swift.Equatable { - let requestId: Swift.String? - let clientToken: Swift.String? - let infrastructureConfigurationArn: Swift.String? -} - -extension UpdateInfrastructureConfigurationOutputBody: Swift.Decodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case clientToken - case infrastructureConfigurationArn - case requestId - } - - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) - requestId = requestIdDecoded - let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) - clientToken = clientTokenDecoded - let infrastructureConfigurationArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .infrastructureConfigurationArn) - infrastructureConfigurationArn = infrastructureConfigurationArnDecoded - } -} +extension ImagebuilderClientTypes { + /// Defines a process that Image Builder uses to build and test images during the image creation process. + public struct Workflow: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the workflow resource. + public var arn: Swift.String? + /// Describes what change has been made in this version of the workflow, or what makes this version different from other versions of the workflow. + public var changeDescription: Swift.String? + /// Contains the YAML document content for the workflow. + public var data: Swift.String? + /// The timestamp when Image Builder created the workflow resource. + public var dateCreated: Swift.String? + /// The description of the workflow. + public var description: Swift.String? + /// The KMS key identifier used to encrypt the workflow resource. + public var kmsKeyId: Swift.String? + /// The name of the workflow resource. + public var name: Swift.String? + /// The owner of the workflow resource. + public var owner: Swift.String? + /// An array of input parameters that that the image workflow uses to control actions or configure settings. + public var parameters: [ImagebuilderClientTypes.WorkflowParameterDetail]? + /// Describes the current status of the workflow and the reason for that status. + public var state: ImagebuilderClientTypes.WorkflowState? + /// The tags that apply to the workflow resource + public var tags: [Swift.String:Swift.String]? + /// Specifies the image creation stage that the workflow applies to. Image Builder currently supports build and test workflows. + public var type: ImagebuilderClientTypes.WorkflowType? + /// The workflow resource version. Workflow resources are immutable. To make a change, you can clone a workflow or create a new version. + public var version: Swift.String? -enum UpdateInfrastructureConfigurationOutputError: 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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "IdempotentParameterMismatchException": return try await IdempotentParameterMismatchException(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 "ResourceInUseException": return try await ResourceInUseException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ServiceUnavailableException": return try await ServiceUnavailableException(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) + public init( + arn: Swift.String? = nil, + changeDescription: Swift.String? = nil, + data: Swift.String? = nil, + dateCreated: Swift.String? = nil, + description: Swift.String? = nil, + kmsKeyId: Swift.String? = nil, + name: Swift.String? = nil, + owner: Swift.String? = nil, + parameters: [ImagebuilderClientTypes.WorkflowParameterDetail]? = nil, + state: ImagebuilderClientTypes.WorkflowState? = nil, + tags: [Swift.String:Swift.String]? = nil, + type: ImagebuilderClientTypes.WorkflowType? = nil, + version: Swift.String? = nil + ) + { + self.arn = arn + self.changeDescription = changeDescription + self.data = data + self.dateCreated = dateCreated + self.description = description + self.kmsKeyId = kmsKeyId + self.name = name + self.owner = owner + self.parameters = parameters + self.state = state + self.tags = tags + self.type = type + self.version = version } } + } -extension UpdateLifecyclePolicyInput: Swift.Encodable { +extension ImagebuilderClientTypes.WorkflowConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case clientToken - case description - case executionRole - case lifecyclePolicyArn - case policyDetails - case resourceSelection - case resourceType - case status + case onFailure + case parallelGroup + case parameters + case workflowArn } 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 onFailure = self.onFailure { + try encodeContainer.encode(onFailure.rawValue, forKey: .onFailure) } - if let executionRole = self.executionRole { - try encodeContainer.encode(executionRole, forKey: .executionRole) - } - if let lifecyclePolicyArn = self.lifecyclePolicyArn { - try encodeContainer.encode(lifecyclePolicyArn, forKey: .lifecyclePolicyArn) + if let parallelGroup = self.parallelGroup { + try encodeContainer.encode(parallelGroup, forKey: .parallelGroup) } - if let policyDetails = policyDetails { - var policyDetailsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .policyDetails) - for lifecyclepolicydetail0 in policyDetails { - try policyDetailsContainer.encode(lifecyclepolicydetail0) + if let parameters = parameters { + var parametersContainer = encodeContainer.nestedUnkeyedContainer(forKey: .parameters) + for workflowparameter0 in parameters { + try parametersContainer.encode(workflowparameter0) } } - if let resourceSelection = self.resourceSelection { - try encodeContainer.encode(resourceSelection, forKey: .resourceSelection) - } - if let resourceType = self.resourceType { - try encodeContainer.encode(resourceType.rawValue, forKey: .resourceType) - } - if let status = self.status { - try encodeContainer.encode(status.rawValue, forKey: .status) + if let workflowArn = self.workflowArn { + try encodeContainer.encode(workflowArn, forKey: .workflowArn) } } -} -extension UpdateLifecyclePolicyInput: ClientRuntime.URLPathProvider { - public var urlPath: Swift.String? { - return "/UpdateLifecyclePolicy" + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workflowArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowArn) + workflowArn = workflowArnDecoded + let parametersContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.WorkflowParameter?].self, forKey: .parameters) + var parametersDecoded0:[ImagebuilderClientTypes.WorkflowParameter]? = nil + if let parametersContainer = parametersContainer { + parametersDecoded0 = [ImagebuilderClientTypes.WorkflowParameter]() + for structure0 in parametersContainer { + if let structure0 = structure0 { + parametersDecoded0?.append(structure0) + } + } + } + parameters = parametersDecoded0 + let parallelGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .parallelGroup) + parallelGroup = parallelGroupDecoded + let onFailureDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.OnWorkflowFailure.self, forKey: .onFailure) + onFailure = onFailureDecoded } } -public struct UpdateLifecyclePolicyInput: Swift.Equatable { - /// Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html) in the Amazon EC2 API Reference. - /// This member is required. - public var clientToken: Swift.String? - /// Optional description for the lifecycle policy. - public var description: Swift.String? - /// The name of the IAM role that Image Builder should use to update the lifecycle policy. - /// This member is required. - public var executionRole: Swift.String? - /// The Amazon Resource Name (ARN) of the lifecycle policy resource. - /// This member is required. - public var lifecyclePolicyArn: Swift.String? - /// The configuration details for a lifecycle policy resource. - /// This member is required. - public var policyDetails: [ImagebuilderClientTypes.LifecyclePolicyDetail]? - /// Selection criteria for resources that the lifecycle policy applies to. - /// This member is required. - public var resourceSelection: ImagebuilderClientTypes.LifecyclePolicyResourceSelection? - /// The type of image resource that the lifecycle policy applies to. - /// This member is required. - public var resourceType: ImagebuilderClientTypes.LifecyclePolicyResourceType? - /// Indicates whether the lifecycle policy resource is enabled. - public var status: ImagebuilderClientTypes.LifecyclePolicyStatus? +extension ImagebuilderClientTypes { + /// Contains control settings and configurable inputs for a workflow resource. + public struct WorkflowConfiguration: Swift.Equatable { + /// The action to take if the workflow fails. + public var onFailure: ImagebuilderClientTypes.OnWorkflowFailure? + /// Test workflows are defined within named runtime groups called parallel groups. The parallel group is the named group that contains this test workflow. Test workflows within a parallel group can run at the same time. Image Builder starts up to five test workflows in the group at the same time, and starts additional workflows as others complete, until all workflows in the group have completed. This field only applies for test workflows. + public var parallelGroup: Swift.String? + /// Contains parameter values for each of the parameters that the workflow document defined for the workflow resource. + public var parameters: [ImagebuilderClientTypes.WorkflowParameter]? + /// The Amazon Resource Name (ARN) of the workflow resource. + /// This member is required. + public var workflowArn: Swift.String? - public init( - clientToken: Swift.String? = nil, - description: Swift.String? = nil, - executionRole: Swift.String? = nil, - lifecyclePolicyArn: Swift.String? = nil, - policyDetails: [ImagebuilderClientTypes.LifecyclePolicyDetail]? = nil, - resourceSelection: ImagebuilderClientTypes.LifecyclePolicyResourceSelection? = nil, - resourceType: ImagebuilderClientTypes.LifecyclePolicyResourceType? = nil, - status: ImagebuilderClientTypes.LifecyclePolicyStatus? = nil - ) - { - self.clientToken = clientToken - self.description = description - self.executionRole = executionRole - self.lifecyclePolicyArn = lifecyclePolicyArn - self.policyDetails = policyDetails - self.resourceSelection = resourceSelection - self.resourceType = resourceType - self.status = status + public init( + onFailure: ImagebuilderClientTypes.OnWorkflowFailure? = nil, + parallelGroup: Swift.String? = nil, + parameters: [ImagebuilderClientTypes.WorkflowParameter]? = nil, + workflowArn: Swift.String? = nil + ) + { + self.onFailure = onFailure + self.parallelGroup = parallelGroup + self.parameters = parameters + self.workflowArn = workflowArn + } } -} -struct UpdateLifecyclePolicyInputBody: Swift.Equatable { - let lifecyclePolicyArn: Swift.String? - let description: Swift.String? - let status: ImagebuilderClientTypes.LifecyclePolicyStatus? - let executionRole: Swift.String? - let resourceType: ImagebuilderClientTypes.LifecyclePolicyResourceType? - let policyDetails: [ImagebuilderClientTypes.LifecyclePolicyDetail]? - let resourceSelection: ImagebuilderClientTypes.LifecyclePolicyResourceSelection? - let clientToken: Swift.String? } -extension UpdateLifecyclePolicyInputBody: Swift.Decodable { +extension ImagebuilderClientTypes.WorkflowExecutionMetadata: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case clientToken - case description - case executionRole - case lifecyclePolicyArn - case policyDetails - case resourceSelection - case resourceType + case endTime + case message + case parallelGroup + case startTime case status + case totalStepCount + case totalStepsFailed + case totalStepsSkipped + case totalStepsSucceeded + case type + case workflowBuildVersionArn + case workflowExecutionId } - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let lifecyclePolicyArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lifecyclePolicyArn) - lifecyclePolicyArn = lifecyclePolicyArnDecoded - let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) - description = descriptionDecoded - let statusDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.LifecyclePolicyStatus.self, forKey: .status) - status = statusDecoded - let executionRoleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .executionRole) - executionRole = executionRoleDecoded - let resourceTypeDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.LifecyclePolicyResourceType.self, forKey: .resourceType) - resourceType = resourceTypeDecoded - let policyDetailsContainer = try containerValues.decodeIfPresent([ImagebuilderClientTypes.LifecyclePolicyDetail?].self, forKey: .policyDetails) - var policyDetailsDecoded0:[ImagebuilderClientTypes.LifecyclePolicyDetail]? = nil - if let policyDetailsContainer = policyDetailsContainer { - policyDetailsDecoded0 = [ImagebuilderClientTypes.LifecyclePolicyDetail]() - for structure0 in policyDetailsContainer { - if let structure0 = structure0 { - policyDetailsDecoded0?.append(structure0) - } - } + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let endTime = self.endTime { + try encodeContainer.encode(endTime, forKey: .endTime) } - policyDetails = policyDetailsDecoded0 - let resourceSelectionDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.LifecyclePolicyResourceSelection.self, forKey: .resourceSelection) - resourceSelection = resourceSelectionDecoded - 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.lifecyclePolicyArn = output.lifecyclePolicyArn - } else { - self.lifecyclePolicyArn = nil + if let message = self.message { + try encodeContainer.encode(message, forKey: .message) + } + if let parallelGroup = self.parallelGroup { + try encodeContainer.encode(parallelGroup, forKey: .parallelGroup) + } + if let startTime = self.startTime { + try encodeContainer.encode(startTime, forKey: .startTime) + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + if totalStepCount != 0 { + try encodeContainer.encode(totalStepCount, forKey: .totalStepCount) + } + if totalStepsFailed != 0 { + try encodeContainer.encode(totalStepsFailed, forKey: .totalStepsFailed) + } + if totalStepsSkipped != 0 { + try encodeContainer.encode(totalStepsSkipped, forKey: .totalStepsSkipped) + } + if totalStepsSucceeded != 0 { + try encodeContainer.encode(totalStepsSucceeded, forKey: .totalStepsSucceeded) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + if let workflowBuildVersionArn = self.workflowBuildVersionArn { + try encodeContainer.encode(workflowBuildVersionArn, forKey: .workflowBuildVersionArn) + } + if let workflowExecutionId = self.workflowExecutionId { + try encodeContainer.encode(workflowExecutionId, forKey: .workflowExecutionId) } } -} - -public struct UpdateLifecyclePolicyOutput: Swift.Equatable { - /// The ARN of the image lifecycle policy resource that was updated. - public var lifecyclePolicyArn: Swift.String? - public init( - lifecyclePolicyArn: Swift.String? = nil - ) - { - self.lifecyclePolicyArn = lifecyclePolicyArn + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let workflowBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowBuildVersionArn) + workflowBuildVersionArn = workflowBuildVersionArnDecoded + let workflowExecutionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowExecutionId) + workflowExecutionId = workflowExecutionIdDecoded + let typeDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.WorkflowType.self, forKey: .type) + type = typeDecoded + let statusDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.WorkflowExecutionStatus.self, forKey: .status) + status = statusDecoded + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + let totalStepCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .totalStepCount) ?? 0 + totalStepCount = totalStepCountDecoded + let totalStepsSucceededDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .totalStepsSucceeded) ?? 0 + totalStepsSucceeded = totalStepsSucceededDecoded + let totalStepsFailedDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .totalStepsFailed) ?? 0 + totalStepsFailed = totalStepsFailedDecoded + let totalStepsSkippedDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .totalStepsSkipped) ?? 0 + totalStepsSkipped = totalStepsSkippedDecoded + let startTimeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .startTime) + startTime = startTimeDecoded + let endTimeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endTime) + endTime = endTimeDecoded + let parallelGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .parallelGroup) + parallelGroup = parallelGroupDecoded } } -struct UpdateLifecyclePolicyOutputBody: Swift.Equatable { - let lifecyclePolicyArn: Swift.String? -} +extension ImagebuilderClientTypes { + /// Metadata that includes details and status from this runtime instance of the workflow. + public struct WorkflowExecutionMetadata: Swift.Equatable { + /// The timestamp when this runtime instance of the workflow finished. + public var endTime: Swift.String? + /// The runtime output message from the workflow, if applicable. + public var message: Swift.String? + /// The name of the test group that included the test workflow resource at runtime. + public var parallelGroup: Swift.String? + /// The timestamp when the runtime instance of this workflow started. + public var startTime: Swift.String? + /// The current runtime status for this workflow. + public var status: ImagebuilderClientTypes.WorkflowExecutionStatus? + /// The total number of steps in the workflow. This should equal the sum of the step counts for steps that succeeded, were skipped, and failed. + public var totalStepCount: Swift.Int + /// A runtime count for the number of steps in the workflow that failed. + public var totalStepsFailed: Swift.Int + /// A runtime count for the number of steps in the workflow that were skipped. + public var totalStepsSkipped: Swift.Int + /// A runtime count for the number of steps in the workflow that ran successfully. + public var totalStepsSucceeded: Swift.Int + /// Indicates what type of workflow that Image Builder ran for this runtime instance of the workflow. + public var type: ImagebuilderClientTypes.WorkflowType? + /// The Amazon Resource Name (ARN) of the workflow resource build version that ran. + public var workflowBuildVersionArn: Swift.String? + /// Unique identifier that Image Builder assigns to keep track of runtime resources each time it runs a workflow. + public var workflowExecutionId: Swift.String? -extension UpdateLifecyclePolicyOutputBody: Swift.Decodable { - enum CodingKeys: Swift.String, Swift.CodingKey { - case lifecyclePolicyArn + public init( + endTime: Swift.String? = nil, + message: Swift.String? = nil, + parallelGroup: Swift.String? = nil, + startTime: Swift.String? = nil, + status: ImagebuilderClientTypes.WorkflowExecutionStatus? = nil, + totalStepCount: Swift.Int = 0, + totalStepsFailed: Swift.Int = 0, + totalStepsSkipped: Swift.Int = 0, + totalStepsSucceeded: Swift.Int = 0, + type: ImagebuilderClientTypes.WorkflowType? = nil, + workflowBuildVersionArn: Swift.String? = nil, + workflowExecutionId: Swift.String? = nil + ) + { + self.endTime = endTime + self.message = message + self.parallelGroup = parallelGroup + self.startTime = startTime + self.status = status + self.totalStepCount = totalStepCount + self.totalStepsFailed = totalStepsFailed + self.totalStepsSkipped = totalStepsSkipped + self.totalStepsSucceeded = totalStepsSucceeded + self.type = type + self.workflowBuildVersionArn = workflowBuildVersionArn + self.workflowExecutionId = workflowExecutionId + } } - public init(from decoder: Swift.Decoder) throws { - let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let lifecyclePolicyArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lifecyclePolicyArn) - lifecyclePolicyArn = lifecyclePolicyArnDecoded - } } -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 "CallRateLimitExceededException": return try await CallRateLimitExceededException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ClientException": return try await ClientException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ForbiddenException": return try await ForbiddenException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "IdempotentParameterMismatchException": return try await IdempotentParameterMismatchException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "InvalidParameterCombinationException": return try await InvalidParameterCombinationException(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 "ResourceInUseException": return try await ResourceInUseException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ServiceException": return try await ServiceException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) - case "ServiceUnavailableException": return try await ServiceUnavailableException(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 ImagebuilderClientTypes { + public enum WorkflowExecutionStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case cancelled + case completed + case failed + case pending + case rollbackCompleted + case rollbackInProgress + case running + case skipped + case sdkUnknown(Swift.String) + + public static var allCases: [WorkflowExecutionStatus] { + return [ + .cancelled, + .completed, + .failed, + .pending, + .rollbackCompleted, + .rollbackInProgress, + .running, + .skipped, + .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 .cancelled: return "CANCELLED" + case .completed: return "COMPLETED" + case .failed: return "FAILED" + case .pending: return "PENDING" + case .rollbackCompleted: return "ROLLBACK_COMPLETED" + case .rollbackInProgress: return "ROLLBACK_IN_PROGRESS" + case .running: return "RUNNING" + case .skipped: return "SKIPPED" + 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 = WorkflowExecutionStatus(rawValue: rawValue) ?? WorkflowExecutionStatus.sdkUnknown(rawValue) } } } -extension ImagebuilderClientTypes.VulnerabilityIdAggregation: Swift.Codable { +extension ImagebuilderClientTypes.WorkflowParameter: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case severityCounts - case vulnerabilityId + case name + case value } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let severityCounts = self.severityCounts { - try encodeContainer.encode(severityCounts, forKey: .severityCounts) + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) } - if let vulnerabilityId = self.vulnerabilityId { - try encodeContainer.encode(vulnerabilityId, forKey: .vulnerabilityId) + if let value = value { + var valueContainer = encodeContainer.nestedUnkeyedContainer(forKey: .value) + for workflowparametervalue0 in value { + try valueContainer.encode(workflowparametervalue0) + } } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let vulnerabilityIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .vulnerabilityId) - vulnerabilityId = vulnerabilityIdDecoded - let severityCountsDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.SeverityCounts.self, forKey: .severityCounts) - severityCounts = severityCountsDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let valueContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .value) + var valueDecoded0:[Swift.String]? = nil + if let valueContainer = valueContainer { + valueDecoded0 = [Swift.String]() + for string0 in valueContainer { + if let string0 = string0 { + valueDecoded0?.append(string0) + } + } + } + value = valueDecoded0 } } extension ImagebuilderClientTypes { - /// Includes counts of image and pipeline resource findings by vulnerability. - public struct VulnerabilityIdAggregation: Swift.Equatable { - /// Counts by severity level for medium severity and higher level findings, plus a total for all of the findings for the specified vulnerability. - public var severityCounts: ImagebuilderClientTypes.SeverityCounts? - /// The vulnerability Id for this set of counts. - public var vulnerabilityId: Swift.String? + /// Contains a key/value pair that sets the named workflow parameter. + public struct WorkflowParameter: Swift.Equatable { + /// The name of the workflow parameter to set. + /// This member is required. + public var name: Swift.String? + /// Sets the value for the named workflow parameter. + /// This member is required. + public var value: [Swift.String]? public init( - severityCounts: ImagebuilderClientTypes.SeverityCounts? = nil, - vulnerabilityId: Swift.String? = nil + name: Swift.String? = nil, + value: [Swift.String]? = nil ) { - self.severityCounts = severityCounts - self.vulnerabilityId = vulnerabilityId + self.name = name + self.value = value } } } -extension ImagebuilderClientTypes.VulnerablePackage: Swift.Codable { +extension ImagebuilderClientTypes.WorkflowParameterDetail: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case arch - case epoch - case filePath - case fixedInVersion + case defaultValue + case description case name - case packageManager - case release - case remediation - case sourceLayerHash - case version + case type } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let arch = self.arch { - try encodeContainer.encode(arch, forKey: .arch) - } - if let epoch = self.epoch { - try encodeContainer.encode(epoch, forKey: .epoch) - } - if let filePath = self.filePath { - try encodeContainer.encode(filePath, forKey: .filePath) + if let defaultValue = defaultValue { + var defaultValueContainer = encodeContainer.nestedUnkeyedContainer(forKey: .defaultValue) + for workflowparametervalue0 in defaultValue { + try defaultValueContainer.encode(workflowparametervalue0) + } } - if let fixedInVersion = self.fixedInVersion { - try encodeContainer.encode(fixedInVersion, forKey: .fixedInVersion) + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } - if let packageManager = self.packageManager { - try encodeContainer.encode(packageManager, forKey: .packageManager) + if let type = self.type { + try encodeContainer.encode(type, forKey: .type) } - if let release = self.release { - try encodeContainer.encode(release, forKey: .release) + } + + 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(Swift.String.self, forKey: .type) + type = typeDecoded + let defaultValueContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .defaultValue) + var defaultValueDecoded0:[Swift.String]? = nil + if let defaultValueContainer = defaultValueContainer { + defaultValueDecoded0 = [Swift.String]() + for string0 in defaultValueContainer { + if let string0 = string0 { + defaultValueDecoded0?.append(string0) + } + } } - if let remediation = self.remediation { - try encodeContainer.encode(remediation, forKey: .remediation) + defaultValue = defaultValueDecoded0 + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + } +} + +extension ImagebuilderClientTypes { + /// Defines a parameter that's used to provide configuration details for the workflow. + public struct WorkflowParameterDetail: Swift.Equatable { + /// The default value of this parameter if no input is provided. + public var defaultValue: [Swift.String]? + /// Describes this parameter. + public var description: Swift.String? + /// The name of this input parameter. + /// This member is required. + public var name: Swift.String? + /// The type of input this parameter provides. The currently supported value is "string". + /// This member is required. + public var type: Swift.String? + + public init( + defaultValue: [Swift.String]? = nil, + description: Swift.String? = nil, + name: Swift.String? = nil, + type: Swift.String? = nil + ) + { + self.defaultValue = defaultValue + self.description = description + self.name = name + self.type = type } - if let sourceLayerHash = self.sourceLayerHash { - try encodeContainer.encode(sourceLayerHash, forKey: .sourceLayerHash) + } + +} + +extension ImagebuilderClientTypes.WorkflowState: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case reason + case status + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let reason = self.reason { + try encodeContainer.encode(reason, forKey: .reason) } - if let version = self.version { - try encodeContainer.encode(version, forKey: .version) + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) } } 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 versionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .version) - version = versionDecoded - let sourceLayerHashDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceLayerHash) - sourceLayerHash = sourceLayerHashDecoded - let epochDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .epoch) - epoch = epochDecoded - let releaseDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .release) - release = releaseDecoded - let archDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arch) - arch = archDecoded - let packageManagerDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .packageManager) - packageManager = packageManagerDecoded - let filePathDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .filePath) - filePath = filePathDecoded - let fixedInVersionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .fixedInVersion) - fixedInVersion = fixedInVersionDecoded - let remediationDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .remediation) - remediation = remediationDecoded + let statusDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.WorkflowStatus.self, forKey: .status) + status = statusDecoded + let reasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .reason) + reason = reasonDecoded } } extension ImagebuilderClientTypes { - /// Information about a vulnerable package that Amazon Inspector identifies in a finding. - public struct VulnerablePackage: Swift.Equatable { - /// The architecture of the vulnerable package. - public var arch: Swift.String? - /// The epoch of the vulnerable package. - public var epoch: Swift.Int? - /// The file path of the vulnerable package. - public var filePath: Swift.String? - /// The version of the package that contains the vulnerability fix. - public var fixedInVersion: Swift.String? - /// The name of the vulnerable package. - public var name: Swift.String? - /// The package manager of the vulnerable package. - public var packageManager: Swift.String? - /// The release of the vulnerable package. - public var release: Swift.String? - /// The code to run in your environment to update packages with a fix available. - public var remediation: Swift.String? - /// The source layer hash of the vulnerable package. - public var sourceLayerHash: Swift.String? - /// The version of the vulnerable package. - public var version: Swift.String? + /// A group of fields that describe the current status of workflow. + public struct WorkflowState: Swift.Equatable { + /// Describes how or why the workflow changed state. + public var reason: Swift.String? + /// The current state of the workflow. + public var status: ImagebuilderClientTypes.WorkflowStatus? public init( - arch: Swift.String? = nil, - epoch: Swift.Int? = nil, - filePath: Swift.String? = nil, - fixedInVersion: Swift.String? = nil, - name: Swift.String? = nil, - packageManager: Swift.String? = nil, - release: Swift.String? = nil, - remediation: Swift.String? = nil, - sourceLayerHash: Swift.String? = nil, - version: Swift.String? = nil + reason: Swift.String? = nil, + status: ImagebuilderClientTypes.WorkflowStatus? = nil ) { - self.arch = arch - self.epoch = epoch - self.filePath = filePath - self.fixedInVersion = fixedInVersion - self.name = name - self.packageManager = packageManager - self.release = release - self.remediation = remediation - self.sourceLayerHash = sourceLayerHash - self.version = version + self.reason = reason + self.status = status } } } -extension ImagebuilderClientTypes.WorkflowExecutionMetadata: Swift.Codable { +extension ImagebuilderClientTypes { + public enum WorkflowStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case deprecated + case sdkUnknown(Swift.String) + + public static var allCases: [WorkflowStatus] { + return [ + .deprecated, + .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 .deprecated: return "DEPRECATED" + 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 = WorkflowStatus(rawValue: rawValue) ?? WorkflowStatus.sdkUnknown(rawValue) + } + } +} + +extension ImagebuilderClientTypes { + public enum WorkflowStepActionType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case resume + case stop + case sdkUnknown(Swift.String) + + public static var allCases: [WorkflowStepActionType] { + return [ + .resume, + .stop, + .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 .resume: return "RESUME" + case .stop: return "STOP" + 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 = WorkflowStepActionType(rawValue: rawValue) ?? WorkflowStepActionType.sdkUnknown(rawValue) + } + } +} + +extension ImagebuilderClientTypes.WorkflowStepExecution: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { - case endTime - case message + case action + case imageBuildVersionArn + case name case startTime - case status - case totalStepCount - case totalStepsFailed - case totalStepsSkipped - case totalStepsSucceeded - case type + case stepExecutionId case workflowBuildVersionArn case workflowExecutionId } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) - if let endTime = self.endTime { - try encodeContainer.encode(endTime, forKey: .endTime) + if let action = self.action { + try encodeContainer.encode(action, forKey: .action) } - if let message = self.message { - try encodeContainer.encode(message, forKey: .message) + if let imageBuildVersionArn = self.imageBuildVersionArn { + try encodeContainer.encode(imageBuildVersionArn, forKey: .imageBuildVersionArn) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) } if let startTime = self.startTime { try encodeContainer.encode(startTime, forKey: .startTime) } - if let status = self.status { - try encodeContainer.encode(status.rawValue, forKey: .status) - } - if totalStepCount != 0 { - try encodeContainer.encode(totalStepCount, forKey: .totalStepCount) - } - if totalStepsFailed != 0 { - try encodeContainer.encode(totalStepsFailed, forKey: .totalStepsFailed) - } - if totalStepsSkipped != 0 { - try encodeContainer.encode(totalStepsSkipped, forKey: .totalStepsSkipped) - } - if totalStepsSucceeded != 0 { - try encodeContainer.encode(totalStepsSucceeded, forKey: .totalStepsSucceeded) - } - if let type = self.type { - try encodeContainer.encode(type.rawValue, forKey: .type) + if let stepExecutionId = self.stepExecutionId { + try encodeContainer.encode(stepExecutionId, forKey: .stepExecutionId) } if let workflowBuildVersionArn = self.workflowBuildVersionArn { try encodeContainer.encode(workflowBuildVersionArn, forKey: .workflowBuildVersionArn) @@ -20171,80 +22151,56 @@ extension ImagebuilderClientTypes.WorkflowExecutionMetadata: Swift.Codable { public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) - let workflowBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowBuildVersionArn) - workflowBuildVersionArn = workflowBuildVersionArnDecoded + let stepExecutionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .stepExecutionId) + stepExecutionId = stepExecutionIdDecoded + let imageBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .imageBuildVersionArn) + imageBuildVersionArn = imageBuildVersionArnDecoded let workflowExecutionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowExecutionId) workflowExecutionId = workflowExecutionIdDecoded - let typeDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.WorkflowType.self, forKey: .type) - type = typeDecoded - let statusDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.WorkflowExecutionStatus.self, forKey: .status) - status = statusDecoded - let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) - message = messageDecoded - let totalStepCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .totalStepCount) ?? 0 - totalStepCount = totalStepCountDecoded - let totalStepsSucceededDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .totalStepsSucceeded) ?? 0 - totalStepsSucceeded = totalStepsSucceededDecoded - let totalStepsFailedDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .totalStepsFailed) ?? 0 - totalStepsFailed = totalStepsFailedDecoded - let totalStepsSkippedDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .totalStepsSkipped) ?? 0 - totalStepsSkipped = totalStepsSkippedDecoded + let workflowBuildVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .workflowBuildVersionArn) + workflowBuildVersionArn = workflowBuildVersionArnDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let actionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .action) + action = actionDecoded let startTimeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .startTime) startTime = startTimeDecoded - let endTimeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endTime) - endTime = endTimeDecoded } } extension ImagebuilderClientTypes { - /// Metadata that includes details and status from this runtime instance of the workflow. - public struct WorkflowExecutionMetadata: Swift.Equatable { - /// The timestamp when this runtime instance of the workflow finished. - public var endTime: Swift.String? - /// The runtime output message from the workflow, if applicable. - public var message: Swift.String? - /// The timestamp when the runtime instance of this workflow started. + /// Contains runtime details for an instance of a workflow that ran for the associated image build version. + public struct WorkflowStepExecution: Swift.Equatable { + /// The name of the step action. + public var action: Swift.String? + /// The Amazon Resource Name (ARN) of the image build version that ran the workflow. + public var imageBuildVersionArn: Swift.String? + /// The name of the workflow step. + public var name: Swift.String? + /// The timestamp when the workflow step started. public var startTime: Swift.String? - /// The current runtime status for this workflow. - public var status: ImagebuilderClientTypes.WorkflowExecutionStatus? - /// The total number of steps in the workflow. This should equal the sum of the step counts for steps that succeeded, were skipped, and failed. - public var totalStepCount: Swift.Int - /// A runtime count for the number of steps in the workflow that failed. - public var totalStepsFailed: Swift.Int - /// A runtime count for the number of steps in the workflow that were skipped. - public var totalStepsSkipped: Swift.Int - /// A runtime count for the number of steps in the workflow that ran successfully. - public var totalStepsSucceeded: Swift.Int - /// Indicates what type of workflow that Image Builder ran for this runtime instance of the workflow. - public var type: ImagebuilderClientTypes.WorkflowType? - /// The Amazon Resource Name (ARN) of the workflow resource build version that ran. + /// Uniquely identifies the workflow step that ran for the associated image build version. + public var stepExecutionId: Swift.String? + /// The ARN of the workflow resource that ran. public var workflowBuildVersionArn: Swift.String? - /// Unique identifier that Image Builder assigns to keep track of runtime resources each time it runs a workflow. + /// Uniquely identifies the runtime instance of the workflow that contains the workflow step that ran for the associated image build version. public var workflowExecutionId: Swift.String? public init( - endTime: Swift.String? = nil, - message: Swift.String? = nil, + action: Swift.String? = nil, + imageBuildVersionArn: Swift.String? = nil, + name: Swift.String? = nil, startTime: Swift.String? = nil, - status: ImagebuilderClientTypes.WorkflowExecutionStatus? = nil, - totalStepCount: Swift.Int = 0, - totalStepsFailed: Swift.Int = 0, - totalStepsSkipped: Swift.Int = 0, - totalStepsSucceeded: Swift.Int = 0, - type: ImagebuilderClientTypes.WorkflowType? = nil, + stepExecutionId: Swift.String? = nil, workflowBuildVersionArn: Swift.String? = nil, workflowExecutionId: Swift.String? = nil ) { - self.endTime = endTime - self.message = message + self.action = action + self.imageBuildVersionArn = imageBuildVersionArn + self.name = name self.startTime = startTime - self.status = status - self.totalStepCount = totalStepCount - self.totalStepsFailed = totalStepsFailed - self.totalStepsSkipped = totalStepsSkipped - self.totalStepsSucceeded = totalStepsSucceeded - self.type = type + self.stepExecutionId = stepExecutionId self.workflowBuildVersionArn = workflowBuildVersionArn self.workflowExecutionId = workflowExecutionId } @@ -20252,53 +22208,6 @@ extension ImagebuilderClientTypes { } -extension ImagebuilderClientTypes { - public enum WorkflowExecutionStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { - case completed - case failed - case pending - case rollbackCompleted - case rollbackInProgress - case running - case skipped - case sdkUnknown(Swift.String) - - public static var allCases: [WorkflowExecutionStatus] { - return [ - .completed, - .failed, - .pending, - .rollbackCompleted, - .rollbackInProgress, - .running, - .skipped, - .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 .failed: return "FAILED" - case .pending: return "PENDING" - case .rollbackCompleted: return "ROLLBACK_COMPLETED" - case .rollbackInProgress: return "ROLLBACK_IN_PROGRESS" - case .running: return "RUNNING" - case .skipped: return "SKIPPED" - 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 = WorkflowExecutionStatus(rawValue: rawValue) ?? WorkflowExecutionStatus.sdkUnknown(rawValue) - } - } -} - extension ImagebuilderClientTypes { public enum WorkflowStepExecutionRollbackStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case completed @@ -20339,6 +22248,7 @@ extension ImagebuilderClientTypes { extension ImagebuilderClientTypes { public enum WorkflowStepExecutionStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case cancelled case completed case failed case pending @@ -20348,6 +22258,7 @@ extension ImagebuilderClientTypes { public static var allCases: [WorkflowStepExecutionStatus] { return [ + .cancelled, .completed, .failed, .pending, @@ -20362,6 +22273,7 @@ extension ImagebuilderClientTypes { } public var rawValue: Swift.String { switch self { + case .cancelled: return "CANCELLED" case .completed: return "COMPLETED" case .failed: return "FAILED" case .pending: return "PENDING" @@ -20513,6 +22425,143 @@ extension ImagebuilderClientTypes { } +extension ImagebuilderClientTypes.WorkflowSummary: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case changeDescription + case dateCreated + case description + case name + case owner + case state + case tags + case type + case version + } + + 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 changeDescription = self.changeDescription { + try encodeContainer.encode(changeDescription, forKey: .changeDescription) + } + if let dateCreated = self.dateCreated { + try encodeContainer.encode(dateCreated, forKey: .dateCreated) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let owner = self.owner { + try encodeContainer.encode(owner, forKey: .owner) + } + if let state = self.state { + try encodeContainer.encode(state, forKey: .state) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + 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 arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let versionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .version) + version = versionDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let changeDescriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .changeDescription) + changeDescription = changeDescriptionDecoded + let typeDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.WorkflowType.self, forKey: .type) + type = typeDecoded + let ownerDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .owner) + owner = ownerDecoded + let stateDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.WorkflowState.self, forKey: .state) + state = stateDecoded + let dateCreatedDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dateCreated) + dateCreated = dateCreatedDecoded + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 + } +} + +extension ImagebuilderClientTypes { + /// Contains metadata about the workflow resource. + public struct WorkflowSummary: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the workflow resource. + public var arn: Swift.String? + /// The change description for the current version of the workflow resource. + public var changeDescription: Swift.String? + /// The original creation date of the workflow resource. + public var dateCreated: Swift.String? + /// Describes the workflow. + public var description: Swift.String? + /// The name of the workflow. + public var name: Swift.String? + /// The owner of the workflow resource. + public var owner: Swift.String? + /// Describes the current state of the workflow resource. + public var state: ImagebuilderClientTypes.WorkflowState? + /// Contains a list of tags that are defined for the workflow. + public var tags: [Swift.String:Swift.String]? + /// The image creation stage that this workflow applies to. Image Builder currently supports build and test stage workflows. + public var type: ImagebuilderClientTypes.WorkflowType? + /// The version of the workflow. + public var version: Swift.String? + + public init( + arn: Swift.String? = nil, + changeDescription: Swift.String? = nil, + dateCreated: Swift.String? = nil, + description: Swift.String? = nil, + name: Swift.String? = nil, + owner: Swift.String? = nil, + state: ImagebuilderClientTypes.WorkflowState? = nil, + tags: [Swift.String:Swift.String]? = nil, + type: ImagebuilderClientTypes.WorkflowType? = nil, + version: Swift.String? = nil + ) + { + self.arn = arn + self.changeDescription = changeDescription + self.dateCreated = dateCreated + self.description = description + self.name = name + self.owner = owner + self.state = state + self.tags = tags + self.type = type + self.version = version + } + } + +} + extension ImagebuilderClientTypes { public enum WorkflowType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case build @@ -20547,3 +22596,98 @@ extension ImagebuilderClientTypes { } } } + +extension ImagebuilderClientTypes.WorkflowVersion: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case dateCreated + case description + case name + case owner + case type + case version + } + + 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 dateCreated = self.dateCreated { + try encodeContainer.encode(dateCreated, forKey: .dateCreated) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let owner = self.owner { + try encodeContainer.encode(owner, forKey: .owner) + } + if let type = self.type { + try encodeContainer.encode(type.rawValue, forKey: .type) + } + 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 arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let versionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .version) + version = versionDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let typeDecoded = try containerValues.decodeIfPresent(ImagebuilderClientTypes.WorkflowType.self, forKey: .type) + type = typeDecoded + let ownerDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .owner) + owner = ownerDecoded + let dateCreatedDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dateCreated) + dateCreated = dateCreatedDecoded + } +} + +extension ImagebuilderClientTypes { + /// Contains details about this version of the workflow. + public struct WorkflowVersion: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the workflow resource. + public var arn: Swift.String? + /// The timestamp when Image Builder created the workflow version. + public var dateCreated: Swift.String? + /// Describes the workflow. + public var description: Swift.String? + /// The name of the workflow. + public var name: Swift.String? + /// The owner of the workflow resource. + public var owner: Swift.String? + /// The image creation stage that this workflow applies to. Image Builder currently supports build and test stage workflows. + public var type: ImagebuilderClientTypes.WorkflowType? + /// The semantic version of the workflow resource. The format includes three nodes: ... + public var version: Swift.String? + + public init( + arn: Swift.String? = nil, + dateCreated: Swift.String? = nil, + description: Swift.String? = nil, + name: Swift.String? = nil, + owner: Swift.String? = nil, + type: ImagebuilderClientTypes.WorkflowType? = nil, + version: Swift.String? = nil + ) + { + self.arn = arn + self.dateCreated = dateCreated + self.description = description + self.name = name + self.owner = owner + self.type = type + self.version = version + } + } + +} diff --git a/Sources/Services/AWSIoT/IoTClient.swift b/Sources/Services/AWSIoT/IoTClient.swift index af622716465..1b817d56b0c 100644 --- a/Sources/Services/AWSIoT/IoTClient.swift +++ b/Sources/Services/AWSIoT/IoTClient.swift @@ -1064,6 +1064,59 @@ extension IoTClient: IoTClientProtocol { return result } + /// Performs the `CreateCertificateProvider` operation on the `AWSIotService` service. + /// + /// Creates an Amazon Web Services IoT Core certificate provider. You can use Amazon Web Services IoT Core certificate provider to customize how to sign a certificate signing request (CSR) in IoT fleet provisioning. For more information, see [Customizing certificate signing using Amazon Web Services IoT Core certificate provider](https://docs.aws.amazon.com/iot/latest/developerguide/provisioning-cert-provider.html) from Amazon Web Services IoT Core Developer Guide. Requires permission to access the [CreateCertificateProvider](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. After you create a certificate provider, the behavior of [CreateCertificateFromCsr] API for fleet provisioning(https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) will change and all API calls to CreateCertificateFromCsr will invoke the certificate provider to create the certificates. It can take up to a few minutes for this behavior to change after a certificate provider is created. + /// + /// - Parameter CreateCertificateProviderInput : [no documentation found] + /// + /// - Returns: `CreateCertificateProviderOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalFailureException` : An unexpected error has occurred. + /// - `InvalidRequestException` : The request is not valid. + /// - `LimitExceededException` : A limit has been exceeded. + /// - `ResourceAlreadyExistsException` : The resource already exists. + /// - `ServiceUnavailableException` : The service is temporarily unavailable. + /// - `ThrottlingException` : The rate exceeds the limit. + /// - `UnauthorizedException` : You are not authorized to perform this operation. + public func createCertificateProvider(input: CreateCertificateProviderInput) async throws -> CreateCertificateProviderOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createCertificateProvider") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "iot") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "createCertificateProvider") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(CreateCertificateProviderOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `CreateCustomMetric` operation on the `AWSIotService` service. /// /// Use this API to define a Custom Metric published by your devices to Device Defender. Requires permission to access the [CreateCustomMetric](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. @@ -2691,6 +2744,55 @@ extension IoTClient: IoTClientProtocol { return result } + /// Performs the `DeleteCertificateProvider` operation on the `AWSIotService` service. + /// + /// Deletes a certificate provider. Requires permission to access the [DeleteCertificateProvider](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. If you delete the certificate provider resource, the behavior of CreateCertificateFromCsr will resume, and IoT will create certificates signed by IoT from a certificate signing request (CSR). + /// + /// - Parameter DeleteCertificateProviderInput : [no documentation found] + /// + /// - Returns: `DeleteCertificateProviderOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `DeleteConflictException` : You can't delete the resource because it is attached to one or more resources. + /// - `InternalFailureException` : An unexpected error has occurred. + /// - `InvalidRequestException` : The request is not valid. + /// - `ResourceNotFoundException` : The specified resource does not exist. + /// - `ServiceUnavailableException` : The service is temporarily unavailable. + /// - `ThrottlingException` : The rate exceeds the limit. + /// - `UnauthorizedException` : You are not authorized to perform this operation. + public func deleteCertificateProvider(input: DeleteCertificateProviderInput) async throws -> DeleteCertificateProviderOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .delete) + .withServiceName(value: serviceName) + .withOperation(value: "deleteCertificateProvider") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "iot") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deleteCertificateProvider") + 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.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(responseClosure(decoder: decoder), responseErrorClosure(DeleteCertificateProviderOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `DeleteCustomMetric` operation on the `AWSIotService` service. /// /// Deletes a Device Defender detect custom metric. Requires permission to access the [DeleteCustomMetric](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. Before you can delete a custom metric, you must first remove the custom metric from all security profiles it's a part of. The security profile associated with the custom metric can be found using the [ListSecurityProfiles](https://docs.aws.amazon.com/iot/latest/apireference/API_ListSecurityProfiles.html) API with metricName set to your custom metric name. @@ -4448,6 +4550,54 @@ extension IoTClient: IoTClientProtocol { return result } + /// Performs the `DescribeCertificateProvider` operation on the `AWSIotService` service. + /// + /// Describes a certificate provider. Requires permission to access the [DescribeCertificateProvider](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. + /// + /// - Parameter DescribeCertificateProviderInput : [no documentation found] + /// + /// - Returns: `DescribeCertificateProviderOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalFailureException` : An unexpected error has occurred. + /// - `InvalidRequestException` : The request is not valid. + /// - `ResourceNotFoundException` : The specified resource does not exist. + /// - `ServiceUnavailableException` : The service is temporarily unavailable. + /// - `ThrottlingException` : The rate exceeds the limit. + /// - `UnauthorizedException` : You are not authorized to perform this operation. + public func describeCertificateProvider(input: DescribeCertificateProviderInput) async throws -> DescribeCertificateProviderOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "describeCertificateProvider") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "iot") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "describeCertificateProvider") + 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.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(responseClosure(decoder: decoder), responseErrorClosure(DescribeCertificateProviderOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `DescribeCustomMetric` operation on the `AWSIotService` service. /// /// Gets information about a Device Defender detect custom metric. Requires permission to access the [DescribeCustomMetric](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. @@ -7255,6 +7405,54 @@ extension IoTClient: IoTClientProtocol { return result } + /// Performs the `ListCertificateProviders` operation on the `AWSIotService` service. + /// + /// Lists all your certificate providers in your Amazon Web Services account. Requires permission to access the [ListCertificateProviders](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. + /// + /// - Parameter ListCertificateProvidersInput : [no documentation found] + /// + /// - Returns: `ListCertificateProvidersOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalFailureException` : An unexpected error has occurred. + /// - `InvalidRequestException` : The request is not valid. + /// - `ServiceUnavailableException` : The service is temporarily unavailable. + /// - `ThrottlingException` : The rate exceeds the limit. + /// - `UnauthorizedException` : You are not authorized to perform this operation. + public func listCertificateProviders(input: ListCertificateProvidersInput) async throws -> ListCertificateProvidersOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "listCertificateProviders") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "iot") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listCertificateProviders") + 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListCertificateProvidersOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `ListCertificates` operation on the `AWSIotService` service. /// /// Lists the certificates registered in your Amazon Web Services account. The results are paginated with a default page size of 25. You can use the returned marker to retrieve additional results. Requires permission to access the [ListCertificates](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. @@ -11168,6 +11366,57 @@ extension IoTClient: IoTClientProtocol { return result } + /// Performs the `UpdateCertificateProvider` operation on the `AWSIotService` service. + /// + /// Updates a certificate provider. Requires permission to access the [UpdateCertificateProvider](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. + /// + /// - Parameter UpdateCertificateProviderInput : [no documentation found] + /// + /// - Returns: `UpdateCertificateProviderOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalFailureException` : An unexpected error has occurred. + /// - `InvalidRequestException` : The request is not valid. + /// - `ResourceNotFoundException` : The specified resource does not exist. + /// - `ServiceUnavailableException` : The service is temporarily unavailable. + /// - `ThrottlingException` : The rate exceeds the limit. + /// - `UnauthorizedException` : You are not authorized to perform this operation. + public func updateCertificateProvider(input: UpdateCertificateProviderInput) async throws -> UpdateCertificateProviderOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .put) + .withServiceName(value: serviceName) + .withOperation(value: "updateCertificateProvider") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "iot") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "updateCertificateProvider") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(UpdateCertificateProviderOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `UpdateCustomMetric` operation on the `AWSIotService` service. /// /// Updates a Device Defender detect custom metric. Requires permission to access the [UpdateCustomMetric](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. diff --git a/Sources/Services/AWSIoT/IoTClientProtocol.swift b/Sources/Services/AWSIoT/IoTClientProtocol.swift index d893397cb3f..6d5dbd2f3f7 100644 --- a/Sources/Services/AWSIoT/IoTClientProtocol.swift +++ b/Sources/Services/AWSIoT/IoTClientProtocol.swift @@ -362,6 +362,25 @@ public protocol IoTClientProtocol { /// - `ThrottlingException` : The rate exceeds the limit. /// - `UnauthorizedException` : You are not authorized to perform this operation. func createCertificateFromCsr(input: CreateCertificateFromCsrInput) async throws -> CreateCertificateFromCsrOutput + /// Performs the `CreateCertificateProvider` operation on the `AWSIotService` service. + /// + /// Creates an Amazon Web Services IoT Core certificate provider. You can use Amazon Web Services IoT Core certificate provider to customize how to sign a certificate signing request (CSR) in IoT fleet provisioning. For more information, see [Customizing certificate signing using Amazon Web Services IoT Core certificate provider](https://docs.aws.amazon.com/iot/latest/developerguide/provisioning-cert-provider.html) from Amazon Web Services IoT Core Developer Guide. Requires permission to access the [CreateCertificateProvider](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. After you create a certificate provider, the behavior of [CreateCertificateFromCsr] API for fleet provisioning(https://docs.aws.amazon.com/iot/latest/developerguide/fleet-provision-api.html#create-cert-csr) will change and all API calls to CreateCertificateFromCsr will invoke the certificate provider to create the certificates. It can take up to a few minutes for this behavior to change after a certificate provider is created. + /// + /// - Parameter CreateCertificateProviderInput : [no documentation found] + /// + /// - Returns: `CreateCertificateProviderOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalFailureException` : An unexpected error has occurred. + /// - `InvalidRequestException` : The request is not valid. + /// - `LimitExceededException` : A limit has been exceeded. + /// - `ResourceAlreadyExistsException` : The resource already exists. + /// - `ServiceUnavailableException` : The service is temporarily unavailable. + /// - `ThrottlingException` : The rate exceeds the limit. + /// - `UnauthorizedException` : You are not authorized to perform this operation. + func createCertificateProvider(input: CreateCertificateProviderInput) async throws -> CreateCertificateProviderOutput /// Performs the `CreateCustomMetric` operation on the `AWSIotService` service. /// /// Use this API to define a Custom Metric published by your devices to Device Defender. Requires permission to access the [CreateCustomMetric](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. @@ -941,6 +960,25 @@ public protocol IoTClientProtocol { /// - `ThrottlingException` : The rate exceeds the limit. /// - `UnauthorizedException` : You are not authorized to perform this operation. func deleteCertificate(input: DeleteCertificateInput) async throws -> DeleteCertificateOutput + /// Performs the `DeleteCertificateProvider` operation on the `AWSIotService` service. + /// + /// Deletes a certificate provider. Requires permission to access the [DeleteCertificateProvider](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. If you delete the certificate provider resource, the behavior of CreateCertificateFromCsr will resume, and IoT will create certificates signed by IoT from a certificate signing request (CSR). + /// + /// - Parameter DeleteCertificateProviderInput : [no documentation found] + /// + /// - Returns: `DeleteCertificateProviderOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `DeleteConflictException` : You can't delete the resource because it is attached to one or more resources. + /// - `InternalFailureException` : An unexpected error has occurred. + /// - `InvalidRequestException` : The request is not valid. + /// - `ResourceNotFoundException` : The specified resource does not exist. + /// - `ServiceUnavailableException` : The service is temporarily unavailable. + /// - `ThrottlingException` : The rate exceeds the limit. + /// - `UnauthorizedException` : You are not authorized to perform this operation. + func deleteCertificateProvider(input: DeleteCertificateProviderInput) async throws -> DeleteCertificateProviderOutput /// Performs the `DeleteCustomMetric` operation on the `AWSIotService` service. /// /// Deletes a Device Defender detect custom metric. Requires permission to access the [DeleteCustomMetric](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. Before you can delete a custom metric, you must first remove the custom metric from all security profiles it's a part of. The security profile associated with the custom metric can be found using the [ListSecurityProfiles](https://docs.aws.amazon.com/iot/latest/apireference/API_ListSecurityProfiles.html) API with metricName set to your custom metric name. @@ -1569,6 +1607,24 @@ public protocol IoTClientProtocol { /// - `ThrottlingException` : The rate exceeds the limit. /// - `UnauthorizedException` : You are not authorized to perform this operation. func describeCertificate(input: DescribeCertificateInput) async throws -> DescribeCertificateOutput + /// Performs the `DescribeCertificateProvider` operation on the `AWSIotService` service. + /// + /// Describes a certificate provider. Requires permission to access the [DescribeCertificateProvider](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. + /// + /// - Parameter DescribeCertificateProviderInput : [no documentation found] + /// + /// - Returns: `DescribeCertificateProviderOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalFailureException` : An unexpected error has occurred. + /// - `InvalidRequestException` : The request is not valid. + /// - `ResourceNotFoundException` : The specified resource does not exist. + /// - `ServiceUnavailableException` : The service is temporarily unavailable. + /// - `ThrottlingException` : The rate exceeds the limit. + /// - `UnauthorizedException` : You are not authorized to perform this operation. + func describeCertificateProvider(input: DescribeCertificateProviderInput) async throws -> DescribeCertificateProviderOutput /// Performs the `DescribeCustomMetric` operation on the `AWSIotService` service. /// /// Gets information about a Device Defender detect custom metric. Requires permission to access the [DescribeCustomMetric](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. @@ -2566,6 +2622,23 @@ public protocol IoTClientProtocol { /// - `ThrottlingException` : The rate exceeds the limit. /// - `UnauthorizedException` : You are not authorized to perform this operation. func listCACertificates(input: ListCACertificatesInput) async throws -> ListCACertificatesOutput + /// Performs the `ListCertificateProviders` operation on the `AWSIotService` service. + /// + /// Lists all your certificate providers in your Amazon Web Services account. Requires permission to access the [ListCertificateProviders](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. + /// + /// - Parameter ListCertificateProvidersInput : [no documentation found] + /// + /// - Returns: `ListCertificateProvidersOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalFailureException` : An unexpected error has occurred. + /// - `InvalidRequestException` : The request is not valid. + /// - `ServiceUnavailableException` : The service is temporarily unavailable. + /// - `ThrottlingException` : The rate exceeds the limit. + /// - `UnauthorizedException` : You are not authorized to perform this operation. + func listCertificateProviders(input: ListCertificateProvidersInput) async throws -> ListCertificateProvidersOutput /// Performs the `ListCertificates` operation on the `AWSIotService` service. /// /// Lists the certificates registered in your Amazon Web Services account. The results are paginated with a default page size of 25. You can use the returned marker to retrieve additional results. Requires permission to access the [ListCertificates](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. @@ -3936,6 +4009,24 @@ public protocol IoTClientProtocol { /// - `ThrottlingException` : The rate exceeds the limit. /// - `UnauthorizedException` : You are not authorized to perform this operation. func updateCertificate(input: UpdateCertificateInput) async throws -> UpdateCertificateOutput + /// Performs the `UpdateCertificateProvider` operation on the `AWSIotService` service. + /// + /// Updates a certificate provider. Requires permission to access the [UpdateCertificateProvider](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. + /// + /// - Parameter UpdateCertificateProviderInput : [no documentation found] + /// + /// - Returns: `UpdateCertificateProviderOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalFailureException` : An unexpected error has occurred. + /// - `InvalidRequestException` : The request is not valid. + /// - `ResourceNotFoundException` : The specified resource does not exist. + /// - `ServiceUnavailableException` : The service is temporarily unavailable. + /// - `ThrottlingException` : The rate exceeds the limit. + /// - `UnauthorizedException` : You are not authorized to perform this operation. + func updateCertificateProvider(input: UpdateCertificateProviderInput) async throws -> UpdateCertificateProviderOutput /// Performs the `UpdateCustomMetric` operation on the `AWSIotService` service. /// /// Updates a Device Defender detect custom metric. Requires permission to access the [UpdateCustomMetric](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action. diff --git a/Sources/Services/AWSIoT/models/Models.swift b/Sources/Services/AWSIoT/models/Models.swift index a2b0938223f..7bb8e2ecda3 100644 --- a/Sources/Services/AWSIoT/models/Models.swift +++ b/Sources/Services/AWSIoT/models/Models.swift @@ -5368,6 +5368,80 @@ extension IoTClientTypes { } } +extension IoTClientTypes { + public enum CertificateProviderOperation: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case createcertificatefromcsr + case sdkUnknown(Swift.String) + + public static var allCases: [CertificateProviderOperation] { + return [ + .createcertificatefromcsr, + .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 .createcertificatefromcsr: return "CreateCertificateFromCsr" + 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 = CertificateProviderOperation(rawValue: rawValue) ?? CertificateProviderOperation.sdkUnknown(rawValue) + } + } +} + +extension IoTClientTypes.CertificateProviderSummary: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case certificateProviderArn + case certificateProviderName + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let certificateProviderArn = self.certificateProviderArn { + try encodeContainer.encode(certificateProviderArn, forKey: .certificateProviderArn) + } + if let certificateProviderName = self.certificateProviderName { + try encodeContainer.encode(certificateProviderName, forKey: .certificateProviderName) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let certificateProviderNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .certificateProviderName) + certificateProviderName = certificateProviderNameDecoded + let certificateProviderArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .certificateProviderArn) + certificateProviderArn = certificateProviderArnDecoded + } +} + +extension IoTClientTypes { + /// The certificate provider summary. + public struct CertificateProviderSummary: Swift.Equatable { + /// The ARN of the certificate provider. + public var certificateProviderArn: Swift.String? + /// The name of the certificate provider. + public var certificateProviderName: Swift.String? + + public init( + certificateProviderArn: Swift.String? = nil, + certificateProviderName: Swift.String? = nil + ) + { + self.certificateProviderArn = certificateProviderArn + self.certificateProviderName = certificateProviderName + } + } + +} + extension CertificateStateException { 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(), @@ -6918,6 +6992,190 @@ enum CreateCertificateFromCsrOutputError: ClientRuntime.HttpResponseErrorBinding } } +extension CreateCertificateProviderInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accountDefaultForOperations + case clientToken + case lambdaFunctionArn + case tags + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let accountDefaultForOperations = accountDefaultForOperations { + var accountDefaultForOperationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .accountDefaultForOperations) + for certificateprovideroperation0 in accountDefaultForOperations { + try accountDefaultForOperationsContainer.encode(certificateprovideroperation0.rawValue) + } + } + if let clientToken = self.clientToken { + try encodeContainer.encode(clientToken, forKey: .clientToken) + } + if let lambdaFunctionArn = self.lambdaFunctionArn { + try encodeContainer.encode(lambdaFunctionArn, forKey: .lambdaFunctionArn) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .tags) + for tag0 in tags { + try tagsContainer.encode(tag0) + } + } + } +} + +extension CreateCertificateProviderInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let certificateProviderName = certificateProviderName else { + return nil + } + return "/certificate-providers/\(certificateProviderName.urlPercentEncoding())" + } +} + +public struct CreateCertificateProviderInput: Swift.Equatable { + /// A list of the operations that the certificate provider will use to generate certificates. Valid value: CreateCertificateFromCsr. + /// This member is required. + public var accountDefaultForOperations: [IoTClientTypes.CertificateProviderOperation]? + /// The name of the certificate provider. + /// This member is required. + public var certificateProviderName: Swift.String? + /// A string that you can optionally pass in the CreateCertificateProvider request to make sure the request is idempotent. + public var clientToken: Swift.String? + /// The ARN of the Lambda function that defines the authentication logic. + /// This member is required. + public var lambdaFunctionArn: Swift.String? + /// Metadata which can be used to manage the certificate provider. + public var tags: [IoTClientTypes.Tag]? + + public init( + accountDefaultForOperations: [IoTClientTypes.CertificateProviderOperation]? = nil, + certificateProviderName: Swift.String? = nil, + clientToken: Swift.String? = nil, + lambdaFunctionArn: Swift.String? = nil, + tags: [IoTClientTypes.Tag]? = nil + ) + { + self.accountDefaultForOperations = accountDefaultForOperations + self.certificateProviderName = certificateProviderName + self.clientToken = clientToken + self.lambdaFunctionArn = lambdaFunctionArn + self.tags = tags + } +} + +struct CreateCertificateProviderInputBody: Swift.Equatable { + let lambdaFunctionArn: Swift.String? + let accountDefaultForOperations: [IoTClientTypes.CertificateProviderOperation]? + let clientToken: Swift.String? + let tags: [IoTClientTypes.Tag]? +} + +extension CreateCertificateProviderInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accountDefaultForOperations + case clientToken + case lambdaFunctionArn + case tags + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let lambdaFunctionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lambdaFunctionArn) + lambdaFunctionArn = lambdaFunctionArnDecoded + let accountDefaultForOperationsContainer = try containerValues.decodeIfPresent([IoTClientTypes.CertificateProviderOperation?].self, forKey: .accountDefaultForOperations) + var accountDefaultForOperationsDecoded0:[IoTClientTypes.CertificateProviderOperation]? = nil + if let accountDefaultForOperationsContainer = accountDefaultForOperationsContainer { + accountDefaultForOperationsDecoded0 = [IoTClientTypes.CertificateProviderOperation]() + for enum0 in accountDefaultForOperationsContainer { + if let enum0 = enum0 { + accountDefaultForOperationsDecoded0?.append(enum0) + } + } + } + accountDefaultForOperations = accountDefaultForOperationsDecoded0 + let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) + clientToken = clientTokenDecoded + let tagsContainer = try containerValues.decodeIfPresent([IoTClientTypes.Tag?].self, forKey: .tags) + var tagsDecoded0:[IoTClientTypes.Tag]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [IoTClientTypes.Tag]() + for structure0 in tagsContainer { + if let structure0 = structure0 { + tagsDecoded0?.append(structure0) + } + } + } + tags = tagsDecoded0 + } +} + +extension CreateCertificateProviderOutput: 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: CreateCertificateProviderOutputBody = try responseDecoder.decode(responseBody: data) + self.certificateProviderArn = output.certificateProviderArn + self.certificateProviderName = output.certificateProviderName + } else { + self.certificateProviderArn = nil + self.certificateProviderName = nil + } + } +} + +public struct CreateCertificateProviderOutput: Swift.Equatable { + /// The ARN of the certificate provider. + public var certificateProviderArn: Swift.String? + /// The name of the certificate provider. + public var certificateProviderName: Swift.String? + + public init( + certificateProviderArn: Swift.String? = nil, + certificateProviderName: Swift.String? = nil + ) + { + self.certificateProviderArn = certificateProviderArn + self.certificateProviderName = certificateProviderName + } +} + +struct CreateCertificateProviderOutputBody: Swift.Equatable { + let certificateProviderName: Swift.String? + let certificateProviderArn: Swift.String? +} + +extension CreateCertificateProviderOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case certificateProviderArn + case certificateProviderName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let certificateProviderNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .certificateProviderName) + certificateProviderName = certificateProviderNameDecoded + let certificateProviderArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .certificateProviderArn) + certificateProviderArn = certificateProviderArnDecoded + } +} + +enum CreateCertificateProviderOutputError: 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 "InternalFailureException": return try await InternalFailureException(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 "ResourceAlreadyExistsException": return try await ResourceAlreadyExistsException(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 "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) + } + } +} + extension CreateCustomMetricInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case clientRequestToken @@ -12553,6 +12811,64 @@ enum DeleteCertificateOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DeleteCertificateProviderInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let certificateProviderName = certificateProviderName else { + return nil + } + return "/certificate-providers/\(certificateProviderName.urlPercentEncoding())" + } +} + +public struct DeleteCertificateProviderInput: Swift.Equatable { + /// The name of the certificate provider. + /// This member is required. + public var certificateProviderName: Swift.String? + + public init( + certificateProviderName: Swift.String? = nil + ) + { + self.certificateProviderName = certificateProviderName + } +} + +struct DeleteCertificateProviderInputBody: Swift.Equatable { +} + +extension DeleteCertificateProviderInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension DeleteCertificateProviderOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct DeleteCertificateProviderOutput: Swift.Equatable { + + public init() { } +} + +enum DeleteCertificateProviderOutputError: 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 "DeleteConflictException": return try await DeleteConflictException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InternalFailureException": return try await InternalFailureException(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 "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 "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) + } + } +} + extension DeleteConflictException { 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(), @@ -15590,6 +15906,152 @@ enum DescribeCertificateOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DescribeCertificateProviderInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let certificateProviderName = certificateProviderName else { + return nil + } + return "/certificate-providers/\(certificateProviderName.urlPercentEncoding())" + } +} + +public struct DescribeCertificateProviderInput: Swift.Equatable { + /// The name of the certificate provider. + /// This member is required. + public var certificateProviderName: Swift.String? + + public init( + certificateProviderName: Swift.String? = nil + ) + { + self.certificateProviderName = certificateProviderName + } +} + +struct DescribeCertificateProviderInputBody: Swift.Equatable { +} + +extension DescribeCertificateProviderInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension DescribeCertificateProviderOutput: 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: DescribeCertificateProviderOutputBody = try responseDecoder.decode(responseBody: data) + self.accountDefaultForOperations = output.accountDefaultForOperations + self.certificateProviderArn = output.certificateProviderArn + self.certificateProviderName = output.certificateProviderName + self.creationDate = output.creationDate + self.lambdaFunctionArn = output.lambdaFunctionArn + self.lastModifiedDate = output.lastModifiedDate + } else { + self.accountDefaultForOperations = nil + self.certificateProviderArn = nil + self.certificateProviderName = nil + self.creationDate = nil + self.lambdaFunctionArn = nil + self.lastModifiedDate = nil + } + } +} + +public struct DescribeCertificateProviderOutput: Swift.Equatable { + /// A list of the operations that the certificate provider will use to generate certificates. Valid value: CreateCertificateFromCsr. + public var accountDefaultForOperations: [IoTClientTypes.CertificateProviderOperation]? + /// The ARN of the certificate provider. + public var certificateProviderArn: Swift.String? + /// The name of the certificate provider. + public var certificateProviderName: Swift.String? + /// The date-time string that indicates when the certificate provider was created. + public var creationDate: ClientRuntime.Date? + /// The Lambda function ARN that's associated with the certificate provider. + public var lambdaFunctionArn: Swift.String? + /// The date-time string that indicates when the certificate provider was last updated. + public var lastModifiedDate: ClientRuntime.Date? + + public init( + accountDefaultForOperations: [IoTClientTypes.CertificateProviderOperation]? = nil, + certificateProviderArn: Swift.String? = nil, + certificateProviderName: Swift.String? = nil, + creationDate: ClientRuntime.Date? = nil, + lambdaFunctionArn: Swift.String? = nil, + lastModifiedDate: ClientRuntime.Date? = nil + ) + { + self.accountDefaultForOperations = accountDefaultForOperations + self.certificateProviderArn = certificateProviderArn + self.certificateProviderName = certificateProviderName + self.creationDate = creationDate + self.lambdaFunctionArn = lambdaFunctionArn + self.lastModifiedDate = lastModifiedDate + } +} + +struct DescribeCertificateProviderOutputBody: Swift.Equatable { + let certificateProviderName: Swift.String? + let certificateProviderArn: Swift.String? + let lambdaFunctionArn: Swift.String? + let accountDefaultForOperations: [IoTClientTypes.CertificateProviderOperation]? + let creationDate: ClientRuntime.Date? + let lastModifiedDate: ClientRuntime.Date? +} + +extension DescribeCertificateProviderOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accountDefaultForOperations + case certificateProviderArn + case certificateProviderName + case creationDate + case lambdaFunctionArn + case lastModifiedDate + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let certificateProviderNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .certificateProviderName) + certificateProviderName = certificateProviderNameDecoded + let certificateProviderArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .certificateProviderArn) + certificateProviderArn = certificateProviderArnDecoded + let lambdaFunctionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lambdaFunctionArn) + lambdaFunctionArn = lambdaFunctionArnDecoded + let accountDefaultForOperationsContainer = try containerValues.decodeIfPresent([IoTClientTypes.CertificateProviderOperation?].self, forKey: .accountDefaultForOperations) + var accountDefaultForOperationsDecoded0:[IoTClientTypes.CertificateProviderOperation]? = nil + if let accountDefaultForOperationsContainer = accountDefaultForOperationsContainer { + accountDefaultForOperationsDecoded0 = [IoTClientTypes.CertificateProviderOperation]() + for enum0 in accountDefaultForOperationsContainer { + if let enum0 = enum0 { + accountDefaultForOperationsDecoded0?.append(enum0) + } + } + } + accountDefaultForOperations = accountDefaultForOperationsDecoded0 + let creationDateDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .creationDate) + creationDate = creationDateDecoded + let lastModifiedDateDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedDate) + lastModifiedDate = lastModifiedDateDecoded + } +} + +enum DescribeCertificateProviderOutputError: 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 "InternalFailureException": return try await InternalFailureException(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 "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 "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) + } + } +} + extension DescribeCustomMetricInput: ClientRuntime.URLPathProvider { public var urlPath: Swift.String? { guard let metricName = metricName else { @@ -28032,6 +28494,128 @@ enum ListCACertificatesOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension ListCertificateProvidersInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let ascendingOrder = ascendingOrder { + let ascendingOrderQueryItem = ClientRuntime.URLQueryItem(name: "isAscendingOrder".urlPercentEncoding(), value: Swift.String(ascendingOrder).urlPercentEncoding()) + items.append(ascendingOrderQueryItem) + } + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } + return items + } + } +} + +extension ListCertificateProvidersInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/certificate-providers" + } +} + +public struct ListCertificateProvidersInput: Swift.Equatable { + /// Returns the list of certificate providers in ascending alphabetical order. + public var ascendingOrder: Swift.Bool? + /// The token for the next set of results, or null if there are no more results. + public var nextToken: Swift.String? + + public init( + ascendingOrder: Swift.Bool? = nil, + nextToken: Swift.String? = nil + ) + { + self.ascendingOrder = ascendingOrder + self.nextToken = nextToken + } +} + +struct ListCertificateProvidersInputBody: Swift.Equatable { +} + +extension ListCertificateProvidersInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension ListCertificateProvidersOutput: 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: ListCertificateProvidersOutputBody = try responseDecoder.decode(responseBody: data) + self.certificateProviders = output.certificateProviders + self.nextToken = output.nextToken + } else { + self.certificateProviders = nil + self.nextToken = nil + } + } +} + +public struct ListCertificateProvidersOutput: Swift.Equatable { + /// The list of certificate providers in your Amazon Web Services account. + public var certificateProviders: [IoTClientTypes.CertificateProviderSummary]? + /// The token for the next set of results, or null if there are no more results. + public var nextToken: Swift.String? + + public init( + certificateProviders: [IoTClientTypes.CertificateProviderSummary]? = nil, + nextToken: Swift.String? = nil + ) + { + self.certificateProviders = certificateProviders + self.nextToken = nextToken + } +} + +struct ListCertificateProvidersOutputBody: Swift.Equatable { + let certificateProviders: [IoTClientTypes.CertificateProviderSummary]? + let nextToken: Swift.String? +} + +extension ListCertificateProvidersOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case certificateProviders + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let certificateProvidersContainer = try containerValues.decodeIfPresent([IoTClientTypes.CertificateProviderSummary?].self, forKey: .certificateProviders) + var certificateProvidersDecoded0:[IoTClientTypes.CertificateProviderSummary]? = nil + if let certificateProvidersContainer = certificateProvidersContainer { + certificateProvidersDecoded0 = [IoTClientTypes.CertificateProviderSummary]() + for structure0 in certificateProvidersContainer { + if let structure0 = structure0 { + certificateProvidersDecoded0?.append(structure0) + } + } + } + certificateProviders = certificateProvidersDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListCertificateProvidersOutputError: 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 "InternalFailureException": return try await InternalFailureException(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 "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 "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) + } + } +} + extension ListCertificatesByCAInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { @@ -35392,7 +35976,7 @@ extension IoTClientTypes.MetricToRetain: Swift.Codable { extension IoTClientTypes { /// The metric you want to retain. Dimensions are optional. public struct MetricToRetain: Swift.Equatable { - /// Value added in both Behavior and AdditionalMetricsToRetainV2 to indicate if Device Defender Detect should export the corresponding metrics. + /// The value indicates exporting metrics related to the MetricToRetain when it's true. public var exportMetric: Swift.Bool? /// What is measured by the behavior. /// This member is required. @@ -46619,6 +47203,151 @@ enum UpdateCertificateOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension UpdateCertificateProviderInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accountDefaultForOperations + case lambdaFunctionArn + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let accountDefaultForOperations = accountDefaultForOperations { + var accountDefaultForOperationsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .accountDefaultForOperations) + for certificateprovideroperation0 in accountDefaultForOperations { + try accountDefaultForOperationsContainer.encode(certificateprovideroperation0.rawValue) + } + } + if let lambdaFunctionArn = self.lambdaFunctionArn { + try encodeContainer.encode(lambdaFunctionArn, forKey: .lambdaFunctionArn) + } + } +} + +extension UpdateCertificateProviderInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let certificateProviderName = certificateProviderName else { + return nil + } + return "/certificate-providers/\(certificateProviderName.urlPercentEncoding())" + } +} + +public struct UpdateCertificateProviderInput: Swift.Equatable { + /// A list of the operations that the certificate provider will use to generate certificates. Valid value: CreateCertificateFromCsr. + public var accountDefaultForOperations: [IoTClientTypes.CertificateProviderOperation]? + /// The name of the certificate provider. + /// This member is required. + public var certificateProviderName: Swift.String? + /// The Lambda function ARN that's associated with the certificate provider. + public var lambdaFunctionArn: Swift.String? + + public init( + accountDefaultForOperations: [IoTClientTypes.CertificateProviderOperation]? = nil, + certificateProviderName: Swift.String? = nil, + lambdaFunctionArn: Swift.String? = nil + ) + { + self.accountDefaultForOperations = accountDefaultForOperations + self.certificateProviderName = certificateProviderName + self.lambdaFunctionArn = lambdaFunctionArn + } +} + +struct UpdateCertificateProviderInputBody: Swift.Equatable { + let lambdaFunctionArn: Swift.String? + let accountDefaultForOperations: [IoTClientTypes.CertificateProviderOperation]? +} + +extension UpdateCertificateProviderInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accountDefaultForOperations + case lambdaFunctionArn + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let lambdaFunctionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lambdaFunctionArn) + lambdaFunctionArn = lambdaFunctionArnDecoded + let accountDefaultForOperationsContainer = try containerValues.decodeIfPresent([IoTClientTypes.CertificateProviderOperation?].self, forKey: .accountDefaultForOperations) + var accountDefaultForOperationsDecoded0:[IoTClientTypes.CertificateProviderOperation]? = nil + if let accountDefaultForOperationsContainer = accountDefaultForOperationsContainer { + accountDefaultForOperationsDecoded0 = [IoTClientTypes.CertificateProviderOperation]() + for enum0 in accountDefaultForOperationsContainer { + if let enum0 = enum0 { + accountDefaultForOperationsDecoded0?.append(enum0) + } + } + } + accountDefaultForOperations = accountDefaultForOperationsDecoded0 + } +} + +extension UpdateCertificateProviderOutput: 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: UpdateCertificateProviderOutputBody = try responseDecoder.decode(responseBody: data) + self.certificateProviderArn = output.certificateProviderArn + self.certificateProviderName = output.certificateProviderName + } else { + self.certificateProviderArn = nil + self.certificateProviderName = nil + } + } +} + +public struct UpdateCertificateProviderOutput: Swift.Equatable { + /// The ARN of the certificate provider. + public var certificateProviderArn: Swift.String? + /// The name of the certificate provider. + public var certificateProviderName: Swift.String? + + public init( + certificateProviderArn: Swift.String? = nil, + certificateProviderName: Swift.String? = nil + ) + { + self.certificateProviderArn = certificateProviderArn + self.certificateProviderName = certificateProviderName + } +} + +struct UpdateCertificateProviderOutputBody: Swift.Equatable { + let certificateProviderName: Swift.String? + let certificateProviderArn: Swift.String? +} + +extension UpdateCertificateProviderOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case certificateProviderArn + case certificateProviderName + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let certificateProviderNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .certificateProviderName) + certificateProviderName = certificateProviderNameDecoded + let certificateProviderArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .certificateProviderArn) + certificateProviderArn = certificateProviderArnDecoded + } +} + +enum UpdateCertificateProviderOutputError: 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 "InternalFailureException": return try await InternalFailureException(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 "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 "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) + } + } +} + extension UpdateCustomMetricInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case displayName diff --git a/Sources/Services/AWSKMS/KMSClient.swift b/Sources/Services/AWSKMS/KMSClient.swift index 46bd33a65e6..d0e7db65c19 100644 --- a/Sources/Services/AWSKMS/KMSClient.swift +++ b/Sources/Services/AWSKMS/KMSClient.swift @@ -69,7 +69,7 @@ public struct KMSClientLogHandlerFactory: ClientRuntime.SDKLogHandlerFactory { extension KMSClient: KMSClientProtocol { /// Performs the `CancelKeyDeletion` operation on the `TrentService` service. /// - /// Cancels the deletion of a KMS key. When this operation succeeds, the key state of the KMS key is Disabled. To enable the KMS key, use [EnableKey]. For more information about scheduling and canceling deletion of a KMS key, see [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:CancelKeyDeletion](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [ScheduleKeyDeletion] + /// Cancels the deletion of a KMS key. When this operation succeeds, the key state of the KMS key is Disabled. To enable the KMS key, use [EnableKey]. For more information about scheduling and canceling deletion of a KMS key, see [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:CancelKeyDeletion](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [ScheduleKeyDeletion] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter CancelKeyDeletionInput : [no documentation found] /// @@ -136,6 +136,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [UpdateCustomKeyStore] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ConnectCustomKeyStoreInput : [no documentation found] /// /// - Returns: `ConnectCustomKeyStoreOutput` : [no documentation found] @@ -219,6 +222,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [UpdateAlias] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter CreateAliasInput : [no documentation found] /// /// - Returns: `CreateAliasOutput` : [no documentation found] @@ -293,6 +299,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [UpdateCustomKeyStore] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter CreateCustomKeyStoreInput : [no documentation found] /// /// - Returns: `CreateCustomKeyStoreOutput` : [no documentation found] @@ -324,7 +333,7 @@ extension KMSClient: KMSClientProtocol { /// - `XksProxyUriInUseException` : The request was rejected because the concatenation of the XksProxyUriEndpoint and XksProxyUriPath is already associated with an external key store in the Amazon Web Services account and Region. Each external key store in an account and Region must use a unique external key store proxy API address. /// - `XksProxyUriUnreachableException` : KMS was unable to reach the specified XksProxyUriPath. The path must be reachable before you create the external key store or update its settings. This exception is also thrown when the external key store proxy response to a GetHealthStatus request indicates that all external key manager instances are unavailable. /// - `XksProxyVpcEndpointServiceInUseException` : The request was rejected because the specified Amazon VPC endpoint service is already associated with an external key store in the Amazon Web Services account and Region. Each external key store in an Amazon Web Services account and Region must use a different Amazon VPC endpoint service. - /// - `XksProxyVpcEndpointServiceInvalidConfigurationException` : The request was rejected because the Amazon VPC endpoint service configuration does not fulfill the requirements for an external key store proxy. For details, see the exception message and [review the requirements] for Amazon VPC endpoint service connectivity for an external key store. + /// - `XksProxyVpcEndpointServiceInvalidConfigurationException` : The request was rejected because the Amazon VPC endpoint service configuration does not fulfill the requirements for an external key store proxy. For details, see the exception message and [review the requirements](https://docs.aws.amazon.com/kms/latest/developerguide/vpc-connectivity.html#xks-vpc-requirements) for Amazon VPC endpoint service connectivity for an external key store. /// - `XksProxyVpcEndpointServiceNotFoundException` : The request was rejected because KMS could not find the specified VPC endpoint service. Use [DescribeCustomKeyStores] to verify the VPC endpoint service name for the external key store. Also, confirm that the Allow principals list for the VPC endpoint service includes the KMS service principal for the Region, such as cks.kms.us-east-1.amazonaws.com. public func createCustomKeyStore(input: CreateCustomKeyStoreInput) async throws -> CreateCustomKeyStoreOutput { @@ -380,6 +389,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [RevokeGrant] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter CreateGrantInput : [no documentation found] /// /// - Returns: `CreateGrantOutput` : [no documentation found] @@ -445,6 +457,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [ScheduleKeyDeletion] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter CreateKeyInput : [no documentation found] /// /// - Returns: `CreateKeyOutput` : [no documentation found] @@ -534,7 +549,7 @@ extension KMSClient: KMSClientProtocol { /// * [GenerateDataKeyPairWithoutPlaintext] /// /// - /// You can use this operation to decrypt ciphertext that was encrypted under a symmetric encryption KMS key or an asymmetric encryption KMS key. When the KMS key is asymmetric, you must specify the KMS key and the encryption algorithm that was used to encrypt the ciphertext. For information about asymmetric KMS keys, see [Asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the Key Management Service Developer Guide. The Decrypt operation also decrypts ciphertext that was encrypted outside of KMS by the public key in an KMS asymmetric KMS key. However, it cannot decrypt symmetric ciphertext produced by other libraries, such as the [Amazon Web Services Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/) or [Amazon S3 client-side encryption](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html). These libraries return a ciphertext format that is incompatible with KMS. If the ciphertext was encrypted under a symmetric encryption KMS key, the KeyId parameter is optional. KMS can get this information from metadata that it adds to the symmetric ciphertext blob. This feature adds durability to your implementation by ensuring that authorized users can decrypt ciphertext decades after it was encrypted, even if they've lost track of the key ID. However, specifying the KMS key is always recommended as a best practice. When you use the KeyId parameter to specify a KMS key, KMS only uses the KMS key you specify. If the ciphertext was encrypted under a different KMS key, the Decrypt operation fails. This practice ensures that you use the KMS key that you intend. Whenever possible, use key policies to give users permission to call the Decrypt operation on a particular KMS key, instead of using &IAM; policies. Otherwise, you might create an &IAM; policy that gives the user Decrypt permission on all KMS keys. This user could decrypt ciphertext that was encrypted by KMS keys in other accounts if the key policy for the cross-account KMS key permits it. If you must use an IAM policy for Decrypt permissions, limit the user to particular KMS keys or particular trusted accounts. For details, see [Best practices for IAM policies](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html#iam-policies-best-practices) in the Key Management Service Developer Guide. Decrypt also supports [Amazon Web Services Nitro Enclaves](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave.html), which provide an isolated compute environment in Amazon EC2. To call Decrypt for a Nitro enclave, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. Use the Recipient parameter to provide the attestation document for the enclave. Instead of the plaintext data, the response includes the plaintext data encrypted with the public key from the attestation document (CiphertextForRecipient).For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide.. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. If you use the KeyId parameter to identify a KMS key in a different Amazon Web Services account, specify the key ARN or the alias ARN of the KMS key. Required permissions: [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: + /// You can use this operation to decrypt ciphertext that was encrypted under a symmetric encryption KMS key or an asymmetric encryption KMS key. When the KMS key is asymmetric, you must specify the KMS key and the encryption algorithm that was used to encrypt the ciphertext. For information about asymmetric KMS keys, see [Asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the Key Management Service Developer Guide. The Decrypt operation also decrypts ciphertext that was encrypted outside of KMS by the public key in an KMS asymmetric KMS key. However, it cannot decrypt symmetric ciphertext produced by other libraries, such as the [Amazon Web Services Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/) or [Amazon S3 client-side encryption](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html). These libraries return a ciphertext format that is incompatible with KMS. If the ciphertext was encrypted under a symmetric encryption KMS key, the KeyId parameter is optional. KMS can get this information from metadata that it adds to the symmetric ciphertext blob. This feature adds durability to your implementation by ensuring that authorized users can decrypt ciphertext decades after it was encrypted, even if they've lost track of the key ID. However, specifying the KMS key is always recommended as a best practice. When you use the KeyId parameter to specify a KMS key, KMS only uses the KMS key you specify. If the ciphertext was encrypted under a different KMS key, the Decrypt operation fails. This practice ensures that you use the KMS key that you intend. Whenever possible, use key policies to give users permission to call the Decrypt operation on a particular KMS key, instead of using &IAM; policies. Otherwise, you might create an &IAM; policy that gives the user Decrypt permission on all KMS keys. This user could decrypt ciphertext that was encrypted by KMS keys in other accounts if the key policy for the cross-account KMS key permits it. If you must use an IAM policy for Decrypt permissions, limit the user to particular KMS keys or particular trusted accounts. For details, see [Best practices for IAM policies](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html#iam-policies-best-practices) in the Key Management Service Developer Guide. Decrypt also supports [Amazon Web Services Nitro Enclaves](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave.html), which provide an isolated compute environment in Amazon EC2. To call Decrypt for a Nitro enclave, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. Use the Recipient parameter to provide the attestation document for the enclave. Instead of the plaintext data, the response includes the plaintext data encrypted with the public key from the attestation document (CiphertextForRecipient). For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. If you use the KeyId parameter to identify a KMS key in a different Amazon Web Services account, specify the key ARN or the alias ARN of the KMS key. Required permissions: [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: /// /// * [Encrypt] /// @@ -544,6 +559,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [ReEncrypt] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DecryptInput : [no documentation found] /// /// - Returns: `DecryptOutput` : [no documentation found] @@ -625,6 +643,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [UpdateAlias] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DeleteAliasInput : [no documentation found] /// /// - Returns: `DeleteAliasOutput` : [no documentation found] @@ -689,6 +710,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [UpdateCustomKeyStore] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DeleteCustomKeyStoreInput : [no documentation found] /// /// - Returns: `DeleteCustomKeyStoreOutput` : [no documentation found] @@ -753,6 +777,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [ImportKeyMaterial] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DeleteImportedKeyMaterialInput : [no documentation found] /// /// - Returns: `DeleteImportedKeyMaterialOutput` : [no documentation found] @@ -819,6 +846,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [UpdateCustomKeyStore] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DescribeCustomKeyStoresInput : [no documentation found] /// /// - Returns: `DescribeCustomKeyStoresOutput` : [no documentation found] @@ -866,7 +896,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `DescribeKey` operation on the `TrentService` service. /// - /// Provides detailed information about a KMS key. You can run DescribeKey on a [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) or an [Amazon Web Services managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk). This detailed information includes the key ARN, creation date (and deletion date, if applicable), the key state, and the origin and expiration date (if any) of the key material. It includes fields, like KeySpec, that help you distinguish different types of KMS keys. It also displays the key usage (encryption, signing, or generating and verifying MACs) and the algorithms that the KMS key supports. For [multi-Region keys], DescribeKey displays the primary key and all related replica keys. For KMS keys in [CloudHSM key stores], it includes information about the key store, such as the key store ID and the CloudHSM cluster ID. For KMS keys in [external key stores], it includes the custom key store ID and the ID of the external key. DescribeKey does not return the following information: + /// Provides detailed information about a KMS key. You can run DescribeKey on a [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) or an [Amazon Web Services managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk). This detailed information includes the key ARN, creation date (and deletion date, if applicable), the key state, and the origin and expiration date (if any) of the key material. It includes fields, like KeySpec, that help you distinguish different types of KMS keys. It also displays the key usage (encryption, signing, or generating and verifying MACs) and the algorithms that the KMS key supports. For [multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html), DescribeKey displays the primary key and all related replica keys. For KMS keys in [CloudHSM key stores](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-cloudhsm.html), it includes information about the key store, such as the key store ID and the CloudHSM cluster ID. For KMS keys in [external key stores](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html), it includes the custom key store ID and the ID of the external key. DescribeKey does not return the following information: /// /// * Aliases associated with the KMS key. To get this information, use [ListAliases]. /// @@ -893,6 +923,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [ListRetirableGrants] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DescribeKeyInput : [no documentation found] /// /// - Returns: `DescribeKeyOutput` : [no documentation found] @@ -941,7 +974,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `DisableKey` operation on the `TrentService` service. /// - /// Sets the state of a KMS key to disabled. This change temporarily prevents use of the KMS key for [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations). For more information about how key state affects the use of a KMS key, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide . The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:DisableKey](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [EnableKey] + /// Sets the state of a KMS key to disabled. This change temporarily prevents use of the KMS key for [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations). For more information about how key state affects the use of a KMS key, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide . The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:DisableKey](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [EnableKey] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter DisableKeyInput : [no documentation found] /// @@ -1002,6 +1035,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [GetKeyRotationStatus] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DisableKeyRotationInput : [no documentation found] /// /// - Returns: `DisableKeyRotationOutput` : [no documentation found] @@ -1069,6 +1105,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [UpdateCustomKeyStore] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DisconnectCustomKeyStoreInput : [no documentation found] /// /// - Returns: `DisconnectCustomKeyStoreOutput` : [no documentation found] @@ -1126,7 +1165,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `EnableKey` operation on the `TrentService` service. /// - /// Sets the key state of a KMS key to enabled. This allows you to use the KMS key for [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations). The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:EnableKey](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [DisableKey] + /// Sets the key state of a KMS key to enabled. This allows you to use the KMS key for [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations). The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:EnableKey](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [DisableKey] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter EnableKeyInput : [no documentation found] /// @@ -1182,12 +1221,15 @@ extension KMSClient: KMSClientProtocol { /// Performs the `EnableKeyRotation` operation on the `TrentService` service. /// - /// Enables [automatic rotation of the key material](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) of the specified symmetric encryption KMS key. When you enable automatic rotation of a[customer managed KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk), KMS rotates the key material of the KMS key one year (approximately 365 days) from the enable date and every year thereafter. You can monitor rotation of the key material for your KMS keys in CloudTrail and Amazon CloudWatch. To disable rotation of the key material in a customer managed KMS key, use the [DisableKeyRotation] operation. Automatic key rotation is supported only on [symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks). You cannot enable automatic rotation of [asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html), [HMAC KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html), KMS keys with [imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html), or KMS keys in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html). To enable or disable automatic rotation of a set of related [multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate), set the property on the primary key. You cannot enable or disable automatic rotation [Amazon Web Services managed KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk). KMS always rotates the key material of Amazon Web Services managed keys every year. Rotation of [Amazon Web Services owned KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) varies. In May 2022, KMS changed the rotation schedule for Amazon Web Services managed keys from every three years (approximately 1,095 days) to every year (approximately 365 days). New Amazon Web Services managed keys are automatically rotated one year after they are created, and approximately every year thereafter. Existing Amazon Web Services managed keys are automatically rotated one year after their most recent rotation, and every year thereafter. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:EnableKeyRotation](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: + /// Enables [automatic rotation of the key material](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) of the specified symmetric encryption KMS key. When you enable automatic rotation of a [customer managed KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk), KMS rotates the key material of the KMS key one year (approximately 365 days) from the enable date and every year thereafter. You can monitor rotation of the key material for your KMS keys in CloudTrail and Amazon CloudWatch. To disable rotation of the key material in a customer managed KMS key, use the [DisableKeyRotation] operation. Automatic key rotation is supported only on [symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks). You cannot enable automatic rotation of [asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html), [HMAC KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html), KMS keys with [imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html), or KMS keys in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html). To enable or disable automatic rotation of a set of related [multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate), set the property on the primary key. You cannot enable or disable automatic rotation [Amazon Web Services managed KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk). KMS always rotates the key material of Amazon Web Services managed keys every year. Rotation of [Amazon Web Services owned KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) varies. In May 2022, KMS changed the rotation schedule for Amazon Web Services managed keys from every three years (approximately 1,095 days) to every year (approximately 365 days). New Amazon Web Services managed keys are automatically rotated one year after they are created, and approximately every year thereafter. Existing Amazon Web Services managed keys are automatically rotated one year after their most recent rotation, and every year thereafter. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:EnableKeyRotation](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: /// /// * [DisableKeyRotation] /// /// * [GetKeyRotationStatus] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter EnableKeyRotationInput : [no documentation found] /// /// - Returns: `EnableKeyRotationOutput` : [no documentation found] @@ -1290,6 +1332,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [GenerateDataKeyPair] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter EncryptInput : [no documentation found] /// /// - Returns: `EncryptOutput` : [no documentation found] @@ -1382,6 +1427,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [GenerateDataKeyWithoutPlaintext] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter GenerateDataKeyInput : [no documentation found] /// /// - Returns: `GenerateDataKeyOutput` : [no documentation found] @@ -1446,7 +1494,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `GenerateDataKeyPair` operation on the `TrentService` service. /// - /// Returns a unique asymmetric data key pair for use outside of KMS. This operation returns a plaintext public key, a plaintext private key, and a copy of the private key that is encrypted under the symmetric encryption KMS key you specify. You can use the data key pair to perform asymmetric cryptography and implement digital signatures outside of KMS. The bytes in the keys are random; they not related to the caller or to the KMS key that is used to encrypt the private key. You can use the public key that GenerateDataKeyPair returns to encrypt data or verify a signature outside of KMS. Then, store the encrypted private key with the data. When you are ready to decrypt data or sign a message, you can use the [Decrypt] operation to decrypt the encrypted private key. To generate a data key pair, you must specify a symmetric encryption KMS key to encrypt the private key in a data key pair. You cannot use an asymmetric KMS key or a KMS key in a custom key store. To get the type and origin of your KMS key, use the [DescribeKey] operation. Use the KeyPairSpec parameter to choose an RSA or Elliptic Curve (ECC) data key pair. In China Regions, you can also choose an SM2 data key pair. KMS recommends that you use ECC key pairs for signing, and use RSA and SM2 key pairs for either encryption or signing, but not both. However, KMS cannot enforce any restrictions on the use of data key pairs outside of KMS. If you are using the data key pair to encrypt data, or for any operation where you don't immediately need a private key, consider using the [GenerateDataKeyPairWithoutPlaintext] operation. GenerateDataKeyPairWithoutPlaintext returns a plaintext public key and an encrypted private key, but omits the plaintext private key that you need only to decrypt ciphertext or sign a message. Later, when you need to decrypt the data or sign a message, use the [Decrypt] operation to decrypt the encrypted private key in the data key pair. GenerateDataKeyPair returns a unique data key pair for each request. The bytes in the keys are random; they are not related to the caller or the KMS key that is used to encrypt the private key. The public key is a DER-encoded X.509 SubjectPublicKeyInfo, as specified in [RFC 5280](https://tools.ietf.org/html/rfc5280). The private key is a DER-encoded PKCS8 PrivateKeyInfo, as specified in [RFC 5958](https://tools.ietf.org/html/rfc5958). GenerateDataKeyPair also supports [Amazon Web Services Nitro Enclaves](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave.html), which provide an isolated compute environment in Amazon EC2. To call GenerateDataKeyPair for an Amazon Web Services Nitro enclave, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. Use the Recipient parameter to provide the attestation document for the enclave. GenerateDataKeyPair returns the public data key and a copy of the private data key encrypted under the specified KMS key, as usual. But instead of a plaintext copy of the private data key (PrivateKeyPlaintext), the response includes a copy of the private data key encrypted under the public key from the attestation document (CiphertextForRecipient). For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide.. You can use an optional encryption context to add additional security to the encryption operation. If you specify an EncryptionContext, you must specify the same encryption context (a case-sensitive exact match) when decrypting the encrypted data key. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see [Encryption Context](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: + /// Returns a unique asymmetric data key pair for use outside of KMS. This operation returns a plaintext public key, a plaintext private key, and a copy of the private key that is encrypted under the symmetric encryption KMS key you specify. You can use the data key pair to perform asymmetric cryptography and implement digital signatures outside of KMS. The bytes in the keys are random; they are not related to the caller or to the KMS key that is used to encrypt the private key. You can use the public key that GenerateDataKeyPair returns to encrypt data or verify a signature outside of KMS. Then, store the encrypted private key with the data. When you are ready to decrypt data or sign a message, you can use the [Decrypt] operation to decrypt the encrypted private key. To generate a data key pair, you must specify a symmetric encryption KMS key to encrypt the private key in a data key pair. You cannot use an asymmetric KMS key or a KMS key in a custom key store. To get the type and origin of your KMS key, use the [DescribeKey] operation. Use the KeyPairSpec parameter to choose an RSA or Elliptic Curve (ECC) data key pair. In China Regions, you can also choose an SM2 data key pair. KMS recommends that you use ECC key pairs for signing, and use RSA and SM2 key pairs for either encryption or signing, but not both. However, KMS cannot enforce any restrictions on the use of data key pairs outside of KMS. If you are using the data key pair to encrypt data, or for any operation where you don't immediately need a private key, consider using the [GenerateDataKeyPairWithoutPlaintext] operation. GenerateDataKeyPairWithoutPlaintext returns a plaintext public key and an encrypted private key, but omits the plaintext private key that you need only to decrypt ciphertext or sign a message. Later, when you need to decrypt the data or sign a message, use the [Decrypt] operation to decrypt the encrypted private key in the data key pair. GenerateDataKeyPair returns a unique data key pair for each request. The bytes in the keys are random; they are not related to the caller or the KMS key that is used to encrypt the private key. The public key is a DER-encoded X.509 SubjectPublicKeyInfo, as specified in [RFC 5280](https://tools.ietf.org/html/rfc5280). The private key is a DER-encoded PKCS8 PrivateKeyInfo, as specified in [RFC 5958](https://tools.ietf.org/html/rfc5958). GenerateDataKeyPair also supports [Amazon Web Services Nitro Enclaves](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave.html), which provide an isolated compute environment in Amazon EC2. To call GenerateDataKeyPair for an Amazon Web Services Nitro enclave, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. Use the Recipient parameter to provide the attestation document for the enclave. GenerateDataKeyPair returns the public data key and a copy of the private data key encrypted under the specified KMS key, as usual. But instead of a plaintext copy of the private data key (PrivateKeyPlaintext), the response includes a copy of the private data key encrypted under the public key from the attestation document (CiphertextForRecipient). For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide.. You can use an optional encryption context to add additional security to the encryption operation. If you specify an EncryptionContext, you must specify the same encryption context (a case-sensitive exact match) when decrypting the encrypted data key. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see [Encryption Context](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: /// /// * [Decrypt] /// @@ -1458,6 +1506,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [GenerateDataKeyWithoutPlaintext] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter GenerateDataKeyPairInput : [no documentation found] /// /// - Returns: `GenerateDataKeyPairOutput` : [no documentation found] @@ -1535,6 +1586,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [GenerateDataKeyWithoutPlaintext] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter GenerateDataKeyPairWithoutPlaintextInput : [no documentation found] /// /// - Returns: `GenerateDataKeyPairWithoutPlaintextOutput` : [no documentation found] @@ -1612,6 +1666,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [GenerateDataKeyPairWithoutPlaintext] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter GenerateDataKeyWithoutPlaintextInput : [no documentation found] /// /// - Returns: `GenerateDataKeyWithoutPlaintextOutput` : [no documentation found] @@ -1676,7 +1733,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `GenerateMac` operation on the `TrentService` service. /// - /// Generates a hash-based message authentication code (HMAC) for a message using an HMAC KMS key and a MAC algorithm that the key supports. HMAC KMS keys and the HMAC algorithms that KMS uses conform to industry standards defined in [RFC 2104](https://datatracker.ietf.org/doc/html/rfc2104). You can use value that GenerateMac returns in the [VerifyMac] operation to demonstrate that the original message has not changed. Also, because a secret key is used to create the hash, you can verify that the party that generated the hash has the required secret key. You can also use the raw result to implement HMAC-based algorithms such as key derivation functions. This operation is part of KMS support for HMAC KMS keys. For details, see [HMAC keys in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the Key Management Service Developer Guide . Best practices recommend that you limit the time during which any signing mechanism, including an HMAC, is effective. This deters an attack where the actor uses a signed message to establish validity repeatedly or long after the message is superseded. HMAC tags do not include a timestamp, but you can include a timestamp in the token or message to help you detect when its time to refresh the HMAC. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:GenerateMac](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [VerifyMac] + /// Generates a hash-based message authentication code (HMAC) for a message using an HMAC KMS key and a MAC algorithm that the key supports. HMAC KMS keys and the HMAC algorithms that KMS uses conform to industry standards defined in [RFC 2104](https://datatracker.ietf.org/doc/html/rfc2104). You can use value that GenerateMac returns in the [VerifyMac] operation to demonstrate that the original message has not changed. Also, because a secret key is used to create the hash, you can verify that the party that generated the hash has the required secret key. You can also use the raw result to implement HMAC-based algorithms such as key derivation functions. This operation is part of KMS support for HMAC KMS keys. For details, see [HMAC keys in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the Key Management Service Developer Guide . Best practices recommend that you limit the time during which any signing mechanism, including an HMAC, is effective. This deters an attack where the actor uses a signed message to establish validity repeatedly or long after the message is superseded. HMAC tags do not include a timestamp, but you can include a timestamp in the token or message to help you detect when its time to refresh the HMAC. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:GenerateMac](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [VerifyMac] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter GenerateMacInput : [no documentation found] /// @@ -1741,7 +1798,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `GenerateRandom` operation on the `TrentService` service. /// - /// Returns a random byte string that is cryptographically secure. You must use the NumberOfBytes parameter to specify the length of the random byte string. There is no default value for string length. By default, the random byte string is generated in KMS. To generate the byte string in the CloudHSM cluster associated with an CloudHSM key store, use the CustomKeyStoreId parameter. GenerateRandom also supports [Amazon Web Services Nitro Enclaves](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave.html), which provide an isolated compute environment in Amazon EC2. To call GenerateRandom for a Nitro enclave, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. Use the Recipient parameter to provide the attestation document for the enclave. Instead of plaintext bytes, the response includes the plaintext bytes encrypted under the public key from the attestation document (CiphertextForRecipient).For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide. For more information about entropy and random number generation, see [Key Management Service Cryptographic Details](https://docs.aws.amazon.com/kms/latest/cryptographic-details/). Cross-account use: Not applicable. GenerateRandom does not use any account-specific resources, such as KMS keys. Required permissions: [kms:GenerateRandom](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (IAM policy) + /// Returns a random byte string that is cryptographically secure. You must use the NumberOfBytes parameter to specify the length of the random byte string. There is no default value for string length. By default, the random byte string is generated in KMS. To generate the byte string in the CloudHSM cluster associated with an CloudHSM key store, use the CustomKeyStoreId parameter. GenerateRandom also supports [Amazon Web Services Nitro Enclaves](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave.html), which provide an isolated compute environment in Amazon EC2. To call GenerateRandom for a Nitro enclave, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. Use the Recipient parameter to provide the attestation document for the enclave. Instead of plaintext bytes, the response includes the plaintext bytes encrypted under the public key from the attestation document (CiphertextForRecipient).For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide. For more information about entropy and random number generation, see [Key Management Service Cryptographic Details](https://docs.aws.amazon.com/kms/latest/cryptographic-details/). Cross-account use: Not applicable. GenerateRandom does not use any account-specific resources, such as KMS keys. Required permissions: [kms:GenerateRandom](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (IAM policy) Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter GenerateRandomInput : [no documentation found] /// @@ -1802,7 +1859,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `GetKeyPolicy` operation on the `TrentService` service. /// - /// Gets a key policy attached to the specified KMS key. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [PutKeyPolicy] + /// Gets a key policy attached to the specified KMS key. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter GetKeyPolicyInput : [no documentation found] /// @@ -1870,6 +1927,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [EnableKeyRotation] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter GetKeyRotationStatusInput : [no documentation found] /// /// - Returns: `GetKeyRotationStatusOutput` : [no documentation found] @@ -1924,7 +1984,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `GetParametersForImport` operation on the `TrentService` service. /// - /// Returns the public key and an import token you need to import or reimport key material for a KMS key. By default, KMS keys are created with key material that KMS generates. This operation supports [Importing key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html), an advanced feature that lets you generate and import the cryptographic key material for a KMS key. For more information about importing key material into KMS, see [Importing key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) in the Key Management Service Developer Guide. Before calling GetParametersForImport, use the [CreateKey] operation with an Origin value of EXTERNAL to create a KMS key with no key material. You can import key material for a symmetric encryption KMS key, HMAC KMS key, asymmetric encryption KMS key, or asymmetric signing KMS key. You can also import key material into a [multi-Region key] of any supported type. However, you can't import key material into a KMS key in a [custom key store]. You can also use GetParametersForImport to get a public key and import token to [reimport the original key material] into a KMS key whose key material expired or was deleted. GetParametersForImport returns the items that you need to import your key material. + /// Returns the public key and an import token you need to import or reimport key material for a KMS key. By default, KMS keys are created with key material that KMS generates. This operation supports [Importing key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html), an advanced feature that lets you generate and import the cryptographic key material for a KMS key. For more information about importing key material into KMS, see [Importing key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) in the Key Management Service Developer Guide. Before calling GetParametersForImport, use the [CreateKey] operation with an Origin value of EXTERNAL to create a KMS key with no key material. You can import key material for a symmetric encryption KMS key, HMAC KMS key, asymmetric encryption KMS key, or asymmetric signing KMS key. You can also import key material into a [multi-Region key](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) of any supported type. However, you can't import key material into a KMS key in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html). You can also use GetParametersForImport to get a public key and import token to [reimport the original key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html#reimport-key-material) into a KMS key whose key material expired or was deleted. GetParametersForImport returns the items that you need to import your key material. /// /// * The public key (or "wrapping key") of an RSA key pair that KMS generates. You will use this public key to encrypt ("wrap") your key material while it's in transit to KMS. /// @@ -1946,6 +2006,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [DeleteImportedKeyMaterial] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter GetParametersForImportInput : [no documentation found] /// /// - Returns: `GetParametersForImportOutput` : [no documentation found] @@ -2009,7 +2072,7 @@ extension KMSClient: KMSClientProtocol { /// * [EncryptionAlgorithms](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html#KMS-GetPublicKey-response-EncryptionAlgorithms) or [SigningAlgorithms](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html#KMS-GetPublicKey-response-SigningAlgorithms): A list of the encryption algorithms or the signing algorithms for the key. /// /// - /// Although KMS cannot enforce these restrictions on external operations, it is crucial that you use this information to prevent the public key from being used improperly. For example, you can prevent a public signing key from being used encrypt data, or prevent a public key from being used with an encryption algorithm that is not supported by KMS. You can also avoid errors, such as using the wrong signing algorithm in a verification operation. To verify a signature outside of KMS with an SM2 public key (China Regions only), you must specify the distinguishing ID. By default, KMS uses 1234567812345678 as the distinguishing ID. For more information, see [Offline verification with SM2 key pairs](https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-sm-offline-verification). The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:GetPublicKey](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [CreateKey] + /// Although KMS cannot enforce these restrictions on external operations, it is crucial that you use this information to prevent the public key from being used improperly. For example, you can prevent a public signing key from being used encrypt data, or prevent a public key from being used with an encryption algorithm that is not supported by KMS. You can also avoid errors, such as using the wrong signing algorithm in a verification operation. To verify a signature outside of KMS with an SM2 public key (China Regions only), you must specify the distinguishing ID. By default, KMS uses 1234567812345678 as the distinguishing ID. For more information, see [Offline verification with SM2 key pairs](https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-sm-offline-verification). The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:GetPublicKey](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [CreateKey] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter GetPublicKeyInput : [no documentation found] /// @@ -2104,6 +2167,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [GetParametersForImport] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ImportKeyMaterialInput : [no documentation found] /// /// - Returns: `ImportKeyMaterialOutput` : [no documentation found] @@ -2170,6 +2236,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [UpdateAlias] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ListAliasesInput : [no documentation found] /// /// - Returns: `ListAliasesOutput` : [no documentation found] @@ -2229,6 +2298,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [RevokeGrant] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ListGrantsInput : [no documentation found] /// /// - Returns: `ListGrantsOutput` : [no documentation found] @@ -2288,7 +2360,10 @@ extension KMSClient: KMSClientProtocol { /// /// * [GetKeyPolicy] /// - /// * [PutKeyPolicy] + /// * [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) + /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter ListKeyPoliciesInput : [no documentation found] /// @@ -2353,6 +2428,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [ListResourceTags] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ListKeysInput : [no documentation found] /// /// - Returns: `ListKeysOutput` : [no documentation found] @@ -2410,6 +2488,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [UntagResource] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ListResourceTagsInput : [no documentation found] /// /// - Returns: `ListResourceTagsOutput` : [no documentation found] @@ -2458,7 +2539,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `ListRetirableGrants` operation on the `TrentService` service. /// - /// Returns information about all grants in the Amazon Web Services account and Region that have the specified retiring principal. You can specify any principal in your Amazon Web Services account. The grants that are returned include grants for KMS keys in your Amazon Web Services account and other Amazon Web Services accounts. You might use this operation to determine which grants you may retire. To retire a grant, use the [RetireGrant] operation. For detailed information about grants, including grant terminology, see [Grants in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) in the Key Management Service Developer Guide . For examples of working with grants in several programming languages, see [Programming grants](https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html). Cross-account use: You must specify a principal in your Amazon Web Services account. However, this operation can return grants in any Amazon Web Services account. You do not need kms:ListRetirableGrants permission (or any other additional permission) in any Amazon Web Services account other than your own. Required permissions: [kms:ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (IAM policy) in your Amazon Web Services account. Related operations: + /// Returns information about all grants in the Amazon Web Services account and Region that have the specified retiring principal. You can specify any principal in your Amazon Web Services account. The grants that are returned include grants for KMS keys in your Amazon Web Services account and other Amazon Web Services accounts. You might use this operation to determine which grants you may retire. To retire a grant, use the [RetireGrant] operation. For detailed information about grants, including grant terminology, see [Grants in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) in the Key Management Service Developer Guide . For examples of working with grants in several programming languages, see [Programming grants](https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html). Cross-account use: You must specify a principal in your Amazon Web Services account. This operation returns a list of grants where the retiring principal specified in the ListRetirableGrants request is the same retiring principal on the grant. This can include grants on KMS keys owned by other Amazon Web Services accounts, but you do not need kms:ListRetirableGrants permission (or any other additional permission) in any Amazon Web Services account other than your own. Required permissions: [kms:ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (IAM policy) in your Amazon Web Services account. KMS authorizes ListRetirableGrants requests by evaluating the caller account's kms:ListRetirableGrants permissions. The authorized resource in ListRetirableGrants calls is the retiring principal specified in the request. KMS does not evaluate the caller's permissions to verify their access to any KMS keys or grants that might be returned by the ListRetirableGrants call. Related operations: /// /// * [CreateGrant] /// @@ -2468,6 +2549,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [RevokeGrant] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ListRetirableGrantsInput : [no documentation found] /// /// - Returns: `ListRetirableGrantsOutput` : [no documentation found] @@ -2517,7 +2601,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `PutKeyPolicy` operation on the `TrentService` service. /// - /// Attaches a key policy to the specified KMS key. For more information about key policies, see [Key Policies](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) in the Key Management Service Developer Guide. For help writing and formatting a JSON policy document, see the [IAM JSON Policy Reference](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) in the Identity and Access Management User Guide . For examples of adding a key policy in multiple programming languages, see [Setting a key policy](https://docs.aws.amazon.com/kms/latest/developerguide/programming-key-policies.html#put-policy) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [GetKeyPolicy] + /// Attaches a key policy to the specified KMS key. For more information about key policies, see [Key Policies](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) in the Key Management Service Developer Guide. For help writing and formatting a JSON policy document, see the [IAM JSON Policy Reference](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) in the Identity and Access Management User Guide . For examples of adding a key policy in multiple programming languages, see [Setting a key policy](https://docs.aws.amazon.com/kms/latest/developerguide/programming-key-policies.html#put-policy) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [GetKeyPolicy] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter PutKeyPolicyInput : [no documentation found] /// @@ -2601,6 +2685,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [GenerateDataKeyPair] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ReEncryptInput : [no documentation found] /// /// - Returns: `ReEncryptOutput` : [no documentation found] @@ -2667,7 +2754,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `ReplicateKey` operation on the `TrentService` service. /// - /// Replicates a multi-Region key into the specified Region. This operation creates a multi-Region replica key based on a multi-Region primary key in a different Region of the same Amazon Web Services partition. You can create multiple replicas of a primary key, but each must be in a different Region. To create a multi-Region primary key, use the [CreateKey] operation. This operation supports multi-Region keys, an KMS feature that lets you create multiple interoperable KMS keys in different Amazon Web Services Regions. Because these KMS keys have the same key ID, key material, and other metadata, you can use them interchangeably to encrypt data in one Amazon Web Services Region and decrypt it in a different Amazon Web Services Region without re-encrypting the data or making a cross-Region call. For more information about multi-Region keys, see [Multi-Region keys in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the Key Management Service Developer Guide. A replica key is a fully-functional KMS key that can be used independently of its primary and peer replica keys. A primary key and its replica keys share properties that make them interoperable. They have the same [key ID](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-id) and key material. They also have the same [key spec](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-spec), [key usage](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-usage), [key material origin](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-origin), and [automatic key rotation status](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html). KMS automatically synchronizes these shared properties among related multi-Region keys. All other properties of a replica key can differ, including its [key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), [tags](https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html), [aliases](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html), and [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html). KMS pricing and quotas for KMS keys apply to each primary key and replica key. When this operation completes, the new replica key has a transient key state of Creating. This key state changes to Enabled (or PendingImport) after a few seconds when the process of creating the new replica key is complete. While the key state is Creating, you can manage key, but you cannot yet use it in cryptographic operations. If you are creating and using the replica key programmatically, retry on KMSInvalidStateException or call DescribeKey to check its KeyState value before using it. For details about the Creating key state, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. You cannot create more than one replica of a primary key in any Region. If the Region already includes a replica of the key you're trying to replicate, ReplicateKey returns an AlreadyExistsException error. If the key state of the existing replica is PendingDeletion, you can cancel the scheduled key deletion ([CancelKeyDeletion]) or wait for the key to be deleted. The new replica key you create will have the same [shared properties](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-sync-properties) as the original replica key. The CloudTrail log of a ReplicateKey operation records a ReplicateKey operation in the primary key's Region and a [CreateKey] operation in the replica key's Region. If you replicate a multi-Region primary key with imported key material, the replica key is created with no key material. You must import the same key material that you imported into the primary key. For details, see [Importing key material into multi-Region keys] in the Key Management Service Developer Guide. To convert a replica key to a primary key, use the [UpdatePrimaryRegion] operation. ReplicateKey uses different default values for the KeyPolicy and Tags parameters than those used in the KMS console. For details, see the parameter descriptions. Cross-account use: No. You cannot use this operation to create a replica key in a different Amazon Web Services account. Required permissions: + /// Replicates a multi-Region key into the specified Region. This operation creates a multi-Region replica key based on a multi-Region primary key in a different Region of the same Amazon Web Services partition. You can create multiple replicas of a primary key, but each must be in a different Region. To create a multi-Region primary key, use the [CreateKey] operation. This operation supports multi-Region keys, an KMS feature that lets you create multiple interoperable KMS keys in different Amazon Web Services Regions. Because these KMS keys have the same key ID, key material, and other metadata, you can use them interchangeably to encrypt data in one Amazon Web Services Region and decrypt it in a different Amazon Web Services Region without re-encrypting the data or making a cross-Region call. For more information about multi-Region keys, see [Multi-Region keys in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the Key Management Service Developer Guide. A replica key is a fully-functional KMS key that can be used independently of its primary and peer replica keys. A primary key and its replica keys share properties that make them interoperable. They have the same [key ID](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-id) and key material. They also have the same [key spec](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-spec), [key usage](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-usage), [key material origin](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-origin), and [automatic key rotation status](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html). KMS automatically synchronizes these shared properties among related multi-Region keys. All other properties of a replica key can differ, including its [key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), [tags](https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html), [aliases](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html), and [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html). KMS pricing and quotas for KMS keys apply to each primary key and replica key. When this operation completes, the new replica key has a transient key state of Creating. This key state changes to Enabled (or PendingImport) after a few seconds when the process of creating the new replica key is complete. While the key state is Creating, you can manage key, but you cannot yet use it in cryptographic operations. If you are creating and using the replica key programmatically, retry on KMSInvalidStateException or call DescribeKey to check its KeyState value before using it. For details about the Creating key state, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. You cannot create more than one replica of a primary key in any Region. If the Region already includes a replica of the key you're trying to replicate, ReplicateKey returns an AlreadyExistsException error. If the key state of the existing replica is PendingDeletion, you can cancel the scheduled key deletion ([CancelKeyDeletion]) or wait for the key to be deleted. The new replica key you create will have the same [shared properties](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-sync-properties) as the original replica key. The CloudTrail log of a ReplicateKey operation records a ReplicateKey operation in the primary key's Region and a [CreateKey] operation in the replica key's Region. If you replicate a multi-Region primary key with imported key material, the replica key is created with no key material. You must import the same key material that you imported into the primary key. For details, see [Importing key material into multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-import.html) in the Key Management Service Developer Guide. To convert a replica key to a primary key, use the [UpdatePrimaryRegion] operation. ReplicateKey uses different default values for the KeyPolicy and Tags parameters than those used in the KMS console. For details, see the parameter descriptions. Cross-account use: No. You cannot use this operation to create a replica key in a different Amazon Web Services account. Required permissions: /// /// * kms:ReplicateKey on the primary key (in the primary key's Region). Include this permission in the primary key's key policy. /// @@ -2682,6 +2769,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [UpdatePrimaryRegion] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ReplicateKeyInput : [no documentation found] /// /// - Returns: `ReplicateKeyOutput` : [no documentation found] @@ -2740,7 +2830,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `RetireGrant` operation on the `TrentService` service. /// - /// Deletes a grant. Typically, you retire a grant when you no longer need its permissions. To identify the grant to retire, use a [grant token](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token), or both the grant ID and a key identifier (key ID or key ARN) of the KMS key. The [CreateGrant] operation returns both values. This operation can be called by the retiring principal for a grant, by the grantee principal if the grant allows the RetireGrant operation, and by the Amazon Web Services account in which the grant is created. It can also be called by principals to whom permission for retiring a grant is delegated. For details, see [Retiring and revoking grants](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete) in the Key Management Service Developer Guide. For detailed information about grants, including grant terminology, see [Grants in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) in the Key Management Service Developer Guide . For examples of working with grants in several programming languages, see [Programming grants](https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html). Cross-account use: Yes. You can retire a grant on a KMS key in a different Amazon Web Services account. Required permissions::Permission to retire a grant is determined primarily by the grant. For details, see [Retiring and revoking grants](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete) in the Key Management Service Developer Guide. Related operations: + /// Deletes a grant. Typically, you retire a grant when you no longer need its permissions. To identify the grant to retire, use a [grant token](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token), or both the grant ID and a key identifier (key ID or key ARN) of the KMS key. The [CreateGrant] operation returns both values. This operation can be called by the retiring principal for a grant, by the grantee principal if the grant allows the RetireGrant operation, and by the Amazon Web Services account in which the grant is created. It can also be called by principals to whom permission for retiring a grant is delegated. For details, see [Retiring and revoking grants](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete) in the Key Management Service Developer Guide. For detailed information about grants, including grant terminology, see [Grants in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) in the Key Management Service Developer Guide . For examples of working with grants in several programming languages, see [Programming grants](https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html). Cross-account use: Yes. You can retire a grant on a KMS key in a different Amazon Web Services account. Required permissions: Permission to retire a grant is determined primarily by the grant. For details, see [Retiring and revoking grants](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete) in the Key Management Service Developer Guide. Related operations: /// /// * [CreateGrant] /// @@ -2750,6 +2840,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [RevokeGrant] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter RetireGrantInput : [no documentation found] /// /// - Returns: `RetireGrantOutput` : [no documentation found] @@ -2816,6 +2909,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [RetireGrant] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter RevokeGrantInput : [no documentation found] /// /// - Returns: `RevokeGrantOutput` : [no documentation found] @@ -2871,12 +2967,15 @@ extension KMSClient: KMSClientProtocol { /// Performs the `ScheduleKeyDeletion` operation on the `TrentService` service. /// - /// Schedules the deletion of a KMS key. By default, KMS applies a waiting period of 30 days, but you can specify a waiting period of 7-30 days. When this operation is successful, the key state of the KMS key changes to PendingDeletion and the key can't be used in any cryptographic operations. It remains in this state for the duration of the waiting period. Before the waiting period ends, you can use [CancelKeyDeletion] to cancel the deletion of the KMS key. After the waiting period ends, KMS deletes the KMS key, its key material, and all KMS data associated with it, including all aliases that refer to it. Deleting a KMS key is a destructive and potentially dangerous operation. When a KMS key is deleted, all data that was encrypted under the KMS key is unrecoverable. (The only exception is a [multi-Region replica key], or an [asymmetric or HMAC KMS key with imported key material].) To prevent the use of a KMS key without deleting it, use [DisableKey]. You can schedule the deletion of a multi-Region primary key and its replica keys at any time. However, KMS will not delete a multi-Region primary key with existing replica keys. If you schedule the deletion of a primary key with replicas, its key state changes to PendingReplicaDeletion and it cannot be replicated or used in cryptographic operations. This status can continue indefinitely. When the last of its replicas keys is deleted (not just scheduled), the key state of the primary key changes to PendingDeletion and its waiting period (PendingWindowInDays) begins. For details, see [Deleting multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html) in the Key Management Service Developer Guide. When KMS [deletes a KMS key from an CloudHSM key store](https://docs.aws.amazon.com/kms/latest/developerguide/delete-cmk-keystore.html), it makes a best effort to delete the associated key material from the associated CloudHSM cluster. However, you might need to manually [delete the orphaned key material](https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html#fix-keystore-orphaned-key) from the cluster and its backups. [Deleting a KMS key from an external key store](https://docs.aws.amazon.com/kms/latest/developerguide/delete-xks-key.html) has no effect on the associated external key. However, for both types of custom key stores, deleting a KMS key is destructive and irreversible. You cannot decrypt ciphertext encrypted under the KMS key by using only its associated external key or CloudHSM key. Also, you cannot recreate a KMS key in an external key store by creating a new KMS key with the same key material. For more information about scheduling a KMS key for deletion, see [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: kms:ScheduleKeyDeletion (key policy) Related operations + /// Schedules the deletion of a KMS key. By default, KMS applies a waiting period of 30 days, but you can specify a waiting period of 7-30 days. When this operation is successful, the key state of the KMS key changes to PendingDeletion and the key can't be used in any cryptographic operations. It remains in this state for the duration of the waiting period. Before the waiting period ends, you can use [CancelKeyDeletion] to cancel the deletion of the KMS key. After the waiting period ends, KMS deletes the KMS key, its key material, and all KMS data associated with it, including all aliases that refer to it. Deleting a KMS key is a destructive and potentially dangerous operation. When a KMS key is deleted, all data that was encrypted under the KMS key is unrecoverable. (The only exception is a [multi-Region replica key](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html), or an [asymmetric or HMAC KMS key with imported key material].) To prevent the use of a KMS key without deleting it, use [DisableKey]. You can schedule the deletion of a multi-Region primary key and its replica keys at any time. However, KMS will not delete a multi-Region primary key with existing replica keys. If you schedule the deletion of a primary key with replicas, its key state changes to PendingReplicaDeletion and it cannot be replicated or used in cryptographic operations. This status can continue indefinitely. When the last of its replicas keys is deleted (not just scheduled), the key state of the primary key changes to PendingDeletion and its waiting period (PendingWindowInDays) begins. For details, see [Deleting multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html) in the Key Management Service Developer Guide. When KMS [deletes a KMS key from an CloudHSM key store](https://docs.aws.amazon.com/kms/latest/developerguide/delete-cmk-keystore.html), it makes a best effort to delete the associated key material from the associated CloudHSM cluster. However, you might need to manually [delete the orphaned key material](https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html#fix-keystore-orphaned-key) from the cluster and its backups. [Deleting a KMS key from an external key store](https://docs.aws.amazon.com/kms/latest/developerguide/delete-xks-key.html) has no effect on the associated external key. However, for both types of custom key stores, deleting a KMS key is destructive and irreversible. You cannot decrypt ciphertext encrypted under the KMS key by using only its associated external key or CloudHSM key. Also, you cannot recreate a KMS key in an external key store by creating a new KMS key with the same key material. For more information about scheduling a KMS key for deletion, see [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: kms:ScheduleKeyDeletion (key policy) Related operations /// /// * [CancelKeyDeletion] /// /// * [DisableKey] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ScheduleKeyDeletionInput : [no documentation found] /// /// - Returns: `ScheduleKeyDeletionOutput` : [no documentation found] @@ -2939,7 +3038,7 @@ extension KMSClient: KMSClientProtocol { /// * Choose a signing algorithm that is compatible with the KMS key. /// /// - /// When signing a message, be sure to record the KMS key and the signing algorithm. This information is required to verify the signature. Best practices recommend that you limit the time during which any signature is effective. This deters an attack where the actor uses a signed message to establish validity repeatedly or long after the message is superseded. Signatures do not include a timestamp, but you can include a timestamp in the signed message to help you detect when its time to refresh the signature. To verify the signature that this operation generates, use the [Verify] operation. Or use the [GetPublicKey] operation to download the public key and then use the public key to verify the signature outside of KMS. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:Sign](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [Verify] + /// When signing a message, be sure to record the KMS key and the signing algorithm. This information is required to verify the signature. Best practices recommend that you limit the time during which any signature is effective. This deters an attack where the actor uses a signed message to establish validity repeatedly or long after the message is superseded. Signatures do not include a timestamp, but you can include a timestamp in the signed message to help you detect when its time to refresh the signature. To verify the signature that this operation generates, use the [Verify] operation. Or use the [GetPublicKey] operation to download the public key and then use the public key to verify the signature outside of KMS. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:Sign](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [Verify] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter SignInput : [no documentation found] /// @@ -3015,6 +3114,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [UntagResource] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter TagResourceInput : [no documentation found] /// /// - Returns: `TagResourceOutput` : [no documentation found] @@ -3079,6 +3181,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [TagResource] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter UntagResourceInput : [no documentation found] /// /// - Returns: `UntagResourceOutput` : [no documentation found] @@ -3149,6 +3254,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [ListAliases] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter UpdateAliasInput : [no documentation found] /// /// - Returns: `UpdateAliasOutput` : [no documentation found] @@ -3214,6 +3322,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [DisconnectCustomKeyStore] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter UpdateCustomKeyStoreInput : [no documentation found] /// /// - Returns: `UpdateCustomKeyStoreOutput` : [no documentation found] @@ -3255,7 +3366,7 @@ extension KMSClient: KMSClientProtocol { /// - `XksProxyUriInUseException` : The request was rejected because the concatenation of the XksProxyUriEndpoint and XksProxyUriPath is already associated with an external key store in the Amazon Web Services account and Region. Each external key store in an account and Region must use a unique external key store proxy API address. /// - `XksProxyUriUnreachableException` : KMS was unable to reach the specified XksProxyUriPath. The path must be reachable before you create the external key store or update its settings. This exception is also thrown when the external key store proxy response to a GetHealthStatus request indicates that all external key manager instances are unavailable. /// - `XksProxyVpcEndpointServiceInUseException` : The request was rejected because the specified Amazon VPC endpoint service is already associated with an external key store in the Amazon Web Services account and Region. Each external key store in an Amazon Web Services account and Region must use a different Amazon VPC endpoint service. - /// - `XksProxyVpcEndpointServiceInvalidConfigurationException` : The request was rejected because the Amazon VPC endpoint service configuration does not fulfill the requirements for an external key store proxy. For details, see the exception message and [review the requirements] for Amazon VPC endpoint service connectivity for an external key store. + /// - `XksProxyVpcEndpointServiceInvalidConfigurationException` : The request was rejected because the Amazon VPC endpoint service configuration does not fulfill the requirements for an external key store proxy. For details, see the exception message and [review the requirements](https://docs.aws.amazon.com/kms/latest/developerguide/vpc-connectivity.html#xks-vpc-requirements) for Amazon VPC endpoint service connectivity for an external key store. /// - `XksProxyVpcEndpointServiceNotFoundException` : The request was rejected because KMS could not find the specified VPC endpoint service. Use [DescribeCustomKeyStores] to verify the VPC endpoint service name for the external key store. Also, confirm that the Allow principals list for the VPC endpoint service includes the KMS service principal for the Region, such as cks.kms.us-east-1.amazonaws.com. public func updateCustomKeyStore(input: UpdateCustomKeyStoreInput) async throws -> UpdateCustomKeyStoreOutput { @@ -3300,6 +3411,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [DescribeKey] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter UpdateKeyDescriptionInput : [no documentation found] /// /// - Returns: `UpdateKeyDescriptionOutput` : [no documentation found] @@ -3366,6 +3480,9 @@ extension KMSClient: KMSClientProtocol { /// /// * [ReplicateKey] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter UpdatePrimaryRegionInput : [no documentation found] /// /// - Returns: `UpdatePrimaryRegionOutput` : [no documentation found] @@ -3420,7 +3537,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `Verify` operation on the `TrentService` service. /// - /// Verifies a digital signature that was generated by the [Sign] operation. Verification confirms that an authorized user signed the message with the specified KMS key and signing algorithm, and the message hasn't changed since it was signed. If the signature is verified, the value of the SignatureValid field in the response is True. If the signature verification fails, the Verify operation fails with an KMSInvalidSignatureException exception. A digital signature is generated by using the private key in an asymmetric KMS key. The signature is verified by using the public key in the same asymmetric KMS key. For information about asymmetric KMS keys, see [Asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the Key Management Service Developer Guide. To use the Verify operation, specify the same asymmetric KMS key, message, and signing algorithm that were used to produce the signature. The message type does not need to be the same as the one used for signing, but it must indicate whether the value of the Message parameter should be hashed as part of the verification process. You can also verify the digital signature by using the public key of the KMS key outside of KMS. Use the [GetPublicKey] operation to download the public key in the asymmetric KMS key and then use the public key to verify the signature outside of KMS. The advantage of using the Verify operation is that it is performed within KMS. As a result, it's easy to call, the operation is performed within the FIPS boundary, it is logged in CloudTrail, and you can use key policy and IAM policy to determine who is authorized to use the KMS key to verify signatures. To verify a signature outside of KMS with an SM2 public key (China Regions only), you must specify the distinguishing ID. By default, KMS uses 1234567812345678 as the distinguishing ID. For more information, see [Offline verification with SM2 key pairs](https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-sm-offline-verification). The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:Verify](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [Sign] + /// Verifies a digital signature that was generated by the [Sign] operation. Verification confirms that an authorized user signed the message with the specified KMS key and signing algorithm, and the message hasn't changed since it was signed. If the signature is verified, the value of the SignatureValid field in the response is True. If the signature verification fails, the Verify operation fails with an KMSInvalidSignatureException exception. A digital signature is generated by using the private key in an asymmetric KMS key. The signature is verified by using the public key in the same asymmetric KMS key. For information about asymmetric KMS keys, see [Asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the Key Management Service Developer Guide. To use the Verify operation, specify the same asymmetric KMS key, message, and signing algorithm that were used to produce the signature. The message type does not need to be the same as the one used for signing, but it must indicate whether the value of the Message parameter should be hashed as part of the verification process. You can also verify the digital signature by using the public key of the KMS key outside of KMS. Use the [GetPublicKey] operation to download the public key in the asymmetric KMS key and then use the public key to verify the signature outside of KMS. The advantage of using the Verify operation is that it is performed within KMS. As a result, it's easy to call, the operation is performed within the FIPS boundary, it is logged in CloudTrail, and you can use key policy and IAM policy to determine who is authorized to use the KMS key to verify signatures. To verify a signature outside of KMS with an SM2 public key (China Regions only), you must specify the distinguishing ID. By default, KMS uses 1234567812345678 as the distinguishing ID. For more information, see [Offline verification with SM2 key pairs](https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-sm-offline-verification). The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:Verify](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [Sign] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter VerifyInput : [no documentation found] /// @@ -3487,7 +3604,7 @@ extension KMSClient: KMSClientProtocol { /// Performs the `VerifyMac` operation on the `TrentService` service. /// - /// Verifies the hash-based message authentication code (HMAC) for a specified message, HMAC KMS key, and MAC algorithm. To verify the HMAC, VerifyMac computes an HMAC using the message, HMAC KMS key, and MAC algorithm that you specify, and compares the computed HMAC to the HMAC that you specify. If the HMACs are identical, the verification succeeds; otherwise, it fails. Verification indicates that the message hasn't changed since the HMAC was calculated, and the specified key was used to generate and verify the HMAC. HMAC KMS keys and the HMAC algorithms that KMS uses conform to industry standards defined in [RFC 2104](https://datatracker.ietf.org/doc/html/rfc2104). This operation is part of KMS support for HMAC KMS keys. For details, see [HMAC keys in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:VerifyMac](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [GenerateMac] + /// Verifies the hash-based message authentication code (HMAC) for a specified message, HMAC KMS key, and MAC algorithm. To verify the HMAC, VerifyMac computes an HMAC using the message, HMAC KMS key, and MAC algorithm that you specify, and compares the computed HMAC to the HMAC that you specify. If the HMACs are identical, the verification succeeds; otherwise, it fails. Verification indicates that the message hasn't changed since the HMAC was calculated, and the specified key was used to generate and verify the HMAC. HMAC KMS keys and the HMAC algorithms that KMS uses conform to industry standards defined in [RFC 2104](https://datatracker.ietf.org/doc/html/rfc2104). This operation is part of KMS support for HMAC KMS keys. For details, see [HMAC keys in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:VerifyMac](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [GenerateMac] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter VerifyMacInput : [no documentation found] /// diff --git a/Sources/Services/AWSKMS/KMSClientProtocol.swift b/Sources/Services/AWSKMS/KMSClientProtocol.swift index d505bb36a69..055571e72de 100644 --- a/Sources/Services/AWSKMS/KMSClientProtocol.swift +++ b/Sources/Services/AWSKMS/KMSClientProtocol.swift @@ -23,7 +23,7 @@ import ClientRuntime public protocol KMSClientProtocol { /// Performs the `CancelKeyDeletion` operation on the `TrentService` service. /// - /// Cancels the deletion of a KMS key. When this operation succeeds, the key state of the KMS key is Disabled. To enable the KMS key, use [EnableKey]. For more information about scheduling and canceling deletion of a KMS key, see [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:CancelKeyDeletion](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [ScheduleKeyDeletion] + /// Cancels the deletion of a KMS key. When this operation succeeds, the key state of the KMS key is Disabled. To enable the KMS key, use [EnableKey]. For more information about scheduling and canceling deletion of a KMS key, see [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:CancelKeyDeletion](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [ScheduleKeyDeletion] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter CancelKeyDeletionInput : [no documentation found] /// @@ -56,6 +56,9 @@ public protocol KMSClientProtocol { /// /// * [UpdateCustomKeyStore] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ConnectCustomKeyStoreInput : [no documentation found] /// /// - Returns: `ConnectCustomKeyStoreOutput` : [no documentation found] @@ -105,6 +108,9 @@ public protocol KMSClientProtocol { /// /// * [UpdateAlias] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter CreateAliasInput : [no documentation found] /// /// - Returns: `CreateAliasOutput` : [no documentation found] @@ -145,6 +151,9 @@ public protocol KMSClientProtocol { /// /// * [UpdateCustomKeyStore] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter CreateCustomKeyStoreInput : [no documentation found] /// /// - Returns: `CreateCustomKeyStoreOutput` : [no documentation found] @@ -176,7 +185,7 @@ public protocol KMSClientProtocol { /// - `XksProxyUriInUseException` : The request was rejected because the concatenation of the XksProxyUriEndpoint and XksProxyUriPath is already associated with an external key store in the Amazon Web Services account and Region. Each external key store in an account and Region must use a unique external key store proxy API address. /// - `XksProxyUriUnreachableException` : KMS was unable to reach the specified XksProxyUriPath. The path must be reachable before you create the external key store or update its settings. This exception is also thrown when the external key store proxy response to a GetHealthStatus request indicates that all external key manager instances are unavailable. /// - `XksProxyVpcEndpointServiceInUseException` : The request was rejected because the specified Amazon VPC endpoint service is already associated with an external key store in the Amazon Web Services account and Region. Each external key store in an Amazon Web Services account and Region must use a different Amazon VPC endpoint service. - /// - `XksProxyVpcEndpointServiceInvalidConfigurationException` : The request was rejected because the Amazon VPC endpoint service configuration does not fulfill the requirements for an external key store proxy. For details, see the exception message and [review the requirements] for Amazon VPC endpoint service connectivity for an external key store. + /// - `XksProxyVpcEndpointServiceInvalidConfigurationException` : The request was rejected because the Amazon VPC endpoint service configuration does not fulfill the requirements for an external key store proxy. For details, see the exception message and [review the requirements](https://docs.aws.amazon.com/kms/latest/developerguide/vpc-connectivity.html#xks-vpc-requirements) for Amazon VPC endpoint service connectivity for an external key store. /// - `XksProxyVpcEndpointServiceNotFoundException` : The request was rejected because KMS could not find the specified VPC endpoint service. Use [DescribeCustomKeyStores] to verify the VPC endpoint service name for the external key store. Also, confirm that the Allow principals list for the VPC endpoint service includes the KMS service principal for the Region, such as cks.kms.us-east-1.amazonaws.com. func createCustomKeyStore(input: CreateCustomKeyStoreInput) async throws -> CreateCustomKeyStoreOutput /// Performs the `CreateGrant` operation on the `TrentService` service. @@ -198,6 +207,9 @@ public protocol KMSClientProtocol { /// /// * [RevokeGrant] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter CreateGrantInput : [no documentation found] /// /// - Returns: `CreateGrantOutput` : [no documentation found] @@ -229,6 +241,9 @@ public protocol KMSClientProtocol { /// /// * [ScheduleKeyDeletion] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter CreateKeyInput : [no documentation found] /// /// - Returns: `CreateKeyOutput` : [no documentation found] @@ -284,7 +299,7 @@ public protocol KMSClientProtocol { /// * [GenerateDataKeyPairWithoutPlaintext] /// /// - /// You can use this operation to decrypt ciphertext that was encrypted under a symmetric encryption KMS key or an asymmetric encryption KMS key. When the KMS key is asymmetric, you must specify the KMS key and the encryption algorithm that was used to encrypt the ciphertext. For information about asymmetric KMS keys, see [Asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the Key Management Service Developer Guide. The Decrypt operation also decrypts ciphertext that was encrypted outside of KMS by the public key in an KMS asymmetric KMS key. However, it cannot decrypt symmetric ciphertext produced by other libraries, such as the [Amazon Web Services Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/) or [Amazon S3 client-side encryption](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html). These libraries return a ciphertext format that is incompatible with KMS. If the ciphertext was encrypted under a symmetric encryption KMS key, the KeyId parameter is optional. KMS can get this information from metadata that it adds to the symmetric ciphertext blob. This feature adds durability to your implementation by ensuring that authorized users can decrypt ciphertext decades after it was encrypted, even if they've lost track of the key ID. However, specifying the KMS key is always recommended as a best practice. When you use the KeyId parameter to specify a KMS key, KMS only uses the KMS key you specify. If the ciphertext was encrypted under a different KMS key, the Decrypt operation fails. This practice ensures that you use the KMS key that you intend. Whenever possible, use key policies to give users permission to call the Decrypt operation on a particular KMS key, instead of using &IAM; policies. Otherwise, you might create an &IAM; policy that gives the user Decrypt permission on all KMS keys. This user could decrypt ciphertext that was encrypted by KMS keys in other accounts if the key policy for the cross-account KMS key permits it. If you must use an IAM policy for Decrypt permissions, limit the user to particular KMS keys or particular trusted accounts. For details, see [Best practices for IAM policies](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html#iam-policies-best-practices) in the Key Management Service Developer Guide. Decrypt also supports [Amazon Web Services Nitro Enclaves](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave.html), which provide an isolated compute environment in Amazon EC2. To call Decrypt for a Nitro enclave, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. Use the Recipient parameter to provide the attestation document for the enclave. Instead of the plaintext data, the response includes the plaintext data encrypted with the public key from the attestation document (CiphertextForRecipient).For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide.. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. If you use the KeyId parameter to identify a KMS key in a different Amazon Web Services account, specify the key ARN or the alias ARN of the KMS key. Required permissions: [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: + /// You can use this operation to decrypt ciphertext that was encrypted under a symmetric encryption KMS key or an asymmetric encryption KMS key. When the KMS key is asymmetric, you must specify the KMS key and the encryption algorithm that was used to encrypt the ciphertext. For information about asymmetric KMS keys, see [Asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the Key Management Service Developer Guide. The Decrypt operation also decrypts ciphertext that was encrypted outside of KMS by the public key in an KMS asymmetric KMS key. However, it cannot decrypt symmetric ciphertext produced by other libraries, such as the [Amazon Web Services Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/) or [Amazon S3 client-side encryption](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html). These libraries return a ciphertext format that is incompatible with KMS. If the ciphertext was encrypted under a symmetric encryption KMS key, the KeyId parameter is optional. KMS can get this information from metadata that it adds to the symmetric ciphertext blob. This feature adds durability to your implementation by ensuring that authorized users can decrypt ciphertext decades after it was encrypted, even if they've lost track of the key ID. However, specifying the KMS key is always recommended as a best practice. When you use the KeyId parameter to specify a KMS key, KMS only uses the KMS key you specify. If the ciphertext was encrypted under a different KMS key, the Decrypt operation fails. This practice ensures that you use the KMS key that you intend. Whenever possible, use key policies to give users permission to call the Decrypt operation on a particular KMS key, instead of using &IAM; policies. Otherwise, you might create an &IAM; policy that gives the user Decrypt permission on all KMS keys. This user could decrypt ciphertext that was encrypted by KMS keys in other accounts if the key policy for the cross-account KMS key permits it. If you must use an IAM policy for Decrypt permissions, limit the user to particular KMS keys or particular trusted accounts. For details, see [Best practices for IAM policies](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html#iam-policies-best-practices) in the Key Management Service Developer Guide. Decrypt also supports [Amazon Web Services Nitro Enclaves](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave.html), which provide an isolated compute environment in Amazon EC2. To call Decrypt for a Nitro enclave, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. Use the Recipient parameter to provide the attestation document for the enclave. Instead of the plaintext data, the response includes the plaintext data encrypted with the public key from the attestation document (CiphertextForRecipient). For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. If you use the KeyId parameter to identify a KMS key in a different Amazon Web Services account, specify the key ARN or the alias ARN of the KMS key. Required permissions: [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: /// /// * [Encrypt] /// @@ -294,6 +309,9 @@ public protocol KMSClientProtocol { /// /// * [ReEncrypt] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DecryptInput : [no documentation found] /// /// - Returns: `DecryptOutput` : [no documentation found] @@ -341,6 +359,9 @@ public protocol KMSClientProtocol { /// /// * [UpdateAlias] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DeleteAliasInput : [no documentation found] /// /// - Returns: `DeleteAliasOutput` : [no documentation found] @@ -371,6 +392,9 @@ public protocol KMSClientProtocol { /// /// * [UpdateCustomKeyStore] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DeleteCustomKeyStoreInput : [no documentation found] /// /// - Returns: `DeleteCustomKeyStoreOutput` : [no documentation found] @@ -401,6 +425,9 @@ public protocol KMSClientProtocol { /// /// * [ImportKeyMaterial] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DeleteImportedKeyMaterialInput : [no documentation found] /// /// - Returns: `DeleteImportedKeyMaterialOutput` : [no documentation found] @@ -433,6 +460,9 @@ public protocol KMSClientProtocol { /// /// * [UpdateCustomKeyStore] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DescribeCustomKeyStoresInput : [no documentation found] /// /// - Returns: `DescribeCustomKeyStoresOutput` : [no documentation found] @@ -446,7 +476,7 @@ public protocol KMSClientProtocol { func describeCustomKeyStores(input: DescribeCustomKeyStoresInput) async throws -> DescribeCustomKeyStoresOutput /// Performs the `DescribeKey` operation on the `TrentService` service. /// - /// Provides detailed information about a KMS key. You can run DescribeKey on a [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) or an [Amazon Web Services managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk). This detailed information includes the key ARN, creation date (and deletion date, if applicable), the key state, and the origin and expiration date (if any) of the key material. It includes fields, like KeySpec, that help you distinguish different types of KMS keys. It also displays the key usage (encryption, signing, or generating and verifying MACs) and the algorithms that the KMS key supports. For [multi-Region keys], DescribeKey displays the primary key and all related replica keys. For KMS keys in [CloudHSM key stores], it includes information about the key store, such as the key store ID and the CloudHSM cluster ID. For KMS keys in [external key stores], it includes the custom key store ID and the ID of the external key. DescribeKey does not return the following information: + /// Provides detailed information about a KMS key. You can run DescribeKey on a [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) or an [Amazon Web Services managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk). This detailed information includes the key ARN, creation date (and deletion date, if applicable), the key state, and the origin and expiration date (if any) of the key material. It includes fields, like KeySpec, that help you distinguish different types of KMS keys. It also displays the key usage (encryption, signing, or generating and verifying MACs) and the algorithms that the KMS key supports. For [multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html), DescribeKey displays the primary key and all related replica keys. For KMS keys in [CloudHSM key stores](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-cloudhsm.html), it includes information about the key store, such as the key store ID and the CloudHSM cluster ID. For KMS keys in [external key stores](https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html), it includes the custom key store ID and the ID of the external key. DescribeKey does not return the following information: /// /// * Aliases associated with the KMS key. To get this information, use [ListAliases]. /// @@ -473,6 +503,9 @@ public protocol KMSClientProtocol { /// /// * [ListRetirableGrants] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DescribeKeyInput : [no documentation found] /// /// - Returns: `DescribeKeyOutput` : [no documentation found] @@ -487,7 +520,7 @@ public protocol KMSClientProtocol { func describeKey(input: DescribeKeyInput) async throws -> DescribeKeyOutput /// Performs the `DisableKey` operation on the `TrentService` service. /// - /// Sets the state of a KMS key to disabled. This change temporarily prevents use of the KMS key for [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations). For more information about how key state affects the use of a KMS key, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide . The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:DisableKey](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [EnableKey] + /// Sets the state of a KMS key to disabled. This change temporarily prevents use of the KMS key for [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations). For more information about how key state affects the use of a KMS key, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide . The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:DisableKey](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [EnableKey] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter DisableKeyInput : [no documentation found] /// @@ -514,6 +547,9 @@ public protocol KMSClientProtocol { /// /// * [GetKeyRotationStatus] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DisableKeyRotationInput : [no documentation found] /// /// - Returns: `DisableKeyRotationOutput` : [no documentation found] @@ -547,6 +583,9 @@ public protocol KMSClientProtocol { /// /// * [UpdateCustomKeyStore] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter DisconnectCustomKeyStoreInput : [no documentation found] /// /// - Returns: `DisconnectCustomKeyStoreOutput` : [no documentation found] @@ -570,7 +609,7 @@ public protocol KMSClientProtocol { func disconnectCustomKeyStore(input: DisconnectCustomKeyStoreInput) async throws -> DisconnectCustomKeyStoreOutput /// Performs the `EnableKey` operation on the `TrentService` service. /// - /// Sets the key state of a KMS key to enabled. This allows you to use the KMS key for [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations). The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:EnableKey](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [DisableKey] + /// Sets the key state of a KMS key to enabled. This allows you to use the KMS key for [cryptographic operations](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations). The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:EnableKey](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [DisableKey] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter EnableKeyInput : [no documentation found] /// @@ -592,12 +631,15 @@ public protocol KMSClientProtocol { func enableKey(input: EnableKeyInput) async throws -> EnableKeyOutput /// Performs the `EnableKeyRotation` operation on the `TrentService` service. /// - /// Enables [automatic rotation of the key material](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) of the specified symmetric encryption KMS key. When you enable automatic rotation of a[customer managed KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk), KMS rotates the key material of the KMS key one year (approximately 365 days) from the enable date and every year thereafter. You can monitor rotation of the key material for your KMS keys in CloudTrail and Amazon CloudWatch. To disable rotation of the key material in a customer managed KMS key, use the [DisableKeyRotation] operation. Automatic key rotation is supported only on [symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks). You cannot enable automatic rotation of [asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html), [HMAC KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html), KMS keys with [imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html), or KMS keys in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html). To enable or disable automatic rotation of a set of related [multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate), set the property on the primary key. You cannot enable or disable automatic rotation [Amazon Web Services managed KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk). KMS always rotates the key material of Amazon Web Services managed keys every year. Rotation of [Amazon Web Services owned KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) varies. In May 2022, KMS changed the rotation schedule for Amazon Web Services managed keys from every three years (approximately 1,095 days) to every year (approximately 365 days). New Amazon Web Services managed keys are automatically rotated one year after they are created, and approximately every year thereafter. Existing Amazon Web Services managed keys are automatically rotated one year after their most recent rotation, and every year thereafter. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:EnableKeyRotation](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: + /// Enables [automatic rotation of the key material](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html) of the specified symmetric encryption KMS key. When you enable automatic rotation of a [customer managed KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk), KMS rotates the key material of the KMS key one year (approximately 365 days) from the enable date and every year thereafter. You can monitor rotation of the key material for your KMS keys in CloudTrail and Amazon CloudWatch. To disable rotation of the key material in a customer managed KMS key, use the [DisableKeyRotation] operation. Automatic key rotation is supported only on [symmetric encryption KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks). You cannot enable automatic rotation of [asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html), [HMAC KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html), KMS keys with [imported key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html), or KMS keys in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html). To enable or disable automatic rotation of a set of related [multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-manage.html#multi-region-rotate), set the property on the primary key. You cannot enable or disable automatic rotation [Amazon Web Services managed KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk). KMS always rotates the key material of Amazon Web Services managed keys every year. Rotation of [Amazon Web Services owned KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk) varies. In May 2022, KMS changed the rotation schedule for Amazon Web Services managed keys from every three years (approximately 1,095 days) to every year (approximately 365 days). New Amazon Web Services managed keys are automatically rotated one year after they are created, and approximately every year thereafter. Existing Amazon Web Services managed keys are automatically rotated one year after their most recent rotation, and every year thereafter. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:EnableKeyRotation](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: /// /// * [DisableKeyRotation] /// /// * [GetKeyRotationStatus] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter EnableKeyRotationInput : [no documentation found] /// /// - Returns: `EnableKeyRotationOutput` : [no documentation found] @@ -666,6 +708,9 @@ public protocol KMSClientProtocol { /// /// * [GenerateDataKeyPair] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter EncryptInput : [no documentation found] /// /// - Returns: `EncryptOutput` : [no documentation found] @@ -724,6 +769,9 @@ public protocol KMSClientProtocol { /// /// * [GenerateDataKeyWithoutPlaintext] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter GenerateDataKeyInput : [no documentation found] /// /// - Returns: `GenerateDataKeyOutput` : [no documentation found] @@ -754,7 +802,7 @@ public protocol KMSClientProtocol { func generateDataKey(input: GenerateDataKeyInput) async throws -> GenerateDataKeyOutput /// Performs the `GenerateDataKeyPair` operation on the `TrentService` service. /// - /// Returns a unique asymmetric data key pair for use outside of KMS. This operation returns a plaintext public key, a plaintext private key, and a copy of the private key that is encrypted under the symmetric encryption KMS key you specify. You can use the data key pair to perform asymmetric cryptography and implement digital signatures outside of KMS. The bytes in the keys are random; they not related to the caller or to the KMS key that is used to encrypt the private key. You can use the public key that GenerateDataKeyPair returns to encrypt data or verify a signature outside of KMS. Then, store the encrypted private key with the data. When you are ready to decrypt data or sign a message, you can use the [Decrypt] operation to decrypt the encrypted private key. To generate a data key pair, you must specify a symmetric encryption KMS key to encrypt the private key in a data key pair. You cannot use an asymmetric KMS key or a KMS key in a custom key store. To get the type and origin of your KMS key, use the [DescribeKey] operation. Use the KeyPairSpec parameter to choose an RSA or Elliptic Curve (ECC) data key pair. In China Regions, you can also choose an SM2 data key pair. KMS recommends that you use ECC key pairs for signing, and use RSA and SM2 key pairs for either encryption or signing, but not both. However, KMS cannot enforce any restrictions on the use of data key pairs outside of KMS. If you are using the data key pair to encrypt data, or for any operation where you don't immediately need a private key, consider using the [GenerateDataKeyPairWithoutPlaintext] operation. GenerateDataKeyPairWithoutPlaintext returns a plaintext public key and an encrypted private key, but omits the plaintext private key that you need only to decrypt ciphertext or sign a message. Later, when you need to decrypt the data or sign a message, use the [Decrypt] operation to decrypt the encrypted private key in the data key pair. GenerateDataKeyPair returns a unique data key pair for each request. The bytes in the keys are random; they are not related to the caller or the KMS key that is used to encrypt the private key. The public key is a DER-encoded X.509 SubjectPublicKeyInfo, as specified in [RFC 5280](https://tools.ietf.org/html/rfc5280). The private key is a DER-encoded PKCS8 PrivateKeyInfo, as specified in [RFC 5958](https://tools.ietf.org/html/rfc5958). GenerateDataKeyPair also supports [Amazon Web Services Nitro Enclaves](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave.html), which provide an isolated compute environment in Amazon EC2. To call GenerateDataKeyPair for an Amazon Web Services Nitro enclave, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. Use the Recipient parameter to provide the attestation document for the enclave. GenerateDataKeyPair returns the public data key and a copy of the private data key encrypted under the specified KMS key, as usual. But instead of a plaintext copy of the private data key (PrivateKeyPlaintext), the response includes a copy of the private data key encrypted under the public key from the attestation document (CiphertextForRecipient). For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide.. You can use an optional encryption context to add additional security to the encryption operation. If you specify an EncryptionContext, you must specify the same encryption context (a case-sensitive exact match) when decrypting the encrypted data key. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see [Encryption Context](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: + /// Returns a unique asymmetric data key pair for use outside of KMS. This operation returns a plaintext public key, a plaintext private key, and a copy of the private key that is encrypted under the symmetric encryption KMS key you specify. You can use the data key pair to perform asymmetric cryptography and implement digital signatures outside of KMS. The bytes in the keys are random; they are not related to the caller or to the KMS key that is used to encrypt the private key. You can use the public key that GenerateDataKeyPair returns to encrypt data or verify a signature outside of KMS. Then, store the encrypted private key with the data. When you are ready to decrypt data or sign a message, you can use the [Decrypt] operation to decrypt the encrypted private key. To generate a data key pair, you must specify a symmetric encryption KMS key to encrypt the private key in a data key pair. You cannot use an asymmetric KMS key or a KMS key in a custom key store. To get the type and origin of your KMS key, use the [DescribeKey] operation. Use the KeyPairSpec parameter to choose an RSA or Elliptic Curve (ECC) data key pair. In China Regions, you can also choose an SM2 data key pair. KMS recommends that you use ECC key pairs for signing, and use RSA and SM2 key pairs for either encryption or signing, but not both. However, KMS cannot enforce any restrictions on the use of data key pairs outside of KMS. If you are using the data key pair to encrypt data, or for any operation where you don't immediately need a private key, consider using the [GenerateDataKeyPairWithoutPlaintext] operation. GenerateDataKeyPairWithoutPlaintext returns a plaintext public key and an encrypted private key, but omits the plaintext private key that you need only to decrypt ciphertext or sign a message. Later, when you need to decrypt the data or sign a message, use the [Decrypt] operation to decrypt the encrypted private key in the data key pair. GenerateDataKeyPair returns a unique data key pair for each request. The bytes in the keys are random; they are not related to the caller or the KMS key that is used to encrypt the private key. The public key is a DER-encoded X.509 SubjectPublicKeyInfo, as specified in [RFC 5280](https://tools.ietf.org/html/rfc5280). The private key is a DER-encoded PKCS8 PrivateKeyInfo, as specified in [RFC 5958](https://tools.ietf.org/html/rfc5958). GenerateDataKeyPair also supports [Amazon Web Services Nitro Enclaves](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave.html), which provide an isolated compute environment in Amazon EC2. To call GenerateDataKeyPair for an Amazon Web Services Nitro enclave, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. Use the Recipient parameter to provide the attestation document for the enclave. GenerateDataKeyPair returns the public data key and a copy of the private data key encrypted under the specified KMS key, as usual. But instead of a plaintext copy of the private data key (PrivateKeyPlaintext), the response includes a copy of the private data key encrypted under the public key from the attestation document (CiphertextForRecipient). For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide.. You can use an optional encryption context to add additional security to the encryption operation. If you specify an EncryptionContext, you must specify the same encryption context (a case-sensitive exact match) when decrypting the encrypted data key. Otherwise, the request to decrypt fails with an InvalidCiphertextException. For more information, see [Encryption Context](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: /// /// * [Decrypt] /// @@ -766,6 +814,9 @@ public protocol KMSClientProtocol { /// /// * [GenerateDataKeyWithoutPlaintext] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter GenerateDataKeyPairInput : [no documentation found] /// /// - Returns: `GenerateDataKeyPairOutput` : [no documentation found] @@ -809,6 +860,9 @@ public protocol KMSClientProtocol { /// /// * [GenerateDataKeyWithoutPlaintext] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter GenerateDataKeyPairWithoutPlaintextInput : [no documentation found] /// /// - Returns: `GenerateDataKeyPairWithoutPlaintextOutput` : [no documentation found] @@ -852,6 +906,9 @@ public protocol KMSClientProtocol { /// /// * [GenerateDataKeyPairWithoutPlaintext] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter GenerateDataKeyWithoutPlaintextInput : [no documentation found] /// /// - Returns: `GenerateDataKeyWithoutPlaintextOutput` : [no documentation found] @@ -882,7 +939,7 @@ public protocol KMSClientProtocol { func generateDataKeyWithoutPlaintext(input: GenerateDataKeyWithoutPlaintextInput) async throws -> GenerateDataKeyWithoutPlaintextOutput /// Performs the `GenerateMac` operation on the `TrentService` service. /// - /// Generates a hash-based message authentication code (HMAC) for a message using an HMAC KMS key and a MAC algorithm that the key supports. HMAC KMS keys and the HMAC algorithms that KMS uses conform to industry standards defined in [RFC 2104](https://datatracker.ietf.org/doc/html/rfc2104). You can use value that GenerateMac returns in the [VerifyMac] operation to demonstrate that the original message has not changed. Also, because a secret key is used to create the hash, you can verify that the party that generated the hash has the required secret key. You can also use the raw result to implement HMAC-based algorithms such as key derivation functions. This operation is part of KMS support for HMAC KMS keys. For details, see [HMAC keys in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the Key Management Service Developer Guide . Best practices recommend that you limit the time during which any signing mechanism, including an HMAC, is effective. This deters an attack where the actor uses a signed message to establish validity repeatedly or long after the message is superseded. HMAC tags do not include a timestamp, but you can include a timestamp in the token or message to help you detect when its time to refresh the HMAC. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:GenerateMac](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [VerifyMac] + /// Generates a hash-based message authentication code (HMAC) for a message using an HMAC KMS key and a MAC algorithm that the key supports. HMAC KMS keys and the HMAC algorithms that KMS uses conform to industry standards defined in [RFC 2104](https://datatracker.ietf.org/doc/html/rfc2104). You can use value that GenerateMac returns in the [VerifyMac] operation to demonstrate that the original message has not changed. Also, because a secret key is used to create the hash, you can verify that the party that generated the hash has the required secret key. You can also use the raw result to implement HMAC-based algorithms such as key derivation functions. This operation is part of KMS support for HMAC KMS keys. For details, see [HMAC keys in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the Key Management Service Developer Guide . Best practices recommend that you limit the time during which any signing mechanism, including an HMAC, is effective. This deters an attack where the actor uses a signed message to establish validity repeatedly or long after the message is superseded. HMAC tags do not include a timestamp, but you can include a timestamp in the token or message to help you detect when its time to refresh the HMAC. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:GenerateMac](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [VerifyMac] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter GenerateMacInput : [no documentation found] /// @@ -913,7 +970,7 @@ public protocol KMSClientProtocol { func generateMac(input: GenerateMacInput) async throws -> GenerateMacOutput /// Performs the `GenerateRandom` operation on the `TrentService` service. /// - /// Returns a random byte string that is cryptographically secure. You must use the NumberOfBytes parameter to specify the length of the random byte string. There is no default value for string length. By default, the random byte string is generated in KMS. To generate the byte string in the CloudHSM cluster associated with an CloudHSM key store, use the CustomKeyStoreId parameter. GenerateRandom also supports [Amazon Web Services Nitro Enclaves](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave.html), which provide an isolated compute environment in Amazon EC2. To call GenerateRandom for a Nitro enclave, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. Use the Recipient parameter to provide the attestation document for the enclave. Instead of plaintext bytes, the response includes the plaintext bytes encrypted under the public key from the attestation document (CiphertextForRecipient).For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide. For more information about entropy and random number generation, see [Key Management Service Cryptographic Details](https://docs.aws.amazon.com/kms/latest/cryptographic-details/). Cross-account use: Not applicable. GenerateRandom does not use any account-specific resources, such as KMS keys. Required permissions: [kms:GenerateRandom](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (IAM policy) + /// Returns a random byte string that is cryptographically secure. You must use the NumberOfBytes parameter to specify the length of the random byte string. There is no default value for string length. By default, the random byte string is generated in KMS. To generate the byte string in the CloudHSM cluster associated with an CloudHSM key store, use the CustomKeyStoreId parameter. GenerateRandom also supports [Amazon Web Services Nitro Enclaves](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave.html), which provide an isolated compute environment in Amazon EC2. To call GenerateRandom for a Nitro enclave, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. Use the Recipient parameter to provide the attestation document for the enclave. Instead of plaintext bytes, the response includes the plaintext bytes encrypted under the public key from the attestation document (CiphertextForRecipient).For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide. For more information about entropy and random number generation, see [Key Management Service Cryptographic Details](https://docs.aws.amazon.com/kms/latest/cryptographic-details/). Cross-account use: Not applicable. GenerateRandom does not use any account-specific resources, such as KMS keys. Required permissions: [kms:GenerateRandom](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (IAM policy) Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter GenerateRandomInput : [no documentation found] /// @@ -940,7 +997,7 @@ public protocol KMSClientProtocol { func generateRandom(input: GenerateRandomInput) async throws -> GenerateRandomOutput /// Performs the `GetKeyPolicy` operation on the `TrentService` service. /// - /// Gets a key policy attached to the specified KMS key. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [PutKeyPolicy] + /// Gets a key policy attached to the specified KMS key. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter GetKeyPolicyInput : [no documentation found] /// @@ -974,6 +1031,9 @@ public protocol KMSClientProtocol { /// /// * [EnableKeyRotation] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter GetKeyRotationStatusInput : [no documentation found] /// /// - Returns: `GetKeyRotationStatusOutput` : [no documentation found] @@ -994,7 +1054,7 @@ public protocol KMSClientProtocol { func getKeyRotationStatus(input: GetKeyRotationStatusInput) async throws -> GetKeyRotationStatusOutput /// Performs the `GetParametersForImport` operation on the `TrentService` service. /// - /// Returns the public key and an import token you need to import or reimport key material for a KMS key. By default, KMS keys are created with key material that KMS generates. This operation supports [Importing key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html), an advanced feature that lets you generate and import the cryptographic key material for a KMS key. For more information about importing key material into KMS, see [Importing key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) in the Key Management Service Developer Guide. Before calling GetParametersForImport, use the [CreateKey] operation with an Origin value of EXTERNAL to create a KMS key with no key material. You can import key material for a symmetric encryption KMS key, HMAC KMS key, asymmetric encryption KMS key, or asymmetric signing KMS key. You can also import key material into a [multi-Region key] of any supported type. However, you can't import key material into a KMS key in a [custom key store]. You can also use GetParametersForImport to get a public key and import token to [reimport the original key material] into a KMS key whose key material expired or was deleted. GetParametersForImport returns the items that you need to import your key material. + /// Returns the public key and an import token you need to import or reimport key material for a KMS key. By default, KMS keys are created with key material that KMS generates. This operation supports [Importing key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html), an advanced feature that lets you generate and import the cryptographic key material for a KMS key. For more information about importing key material into KMS, see [Importing key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) in the Key Management Service Developer Guide. Before calling GetParametersForImport, use the [CreateKey] operation with an Origin value of EXTERNAL to create a KMS key with no key material. You can import key material for a symmetric encryption KMS key, HMAC KMS key, asymmetric encryption KMS key, or asymmetric signing KMS key. You can also import key material into a [multi-Region key](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) of any supported type. However, you can't import key material into a KMS key in a [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html). You can also use GetParametersForImport to get a public key and import token to [reimport the original key material](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html#reimport-key-material) into a KMS key whose key material expired or was deleted. GetParametersForImport returns the items that you need to import your key material. /// /// * The public key (or "wrapping key") of an RSA key pair that KMS generates. You will use this public key to encrypt ("wrap") your key material while it's in transit to KMS. /// @@ -1016,6 +1076,9 @@ public protocol KMSClientProtocol { /// /// * [DeleteImportedKeyMaterial] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter GetParametersForImportInput : [no documentation found] /// /// - Returns: `GetParametersForImportOutput` : [no documentation found] @@ -1045,7 +1108,7 @@ public protocol KMSClientProtocol { /// * [EncryptionAlgorithms](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html#KMS-GetPublicKey-response-EncryptionAlgorithms) or [SigningAlgorithms](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html#KMS-GetPublicKey-response-SigningAlgorithms): A list of the encryption algorithms or the signing algorithms for the key. /// /// - /// Although KMS cannot enforce these restrictions on external operations, it is crucial that you use this information to prevent the public key from being used improperly. For example, you can prevent a public signing key from being used encrypt data, or prevent a public key from being used with an encryption algorithm that is not supported by KMS. You can also avoid errors, such as using the wrong signing algorithm in a verification operation. To verify a signature outside of KMS with an SM2 public key (China Regions only), you must specify the distinguishing ID. By default, KMS uses 1234567812345678 as the distinguishing ID. For more information, see [Offline verification with SM2 key pairs](https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-sm-offline-verification). The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:GetPublicKey](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [CreateKey] + /// Although KMS cannot enforce these restrictions on external operations, it is crucial that you use this information to prevent the public key from being used improperly. For example, you can prevent a public signing key from being used encrypt data, or prevent a public key from being used with an encryption algorithm that is not supported by KMS. You can also avoid errors, such as using the wrong signing algorithm in a verification operation. To verify a signature outside of KMS with an SM2 public key (China Regions only), you must specify the distinguishing ID. By default, KMS uses 1234567812345678 as the distinguishing ID. For more information, see [Offline verification with SM2 key pairs](https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-sm-offline-verification). The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:GetPublicKey](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [CreateKey] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter GetPublicKeyInput : [no documentation found] /// @@ -1106,6 +1169,9 @@ public protocol KMSClientProtocol { /// /// * [GetParametersForImport] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ImportKeyMaterialInput : [no documentation found] /// /// - Returns: `ImportKeyMaterialOutput` : [no documentation found] @@ -1138,6 +1204,9 @@ public protocol KMSClientProtocol { /// /// * [UpdateAlias] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ListAliasesInput : [no documentation found] /// /// - Returns: `ListAliasesOutput` : [no documentation found] @@ -1163,6 +1232,9 @@ public protocol KMSClientProtocol { /// /// * [RevokeGrant] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ListGrantsInput : [no documentation found] /// /// - Returns: `ListGrantsOutput` : [no documentation found] @@ -1188,7 +1260,10 @@ public protocol KMSClientProtocol { /// /// * [GetKeyPolicy] /// - /// * [PutKeyPolicy] + /// * [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) + /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter ListKeyPoliciesInput : [no documentation found] /// @@ -1219,6 +1294,9 @@ public protocol KMSClientProtocol { /// /// * [ListResourceTags] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ListKeysInput : [no documentation found] /// /// - Returns: `ListKeysOutput` : [no documentation found] @@ -1242,6 +1320,9 @@ public protocol KMSClientProtocol { /// /// * [UntagResource] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ListResourceTagsInput : [no documentation found] /// /// - Returns: `ListResourceTagsOutput` : [no documentation found] @@ -1256,7 +1337,7 @@ public protocol KMSClientProtocol { func listResourceTags(input: ListResourceTagsInput) async throws -> ListResourceTagsOutput /// Performs the `ListRetirableGrants` operation on the `TrentService` service. /// - /// Returns information about all grants in the Amazon Web Services account and Region that have the specified retiring principal. You can specify any principal in your Amazon Web Services account. The grants that are returned include grants for KMS keys in your Amazon Web Services account and other Amazon Web Services accounts. You might use this operation to determine which grants you may retire. To retire a grant, use the [RetireGrant] operation. For detailed information about grants, including grant terminology, see [Grants in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) in the Key Management Service Developer Guide . For examples of working with grants in several programming languages, see [Programming grants](https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html). Cross-account use: You must specify a principal in your Amazon Web Services account. However, this operation can return grants in any Amazon Web Services account. You do not need kms:ListRetirableGrants permission (or any other additional permission) in any Amazon Web Services account other than your own. Required permissions: [kms:ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (IAM policy) in your Amazon Web Services account. Related operations: + /// Returns information about all grants in the Amazon Web Services account and Region that have the specified retiring principal. You can specify any principal in your Amazon Web Services account. The grants that are returned include grants for KMS keys in your Amazon Web Services account and other Amazon Web Services accounts. You might use this operation to determine which grants you may retire. To retire a grant, use the [RetireGrant] operation. For detailed information about grants, including grant terminology, see [Grants in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) in the Key Management Service Developer Guide . For examples of working with grants in several programming languages, see [Programming grants](https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html). Cross-account use: You must specify a principal in your Amazon Web Services account. This operation returns a list of grants where the retiring principal specified in the ListRetirableGrants request is the same retiring principal on the grant. This can include grants on KMS keys owned by other Amazon Web Services accounts, but you do not need kms:ListRetirableGrants permission (or any other additional permission) in any Amazon Web Services account other than your own. Required permissions: [kms:ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (IAM policy) in your Amazon Web Services account. KMS authorizes ListRetirableGrants requests by evaluating the caller account's kms:ListRetirableGrants permissions. The authorized resource in ListRetirableGrants calls is the retiring principal specified in the request. KMS does not evaluate the caller's permissions to verify their access to any KMS keys or grants that might be returned by the ListRetirableGrants call. Related operations: /// /// * [CreateGrant] /// @@ -1266,6 +1347,9 @@ public protocol KMSClientProtocol { /// /// * [RevokeGrant] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ListRetirableGrantsInput : [no documentation found] /// /// - Returns: `ListRetirableGrantsOutput` : [no documentation found] @@ -1281,7 +1365,7 @@ public protocol KMSClientProtocol { func listRetirableGrants(input: ListRetirableGrantsInput) async throws -> ListRetirableGrantsOutput /// Performs the `PutKeyPolicy` operation on the `TrentService` service. /// - /// Attaches a key policy to the specified KMS key. For more information about key policies, see [Key Policies](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) in the Key Management Service Developer Guide. For help writing and formatting a JSON policy document, see the [IAM JSON Policy Reference](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) in the Identity and Access Management User Guide . For examples of adding a key policy in multiple programming languages, see [Setting a key policy](https://docs.aws.amazon.com/kms/latest/developerguide/programming-key-policies.html#put-policy) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [GetKeyPolicy] + /// Attaches a key policy to the specified KMS key. For more information about key policies, see [Key Policies](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) in the Key Management Service Developer Guide. For help writing and formatting a JSON policy document, see the [IAM JSON Policy Reference](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) in the Identity and Access Management User Guide . For examples of adding a key policy in multiple programming languages, see [Setting a key policy](https://docs.aws.amazon.com/kms/latest/developerguide/programming-key-policies.html#put-policy) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: [kms:PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [GetKeyPolicy] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter PutKeyPolicyInput : [no documentation found] /// @@ -1331,6 +1415,9 @@ public protocol KMSClientProtocol { /// /// * [GenerateDataKeyPair] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ReEncryptInput : [no documentation found] /// /// - Returns: `ReEncryptOutput` : [no documentation found] @@ -1363,7 +1450,7 @@ public protocol KMSClientProtocol { func reEncrypt(input: ReEncryptInput) async throws -> ReEncryptOutput /// Performs the `ReplicateKey` operation on the `TrentService` service. /// - /// Replicates a multi-Region key into the specified Region. This operation creates a multi-Region replica key based on a multi-Region primary key in a different Region of the same Amazon Web Services partition. You can create multiple replicas of a primary key, but each must be in a different Region. To create a multi-Region primary key, use the [CreateKey] operation. This operation supports multi-Region keys, an KMS feature that lets you create multiple interoperable KMS keys in different Amazon Web Services Regions. Because these KMS keys have the same key ID, key material, and other metadata, you can use them interchangeably to encrypt data in one Amazon Web Services Region and decrypt it in a different Amazon Web Services Region without re-encrypting the data or making a cross-Region call. For more information about multi-Region keys, see [Multi-Region keys in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the Key Management Service Developer Guide. A replica key is a fully-functional KMS key that can be used independently of its primary and peer replica keys. A primary key and its replica keys share properties that make them interoperable. They have the same [key ID](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-id) and key material. They also have the same [key spec](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-spec), [key usage](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-usage), [key material origin](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-origin), and [automatic key rotation status](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html). KMS automatically synchronizes these shared properties among related multi-Region keys. All other properties of a replica key can differ, including its [key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), [tags](https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html), [aliases](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html), and [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html). KMS pricing and quotas for KMS keys apply to each primary key and replica key. When this operation completes, the new replica key has a transient key state of Creating. This key state changes to Enabled (or PendingImport) after a few seconds when the process of creating the new replica key is complete. While the key state is Creating, you can manage key, but you cannot yet use it in cryptographic operations. If you are creating and using the replica key programmatically, retry on KMSInvalidStateException or call DescribeKey to check its KeyState value before using it. For details about the Creating key state, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. You cannot create more than one replica of a primary key in any Region. If the Region already includes a replica of the key you're trying to replicate, ReplicateKey returns an AlreadyExistsException error. If the key state of the existing replica is PendingDeletion, you can cancel the scheduled key deletion ([CancelKeyDeletion]) or wait for the key to be deleted. The new replica key you create will have the same [shared properties](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-sync-properties) as the original replica key. The CloudTrail log of a ReplicateKey operation records a ReplicateKey operation in the primary key's Region and a [CreateKey] operation in the replica key's Region. If you replicate a multi-Region primary key with imported key material, the replica key is created with no key material. You must import the same key material that you imported into the primary key. For details, see [Importing key material into multi-Region keys] in the Key Management Service Developer Guide. To convert a replica key to a primary key, use the [UpdatePrimaryRegion] operation. ReplicateKey uses different default values for the KeyPolicy and Tags parameters than those used in the KMS console. For details, see the parameter descriptions. Cross-account use: No. You cannot use this operation to create a replica key in a different Amazon Web Services account. Required permissions: + /// Replicates a multi-Region key into the specified Region. This operation creates a multi-Region replica key based on a multi-Region primary key in a different Region of the same Amazon Web Services partition. You can create multiple replicas of a primary key, but each must be in a different Region. To create a multi-Region primary key, use the [CreateKey] operation. This operation supports multi-Region keys, an KMS feature that lets you create multiple interoperable KMS keys in different Amazon Web Services Regions. Because these KMS keys have the same key ID, key material, and other metadata, you can use them interchangeably to encrypt data in one Amazon Web Services Region and decrypt it in a different Amazon Web Services Region without re-encrypting the data or making a cross-Region call. For more information about multi-Region keys, see [Multi-Region keys in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) in the Key Management Service Developer Guide. A replica key is a fully-functional KMS key that can be used independently of its primary and peer replica keys. A primary key and its replica keys share properties that make them interoperable. They have the same [key ID](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-id) and key material. They also have the same [key spec](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-spec), [key usage](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-usage), [key material origin](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-origin), and [automatic key rotation status](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html). KMS automatically synchronizes these shared properties among related multi-Region keys. All other properties of a replica key can differ, including its [key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), [tags](https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html), [aliases](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html), and [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html). KMS pricing and quotas for KMS keys apply to each primary key and replica key. When this operation completes, the new replica key has a transient key state of Creating. This key state changes to Enabled (or PendingImport) after a few seconds when the process of creating the new replica key is complete. While the key state is Creating, you can manage key, but you cannot yet use it in cryptographic operations. If you are creating and using the replica key programmatically, retry on KMSInvalidStateException or call DescribeKey to check its KeyState value before using it. For details about the Creating key state, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. You cannot create more than one replica of a primary key in any Region. If the Region already includes a replica of the key you're trying to replicate, ReplicateKey returns an AlreadyExistsException error. If the key state of the existing replica is PendingDeletion, you can cancel the scheduled key deletion ([CancelKeyDeletion]) or wait for the key to be deleted. The new replica key you create will have the same [shared properties](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html#mrk-sync-properties) as the original replica key. The CloudTrail log of a ReplicateKey operation records a ReplicateKey operation in the primary key's Region and a [CreateKey] operation in the replica key's Region. If you replicate a multi-Region primary key with imported key material, the replica key is created with no key material. You must import the same key material that you imported into the primary key. For details, see [Importing key material into multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-import.html) in the Key Management Service Developer Guide. To convert a replica key to a primary key, use the [UpdatePrimaryRegion] operation. ReplicateKey uses different default values for the KeyPolicy and Tags parameters than those used in the KMS console. For details, see the parameter descriptions. Cross-account use: No. You cannot use this operation to create a replica key in a different Amazon Web Services account. Required permissions: /// /// * kms:ReplicateKey on the primary key (in the primary key's Region). Include this permission in the primary key's key policy. /// @@ -1378,6 +1465,9 @@ public protocol KMSClientProtocol { /// /// * [UpdatePrimaryRegion] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ReplicateKeyInput : [no documentation found] /// /// - Returns: `ReplicateKeyOutput` : [no documentation found] @@ -1402,7 +1492,7 @@ public protocol KMSClientProtocol { func replicateKey(input: ReplicateKeyInput) async throws -> ReplicateKeyOutput /// Performs the `RetireGrant` operation on the `TrentService` service. /// - /// Deletes a grant. Typically, you retire a grant when you no longer need its permissions. To identify the grant to retire, use a [grant token](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token), or both the grant ID and a key identifier (key ID or key ARN) of the KMS key. The [CreateGrant] operation returns both values. This operation can be called by the retiring principal for a grant, by the grantee principal if the grant allows the RetireGrant operation, and by the Amazon Web Services account in which the grant is created. It can also be called by principals to whom permission for retiring a grant is delegated. For details, see [Retiring and revoking grants](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete) in the Key Management Service Developer Guide. For detailed information about grants, including grant terminology, see [Grants in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) in the Key Management Service Developer Guide . For examples of working with grants in several programming languages, see [Programming grants](https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html). Cross-account use: Yes. You can retire a grant on a KMS key in a different Amazon Web Services account. Required permissions::Permission to retire a grant is determined primarily by the grant. For details, see [Retiring and revoking grants](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete) in the Key Management Service Developer Guide. Related operations: + /// Deletes a grant. Typically, you retire a grant when you no longer need its permissions. To identify the grant to retire, use a [grant token](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#grant_token), or both the grant ID and a key identifier (key ID or key ARN) of the KMS key. The [CreateGrant] operation returns both values. This operation can be called by the retiring principal for a grant, by the grantee principal if the grant allows the RetireGrant operation, and by the Amazon Web Services account in which the grant is created. It can also be called by principals to whom permission for retiring a grant is delegated. For details, see [Retiring and revoking grants](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete) in the Key Management Service Developer Guide. For detailed information about grants, including grant terminology, see [Grants in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) in the Key Management Service Developer Guide . For examples of working with grants in several programming languages, see [Programming grants](https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html). Cross-account use: Yes. You can retire a grant on a KMS key in a different Amazon Web Services account. Required permissions: Permission to retire a grant is determined primarily by the grant. For details, see [Retiring and revoking grants](https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete) in the Key Management Service Developer Guide. Related operations: /// /// * [CreateGrant] /// @@ -1412,6 +1502,9 @@ public protocol KMSClientProtocol { /// /// * [RevokeGrant] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter RetireGrantInput : [no documentation found] /// /// - Returns: `RetireGrantOutput` : [no documentation found] @@ -1444,6 +1537,9 @@ public protocol KMSClientProtocol { /// /// * [RetireGrant] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter RevokeGrantInput : [no documentation found] /// /// - Returns: `RevokeGrantOutput` : [no documentation found] @@ -1465,12 +1561,15 @@ public protocol KMSClientProtocol { func revokeGrant(input: RevokeGrantInput) async throws -> RevokeGrantOutput /// Performs the `ScheduleKeyDeletion` operation on the `TrentService` service. /// - /// Schedules the deletion of a KMS key. By default, KMS applies a waiting period of 30 days, but you can specify a waiting period of 7-30 days. When this operation is successful, the key state of the KMS key changes to PendingDeletion and the key can't be used in any cryptographic operations. It remains in this state for the duration of the waiting period. Before the waiting period ends, you can use [CancelKeyDeletion] to cancel the deletion of the KMS key. After the waiting period ends, KMS deletes the KMS key, its key material, and all KMS data associated with it, including all aliases that refer to it. Deleting a KMS key is a destructive and potentially dangerous operation. When a KMS key is deleted, all data that was encrypted under the KMS key is unrecoverable. (The only exception is a [multi-Region replica key], or an [asymmetric or HMAC KMS key with imported key material].) To prevent the use of a KMS key without deleting it, use [DisableKey]. You can schedule the deletion of a multi-Region primary key and its replica keys at any time. However, KMS will not delete a multi-Region primary key with existing replica keys. If you schedule the deletion of a primary key with replicas, its key state changes to PendingReplicaDeletion and it cannot be replicated or used in cryptographic operations. This status can continue indefinitely. When the last of its replicas keys is deleted (not just scheduled), the key state of the primary key changes to PendingDeletion and its waiting period (PendingWindowInDays) begins. For details, see [Deleting multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html) in the Key Management Service Developer Guide. When KMS [deletes a KMS key from an CloudHSM key store](https://docs.aws.amazon.com/kms/latest/developerguide/delete-cmk-keystore.html), it makes a best effort to delete the associated key material from the associated CloudHSM cluster. However, you might need to manually [delete the orphaned key material](https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html#fix-keystore-orphaned-key) from the cluster and its backups. [Deleting a KMS key from an external key store](https://docs.aws.amazon.com/kms/latest/developerguide/delete-xks-key.html) has no effect on the associated external key. However, for both types of custom key stores, deleting a KMS key is destructive and irreversible. You cannot decrypt ciphertext encrypted under the KMS key by using only its associated external key or CloudHSM key. Also, you cannot recreate a KMS key in an external key store by creating a new KMS key with the same key material. For more information about scheduling a KMS key for deletion, see [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: kms:ScheduleKeyDeletion (key policy) Related operations + /// Schedules the deletion of a KMS key. By default, KMS applies a waiting period of 30 days, but you can specify a waiting period of 7-30 days. When this operation is successful, the key state of the KMS key changes to PendingDeletion and the key can't be used in any cryptographic operations. It remains in this state for the duration of the waiting period. Before the waiting period ends, you can use [CancelKeyDeletion] to cancel the deletion of the KMS key. After the waiting period ends, KMS deletes the KMS key, its key material, and all KMS data associated with it, including all aliases that refer to it. Deleting a KMS key is a destructive and potentially dangerous operation. When a KMS key is deleted, all data that was encrypted under the KMS key is unrecoverable. (The only exception is a [multi-Region replica key](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html), or an [asymmetric or HMAC KMS key with imported key material].) To prevent the use of a KMS key without deleting it, use [DisableKey]. You can schedule the deletion of a multi-Region primary key and its replica keys at any time. However, KMS will not delete a multi-Region primary key with existing replica keys. If you schedule the deletion of a primary key with replicas, its key state changes to PendingReplicaDeletion and it cannot be replicated or used in cryptographic operations. This status can continue indefinitely. When the last of its replicas keys is deleted (not just scheduled), the key state of the primary key changes to PendingDeletion and its waiting period (PendingWindowInDays) begins. For details, see [Deleting multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html) in the Key Management Service Developer Guide. When KMS [deletes a KMS key from an CloudHSM key store](https://docs.aws.amazon.com/kms/latest/developerguide/delete-cmk-keystore.html), it makes a best effort to delete the associated key material from the associated CloudHSM cluster. However, you might need to manually [delete the orphaned key material](https://docs.aws.amazon.com/kms/latest/developerguide/fix-keystore.html#fix-keystore-orphaned-key) from the cluster and its backups. [Deleting a KMS key from an external key store](https://docs.aws.amazon.com/kms/latest/developerguide/delete-xks-key.html) has no effect on the associated external key. However, for both types of custom key stores, deleting a KMS key is destructive and irreversible. You cannot decrypt ciphertext encrypted under the KMS key by using only its associated external key or CloudHSM key. Also, you cannot recreate a KMS key in an external key store by creating a new KMS key with the same key material. For more information about scheduling a KMS key for deletion, see [Deleting KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: No. You cannot perform this operation on a KMS key in a different Amazon Web Services account. Required permissions: kms:ScheduleKeyDeletion (key policy) Related operations /// /// * [CancelKeyDeletion] /// /// * [DisableKey] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter ScheduleKeyDeletionInput : [no documentation found] /// /// - Returns: `ScheduleKeyDeletionOutput` : [no documentation found] @@ -1499,7 +1598,7 @@ public protocol KMSClientProtocol { /// * Choose a signing algorithm that is compatible with the KMS key. /// /// - /// When signing a message, be sure to record the KMS key and the signing algorithm. This information is required to verify the signature. Best practices recommend that you limit the time during which any signature is effective. This deters an attack where the actor uses a signed message to establish validity repeatedly or long after the message is superseded. Signatures do not include a timestamp, but you can include a timestamp in the signed message to help you detect when its time to refresh the signature. To verify the signature that this operation generates, use the [Verify] operation. Or use the [GetPublicKey] operation to download the public key and then use the public key to verify the signature outside of KMS. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:Sign](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [Verify] + /// When signing a message, be sure to record the KMS key and the signing algorithm. This information is required to verify the signature. Best practices recommend that you limit the time during which any signature is effective. This deters an attack where the actor uses a signed message to establish validity repeatedly or long after the message is superseded. Signatures do not include a timestamp, but you can include a timestamp in the signed message to help you detect when its time to refresh the signature. To verify the signature that this operation generates, use the [Verify] operation. Or use the [GetPublicKey] operation to download the public key and then use the public key to verify the signature outside of KMS. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:Sign](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [Verify] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter SignInput : [no documentation found] /// @@ -1541,6 +1640,9 @@ public protocol KMSClientProtocol { /// /// * [UntagResource] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter TagResourceInput : [no documentation found] /// /// - Returns: `TagResourceOutput` : [no documentation found] @@ -1571,6 +1673,9 @@ public protocol KMSClientProtocol { /// /// * [TagResource] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter UntagResourceInput : [no documentation found] /// /// - Returns: `UntagResourceOutput` : [no documentation found] @@ -1607,6 +1712,9 @@ public protocol KMSClientProtocol { /// /// * [ListAliases] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter UpdateAliasInput : [no documentation found] /// /// - Returns: `UpdateAliasOutput` : [no documentation found] @@ -1638,6 +1746,9 @@ public protocol KMSClientProtocol { /// /// * [DisconnectCustomKeyStore] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter UpdateCustomKeyStoreInput : [no documentation found] /// /// - Returns: `UpdateCustomKeyStoreOutput` : [no documentation found] @@ -1679,7 +1790,7 @@ public protocol KMSClientProtocol { /// - `XksProxyUriInUseException` : The request was rejected because the concatenation of the XksProxyUriEndpoint and XksProxyUriPath is already associated with an external key store in the Amazon Web Services account and Region. Each external key store in an account and Region must use a unique external key store proxy API address. /// - `XksProxyUriUnreachableException` : KMS was unable to reach the specified XksProxyUriPath. The path must be reachable before you create the external key store or update its settings. This exception is also thrown when the external key store proxy response to a GetHealthStatus request indicates that all external key manager instances are unavailable. /// - `XksProxyVpcEndpointServiceInUseException` : The request was rejected because the specified Amazon VPC endpoint service is already associated with an external key store in the Amazon Web Services account and Region. Each external key store in an Amazon Web Services account and Region must use a different Amazon VPC endpoint service. - /// - `XksProxyVpcEndpointServiceInvalidConfigurationException` : The request was rejected because the Amazon VPC endpoint service configuration does not fulfill the requirements for an external key store proxy. For details, see the exception message and [review the requirements] for Amazon VPC endpoint service connectivity for an external key store. + /// - `XksProxyVpcEndpointServiceInvalidConfigurationException` : The request was rejected because the Amazon VPC endpoint service configuration does not fulfill the requirements for an external key store proxy. For details, see the exception message and [review the requirements](https://docs.aws.amazon.com/kms/latest/developerguide/vpc-connectivity.html#xks-vpc-requirements) for Amazon VPC endpoint service connectivity for an external key store. /// - `XksProxyVpcEndpointServiceNotFoundException` : The request was rejected because KMS could not find the specified VPC endpoint service. Use [DescribeCustomKeyStores] to verify the VPC endpoint service name for the external key store. Also, confirm that the Allow principals list for the VPC endpoint service includes the KMS service principal for the Region, such as cks.kms.us-east-1.amazonaws.com. func updateCustomKeyStore(input: UpdateCustomKeyStoreInput) async throws -> UpdateCustomKeyStoreOutput /// Performs the `UpdateKeyDescription` operation on the `TrentService` service. @@ -1690,6 +1801,9 @@ public protocol KMSClientProtocol { /// /// * [DescribeKey] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter UpdateKeyDescriptionInput : [no documentation found] /// /// - Returns: `UpdateKeyDescriptionOutput` : [no documentation found] @@ -1722,6 +1836,9 @@ public protocol KMSClientProtocol { /// /// * [ReplicateKey] /// + /// + /// Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). + /// /// - Parameter UpdatePrimaryRegionInput : [no documentation found] /// /// - Returns: `UpdatePrimaryRegionOutput` : [no documentation found] @@ -1742,7 +1859,7 @@ public protocol KMSClientProtocol { func updatePrimaryRegion(input: UpdatePrimaryRegionInput) async throws -> UpdatePrimaryRegionOutput /// Performs the `Verify` operation on the `TrentService` service. /// - /// Verifies a digital signature that was generated by the [Sign] operation. Verification confirms that an authorized user signed the message with the specified KMS key and signing algorithm, and the message hasn't changed since it was signed. If the signature is verified, the value of the SignatureValid field in the response is True. If the signature verification fails, the Verify operation fails with an KMSInvalidSignatureException exception. A digital signature is generated by using the private key in an asymmetric KMS key. The signature is verified by using the public key in the same asymmetric KMS key. For information about asymmetric KMS keys, see [Asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the Key Management Service Developer Guide. To use the Verify operation, specify the same asymmetric KMS key, message, and signing algorithm that were used to produce the signature. The message type does not need to be the same as the one used for signing, but it must indicate whether the value of the Message parameter should be hashed as part of the verification process. You can also verify the digital signature by using the public key of the KMS key outside of KMS. Use the [GetPublicKey] operation to download the public key in the asymmetric KMS key and then use the public key to verify the signature outside of KMS. The advantage of using the Verify operation is that it is performed within KMS. As a result, it's easy to call, the operation is performed within the FIPS boundary, it is logged in CloudTrail, and you can use key policy and IAM policy to determine who is authorized to use the KMS key to verify signatures. To verify a signature outside of KMS with an SM2 public key (China Regions only), you must specify the distinguishing ID. By default, KMS uses 1234567812345678 as the distinguishing ID. For more information, see [Offline verification with SM2 key pairs](https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-sm-offline-verification). The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:Verify](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [Sign] + /// Verifies a digital signature that was generated by the [Sign] operation. Verification confirms that an authorized user signed the message with the specified KMS key and signing algorithm, and the message hasn't changed since it was signed. If the signature is verified, the value of the SignatureValid field in the response is True. If the signature verification fails, the Verify operation fails with an KMSInvalidSignatureException exception. A digital signature is generated by using the private key in an asymmetric KMS key. The signature is verified by using the public key in the same asymmetric KMS key. For information about asymmetric KMS keys, see [Asymmetric KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) in the Key Management Service Developer Guide. To use the Verify operation, specify the same asymmetric KMS key, message, and signing algorithm that were used to produce the signature. The message type does not need to be the same as the one used for signing, but it must indicate whether the value of the Message parameter should be hashed as part of the verification process. You can also verify the digital signature by using the public key of the KMS key outside of KMS. Use the [GetPublicKey] operation to download the public key in the asymmetric KMS key and then use the public key to verify the signature outside of KMS. The advantage of using the Verify operation is that it is performed within KMS. As a result, it's easy to call, the operation is performed within the FIPS boundary, it is logged in CloudTrail, and you can use key policy and IAM policy to determine who is authorized to use the KMS key to verify signatures. To verify a signature outside of KMS with an SM2 public key (China Regions only), you must specify the distinguishing ID. By default, KMS uses 1234567812345678 as the distinguishing ID. For more information, see [Offline verification with SM2 key pairs](https://docs.aws.amazon.com/kms/latest/developerguide/asymmetric-key-specs.html#key-spec-sm-offline-verification). The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:Verify](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [Sign] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter VerifyInput : [no documentation found] /// @@ -1775,7 +1892,7 @@ public protocol KMSClientProtocol { func verify(input: VerifyInput) async throws -> VerifyOutput /// Performs the `VerifyMac` operation on the `TrentService` service. /// - /// Verifies the hash-based message authentication code (HMAC) for a specified message, HMAC KMS key, and MAC algorithm. To verify the HMAC, VerifyMac computes an HMAC using the message, HMAC KMS key, and MAC algorithm that you specify, and compares the computed HMAC to the HMAC that you specify. If the HMACs are identical, the verification succeeds; otherwise, it fails. Verification indicates that the message hasn't changed since the HMAC was calculated, and the specified key was used to generate and verify the HMAC. HMAC KMS keys and the HMAC algorithms that KMS uses conform to industry standards defined in [RFC 2104](https://datatracker.ietf.org/doc/html/rfc2104). This operation is part of KMS support for HMAC KMS keys. For details, see [HMAC keys in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:VerifyMac](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [GenerateMac] + /// Verifies the hash-based message authentication code (HMAC) for a specified message, HMAC KMS key, and MAC algorithm. To verify the HMAC, VerifyMac computes an HMAC using the message, HMAC KMS key, and MAC algorithm that you specify, and compares the computed HMAC to the HMAC that you specify. If the HMACs are identical, the verification succeeds; otherwise, it fails. Verification indicates that the message hasn't changed since the HMAC was calculated, and the specified key was used to generate and verify the HMAC. HMAC KMS keys and the HMAC algorithms that KMS uses conform to industry standards defined in [RFC 2104](https://datatracker.ietf.org/doc/html/rfc2104). This operation is part of KMS support for HMAC KMS keys. For details, see [HMAC keys in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html) in the Key Management Service Developer Guide. The KMS key that you use for this operation must be in a compatible key state. For details, see [Key states of KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) in the Key Management Service Developer Guide. Cross-account use: Yes. To perform this operation with a KMS key in a different Amazon Web Services account, specify the key ARN or alias ARN in the value of the KeyId parameter. Required permissions: [kms:VerifyMac](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) (key policy) Related operations: [GenerateMac] Eventual consistency: The KMS API follows an eventual consistency model. For more information, see [KMS eventual consistency](https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html). /// /// - Parameter VerifyMacInput : [no documentation found] /// diff --git a/Sources/Services/AWSKMS/models/Models.swift b/Sources/Services/AWSKMS/models/Models.swift index aba35aa23ba..58ec5ea0866 100644 --- a/Sources/Services/AWSKMS/models/Models.swift +++ b/Sources/Services/AWSKMS/models/Models.swift @@ -1391,7 +1391,7 @@ extension CreateKeyInput: ClientRuntime.URLPathProvider { } public struct CreateKeyInput: Swift.Equatable { - /// Skips ("bypasses") the key policy lockout safety check. The default value is false. Setting this value to true increases the risk that the KMS key becomes unmanageable. Do not set this value to true indiscriminately. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#prevent-unmanageable-key) in the Key Management Service Developer Guide. Use this parameter only when you intend to prevent the principal that is making the request from making a subsequent [PutKeyPolicy] request on the KMS key. + /// Skips ("bypasses") the key policy lockout safety check. The default value is false. Setting this value to true increases the risk that the KMS key becomes unmanageable. Do not set this value to true indiscriminately. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#prevent-unmanageable-key) in the Key Management Service Developer Guide. Use this parameter only when you intend to prevent the principal that is making the request from making a subsequent [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) request on the KMS key. public var bypassPolicyLockoutSafetyCheck: Swift.Bool? /// Creates the KMS key in the specified [custom key store](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html). The ConnectionState of the custom key store must be CONNECTED. To find the CustomKeyStoreID and ConnectionState use the [DescribeCustomKeyStores] operation. This parameter is valid only for symmetric encryption KMS keys in a single Region. You cannot create any other type of KMS key in a custom key store. When you create a KMS key in an CloudHSM key store, KMS generates a non-exportable 256-bit symmetric key in its associated CloudHSM cluster and associates it with the KMS key. When you create a KMS key in an external key store, you must use the XksKeyId parameter to specify an external key that serves as key material for the KMS key. public var customKeyStoreId: Swift.String? @@ -2301,7 +2301,7 @@ public struct DecryptInput: Swift.Equatable { /// /// To get the key ID and key ARN for a KMS key, use [ListKeys] or [DescribeKey]. To get the alias name and alias ARN, use [ListAliases]. public var keyId: Swift.String? - /// A signed [attestation document](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave-how.html#term-attestdoc) from an Amazon Web Services Nitro enclave and the encryption algorithm to use with the enclave's public key. The only valid encryption algorithm is RSAES_OAEP_SHA_256. This parameter only supports attestation documents for Amazon Web Services Nitro Enclaves. To include this parameter, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. When you use this parameter, instead of returning the plaintext data, KMS encrypts the plaintext data with the public key in the attestation document, and returns the resulting ciphertext in the CiphertextForRecipient field in the response. This ciphertext can be decrypted only with the private key in the enclave. The Plaintext field in the response is null or empty. For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide. + /// A signed [attestation document](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-concepts.html#term-attestdoc) from an Amazon Web Services Nitro enclave and the encryption algorithm to use with the enclave's public key. The only valid encryption algorithm is RSAES_OAEP_SHA_256. This parameter only supports attestation documents for Amazon Web Services Nitro Enclaves. To include this parameter, use the [Amazon Web Services Nitro Enclaves SDK](https://docs.aws.amazon.com/enclaves/latest/user/developing-applications.html#sdk) or any Amazon Web Services SDK. When you use this parameter, instead of returning the plaintext data, KMS encrypts the plaintext data with the public key in the attestation document, and returns the resulting ciphertext in the CiphertextForRecipient field in the response. This ciphertext can be decrypted only with the private key in the enclave. The Plaintext field in the response is null or empty. For information about the interaction between KMS and Amazon Web Services Nitro Enclaves, see [How Amazon Web Services Nitro Enclaves uses KMS](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) in the Key Management Service Developer Guide. public var recipient: KMSClientTypes.RecipientInfo? public init( @@ -5477,7 +5477,7 @@ public struct GetParametersForImportInput: Swift.Equatable { /// /// * RSAES_OAEP_SHA_1 — Supported for all types of key material, except RSA key material (private key). You cannot use the RSAES_OAEP_SHA_1 wrapping algorithm with the RSA_2048 wrapping key spec to wrap ECC_NIST_P521 key material. /// - /// * RSAES_PKCS1_V1_5 (Deprecated) — Supported only for symmetric encryption key material (and only in legacy mode). + /// * RSAES_PKCS1_V1_5 (Deprecated) — As of October 10, 2023, KMS does not support the RSAES_PKCS1_V1_5 wrapping algorithm. /// This member is required. public var wrappingAlgorithm: KMSClientTypes.AlgorithmSpec? /// The type of RSA public key to return in the response. You will use this wrapping key with the specified wrapping algorithm to protect your key material during import. Use the longest RSA wrapping key that is practical. You cannot use an RSA_2048 public key to directly wrap an ECC_NIST_P521 private key. Instead, use an RSA_AES wrapping algorithm or choose a longer RSA public key. @@ -9116,7 +9116,7 @@ extension PutKeyPolicyInput: ClientRuntime.URLPathProvider { } public struct PutKeyPolicyInput: Swift.Equatable { - /// Skips ("bypasses") the key policy lockout safety check. The default value is false. Setting this value to true increases the risk that the KMS key becomes unmanageable. Do not set this value to true indiscriminately. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#prevent-unmanageable-key) in the Key Management Service Developer Guide. Use this parameter only when you intend to prevent the principal that is making the request from making a subsequent [PutKeyPolicy] request on the KMS key. + /// Skips ("bypasses") the key policy lockout safety check. The default value is false. Setting this value to true increases the risk that the KMS key becomes unmanageable. Do not set this value to true indiscriminately. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#prevent-unmanageable-key) in the Key Management Service Developer Guide. Use this parameter only when you intend to prevent the principal that is making the request from making a subsequent [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) request on the KMS key. public var bypassPolicyLockoutSafetyCheck: Swift.Bool? /// Sets the key policy on the specified KMS key. Specify the key ID or key ARN of the KMS key. For example: /// @@ -9613,7 +9613,7 @@ extension ReplicateKeyInput: ClientRuntime.URLPathProvider { } public struct ReplicateKeyInput: Swift.Equatable { - /// Skips ("bypasses") the key policy lockout safety check. The default value is false. Setting this value to true increases the risk that the KMS key becomes unmanageable. Do not set this value to true indiscriminately. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#prevent-unmanageable-key) in the Key Management Service Developer Guide. Use this parameter only when you intend to prevent the principal that is making the request from making a subsequent [PutKeyPolicy] request on the KMS key. + /// Skips ("bypasses") the key policy lockout safety check. The default value is false. Setting this value to true increases the risk that the KMS key becomes unmanageable. Do not set this value to true indiscriminately. For more information, see [Default key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html#prevent-unmanageable-key) in the Key Management Service Developer Guide. Use this parameter only when you intend to prevent the principal that is making the request from making a subsequent [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) request on the KMS key. public var bypassPolicyLockoutSafetyCheck: Swift.Bool? /// A description of the KMS key. The default value is an empty string (no description). Do not include confidential or sensitive information in this field. This field may be displayed in plaintext in CloudTrail logs and other output. The description is not a shared property of multi-Region keys. You can specify the same description or a different description for each key in a set of related multi-Region keys. KMS does not synchronize this property. public var description: Swift.String? @@ -12542,7 +12542,7 @@ extension XksProxyVpcEndpointServiceInvalidConfigurationException { } } -/// The request was rejected because the Amazon VPC endpoint service configuration does not fulfill the requirements for an external key store proxy. For details, see the exception message and [review the requirements] for Amazon VPC endpoint service connectivity for an external key store. +/// The request was rejected because the Amazon VPC endpoint service configuration does not fulfill the requirements for an external key store proxy. For details, see the exception message and [review the requirements](https://docs.aws.amazon.com/kms/latest/developerguide/vpc-connectivity.html#xks-vpc-requirements) for Amazon VPC endpoint service connectivity for an external key store. public struct XksProxyVpcEndpointServiceInvalidConfigurationException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { public struct Properties { diff --git a/Sources/Services/AWSLocation/models/Models.swift b/Sources/Services/AWSLocation/models/Models.swift index b72381f6128..000d7c216ee 100644 --- a/Sources/Services/AWSLocation/models/Models.swift +++ b/Sources/Services/AWSLocation/models/Models.swift @@ -1742,11 +1742,12 @@ extension LocationClientTypes { extension CalculateRouteInput: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "CalculateRouteInput(calculatorName: \(Swift.String(describing: calculatorName)), carModeOptions: \(Swift.String(describing: carModeOptions)), departNow: \(Swift.String(describing: departNow)), departureTime: \(Swift.String(describing: departureTime)), distanceUnit: \(Swift.String(describing: distanceUnit)), includeLegGeometry: \(Swift.String(describing: includeLegGeometry)), travelMode: \(Swift.String(describing: travelMode)), truckModeOptions: \(Swift.String(describing: truckModeOptions)), waypointPositions: \(Swift.String(describing: waypointPositions)), departurePosition: \"CONTENT_REDACTED\", destinationPosition: \"CONTENT_REDACTED\", key: \"CONTENT_REDACTED\")"} + "CalculateRouteInput(arrivalTime: \(Swift.String(describing: arrivalTime)), calculatorName: \(Swift.String(describing: calculatorName)), carModeOptions: \(Swift.String(describing: carModeOptions)), departNow: \(Swift.String(describing: departNow)), departureTime: \(Swift.String(describing: departureTime)), distanceUnit: \(Swift.String(describing: distanceUnit)), includeLegGeometry: \(Swift.String(describing: includeLegGeometry)), optimizeFor: \(Swift.String(describing: optimizeFor)), travelMode: \(Swift.String(describing: travelMode)), truckModeOptions: \(Swift.String(describing: truckModeOptions)), waypointPositions: \(Swift.String(describing: waypointPositions)), departurePosition: \"CONTENT_REDACTED\", destinationPosition: \"CONTENT_REDACTED\", key: \"CONTENT_REDACTED\")"} } extension CalculateRouteInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case arrivalTime = "ArrivalTime" case carModeOptions = "CarModeOptions" case departNow = "DepartNow" case departurePosition = "DeparturePosition" @@ -1754,6 +1755,7 @@ extension CalculateRouteInput: Swift.Encodable { case destinationPosition = "DestinationPosition" case distanceUnit = "DistanceUnit" case includeLegGeometry = "IncludeLegGeometry" + case optimizeFor = "OptimizeFor" case travelMode = "TravelMode" case truckModeOptions = "TruckModeOptions" case waypointPositions = "WaypointPositions" @@ -1761,6 +1763,9 @@ extension CalculateRouteInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let arrivalTime = self.arrivalTime { + try encodeContainer.encodeTimestamp(arrivalTime, format: .dateTime, forKey: .arrivalTime) + } if let carModeOptions = self.carModeOptions { try encodeContainer.encode(carModeOptions, forKey: .carModeOptions) } @@ -1788,6 +1793,9 @@ extension CalculateRouteInput: Swift.Encodable { if let includeLegGeometry = self.includeLegGeometry { try encodeContainer.encode(includeLegGeometry, forKey: .includeLegGeometry) } + if let optimizeFor = self.optimizeFor { + try encodeContainer.encode(optimizeFor.rawValue, forKey: .optimizeFor) + } if let travelMode = self.travelMode { try encodeContainer.encode(travelMode.rawValue, forKey: .travelMode) } @@ -1829,6 +1837,8 @@ extension CalculateRouteInput: ClientRuntime.URLPathProvider { } public struct CalculateRouteInput: Swift.Equatable { + /// Specifies the desired time of arrival. Uses the given time to calculate the route. Otherwise, the best time of day to travel with the best traffic conditions is used to calculate the route. ArrivalTime is not supported Esri. + public var arrivalTime: ClientRuntime.Date? /// The name of the route calculator resource that you want to use to calculate the route. /// This member is required. public var calculatorName: Swift.String? @@ -1844,7 +1854,7 @@ public struct CalculateRouteInput: Swift.Equatable { /// If you specify a departure that's not located on a road, Amazon Location [moves the position to the nearest road](https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html). If Esri is the provider for your route calculator, specifying a route that is longer than 400 km returns a 400 RoutesValidationException error. Valid Values: [-180 to 180,-90 to 90] /// This member is required. public var departurePosition: [Swift.Double]? - /// Specifies the desired time of departure. Uses the given time to calculate the route. Otherwise, the best time of day to travel with the best traffic conditions is used to calculate the route. Setting a departure time in the past returns a 400 ValidationException error. + /// Specifies the desired time of departure. Uses the given time to calculate the route. Otherwise, the best time of day to travel with the best traffic conditions is used to calculate the route. /// /// * In [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format: YYYY-MM-DDThh:mm:ss.sssZ. For example, 2020–07-2T12:15:20.000Z+01:00 public var departureTime: ClientRuntime.Date? @@ -1862,6 +1872,8 @@ public struct CalculateRouteInput: Swift.Equatable { public var includeLegGeometry: Swift.Bool? /// The optional [API key](https://docs.aws.amazon.com/location/latest/developerguide/using-apikeys.html) to authorize the request. public var key: Swift.String? + /// Specifies the distance to optimize for when calculating a route. + public var optimizeFor: LocationClientTypes.OptimizationMode? /// Specifies the mode of transport when calculating a route. Used in estimating the speed of travel and road compatibility. You can choose Car, Truck, Walking, Bicycle or Motorcycle as options for the TravelMode. Bicycle and Motorcycle are only valid when using Grab as a data provider, and only within Southeast Asia. Truck is not available for Grab. For more details on the using Grab for routing, including areas of coverage, see [GrabMaps](https://docs.aws.amazon.com/location/latest/developerguide/grab.html) in the Amazon Location Service Developer Guide. The TravelMode you specify also determines how you specify route preferences: /// /// * If traveling by Car use the CarModeOptions parameter. @@ -1882,6 +1894,7 @@ public struct CalculateRouteInput: Swift.Equatable { public var waypointPositions: [[Swift.Double]]? public init( + arrivalTime: ClientRuntime.Date? = nil, calculatorName: Swift.String? = nil, carModeOptions: LocationClientTypes.CalculateRouteCarModeOptions? = nil, departNow: Swift.Bool? = nil, @@ -1891,11 +1904,13 @@ public struct CalculateRouteInput: Swift.Equatable { distanceUnit: LocationClientTypes.DistanceUnit? = nil, includeLegGeometry: Swift.Bool? = nil, key: Swift.String? = nil, + optimizeFor: LocationClientTypes.OptimizationMode? = nil, travelMode: LocationClientTypes.TravelMode? = nil, truckModeOptions: LocationClientTypes.CalculateRouteTruckModeOptions? = nil, waypointPositions: [[Swift.Double]]? = nil ) { + self.arrivalTime = arrivalTime self.calculatorName = calculatorName self.carModeOptions = carModeOptions self.departNow = departNow @@ -1905,6 +1920,7 @@ public struct CalculateRouteInput: Swift.Equatable { self.distanceUnit = distanceUnit self.includeLegGeometry = includeLegGeometry self.key = key + self.optimizeFor = optimizeFor self.travelMode = travelMode self.truckModeOptions = truckModeOptions self.waypointPositions = waypointPositions @@ -1922,10 +1938,13 @@ struct CalculateRouteInputBody: Swift.Equatable { let includeLegGeometry: Swift.Bool? let carModeOptions: LocationClientTypes.CalculateRouteCarModeOptions? let truckModeOptions: LocationClientTypes.CalculateRouteTruckModeOptions? + let arrivalTime: ClientRuntime.Date? + let optimizeFor: LocationClientTypes.OptimizationMode? } extension CalculateRouteInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case arrivalTime = "ArrivalTime" case carModeOptions = "CarModeOptions" case departNow = "DepartNow" case departurePosition = "DeparturePosition" @@ -1933,6 +1952,7 @@ extension CalculateRouteInputBody: Swift.Decodable { case destinationPosition = "DestinationPosition" case distanceUnit = "DistanceUnit" case includeLegGeometry = "IncludeLegGeometry" + case optimizeFor = "OptimizeFor" case travelMode = "TravelMode" case truckModeOptions = "TruckModeOptions" case waypointPositions = "WaypointPositions" @@ -1996,6 +2016,10 @@ extension CalculateRouteInputBody: Swift.Decodable { carModeOptions = carModeOptionsDecoded let truckModeOptionsDecoded = try containerValues.decodeIfPresent(LocationClientTypes.CalculateRouteTruckModeOptions.self, forKey: .truckModeOptions) truckModeOptions = truckModeOptionsDecoded + let arrivalTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .arrivalTime) + arrivalTime = arrivalTimeDecoded + let optimizeForDecoded = try containerValues.decodeIfPresent(LocationClientTypes.OptimizationMode.self, forKey: .optimizeFor) + optimizeFor = optimizeForDecoded } } @@ -7776,7 +7800,7 @@ extension ListDevicePositionsInput: ClientRuntime.URLPathProvider { } public struct ListDevicePositionsInput: Swift.Equatable { - /// The geomerty used to filter device positions. + /// The geometry used to filter device positions. public var filterGeometry: LocationClientTypes.TrackingFilterGeometry? /// An optional limit for the number of entries returned in a single call. Default value: 100 public var maxResults: Swift.Int? @@ -10006,6 +10030,38 @@ extension LocationClientTypes { } +extension LocationClientTypes { + public enum OptimizationMode: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case fastestroute + case shortestroute + case sdkUnknown(Swift.String) + + public static var allCases: [OptimizationMode] { + return [ + .fastestroute, + .shortestroute, + .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 .fastestroute: return "FastestRoute" + case .shortestroute: return "ShortestRoute" + 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 = OptimizationMode(rawValue: rawValue) ?? OptimizationMode.sdkUnknown(rawValue) + } + } +} + extension LocationClientTypes.Place: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case addressNumber = "AddressNumber" @@ -10019,6 +10075,7 @@ extension LocationClientTypes.Place: Swift.Codable { case postalCode = "PostalCode" case region = "Region" case street = "Street" + case subMunicipality = "SubMunicipality" case subRegion = "SubRegion" case supplementalCategories = "SupplementalCategories" case timeZone = "TimeZone" @@ -10064,6 +10121,9 @@ extension LocationClientTypes.Place: Swift.Codable { if let street = self.street { try encodeContainer.encode(street, forKey: .street) } + if let subMunicipality = self.subMunicipality { + try encodeContainer.encode(subMunicipality, forKey: .subMunicipality) + } if let subRegion = self.subRegion { try encodeContainer.encode(subRegion, forKey: .subRegion) } @@ -10136,6 +10196,8 @@ extension LocationClientTypes.Place: Swift.Codable { } } supplementalCategories = supplementalCategoriesDecoded0 + let subMunicipalityDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .subMunicipality) + subMunicipality = subMunicipalityDecoded } } @@ -10165,6 +10227,8 @@ extension LocationClientTypes { public var region: Swift.String? /// The name for a street or a road to identify a location. For example, Main Street. public var street: Swift.String? + /// An area that's part of a larger municipality. For example, Blissville is a submunicipality in the Queen County in New York. This property supported by Esri and OpenData. The Esri property is district, and the OpenData property is borough. + public var subMunicipality: Swift.String? /// A county, or an area that's part of a larger region. For example, Metro Vancouver. public var subRegion: Swift.String? /// Categories from the data provider that describe the Place that are not mapped to any Amazon Location categories. @@ -10188,6 +10252,7 @@ extension LocationClientTypes { postalCode: Swift.String? = nil, region: Swift.String? = nil, street: Swift.String? = nil, + subMunicipality: Swift.String? = nil, subRegion: Swift.String? = nil, supplementalCategories: [Swift.String]? = nil, timeZone: LocationClientTypes.TimeZone? = nil, @@ -10206,6 +10271,7 @@ extension LocationClientTypes { self.postalCode = postalCode self.region = region self.street = street + self.subMunicipality = subMunicipality self.subRegion = subRegion self.supplementalCategories = supplementalCategories self.timeZone = timeZone diff --git a/Sources/Services/AWSMarketplaceCatalog/MarketplaceCatalogClient.swift b/Sources/Services/AWSMarketplaceCatalog/MarketplaceCatalogClient.swift index ebbd96a71ee..ac72e65aff0 100644 --- a/Sources/Services/AWSMarketplaceCatalog/MarketplaceCatalogClient.swift +++ b/Sources/Services/AWSMarketplaceCatalog/MarketplaceCatalogClient.swift @@ -67,6 +67,55 @@ public struct MarketplaceCatalogClientLogHandlerFactory: ClientRuntime.SDKLogHan } extension MarketplaceCatalogClient: MarketplaceCatalogClientProtocol { + /// Performs the `BatchDescribeEntities` operation on the `AWSMPSeymour` service. + /// + /// Returns metadata and content for multiple entities. + /// + /// - Parameter BatchDescribeEntitiesInput : [no documentation found] + /// + /// - Returns: `BatchDescribeEntitiesOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : Access is denied. HTTP status code: 403 + /// - `InternalServiceException` : There was an internal service exception. HTTP status code: 500 + /// - `ThrottlingException` : Too many requests. HTTP status code: 429 + /// - `ValidationException` : An error occurred during validation. HTTP status code: 422 + public func batchDescribeEntities(input: BatchDescribeEntitiesInput) async throws -> BatchDescribeEntitiesOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "batchDescribeEntities") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "aws-marketplace") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "batchDescribeEntities") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(BatchDescribeEntitiesOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `CancelChangeSet` operation on the `AWSMPSeymour` service. /// /// Used to cancel an open change request. Must be sent before the status of the request changes to APPLYING, the final stage of completing your change request. You can describe a change during the 60-day request history retention period for API calls. diff --git a/Sources/Services/AWSMarketplaceCatalog/MarketplaceCatalogClientProtocol.swift b/Sources/Services/AWSMarketplaceCatalog/MarketplaceCatalogClientProtocol.swift index d2267d68cfa..5410f1a3f40 100644 --- a/Sources/Services/AWSMarketplaceCatalog/MarketplaceCatalogClientProtocol.swift +++ b/Sources/Services/AWSMarketplaceCatalog/MarketplaceCatalogClientProtocol.swift @@ -4,6 +4,22 @@ import ClientRuntime /// Catalog API actions allow you to manage your entities through list, describe, and update capabilities. An entity can be a product or an offer on AWS Marketplace. You can automate your entity update process by integrating the AWS Marketplace Catalog API with your AWS Marketplace product build or deployment pipelines. You can also create your own applications on top of the Catalog API to manage your products on AWS Marketplace. public protocol MarketplaceCatalogClientProtocol { + /// Performs the `BatchDescribeEntities` operation on the `AWSMPSeymour` service. + /// + /// Returns metadata and content for multiple entities. + /// + /// - Parameter BatchDescribeEntitiesInput : [no documentation found] + /// + /// - Returns: `BatchDescribeEntitiesOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : Access is denied. HTTP status code: 403 + /// - `InternalServiceException` : There was an internal service exception. HTTP status code: 500 + /// - `ThrottlingException` : Too many requests. HTTP status code: 429 + /// - `ValidationException` : An error occurred during validation. HTTP status code: 422 + func batchDescribeEntities(input: BatchDescribeEntitiesInput) async throws -> BatchDescribeEntitiesOutput /// Performs the `CancelChangeSet` operation on the `AWSMPSeymour` service. /// /// Used to cancel an open change request. Must be sent before the status of the request changes to APPLYING, the final stage of completing your change request. You can describe a change during the 60-day request history retention period for API calls. diff --git a/Sources/Services/AWSMarketplaceCatalog/models/Models.swift b/Sources/Services/AWSMarketplaceCatalog/models/Models.swift index 22883e2f311..bea14645577 100644 --- a/Sources/Services/AWSMarketplaceCatalog/models/Models.swift +++ b/Sources/Services/AWSMarketplaceCatalog/models/Models.swift @@ -519,6 +519,193 @@ extension MarketplaceCatalogClientTypes { } } +extension BatchDescribeEntitiesInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case entityRequestList = "EntityRequestList" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let entityRequestList = entityRequestList { + var entityRequestListContainer = encodeContainer.nestedUnkeyedContainer(forKey: .entityRequestList) + for entityrequest0 in entityRequestList { + try entityRequestListContainer.encode(entityrequest0) + } + } + } +} + +extension BatchDescribeEntitiesInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/BatchDescribeEntities" + } +} + +public struct BatchDescribeEntitiesInput: Swift.Equatable { + /// List of entity IDs and the catalogs the entities are present in. + /// This member is required. + public var entityRequestList: [MarketplaceCatalogClientTypes.EntityRequest]? + + public init( + entityRequestList: [MarketplaceCatalogClientTypes.EntityRequest]? = nil + ) + { + self.entityRequestList = entityRequestList + } +} + +struct BatchDescribeEntitiesInputBody: Swift.Equatable { + let entityRequestList: [MarketplaceCatalogClientTypes.EntityRequest]? +} + +extension BatchDescribeEntitiesInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case entityRequestList = "EntityRequestList" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let entityRequestListContainer = try containerValues.decodeIfPresent([MarketplaceCatalogClientTypes.EntityRequest?].self, forKey: .entityRequestList) + var entityRequestListDecoded0:[MarketplaceCatalogClientTypes.EntityRequest]? = nil + if let entityRequestListContainer = entityRequestListContainer { + entityRequestListDecoded0 = [MarketplaceCatalogClientTypes.EntityRequest]() + for structure0 in entityRequestListContainer { + if let structure0 = structure0 { + entityRequestListDecoded0?.append(structure0) + } + } + } + entityRequestList = entityRequestListDecoded0 + } +} + +extension BatchDescribeEntitiesOutput: 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: BatchDescribeEntitiesOutputBody = try responseDecoder.decode(responseBody: data) + self.entityDetails = output.entityDetails + self.errors = output.errors + } else { + self.entityDetails = nil + self.errors = nil + } + } +} + +public struct BatchDescribeEntitiesOutput: Swift.Equatable { + /// Details about each entity. + public var entityDetails: [Swift.String:MarketplaceCatalogClientTypes.EntityDetail]? + /// A map of errors returned, with EntityId as the key and errorDetail as the value. + public var errors: [Swift.String:MarketplaceCatalogClientTypes.BatchDescribeErrorDetail]? + + public init( + entityDetails: [Swift.String:MarketplaceCatalogClientTypes.EntityDetail]? = nil, + errors: [Swift.String:MarketplaceCatalogClientTypes.BatchDescribeErrorDetail]? = nil + ) + { + self.entityDetails = entityDetails + self.errors = errors + } +} + +struct BatchDescribeEntitiesOutputBody: Swift.Equatable { + let entityDetails: [Swift.String:MarketplaceCatalogClientTypes.EntityDetail]? + let errors: [Swift.String:MarketplaceCatalogClientTypes.BatchDescribeErrorDetail]? +} + +extension BatchDescribeEntitiesOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case entityDetails = "EntityDetails" + case errors = "Errors" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let entityDetailsContainer = try containerValues.decodeIfPresent([Swift.String: MarketplaceCatalogClientTypes.EntityDetail?].self, forKey: .entityDetails) + var entityDetailsDecoded0: [Swift.String:MarketplaceCatalogClientTypes.EntityDetail]? = nil + if let entityDetailsContainer = entityDetailsContainer { + entityDetailsDecoded0 = [Swift.String:MarketplaceCatalogClientTypes.EntityDetail]() + for (key0, entitydetail0) in entityDetailsContainer { + if let entitydetail0 = entitydetail0 { + entityDetailsDecoded0?[key0] = entitydetail0 + } + } + } + entityDetails = entityDetailsDecoded0 + let errorsContainer = try containerValues.decodeIfPresent([Swift.String: MarketplaceCatalogClientTypes.BatchDescribeErrorDetail?].self, forKey: .errors) + var errorsDecoded0: [Swift.String:MarketplaceCatalogClientTypes.BatchDescribeErrorDetail]? = nil + if let errorsContainer = errorsContainer { + errorsDecoded0 = [Swift.String:MarketplaceCatalogClientTypes.BatchDescribeErrorDetail]() + for (key0, batchdescribeerrordetail0) in errorsContainer { + if let batchdescribeerrordetail0 = batchdescribeerrordetail0 { + errorsDecoded0?[key0] = batchdescribeerrordetail0 + } + } + } + errors = errorsDecoded0 + } +} + +enum BatchDescribeEntitiesOutputError: 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 "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 MarketplaceCatalogClientTypes.BatchDescribeErrorDetail: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case errorCode = "ErrorCode" + case errorMessage = "ErrorMessage" + } + + 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) + } + } + + 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 MarketplaceCatalogClientTypes { + /// An object that contains an error code and error message. + public struct BatchDescribeErrorDetail: Swift.Equatable { + /// The error code returned. + public var errorCode: Swift.String? + /// The error message returned. + public var errorMessage: Swift.String? + + public init( + errorCode: Swift.String? = nil, + errorMessage: Swift.String? = nil + ) + { + self.errorCode = errorCode + self.errorMessage = errorMessage + } + } + +} + extension CancelChangeSetInput: ClientRuntime.QueryItemProvider { public var queryItems: [ClientRuntime.URLQueryItem] { get throws { @@ -705,7 +892,7 @@ extension MarketplaceCatalogClientTypes { public struct Change: Swift.Equatable { /// Optional name for the change. public var changeName: Swift.String? - /// Change types are single string values that describe your intention for the change. Each change type is unique for each EntityType provided in the change's scope. For more information on change types available for single-AMI products, see [Working with single-AMI products](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/ami-products.html#working-with-single-AMI-products). Also, for more information about change types available for container-based products, see [Working with container products](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/container-products.html#working-with-container-products). + /// Change types are single string values that describe your intention for the change. Each change type is unique for each EntityType provided in the change's scope. For more information about change types available for single-AMI products, see [Working with single-AMI products](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/ami-products.html#working-with-single-AMI-products). Also, for more information about change types available for container-based products, see [Working with container products](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/container-products.html#working-with-container-products). /// This member is required. public var changeType: Swift.String? /// This object contains details specific to the change type of the requested change. For more information about change types available for single-AMI products, see [Working with single-AMI products](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/ami-products.html#working-with-single-AMI-products). Also, for more information about change types available for container-based products, see [Working with container products](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/container-products.html#working-with-container-products). @@ -2392,6 +2579,128 @@ extension MarketplaceCatalogClientTypes { } +extension MarketplaceCatalogClientTypes.EntityDetail: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case detailsDocument = "DetailsDocument" + case entityArn = "EntityArn" + case entityIdentifier = "EntityIdentifier" + case entityType = "EntityType" + case lastModifiedDate = "LastModifiedDate" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let detailsDocument = self.detailsDocument { + try encodeContainer.encode(detailsDocument, forKey: .detailsDocument) + } + if let entityArn = self.entityArn { + try encodeContainer.encode(entityArn, forKey: .entityArn) + } + if let entityIdentifier = self.entityIdentifier { + try encodeContainer.encode(entityIdentifier, forKey: .entityIdentifier) + } + if let entityType = self.entityType { + try encodeContainer.encode(entityType, forKey: .entityType) + } + if let lastModifiedDate = self.lastModifiedDate { + try encodeContainer.encode(lastModifiedDate, forKey: .lastModifiedDate) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let entityTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .entityType) + entityType = entityTypeDecoded + let entityArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .entityArn) + entityArn = entityArnDecoded + let entityIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .entityIdentifier) + entityIdentifier = entityIdentifierDecoded + let lastModifiedDateDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lastModifiedDate) + lastModifiedDate = lastModifiedDateDecoded + let detailsDocumentDecoded = try containerValues.decodeIfPresent(ClientRuntime.Document.self, forKey: .detailsDocument) + detailsDocument = detailsDocumentDecoded + } +} + +extension MarketplaceCatalogClientTypes { + /// An object that contains metadata and details about the entity. + public struct EntityDetail: Swift.Equatable { + /// An object that contains all the details of the entity. + public var detailsDocument: ClientRuntime.Document? + /// The Amazon Resource Name (ARN) of the entity. + public var entityArn: Swift.String? + /// The ID of the entity, in the format of EntityId@RevisionId. + public var entityIdentifier: Swift.String? + /// The entity type of the entity, in the format of EntityType@Version. + public var entityType: Swift.String? + /// The last time the entity was modified. + public var lastModifiedDate: Swift.String? + + public init( + detailsDocument: ClientRuntime.Document? = nil, + entityArn: Swift.String? = nil, + entityIdentifier: Swift.String? = nil, + entityType: Swift.String? = nil, + lastModifiedDate: Swift.String? = nil + ) + { + self.detailsDocument = detailsDocument + self.entityArn = entityArn + self.entityIdentifier = entityIdentifier + self.entityType = entityType + self.lastModifiedDate = lastModifiedDate + } + } + +} + +extension MarketplaceCatalogClientTypes.EntityRequest: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case catalog = "Catalog" + case entityId = "EntityId" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let catalog = self.catalog { + try encodeContainer.encode(catalog, forKey: .catalog) + } + if let entityId = self.entityId { + try encodeContainer.encode(entityId, forKey: .entityId) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let catalogDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .catalog) + catalog = catalogDecoded + let entityIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .entityId) + entityId = entityIdDecoded + } +} + +extension MarketplaceCatalogClientTypes { + /// An object that contains entity ID and the catalog in which the entity is present. + public struct EntityRequest: Swift.Equatable { + /// The name of the catalog the entity is present in. The only value at this time is AWSMarketplace. + /// This member is required. + public var catalog: Swift.String? + /// The ID of the entity. + /// This member is required. + public var entityId: Swift.String? + + public init( + catalog: Swift.String? = nil, + entityId: Swift.String? = nil + ) + { + self.catalog = catalog + self.entityId = entityId + } + } + +} + extension MarketplaceCatalogClientTypes.EntitySummary: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case amiProductSummary = "AmiProductSummary" @@ -3251,7 +3560,7 @@ public struct ListEntitiesInput: Swift.Equatable { /// The catalog related to the request. Fixed value: AWSMarketplace /// This member is required. public var catalog: Swift.String? - /// The type of entities to retrieve. Valid values are: ServerProduct, AmiProduct, ContainerProduct, DataProduct, SaaSProduct, ProcurementPolicy, Experience, Audience, BrandingSettings, Offer, Seller, ResaleAuthorization. + /// The type of entities to retrieve. Valid values are: AmiProduct, ContainerProduct, DataProduct, SaaSProduct, ProcurementPolicy, Experience, Audience, BrandingSettings, Offer, Seller, ResaleAuthorization. /// This member is required. public var entityType: Swift.String? /// A Union object containing filter shapes for all EntityTypes. Each EntityTypeFilter shape will have filters applicable for that EntityType that can be used to search or filter entities. diff --git a/Sources/Services/AWSNeptune/NeptuneClient.swift b/Sources/Services/AWSNeptune/NeptuneClient.swift index 9f03cd147a6..d713faece62 100644 --- a/Sources/Services/AWSNeptune/NeptuneClient.swift +++ b/Sources/Services/AWSNeptune/NeptuneClient.swift @@ -2382,6 +2382,7 @@ extension NeptuneClient: NeptuneClientProtocol { /// - `InvalidSubnet` : The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC. /// - `InvalidVPCNetworkStateFault` : DB subnet group does not cover all Availability Zones after it is created because users' change. /// - `StorageQuotaExceededFault` : Request would result in user exceeding the allowed amount of storage available across all DB instances. + /// - `StorageTypeNotSupportedFault` : StorageType specified cannot be associated with the DB Instance. public func modifyDBCluster(input: ModifyDBClusterInput) async throws -> ModifyDBClusterOutput { let context = ClientRuntime.HttpContextBuilder() diff --git a/Sources/Services/AWSNeptune/NeptuneClientProtocol.swift b/Sources/Services/AWSNeptune/NeptuneClientProtocol.swift index 4f4c4f5f3ea..5ea78dc39ad 100644 --- a/Sources/Services/AWSNeptune/NeptuneClientProtocol.swift +++ b/Sources/Services/AWSNeptune/NeptuneClientProtocol.swift @@ -739,6 +739,7 @@ public protocol NeptuneClientProtocol { /// - `InvalidSubnet` : The requested subnet is invalid, or multiple subnets were requested that are not all in a common VPC. /// - `InvalidVPCNetworkStateFault` : DB subnet group does not cover all Availability Zones after it is created because users' change. /// - `StorageQuotaExceededFault` : Request would result in user exceeding the allowed amount of storage available across all DB instances. + /// - `StorageTypeNotSupportedFault` : StorageType specified cannot be associated with the DB Instance. func modifyDBCluster(input: ModifyDBClusterInput) async throws -> ModifyDBClusterOutput /// Performs the `ModifyDBClusterEndpoint` operation on the `AmazonRDSv19` service. /// diff --git a/Sources/Services/AWSNeptune/models/Models.swift b/Sources/Services/AWSNeptune/models/Models.swift index 8e04bb20f5f..da23686d2fe 100644 --- a/Sources/Services/AWSNeptune/models/Models.swift +++ b/Sources/Services/AWSNeptune/models/Models.swift @@ -745,7 +745,7 @@ extension NeptuneClientTypes.CloudwatchLogsExportConfiguration: Swift.Codable { } extension NeptuneClientTypes { - /// The configuration setting for the log types to be enabled for export to CloudWatch Logs for a specific DB instance or DB cluster. The EnableLogTypes and DisableLogTypes arrays determine which logs will be exported (or not exported) to CloudWatch Logs. + /// The configuration setting for the log types to be enabled for export to CloudWatch Logs for a specific DB instance or DB cluster. The EnableLogTypes and DisableLogTypes arrays determine which logs will be exported (or not exported) to CloudWatch Logs. Valid log types are: audit (to publish audit logs) and slowquery (to publish slow-query logs). See [Publishing Neptune logs to Amazon CloudWatch logs](https://docs.aws.amazon.com/neptune/latest/userguide/cloudwatch-logs.html). public struct CloudwatchLogsExportConfiguration: Swift.Equatable { /// The list of log types to disable. public var disableLogTypes: [Swift.String]? @@ -773,6 +773,7 @@ extension NeptuneClientTypes.ClusterPendingModifiedValues: Swift.Codable { case iamDatabaseAuthenticationEnabled = "IAMDatabaseAuthenticationEnabled" case iops = "Iops" case pendingCloudwatchLogsExports = "PendingCloudwatchLogsExports" + case storageType = "StorageType" } public func encode(to encoder: Swift.Encoder) throws { @@ -798,6 +799,9 @@ extension NeptuneClientTypes.ClusterPendingModifiedValues: Swift.Codable { if let pendingCloudwatchLogsExports = pendingCloudwatchLogsExports { try container.encode(pendingCloudwatchLogsExports, forKey: ClientRuntime.Key("PendingCloudwatchLogsExports")) } + if let storageType = storageType { + try container.encode(storageType, forKey: ClientRuntime.Key("StorageType")) + } } public init(from decoder: Swift.Decoder) throws { @@ -812,6 +816,8 @@ extension NeptuneClientTypes.ClusterPendingModifiedValues: Swift.Codable { engineVersion = engineVersionDecoded let backupRetentionPeriodDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .backupRetentionPeriod) backupRetentionPeriod = backupRetentionPeriodDecoded + let storageTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .storageType) + storageType = storageTypeDecoded let allocatedStorageDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .allocatedStorage) allocatedStorage = allocatedStorageDecoded let iopsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .iops) @@ -836,6 +842,8 @@ extension NeptuneClientTypes { public var iops: Swift.Int? /// This PendingCloudwatchLogsExports structure specifies pending changes to which CloudWatch logs are enabled and which are disabled. public var pendingCloudwatchLogsExports: NeptuneClientTypes.PendingCloudwatchLogsExports? + /// The storage type for the DB cluster. + public var storageType: Swift.String? public init( allocatedStorage: Swift.Int? = nil, @@ -844,7 +852,8 @@ extension NeptuneClientTypes { engineVersion: Swift.String? = nil, iamDatabaseAuthenticationEnabled: Swift.Bool? = nil, iops: Swift.Int? = nil, - pendingCloudwatchLogsExports: NeptuneClientTypes.PendingCloudwatchLogsExports? = nil + pendingCloudwatchLogsExports: NeptuneClientTypes.PendingCloudwatchLogsExports? = nil, + storageType: Swift.String? = nil ) { self.allocatedStorage = allocatedStorage @@ -854,6 +863,7 @@ extension NeptuneClientTypes { self.iamDatabaseAuthenticationEnabled = iamDatabaseAuthenticationEnabled self.iops = iops self.pendingCloudwatchLogsExports = pendingCloudwatchLogsExports + self.storageType = storageType } } @@ -1880,6 +1890,9 @@ extension CreateDBClusterInput: Swift.Encodable { if let storageEncrypted = storageEncrypted { try container.encode(storageEncrypted, forKey: ClientRuntime.Key("StorageEncrypted")) } + if let storageType = storageType { + try container.encode(storageType, forKey: ClientRuntime.Key("StorageType")) + } if let tags = tags { if !tags.isEmpty { var tagsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Tags")) @@ -1948,7 +1961,7 @@ public struct CreateDBClusterInput: Swift.Equatable { public var dbSubnetGroupName: Swift.String? /// A value that indicates whether the DB cluster has deletion protection enabled. The database can't be deleted when deletion protection is enabled. By default, deletion protection is enabled. public var deletionProtection: Swift.Bool? - /// The list of log types that need to be enabled for exporting to CloudWatch Logs. + /// A list of the log types that this DB cluster should export to CloudWatch Logs. Valid log types are: audit (to publish audit logs) and slowquery (to publish slow-query logs). See [Publishing Neptune logs to Amazon CloudWatch logs](https://docs.aws.amazon.com/neptune/latest/userguide/cloudwatch-logs.html). public var enableCloudwatchLogsExports: [Swift.String]? /// If set to true, enables Amazon Identity and Access Management (IAM) authentication for the entire DB cluster (this cannot be set at an instance level). Default: false. public var enableIAMDatabaseAuthentication: Swift.Bool? @@ -1996,6 +2009,18 @@ public struct CreateDBClusterInput: Swift.Equatable { public var serverlessV2ScalingConfiguration: NeptuneClientTypes.ServerlessV2ScalingConfiguration? /// Specifies whether the DB cluster is encrypted. public var storageEncrypted: Swift.Bool? + /// The storage type to associate with the DB cluster. Valid Values: + /// + /// * standard | iopt1 + /// + /// + /// Default: + /// + /// * standard + /// + /// + /// When you create a Neptune cluster with the storage type set to iopt1, the storage type is returned in the response. The storage type isn't returned when you set it to standard. + public var storageType: Swift.String? /// The tags to assign to the new DB cluster. public var tags: [NeptuneClientTypes.Tag]? /// A list of EC2 VPC security groups to associate with this DB cluster. @@ -2027,6 +2052,7 @@ public struct CreateDBClusterInput: Swift.Equatable { replicationSourceIdentifier: Swift.String? = nil, serverlessV2ScalingConfiguration: NeptuneClientTypes.ServerlessV2ScalingConfiguration? = nil, storageEncrypted: Swift.Bool? = nil, + storageType: Swift.String? = nil, tags: [NeptuneClientTypes.Tag]? = nil, vpcSecurityGroupIds: [Swift.String]? = nil ) @@ -2056,6 +2082,7 @@ public struct CreateDBClusterInput: Swift.Equatable { self.replicationSourceIdentifier = replicationSourceIdentifier self.serverlessV2ScalingConfiguration = serverlessV2ScalingConfiguration self.storageEncrypted = storageEncrypted + self.storageType = storageType self.tags = tags self.vpcSecurityGroupIds = vpcSecurityGroupIds } @@ -2089,6 +2116,7 @@ struct CreateDBClusterInputBody: Swift.Equatable { let deletionProtection: Swift.Bool? let serverlessV2ScalingConfiguration: NeptuneClientTypes.ServerlessV2ScalingConfiguration? let globalClusterIdentifier: Swift.String? + let storageType: Swift.String? } extension CreateDBClusterInputBody: Swift.Decodable { @@ -2118,6 +2146,7 @@ extension CreateDBClusterInputBody: Swift.Decodable { case replicationSourceIdentifier = "ReplicationSourceIdentifier" case serverlessV2ScalingConfiguration = "ServerlessV2ScalingConfiguration" case storageEncrypted = "StorageEncrypted" + case storageType = "StorageType" case tags = "Tags" case vpcSecurityGroupIds = "VpcSecurityGroupIds" } @@ -2246,6 +2275,8 @@ extension CreateDBClusterInputBody: Swift.Decodable { serverlessV2ScalingConfiguration = serverlessV2ScalingConfigurationDecoded let globalClusterIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .globalClusterIdentifier) globalClusterIdentifier = globalClusterIdentifierDecoded + let storageTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .storageType) + storageType = storageTypeDecoded } } @@ -4150,6 +4181,7 @@ extension NeptuneClientTypes.DBCluster: Swift.Codable { case globalClusterIdentifier = "GlobalClusterIdentifier" case hostedZoneId = "HostedZoneId" case iamDatabaseAuthenticationEnabled = "IAMDatabaseAuthenticationEnabled" + case ioOptimizedNextAllowedModificationTime = "IOOptimizedNextAllowedModificationTime" case kmsKeyId = "KmsKeyId" case latestRestorableTime = "LatestRestorableTime" case masterUsername = "MasterUsername" @@ -4165,6 +4197,7 @@ extension NeptuneClientTypes.DBCluster: Swift.Codable { case serverlessV2ScalingConfiguration = "ServerlessV2ScalingConfiguration" case status = "Status" case storageEncrypted = "StorageEncrypted" + case storageType = "StorageType" case vpcSecurityGroups = "VpcSecurityGroups" } @@ -4296,6 +4329,9 @@ extension NeptuneClientTypes.DBCluster: Swift.Codable { if let iamDatabaseAuthenticationEnabled = iamDatabaseAuthenticationEnabled { try container.encode(iamDatabaseAuthenticationEnabled, forKey: ClientRuntime.Key("IAMDatabaseAuthenticationEnabled")) } + if let ioOptimizedNextAllowedModificationTime = ioOptimizedNextAllowedModificationTime { + try container.encodeTimestamp(ioOptimizedNextAllowedModificationTime, format: .dateTime, forKey: ClientRuntime.Key("IOOptimizedNextAllowedModificationTime")) + } if let kmsKeyId = kmsKeyId { try container.encode(kmsKeyId, forKey: ClientRuntime.Key("KmsKeyId")) } @@ -4350,6 +4386,9 @@ extension NeptuneClientTypes.DBCluster: Swift.Codable { if let storageEncrypted = storageEncrypted { try container.encode(storageEncrypted, forKey: ClientRuntime.Key("StorageEncrypted")) } + if let storageType = storageType { + try container.encode(storageType, forKey: ClientRuntime.Key("StorageType")) + } if let vpcSecurityGroups = vpcSecurityGroups { if !vpcSecurityGroups.isEmpty { var vpcSecurityGroupsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("VpcSecurityGroups")) @@ -4571,6 +4610,10 @@ extension NeptuneClientTypes.DBCluster: Swift.Codable { serverlessV2ScalingConfiguration = serverlessV2ScalingConfigurationDecoded let globalClusterIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .globalClusterIdentifier) globalClusterIdentifier = globalClusterIdentifierDecoded + let ioOptimizedNextAllowedModificationTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .ioOptimizedNextAllowedModificationTime) + ioOptimizedNextAllowedModificationTime = ioOptimizedNextAllowedModificationTimeDecoded + let storageTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .storageType) + storageType = storageTypeDecoded } } @@ -4617,7 +4660,7 @@ extension NeptuneClientTypes { public var deletionProtection: Swift.Bool? /// Specifies the earliest time to which a database can be restored with point-in-time restore. public var earliestRestorableTime: ClientRuntime.Date? - /// A list of log types that this DB cluster is configured to export to CloudWatch Logs. + /// A list of the log types that this DB cluster is configured to export to CloudWatch Logs. Valid log types are: audit (to publish audit logs to CloudWatch) and slowquery (to publish slow-query logs to CloudWatch). See [Publishing Neptune logs to Amazon CloudWatch logs](https://docs.aws.amazon.com/neptune/latest/userguide/cloudwatch-logs.html). public var enabledCloudwatchLogsExports: [Swift.String]? /// Specifies the connection endpoint for the primary instance of the DB cluster. public var endpoint: Swift.String? @@ -4631,6 +4674,8 @@ extension NeptuneClientTypes { public var hostedZoneId: Swift.String? /// True if mapping of Amazon Identity and Access Management (IAM) accounts to database accounts is enabled, and otherwise false. public var iamDatabaseAuthenticationEnabled: Swift.Bool? + /// The next time you can modify the DB cluster to use the iopt1 storage type. + public var ioOptimizedNextAllowedModificationTime: ClientRuntime.Date? /// If StorageEncrypted is true, the Amazon KMS key identifier for the encrypted DB cluster. public var kmsKeyId: Swift.String? /// Specifies the latest time to which a database can be restored with point-in-time restore. @@ -4661,6 +4706,8 @@ extension NeptuneClientTypes { public var status: Swift.String? /// Specifies whether the DB cluster is encrypted. public var storageEncrypted: Swift.Bool? + /// The storage type associated with the DB cluster. + public var storageType: Swift.String? /// Provides a list of VPC security groups that the DB cluster belongs to. public var vpcSecurityGroups: [NeptuneClientTypes.VpcSecurityGroupMembership]? @@ -4692,6 +4739,7 @@ extension NeptuneClientTypes { globalClusterIdentifier: Swift.String? = nil, hostedZoneId: Swift.String? = nil, iamDatabaseAuthenticationEnabled: Swift.Bool? = nil, + ioOptimizedNextAllowedModificationTime: ClientRuntime.Date? = nil, kmsKeyId: Swift.String? = nil, latestRestorableTime: ClientRuntime.Date? = nil, masterUsername: Swift.String? = nil, @@ -4707,6 +4755,7 @@ extension NeptuneClientTypes { serverlessV2ScalingConfiguration: NeptuneClientTypes.ServerlessV2ScalingConfigurationInfo? = nil, status: Swift.String? = nil, storageEncrypted: Swift.Bool? = nil, + storageType: Swift.String? = nil, vpcSecurityGroups: [NeptuneClientTypes.VpcSecurityGroupMembership]? = nil ) { @@ -4737,6 +4786,7 @@ extension NeptuneClientTypes { self.globalClusterIdentifier = globalClusterIdentifier self.hostedZoneId = hostedZoneId self.iamDatabaseAuthenticationEnabled = iamDatabaseAuthenticationEnabled + self.ioOptimizedNextAllowedModificationTime = ioOptimizedNextAllowedModificationTime self.kmsKeyId = kmsKeyId self.latestRestorableTime = latestRestorableTime self.masterUsername = masterUsername @@ -4752,6 +4802,7 @@ extension NeptuneClientTypes { self.serverlessV2ScalingConfiguration = serverlessV2ScalingConfiguration self.status = status self.storageEncrypted = storageEncrypted + self.storageType = storageType self.vpcSecurityGroups = vpcSecurityGroups } } @@ -5753,6 +5804,7 @@ extension NeptuneClientTypes.DBClusterSnapshot: Swift.Codable { case sourceDBClusterSnapshotArn = "SourceDBClusterSnapshotArn" case status = "Status" case storageEncrypted = "StorageEncrypted" + case storageType = "StorageType" case vpcId = "VpcId" } @@ -5824,6 +5876,9 @@ extension NeptuneClientTypes.DBClusterSnapshot: Swift.Codable { if let storageEncrypted = storageEncrypted { try container.encode(storageEncrypted, forKey: ClientRuntime.Key("StorageEncrypted")) } + if let storageType = storageType { + try container.encode(storageType, forKey: ClientRuntime.Key("StorageType")) + } if let vpcId = vpcId { try container.encode(vpcId, forKey: ClientRuntime.Key("VpcId")) } @@ -5888,6 +5943,8 @@ extension NeptuneClientTypes.DBClusterSnapshot: Swift.Codable { sourceDBClusterSnapshotArn = sourceDBClusterSnapshotArnDecoded let iamDatabaseAuthenticationEnabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .iamDatabaseAuthenticationEnabled) iamDatabaseAuthenticationEnabled = iamDatabaseAuthenticationEnabledDecoded + let storageTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .storageType) + storageType = storageTypeDecoded } } @@ -5932,6 +5989,8 @@ extension NeptuneClientTypes { public var status: Swift.String? /// Specifies whether the DB cluster snapshot is encrypted. public var storageEncrypted: Swift.Bool? + /// The storage type associated with the DB cluster snapshot. + public var storageType: Swift.String? /// Provides the VPC ID associated with the DB cluster snapshot. public var vpcId: Swift.String? @@ -5955,6 +6014,7 @@ extension NeptuneClientTypes { sourceDBClusterSnapshotArn: Swift.String? = nil, status: Swift.String? = nil, storageEncrypted: Swift.Bool? = nil, + storageType: Swift.String? = nil, vpcId: Swift.String? = nil ) { @@ -5977,6 +6037,7 @@ extension NeptuneClientTypes { self.sourceDBClusterSnapshotArn = sourceDBClusterSnapshotArn self.status = status self.storageEncrypted = storageEncrypted + self.storageType = storageType self.vpcId = vpcId } } @@ -16040,6 +16101,9 @@ extension ModifyDBClusterInput: Swift.Encodable { if let serverlessV2ScalingConfiguration = serverlessV2ScalingConfiguration { try container.encode(serverlessV2ScalingConfiguration, forKey: ClientRuntime.Key("ServerlessV2ScalingConfiguration")) } + if let storageType = storageType { + try container.encode(storageType, forKey: ClientRuntime.Key("StorageType")) + } if let vpcSecurityGroupIds = vpcSecurityGroupIds { if !vpcSecurityGroupIds.isEmpty { var vpcSecurityGroupIdsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("VpcSecurityGroupIds")) @@ -16072,7 +16136,7 @@ public struct ModifyDBClusterInput: Swift.Equatable { /// /// * Must be a value from 1 to 35 public var backupRetentionPeriod: Swift.Int? - /// The configuration setting for the log types to be enabled for export to CloudWatch Logs for a specific DB cluster. + /// The configuration setting for the log types to be enabled for export to CloudWatch Logs for a specific DB cluster. See [Using the CLI to publish Neptune audit logs to CloudWatch Logs](https://docs.aws.amazon.com/neptune/latest/userguide/cloudwatch-logs.html#cloudwatch-logs-cli). public var cloudwatchLogsExportConfiguration: NeptuneClientTypes.CloudwatchLogsExportConfiguration? /// If set to true, tags are copied to any snapshot of the DB cluster that is created. public var copyTagsToSnapshot: Swift.Bool? @@ -16126,6 +16190,15 @@ public struct ModifyDBClusterInput: Swift.Equatable { public var preferredMaintenanceWindow: Swift.String? /// Contains the scaling configuration of a Neptune Serverless DB cluster. For more information, see [Using Amazon Neptune Serverless](https://docs.aws.amazon.com/neptune/latest/userguide/neptune-serverless-using.html) in the Amazon Neptune User Guide. public var serverlessV2ScalingConfiguration: NeptuneClientTypes.ServerlessV2ScalingConfiguration? + /// The storage type to associate with the DB cluster. Valid Values: + /// + /// * standard | iopt1 + /// + /// + /// Default: + /// + /// * standard + public var storageType: Swift.String? /// A list of VPC security groups that the DB cluster will belong to. public var vpcSecurityGroupIds: [Swift.String]? @@ -16148,6 +16221,7 @@ public struct ModifyDBClusterInput: Swift.Equatable { preferredBackupWindow: Swift.String? = nil, preferredMaintenanceWindow: Swift.String? = nil, serverlessV2ScalingConfiguration: NeptuneClientTypes.ServerlessV2ScalingConfiguration? = nil, + storageType: Swift.String? = nil, vpcSecurityGroupIds: [Swift.String]? = nil ) { @@ -16169,6 +16243,7 @@ public struct ModifyDBClusterInput: Swift.Equatable { self.preferredBackupWindow = preferredBackupWindow self.preferredMaintenanceWindow = preferredMaintenanceWindow self.serverlessV2ScalingConfiguration = serverlessV2ScalingConfiguration + self.storageType = storageType self.vpcSecurityGroupIds = vpcSecurityGroupIds } } @@ -16193,6 +16268,7 @@ struct ModifyDBClusterInputBody: Swift.Equatable { let deletionProtection: Swift.Bool? let copyTagsToSnapshot: Swift.Bool? let serverlessV2ScalingConfiguration: NeptuneClientTypes.ServerlessV2ScalingConfiguration? + let storageType: Swift.String? } extension ModifyDBClusterInputBody: Swift.Decodable { @@ -16215,6 +16291,7 @@ extension ModifyDBClusterInputBody: Swift.Decodable { case preferredBackupWindow = "PreferredBackupWindow" case preferredMaintenanceWindow = "PreferredMaintenanceWindow" case serverlessV2ScalingConfiguration = "ServerlessV2ScalingConfiguration" + case storageType = "StorageType" case vpcSecurityGroupIds = "VpcSecurityGroupIds" } @@ -16275,6 +16352,8 @@ extension ModifyDBClusterInputBody: Swift.Decodable { copyTagsToSnapshot = copyTagsToSnapshotDecoded let serverlessV2ScalingConfigurationDecoded = try containerValues.decodeIfPresent(NeptuneClientTypes.ServerlessV2ScalingConfiguration.self, forKey: .serverlessV2ScalingConfiguration) serverlessV2ScalingConfiguration = serverlessV2ScalingConfigurationDecoded + let storageTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .storageType) + storageType = storageTypeDecoded } } @@ -16334,6 +16413,7 @@ enum ModifyDBClusterOutputError: ClientRuntime.HttpResponseErrorBinding { case "InvalidSubnet": return try await InvalidSubnet(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 "StorageQuotaExceeded": return try await StorageQuotaExceededFault(httpResponse: httpResponse, decoder: decoder, message: restXMLError.message, requestID: restXMLError.requestId) + case "StorageTypeNotSupported": return try await StorageTypeNotSupportedFault(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) } } @@ -18433,7 +18513,7 @@ extension NeptuneClientTypes.PendingCloudwatchLogsExports: Swift.Codable { } extension NeptuneClientTypes { - /// 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. + /// 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. Valid log types are: audit (to publish audit logs) and slowquery (to publish slow-query logs). See [Publishing Neptune logs to Amazon CloudWatch logs](https://docs.aws.amazon.com/neptune/latest/userguide/cloudwatch-logs.html). public struct PendingCloudwatchLogsExports: Swift.Equatable { /// Log types that are in the process of being enabled. After they are enabled, these log types are exported to CloudWatch Logs. public var logTypesToDisable: [Swift.String]? @@ -19937,6 +20017,9 @@ extension RestoreDBClusterFromSnapshotInput: Swift.Encodable { if let snapshotIdentifier = snapshotIdentifier { try container.encode(snapshotIdentifier, forKey: ClientRuntime.Key("SnapshotIdentifier")) } + if let storageType = storageType { + try container.encode(storageType, forKey: ClientRuntime.Key("StorageType")) + } if let tags = tags { if !tags.isEmpty { var tagsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Tags")) @@ -20025,6 +20108,8 @@ public struct RestoreDBClusterFromSnapshotInput: Swift.Equatable { /// * Must match the identifier of an existing Snapshot. /// This member is required. public var snapshotIdentifier: Swift.String? + /// Specifies the storage type to be associated with the DB cluster. Valid values: standard, iopt1 Default: standard + public var storageType: Swift.String? /// The tags to be assigned to the restored DB cluster. public var tags: [NeptuneClientTypes.Tag]? /// A list of VPC security groups that the new DB cluster will belong to. @@ -20047,6 +20132,7 @@ public struct RestoreDBClusterFromSnapshotInput: Swift.Equatable { port: Swift.Int? = nil, serverlessV2ScalingConfiguration: NeptuneClientTypes.ServerlessV2ScalingConfiguration? = nil, snapshotIdentifier: Swift.String? = nil, + storageType: Swift.String? = nil, tags: [NeptuneClientTypes.Tag]? = nil, vpcSecurityGroupIds: [Swift.String]? = nil ) @@ -20067,6 +20153,7 @@ public struct RestoreDBClusterFromSnapshotInput: Swift.Equatable { self.port = port self.serverlessV2ScalingConfiguration = serverlessV2ScalingConfiguration self.snapshotIdentifier = snapshotIdentifier + self.storageType = storageType self.tags = tags self.vpcSecurityGroupIds = vpcSecurityGroupIds } @@ -20091,6 +20178,7 @@ struct RestoreDBClusterFromSnapshotInputBody: Swift.Equatable { let deletionProtection: Swift.Bool? let copyTagsToSnapshot: Swift.Bool? let serverlessV2ScalingConfiguration: NeptuneClientTypes.ServerlessV2ScalingConfiguration? + let storageType: Swift.String? } extension RestoreDBClusterFromSnapshotInputBody: Swift.Decodable { @@ -20111,6 +20199,7 @@ extension RestoreDBClusterFromSnapshotInputBody: Swift.Decodable { case port = "Port" case serverlessV2ScalingConfiguration = "ServerlessV2ScalingConfiguration" case snapshotIdentifier = "SnapshotIdentifier" + case storageType = "StorageType" case tags = "Tags" case vpcSecurityGroupIds = "VpcSecurityGroupIds" } @@ -20221,6 +20310,8 @@ extension RestoreDBClusterFromSnapshotInputBody: Swift.Decodable { copyTagsToSnapshot = copyTagsToSnapshotDecoded let serverlessV2ScalingConfigurationDecoded = try containerValues.decodeIfPresent(NeptuneClientTypes.ServerlessV2ScalingConfiguration.self, forKey: .serverlessV2ScalingConfiguration) serverlessV2ScalingConfiguration = serverlessV2ScalingConfigurationDecoded + let storageTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .storageType) + storageType = storageTypeDecoded } } @@ -20341,6 +20432,9 @@ extension RestoreDBClusterToPointInTimeInput: Swift.Encodable { if let sourceDBClusterIdentifier = sourceDBClusterIdentifier { try container.encode(sourceDBClusterIdentifier, forKey: ClientRuntime.Key("SourceDBClusterIdentifier")) } + if let storageType = storageType { + try container.encode(storageType, forKey: ClientRuntime.Key("StorageType")) + } if let tags = tags { if !tags.isEmpty { var tagsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Tags")) @@ -20443,6 +20537,8 @@ public struct RestoreDBClusterToPointInTimeInput: Swift.Equatable { /// * Must match the identifier of an existing DBCluster. /// This member is required. public var sourceDBClusterIdentifier: Swift.String? + /// Specifies the storage type to be associated with the DB cluster. Valid values: standard, iopt1 Default: standard + public var storageType: Swift.String? /// The tags to be applied to the restored DB cluster. public var tags: [NeptuneClientTypes.Tag]? /// A value that is set to true to restore the DB cluster to the latest restorable backup time, and false otherwise. Default: false Constraints: Cannot be specified if RestoreToTime parameter is provided. @@ -20464,6 +20560,7 @@ public struct RestoreDBClusterToPointInTimeInput: Swift.Equatable { restoreType: Swift.String? = nil, serverlessV2ScalingConfiguration: NeptuneClientTypes.ServerlessV2ScalingConfiguration? = nil, sourceDBClusterIdentifier: Swift.String? = nil, + storageType: Swift.String? = nil, tags: [NeptuneClientTypes.Tag]? = nil, useLatestRestorableTime: Swift.Bool? = nil, vpcSecurityGroupIds: [Swift.String]? = nil @@ -20482,6 +20579,7 @@ public struct RestoreDBClusterToPointInTimeInput: Swift.Equatable { self.restoreType = restoreType self.serverlessV2ScalingConfiguration = serverlessV2ScalingConfiguration self.sourceDBClusterIdentifier = sourceDBClusterIdentifier + self.storageType = storageType self.tags = tags self.useLatestRestorableTime = useLatestRestorableTime self.vpcSecurityGroupIds = vpcSecurityGroupIds @@ -20505,6 +20603,7 @@ struct RestoreDBClusterToPointInTimeInputBody: Swift.Equatable { let dbClusterParameterGroupName: Swift.String? let deletionProtection: Swift.Bool? let serverlessV2ScalingConfiguration: NeptuneClientTypes.ServerlessV2ScalingConfiguration? + let storageType: Swift.String? } extension RestoreDBClusterToPointInTimeInputBody: Swift.Decodable { @@ -20522,6 +20621,7 @@ extension RestoreDBClusterToPointInTimeInputBody: Swift.Decodable { case restoreType = "RestoreType" case serverlessV2ScalingConfiguration = "ServerlessV2ScalingConfiguration" case sourceDBClusterIdentifier = "SourceDBClusterIdentifier" + case storageType = "StorageType" case tags = "Tags" case useLatestRestorableTime = "UseLatestRestorableTime" case vpcSecurityGroupIds = "VpcSecurityGroupIds" @@ -20612,6 +20712,8 @@ extension RestoreDBClusterToPointInTimeInputBody: Swift.Decodable { deletionProtection = deletionProtectionDecoded let serverlessV2ScalingConfigurationDecoded = try containerValues.decodeIfPresent(NeptuneClientTypes.ServerlessV2ScalingConfiguration.self, forKey: .serverlessV2ScalingConfiguration) serverlessV2ScalingConfiguration = serverlessV2ScalingConfigurationDecoded + let storageTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .storageType) + storageType = storageTypeDecoded } } diff --git a/Sources/Services/AWSNeptuneGraph/EndpointResolver.swift b/Sources/Services/AWSNeptuneGraph/EndpointResolver.swift new file mode 100644 index 00000000000..1596f1f08c5 --- /dev/null +++ b/Sources/Services/AWSNeptuneGraph/EndpointResolver.swift @@ -0,0 +1,158 @@ +// Code generated by smithy-swift-codegen. DO NOT EDIT! + +import AWSClientRuntime +import ClientRuntime + +public struct EndpointParams { + /// Parameter to determine whether current API is a control plane or dataplane API + public let apiType: Swift.String + /// 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( + apiType: Swift.String, + endpoint: Swift.String? = nil, + region: Swift.String? = nil, + useDualStack: Swift.Bool = false, + useFIPS: Swift.Bool = false + ) + { + self.apiType = apiType + 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\"},\"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\"},\"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\"},\"Endpoint\":{\"builtIn\":\"SDK::Endpoint\",\"required\":false,\"documentation\":\"Override the endpoint used to send this request\",\"type\":\"String\"},\"ApiType\":{\"required\":true,\"documentation\":\"Parameter to determine whether current API is a control plane or dataplane API\",\"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\":[{\"fn\":\"stringEquals\",\"argv\":[{\"ref\":\"ApiType\"},\"ControlPlane\"]}],\"endpoint\":{\"url\":\"https://neptune-graph-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"ref\":\"ApiType\"},\"DataPlane\"]}],\"error\":\"Invalid Configuration: fips endpoint is not supported for this API\",\"type\":\"error\"},{\"conditions\":[],\"error\":\"Invalid Configuration: Unknown ApiType\",\"type\":\"error\"}],\"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\":[true,{\"fn\":\"getAttr\",\"argv\":[{\"ref\":\"PartitionResult\"},\"supportsFIPS\"]}]}],\"rules\":[{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"ref\":\"ApiType\"},\"ControlPlane\"]}],\"endpoint\":{\"url\":\"https://neptune-graph-fips.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"ref\":\"ApiType\"},\"DataPlane\"]}],\"error\":\"Invalid Configuration: fips endpoint is not supported for this API\",\"type\":\"error\"},{\"conditions\":[],\"error\":\"Invalid Configuration: Unknown ApiType\",\"type\":\"error\"}],\"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\":[{\"ref\":\"ApiType\"},\"ControlPlane\"]}],\"endpoint\":{\"url\":\"https://neptune-graph.{Region}.{PartitionResult#dualStackDnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"ref\":\"ApiType\"},\"DataPlane\"]}],\"endpoint\":{\"url\":\"https://neptune-graph.{Region}.on.aws\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[],\"error\":\"Invalid Configuration: Unknown ApiType\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"DualStack is enabled but this partition does not support DualStack\",\"type\":\"error\"}],\"type\":\"tree\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"ref\":\"ApiType\"},\"ControlPlane\"]}],\"endpoint\":{\"url\":\"https://neptune-graph.{Region}.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[{\"fn\":\"stringEquals\",\"argv\":[{\"ref\":\"ApiType\"},\"DataPlane\"]}],\"endpoint\":{\"url\":\"https://{Region}.neptune-graph.{PartitionResult#dnsSuffix}\",\"properties\":{},\"headers\":{}},\"type\":\"endpoint\"},{\"conditions\":[],\"error\":\"Invalid Configuration: Unknown ApiType\",\"type\":\"error\"}],\"type\":\"tree\"}],\"type\":\"tree\"},{\"conditions\":[],\"error\":\"Invalid Configuration: Missing Region\",\"type\":\"error\"}]}" + + 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: "ApiType", value: params.apiType) + 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/AWSNeptuneGraph/NeptuneGraphClient.swift b/Sources/Services/AWSNeptuneGraph/NeptuneGraphClient.swift new file mode 100644 index 00000000000..c1249e10ee4 --- /dev/null +++ b/Sources/Services/AWSNeptuneGraph/NeptuneGraphClient.swift @@ -0,0 +1,1125 @@ +// Code generated by smithy-swift-codegen. DO NOT EDIT! + +@_spi(FileBasedConfig) import AWSClientRuntime +import ClientRuntime +import Foundation +import Logging + +public class NeptuneGraphClient { + public static let clientName = "NeptuneGraphClient" + let client: ClientRuntime.SdkHttpClient + let config: NeptuneGraphClient.NeptuneGraphClientConfiguration + let serviceName = "Neptune Graph" + let encoder: ClientRuntime.RequestEncoder + let decoder: ClientRuntime.ResponseDecoder + + public init(config: NeptuneGraphClient.NeptuneGraphClientConfiguration) { + 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 NeptuneGraphClient.NeptuneGraphClientConfiguration(region: region) + self.init(config: config) + } + + public convenience init() async throws { + let config = try await NeptuneGraphClient.NeptuneGraphClientConfiguration() + self.init(config: config) + } +} + +extension NeptuneGraphClient { + public typealias NeptuneGraphClientConfiguration = AWSClientConfiguration + + public struct ServiceSpecificConfiguration: AWSServiceSpecificConfiguration { + public typealias AWSServiceEndpointResolver = EndpointResolver + + public var serviceName: String { "Neptune Graph" } + public var clientName: String { "NeptuneGraphClient" } + public var endpointResolver: EndpointResolver + + public init(endpointResolver: EndpointResolver? = nil) throws { + self.endpointResolver = try endpointResolver ?? DefaultEndpointResolver() + } + } +} + +public struct NeptuneGraphClientLogHandlerFactory: ClientRuntime.SDKLogHandlerFactory { + public var label = "NeptuneGraphClient" + 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 NeptuneGraphClient: NeptuneGraphClientProtocol { + /// Performs the `CancelImportTask` operation on the `AmazonNeptuneGraph` service. + /// + /// Deletes the specified import task + /// + /// - Parameter CancelImportTaskInput : [no documentation found] + /// + /// - Returns: `CancelImportTaskOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func cancelImportTask(input: CancelImportTaskInput) async throws -> CancelImportTaskOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .delete) + .withServiceName(value: serviceName) + .withOperation(value: "cancelImportTask") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "cancelImportTask") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.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(responseClosure(decoder: decoder), responseErrorClosure(CancelImportTaskOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `CreateGraph` operation on the `AmazonNeptuneGraph` service. + /// + /// Creates a new Neptune Analytics graph. + /// + /// - Parameter CreateGraphInput : [no documentation found] + /// + /// - Returns: `CreateGraphOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ServiceQuotaExceededException` : A service quota was exceeded. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func createGraph(input: CreateGraphInput) async throws -> CreateGraphOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createGraph") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "createGraph") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(CreateGraphOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `CreateGraphSnapshot` operation on the `AmazonNeptuneGraph` service. + /// + /// Creates a snapshot of the specific graph. + /// + /// - Parameter CreateGraphSnapshotInput : [no documentation found] + /// + /// - Returns: `CreateGraphSnapshotOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ServiceQuotaExceededException` : A service quota was exceeded. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func createGraphSnapshot(input: CreateGraphSnapshotInput) async throws -> CreateGraphSnapshotOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createGraphSnapshot") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "createGraphSnapshot") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(CreateGraphSnapshotOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `CreateGraphUsingImportTask` operation on the `AmazonNeptuneGraph` service. + /// + /// Creates a new Neptune Analytics graph and imports data into it, either from Amazon Simple Storage Service (S3) or from a Neptune database or a Neptune database snapshot. The data can be loaded from files in S3 that in either the [Gremlin CSV format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) or the [openCypher load format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-opencypher.html). + /// + /// - Parameter CreateGraphUsingImportTaskInput : [no documentation found] + /// + /// - Returns: `CreateGraphUsingImportTaskOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ServiceQuotaExceededException` : A service quota was exceeded. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func createGraphUsingImportTask(input: CreateGraphUsingImportTaskInput) async throws -> CreateGraphUsingImportTaskOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createGraphUsingImportTask") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "createGraphUsingImportTask") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(CreateGraphUsingImportTaskOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `CreatePrivateGraphEndpoint` operation on the `AmazonNeptuneGraph` service. + /// + /// Create a private graph endpoint to allow private access from to the graph from within a VPC. You can attach security groups to the private graph endpoint. VPC endpoint charges apply. + /// + /// - Parameter CreatePrivateGraphEndpointInput : [no documentation found] + /// + /// - Returns: `CreatePrivateGraphEndpointOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ServiceQuotaExceededException` : A service quota was exceeded. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func createPrivateGraphEndpoint(input: CreatePrivateGraphEndpointInput) async throws -> CreatePrivateGraphEndpointOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createPrivateGraphEndpoint") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "createPrivateGraphEndpoint") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(CreatePrivateGraphEndpointOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `DeleteGraph` operation on the `AmazonNeptuneGraph` service. + /// + /// Deletes the specified graph. Graphs cannot be deleted if delete-protection is enabled. + /// + /// - Parameter DeleteGraphInput : [no documentation found] + /// + /// - Returns: `DeleteGraphOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func deleteGraph(input: DeleteGraphInput) async throws -> DeleteGraphOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .delete) + .withServiceName(value: serviceName) + .withOperation(value: "deleteGraph") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deleteGraph") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(DeleteGraphOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `DeleteGraphSnapshot` operation on the `AmazonNeptuneGraph` service. + /// + /// Deletes the specifed graph snapshot. + /// + /// - Parameter DeleteGraphSnapshotInput : [no documentation found] + /// + /// - Returns: `DeleteGraphSnapshotOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func deleteGraphSnapshot(input: DeleteGraphSnapshotInput) async throws -> DeleteGraphSnapshotOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .delete) + .withServiceName(value: serviceName) + .withOperation(value: "deleteGraphSnapshot") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deleteGraphSnapshot") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.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(responseClosure(decoder: decoder), responseErrorClosure(DeleteGraphSnapshotOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `DeletePrivateGraphEndpoint` operation on the `AmazonNeptuneGraph` service. + /// + /// Deletes a private graph endpoint. + /// + /// - Parameter DeletePrivateGraphEndpointInput : [no documentation found] + /// + /// - Returns: `DeletePrivateGraphEndpointOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func deletePrivateGraphEndpoint(input: DeletePrivateGraphEndpointInput) async throws -> DeletePrivateGraphEndpointOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .delete) + .withServiceName(value: serviceName) + .withOperation(value: "deletePrivateGraphEndpoint") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deletePrivateGraphEndpoint") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.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(responseClosure(decoder: decoder), responseErrorClosure(DeletePrivateGraphEndpointOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `GetGraph` operation on the `AmazonNeptuneGraph` service. + /// + /// Gets information about a specified graph. + /// + /// - Parameter GetGraphInput : [no documentation found] + /// + /// - Returns: `GetGraphOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func getGraph(input: GetGraphInput) async throws -> GetGraphOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "getGraph") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "getGraph") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.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(responseClosure(decoder: decoder), responseErrorClosure(GetGraphOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `GetGraphSnapshot` operation on the `AmazonNeptuneGraph` service. + /// + /// Retrieves a specified graph snapshot. + /// + /// - Parameter GetGraphSnapshotInput : [no documentation found] + /// + /// - Returns: `GetGraphSnapshotOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func getGraphSnapshot(input: GetGraphSnapshotInput) async throws -> GetGraphSnapshotOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "getGraphSnapshot") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "getGraphSnapshot") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.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(responseClosure(decoder: decoder), responseErrorClosure(GetGraphSnapshotOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `GetImportTask` operation on the `AmazonNeptuneGraph` service. + /// + /// Retrieves a specified import task. + /// + /// - Parameter GetImportTaskInput : [no documentation found] + /// + /// - Returns: `GetImportTaskOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func getImportTask(input: GetImportTaskInput) async throws -> GetImportTaskOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "getImportTask") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "getImportTask") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.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(responseClosure(decoder: decoder), responseErrorClosure(GetImportTaskOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `GetPrivateGraphEndpoint` operation on the `AmazonNeptuneGraph` service. + /// + /// Retrieves information about a specified private endpoint. + /// + /// - Parameter GetPrivateGraphEndpointInput : [no documentation found] + /// + /// - Returns: `GetPrivateGraphEndpointOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func getPrivateGraphEndpoint(input: GetPrivateGraphEndpointInput) async throws -> GetPrivateGraphEndpointOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "getPrivateGraphEndpoint") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "getPrivateGraphEndpoint") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.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(responseClosure(decoder: decoder), responseErrorClosure(GetPrivateGraphEndpointOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `ListGraphSnapshots` operation on the `AmazonNeptuneGraph` service. + /// + /// Lists available snapshots of a specified Neptune Analytics graph. + /// + /// - Parameter ListGraphSnapshotsInput : [no documentation found] + /// + /// - Returns: `ListGraphSnapshotsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func listGraphSnapshots(input: ListGraphSnapshotsInput) async throws -> ListGraphSnapshotsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "listGraphSnapshots") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listGraphSnapshots") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListGraphSnapshotsOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `ListGraphs` operation on the `AmazonNeptuneGraph` service. + /// + /// Lists available Neptune Analytics graphs. + /// + /// - Parameter ListGraphsInput : [no documentation found] + /// + /// - Returns: `ListGraphsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + public func listGraphs(input: ListGraphsInput) async throws -> ListGraphsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "listGraphs") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listGraphs") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListGraphsOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `ListImportTasks` operation on the `AmazonNeptuneGraph` service. + /// + /// Lists import tasks. + /// + /// - Parameter ListImportTasksInput : [no documentation found] + /// + /// - Returns: `ListImportTasksOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func listImportTasks(input: ListImportTasksInput) async throws -> ListImportTasksOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "listImportTasks") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listImportTasks") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListImportTasksOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `ListPrivateGraphEndpoints` operation on the `AmazonNeptuneGraph` service. + /// + /// Lists private endpoints for a specified Neptune Analytics graph. + /// + /// - Parameter ListPrivateGraphEndpointsInput : [no documentation found] + /// + /// - Returns: `ListPrivateGraphEndpointsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func listPrivateGraphEndpoints(input: ListPrivateGraphEndpointsInput) async throws -> ListPrivateGraphEndpointsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "listPrivateGraphEndpoints") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listPrivateGraphEndpoints") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(ListPrivateGraphEndpointsOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `ListTagsForResource` operation on the `AmazonNeptuneGraph` service. + /// + /// Lists tags associated with a specified resource. + /// + /// - Parameter ListTagsForResourceInput : [no documentation found] + /// + /// - Returns: `ListTagsForResourceOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func listTagsForResource(input: ListTagsForResourceInput) async throws -> ListTagsForResourceOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .get) + .withServiceName(value: serviceName) + .withOperation(value: "listTagsForResource") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "listTagsForResource") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.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(responseClosure(decoder: decoder), responseErrorClosure(ListTagsForResourceOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `ResetGraph` operation on the `AmazonNeptuneGraph` service. + /// + /// Empties the data from a specified Neptune Analytics graph. + /// + /// - Parameter ResetGraphInput : [no documentation found] + /// + /// - Returns: `ResetGraphOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func resetGraph(input: ResetGraphInput) async throws -> ResetGraphOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .put) + .withServiceName(value: serviceName) + .withOperation(value: "resetGraph") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "resetGraph") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(ResetGraphOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `RestoreGraphFromSnapshot` operation on the `AmazonNeptuneGraph` service. + /// + /// Restores a graph from a snapshot. + /// + /// - Parameter RestoreGraphFromSnapshotInput : [no documentation found] + /// + /// - Returns: `RestoreGraphFromSnapshotOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ServiceQuotaExceededException` : A service quota was exceeded. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func restoreGraphFromSnapshot(input: RestoreGraphFromSnapshotInput) async throws -> RestoreGraphFromSnapshotOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "restoreGraphFromSnapshot") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "restoreGraphFromSnapshot") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(RestoreGraphFromSnapshotOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `TagResource` operation on the `AmazonNeptuneGraph` service. + /// + /// Adds tags to the specified resource. + /// + /// - Parameter TagResourceInput : [no documentation found] + /// + /// - Returns: `TagResourceOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func tagResource(input: TagResourceInput) async throws -> TagResourceOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "tagResource") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "tagResource") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(TagResourceOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `UntagResource` operation on the `AmazonNeptuneGraph` service. + /// + /// Removes the specified tags from the specified resource. + /// + /// - Parameter UntagResourceInput : [no documentation found] + /// + /// - Returns: `UntagResourceOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func untagResource(input: UntagResourceInput) async throws -> UntagResourceOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .delete) + .withServiceName(value: serviceName) + .withOperation(value: "untagResource") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "untagResource") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.QueryItemMiddleware()) + 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(responseClosure(decoder: decoder), responseErrorClosure(UntagResourceOutputError.self, decoder: decoder))) + 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 + } + + /// Performs the `UpdateGraph` operation on the `AmazonNeptuneGraph` service. + /// + /// Updates the configuration of a specified Neptune Analytics graph + /// + /// - Parameter UpdateGraphInput : [no documentation found] + /// + /// - Returns: `UpdateGraphOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + public func updateGraph(input: UpdateGraphInput) async throws -> UpdateGraphOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .patch) + .withServiceName(value: serviceName) + .withOperation(value: "updateGraph") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "neptune-graph") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "updateGraph") + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLPathMiddleware()) + operation.initializeStep.intercept(position: .after, middleware: ClientRuntime.URLHostMiddleware()) + let endpointParams = EndpointParams(apiType: "ControlPlane", 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(UpdateGraphOutputError.self, decoder: decoder))) + 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/AWSNeptuneGraph/NeptuneGraphClientProtocol.swift b/Sources/Services/AWSNeptuneGraph/NeptuneGraphClientProtocol.swift new file mode 100644 index 00000000000..4b091186b04 --- /dev/null +++ b/Sources/Services/AWSNeptuneGraph/NeptuneGraphClientProtocol.swift @@ -0,0 +1,374 @@ +// Code generated by smithy-swift-codegen. DO NOT EDIT! + +import ClientRuntime + +/// Neptune Analytics is a serverless in-memory graph database service for analytics that delivers high-performance analytics and real-time queries for any graph type. It complements the Amazon Neptune Database, an industry-leading managed graph database. +public protocol NeptuneGraphClientProtocol { + /// Performs the `CancelImportTask` operation on the `AmazonNeptuneGraph` service. + /// + /// Deletes the specified import task + /// + /// - Parameter CancelImportTaskInput : [no documentation found] + /// + /// - Returns: `CancelImportTaskOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func cancelImportTask(input: CancelImportTaskInput) async throws -> CancelImportTaskOutput + /// Performs the `CreateGraph` operation on the `AmazonNeptuneGraph` service. + /// + /// Creates a new Neptune Analytics graph. + /// + /// - Parameter CreateGraphInput : [no documentation found] + /// + /// - Returns: `CreateGraphOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ServiceQuotaExceededException` : A service quota was exceeded. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func createGraph(input: CreateGraphInput) async throws -> CreateGraphOutput + /// Performs the `CreateGraphSnapshot` operation on the `AmazonNeptuneGraph` service. + /// + /// Creates a snapshot of the specific graph. + /// + /// - Parameter CreateGraphSnapshotInput : [no documentation found] + /// + /// - Returns: `CreateGraphSnapshotOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ServiceQuotaExceededException` : A service quota was exceeded. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func createGraphSnapshot(input: CreateGraphSnapshotInput) async throws -> CreateGraphSnapshotOutput + /// Performs the `CreateGraphUsingImportTask` operation on the `AmazonNeptuneGraph` service. + /// + /// Creates a new Neptune Analytics graph and imports data into it, either from Amazon Simple Storage Service (S3) or from a Neptune database or a Neptune database snapshot. The data can be loaded from files in S3 that in either the [Gremlin CSV format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) or the [openCypher load format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-opencypher.html). + /// + /// - Parameter CreateGraphUsingImportTaskInput : [no documentation found] + /// + /// - Returns: `CreateGraphUsingImportTaskOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ServiceQuotaExceededException` : A service quota was exceeded. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func createGraphUsingImportTask(input: CreateGraphUsingImportTaskInput) async throws -> CreateGraphUsingImportTaskOutput + /// Performs the `CreatePrivateGraphEndpoint` operation on the `AmazonNeptuneGraph` service. + /// + /// Create a private graph endpoint to allow private access from to the graph from within a VPC. You can attach security groups to the private graph endpoint. VPC endpoint charges apply. + /// + /// - Parameter CreatePrivateGraphEndpointInput : [no documentation found] + /// + /// - Returns: `CreatePrivateGraphEndpointOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ServiceQuotaExceededException` : A service quota was exceeded. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func createPrivateGraphEndpoint(input: CreatePrivateGraphEndpointInput) async throws -> CreatePrivateGraphEndpointOutput + /// Performs the `DeleteGraph` operation on the `AmazonNeptuneGraph` service. + /// + /// Deletes the specified graph. Graphs cannot be deleted if delete-protection is enabled. + /// + /// - Parameter DeleteGraphInput : [no documentation found] + /// + /// - Returns: `DeleteGraphOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func deleteGraph(input: DeleteGraphInput) async throws -> DeleteGraphOutput + /// Performs the `DeleteGraphSnapshot` operation on the `AmazonNeptuneGraph` service. + /// + /// Deletes the specifed graph snapshot. + /// + /// - Parameter DeleteGraphSnapshotInput : [no documentation found] + /// + /// - Returns: `DeleteGraphSnapshotOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func deleteGraphSnapshot(input: DeleteGraphSnapshotInput) async throws -> DeleteGraphSnapshotOutput + /// Performs the `DeletePrivateGraphEndpoint` operation on the `AmazonNeptuneGraph` service. + /// + /// Deletes a private graph endpoint. + /// + /// - Parameter DeletePrivateGraphEndpointInput : [no documentation found] + /// + /// - Returns: `DeletePrivateGraphEndpointOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func deletePrivateGraphEndpoint(input: DeletePrivateGraphEndpointInput) async throws -> DeletePrivateGraphEndpointOutput + /// Performs the `GetGraph` operation on the `AmazonNeptuneGraph` service. + /// + /// Gets information about a specified graph. + /// + /// - Parameter GetGraphInput : [no documentation found] + /// + /// - Returns: `GetGraphOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func getGraph(input: GetGraphInput) async throws -> GetGraphOutput + /// Performs the `GetGraphSnapshot` operation on the `AmazonNeptuneGraph` service. + /// + /// Retrieves a specified graph snapshot. + /// + /// - Parameter GetGraphSnapshotInput : [no documentation found] + /// + /// - Returns: `GetGraphSnapshotOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func getGraphSnapshot(input: GetGraphSnapshotInput) async throws -> GetGraphSnapshotOutput + /// Performs the `GetImportTask` operation on the `AmazonNeptuneGraph` service. + /// + /// Retrieves a specified import task. + /// + /// - Parameter GetImportTaskInput : [no documentation found] + /// + /// - Returns: `GetImportTaskOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func getImportTask(input: GetImportTaskInput) async throws -> GetImportTaskOutput + /// Performs the `GetPrivateGraphEndpoint` operation on the `AmazonNeptuneGraph` service. + /// + /// Retrieves information about a specified private endpoint. + /// + /// - Parameter GetPrivateGraphEndpointInput : [no documentation found] + /// + /// - Returns: `GetPrivateGraphEndpointOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func getPrivateGraphEndpoint(input: GetPrivateGraphEndpointInput) async throws -> GetPrivateGraphEndpointOutput + /// Performs the `ListGraphs` operation on the `AmazonNeptuneGraph` service. + /// + /// Lists available Neptune Analytics graphs. + /// + /// - Parameter ListGraphsInput : [no documentation found] + /// + /// - Returns: `ListGraphsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + func listGraphs(input: ListGraphsInput) async throws -> ListGraphsOutput + /// Performs the `ListGraphSnapshots` operation on the `AmazonNeptuneGraph` service. + /// + /// Lists available snapshots of a specified Neptune Analytics graph. + /// + /// - Parameter ListGraphSnapshotsInput : [no documentation found] + /// + /// - Returns: `ListGraphSnapshotsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func listGraphSnapshots(input: ListGraphSnapshotsInput) async throws -> ListGraphSnapshotsOutput + /// Performs the `ListImportTasks` operation on the `AmazonNeptuneGraph` service. + /// + /// Lists import tasks. + /// + /// - Parameter ListImportTasksInput : [no documentation found] + /// + /// - Returns: `ListImportTasksOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func listImportTasks(input: ListImportTasksInput) async throws -> ListImportTasksOutput + /// Performs the `ListPrivateGraphEndpoints` operation on the `AmazonNeptuneGraph` service. + /// + /// Lists private endpoints for a specified Neptune Analytics graph. + /// + /// - Parameter ListPrivateGraphEndpointsInput : [no documentation found] + /// + /// - Returns: `ListPrivateGraphEndpointsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func listPrivateGraphEndpoints(input: ListPrivateGraphEndpointsInput) async throws -> ListPrivateGraphEndpointsOutput + /// Performs the `ListTagsForResource` operation on the `AmazonNeptuneGraph` service. + /// + /// Lists tags associated with a specified resource. + /// + /// - Parameter ListTagsForResourceInput : [no documentation found] + /// + /// - Returns: `ListTagsForResourceOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func listTagsForResource(input: ListTagsForResourceInput) async throws -> ListTagsForResourceOutput + /// Performs the `ResetGraph` operation on the `AmazonNeptuneGraph` service. + /// + /// Empties the data from a specified Neptune Analytics graph. + /// + /// - Parameter ResetGraphInput : [no documentation found] + /// + /// - Returns: `ResetGraphOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func resetGraph(input: ResetGraphInput) async throws -> ResetGraphOutput + /// Performs the `RestoreGraphFromSnapshot` operation on the `AmazonNeptuneGraph` service. + /// + /// Restores a graph from a snapshot. + /// + /// - Parameter RestoreGraphFromSnapshotInput : [no documentation found] + /// + /// - Returns: `RestoreGraphFromSnapshotOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ServiceQuotaExceededException` : A service quota was exceeded. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func restoreGraphFromSnapshot(input: RestoreGraphFromSnapshotInput) async throws -> RestoreGraphFromSnapshotOutput + /// Performs the `TagResource` operation on the `AmazonNeptuneGraph` service. + /// + /// Adds tags to the specified resource. + /// + /// - Parameter TagResourceInput : [no documentation found] + /// + /// - Returns: `TagResourceOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func tagResource(input: TagResourceInput) async throws -> TagResourceOutput + /// Performs the `UntagResource` operation on the `AmazonNeptuneGraph` service. + /// + /// Removes the specified tags from the specified resource. + /// + /// - Parameter UntagResourceInput : [no documentation found] + /// + /// - Returns: `UntagResourceOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func untagResource(input: UntagResourceInput) async throws -> UntagResourceOutput + /// Performs the `UpdateGraph` operation on the `AmazonNeptuneGraph` service. + /// + /// Updates the configuration of a specified Neptune Analytics graph + /// + /// - Parameter UpdateGraphInput : [no documentation found] + /// + /// - Returns: `UpdateGraphOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : Raised when a conflict is encountered. + /// - `InternalServerException` : A failure occurred on the server. + /// - `ResourceNotFoundException` : A specified resource could not be located. + /// - `ThrottlingException` : The exception was interrupted by throttling. + /// - `ValidationException` : A resource could not be validated + func updateGraph(input: UpdateGraphInput) async throws -> UpdateGraphOutput +} + +public enum NeptuneGraphClientTypes {} diff --git a/Sources/Services/AWSNeptuneGraph/Paginators.swift b/Sources/Services/AWSNeptuneGraph/Paginators.swift new file mode 100644 index 00000000000..0f79619f2fc --- /dev/null +++ b/Sources/Services/AWSNeptuneGraph/Paginators.swift @@ -0,0 +1,5 @@ +// Code generated by smithy-swift-codegen. DO NOT EDIT! + + + + diff --git a/Sources/Services/AWSNeptuneGraph/models/Models.swift b/Sources/Services/AWSNeptuneGraph/models/Models.swift new file mode 100644 index 00000000000..6408b8d9e0e --- /dev/null +++ b/Sources/Services/AWSNeptuneGraph/models/Models.swift @@ -0,0 +1,5431 @@ +// Code generated by smithy-swift-codegen. DO NOT EDIT! +import AWSClientRuntime +import ClientRuntime + +extension CancelImportTaskInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let taskIdentifier = taskIdentifier else { + return nil + } + return "/importtasks/\(taskIdentifier.urlPercentEncoding())" + } +} + +public struct CancelImportTaskInput: Swift.Equatable { + /// The unique identifier of the import task. + /// This member is required. + public var taskIdentifier: Swift.String? + + public init( + taskIdentifier: Swift.String? = nil + ) + { + self.taskIdentifier = taskIdentifier + } +} + +struct CancelImportTaskInputBody: Swift.Equatable { +} + +extension CancelImportTaskInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension CancelImportTaskOutput: 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: CancelImportTaskOutputBody = try responseDecoder.decode(responseBody: data) + self.format = output.format + self.graphId = output.graphId + self.roleArn = output.roleArn + self.source = output.source + self.status = output.status + self.taskId = output.taskId + } else { + self.format = nil + self.graphId = nil + self.roleArn = nil + self.source = nil + self.status = nil + self.taskId = nil + } + } +} + +public struct CancelImportTaskOutput: Swift.Equatable { + /// Specifies the format of S3 data to be imported. Valid values are CSV, which identifies the [Gremlin CSV format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) or OPENCYPHER, which identies the [openCypher load format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-opencypher.html). + public var format: NeptuneGraphClientTypes.Format? + /// The unique identifier of the Neptune Analytics graph. + public var graphId: Swift.String? + /// The ARN of the IAM role that will allow access to the data that is to be imported. + /// This member is required. + public var roleArn: Swift.String? + /// A URL identifying to the location of the data to be imported. This can be an Amazon S3 path, or can point to a Neptune database endpoint or snapshot + /// This member is required. + public var source: Swift.String? + /// Current status of the task. Status is CANCELLING when the import task is cancelled. + /// This member is required. + public var status: NeptuneGraphClientTypes.ImportTaskStatus? + /// The unique identifier of the import task. + /// This member is required. + public var taskId: Swift.String? + + public init( + format: NeptuneGraphClientTypes.Format? = nil, + graphId: Swift.String? = nil, + roleArn: Swift.String? = nil, + source: Swift.String? = nil, + status: NeptuneGraphClientTypes.ImportTaskStatus? = nil, + taskId: Swift.String? = nil + ) + { + self.format = format + self.graphId = graphId + self.roleArn = roleArn + self.source = source + self.status = status + self.taskId = taskId + } +} + +struct CancelImportTaskOutputBody: Swift.Equatable { + let graphId: Swift.String? + let taskId: Swift.String? + let source: Swift.String? + let format: NeptuneGraphClientTypes.Format? + let roleArn: Swift.String? + let status: NeptuneGraphClientTypes.ImportTaskStatus? +} + +extension CancelImportTaskOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case format + case graphId + case roleArn + case source + case status + case taskId + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let graphIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .graphId) + graphId = graphIdDecoded + let taskIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .taskId) + taskId = taskIdDecoded + let sourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .source) + source = sourceDecoded + let formatDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.Format.self, forKey: .format) + format = formatDecoded + let roleArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .roleArn) + roleArn = roleArnDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.ImportTaskStatus.self, forKey: .status) + status = statusDecoded + } +} + +enum CancelImportTaskOutputError: 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 "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 ConflictException { + 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: ConflictExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + self.properties.reason = output.reason + } else { + self.properties.message = nil + self.properties.reason = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// Raised when a conflict is encountered. +public struct ConflictException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + /// A message describing the problem. + /// This member is required. + public internal(set) var message: Swift.String? = nil + /// The reason for the conflict exception. + public internal(set) var reason: NeptuneGraphClientTypes.ConflictExceptionReason? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ConflictException" } + 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, + reason: NeptuneGraphClientTypes.ConflictExceptionReason? = nil + ) + { + self.properties.message = message + self.properties.reason = reason + } +} + +struct ConflictExceptionBody: Swift.Equatable { + let message: Swift.String? + let reason: NeptuneGraphClientTypes.ConflictExceptionReason? +} + +extension ConflictExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + case reason + } + + 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 + let reasonDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.ConflictExceptionReason.self, forKey: .reason) + reason = reasonDecoded + } +} + +extension NeptuneGraphClientTypes { + public enum ConflictExceptionReason: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case concurrentModification + case sdkUnknown(Swift.String) + + public static var allCases: [ConflictExceptionReason] { + return [ + .concurrentModification, + .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 .concurrentModification: return "CONCURRENT_MODIFICATION" + 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 = ConflictExceptionReason(rawValue: rawValue) ?? ConflictExceptionReason.sdkUnknown(rawValue) + } + } +} + +extension CreateGraphInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deletionProtection + case graphName + case kmsKeyIdentifier + case provisionedMemory + case publicConnectivity + case replicaCount + case tags + case vectorSearchConfiguration + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let deletionProtection = self.deletionProtection { + try encodeContainer.encode(deletionProtection, forKey: .deletionProtection) + } + if let graphName = self.graphName { + try encodeContainer.encode(graphName, forKey: .graphName) + } + if let kmsKeyIdentifier = self.kmsKeyIdentifier { + try encodeContainer.encode(kmsKeyIdentifier, forKey: .kmsKeyIdentifier) + } + if let provisionedMemory = self.provisionedMemory { + try encodeContainer.encode(provisionedMemory, forKey: .provisionedMemory) + } + if let publicConnectivity = self.publicConnectivity { + try encodeContainer.encode(publicConnectivity, forKey: .publicConnectivity) + } + if let replicaCount = self.replicaCount { + try encodeContainer.encode(replicaCount, forKey: .replicaCount) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let vectorSearchConfiguration = self.vectorSearchConfiguration { + try encodeContainer.encode(vectorSearchConfiguration, forKey: .vectorSearchConfiguration) + } + } +} + +extension CreateGraphInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/graphs" + } +} + +public struct CreateGraphInput: Swift.Equatable { + /// Indicates whether or not to enable deletion protection on the graph. The graph can’t be deleted when deletion protection is enabled. (true or false). + public var deletionProtection: Swift.Bool? + /// A name for the new Neptune Analytics graph to be created. The name must contain from 1 to 63 letters, numbers, or hyphens, and its first character must be a letter. It cannot end with a hyphen or contain two consecutive hyphens. + /// This member is required. + public var graphName: Swift.String? + /// Specifies a KMS key to use to encrypt data in the new graph. + public var kmsKeyIdentifier: Swift.String? + /// The provisioned memory-optimized Neptune Capacity Units (m-NCUs) to use for the graph. Min = 128 + /// This member is required. + public var provisionedMemory: Swift.Int? + /// Specifies whether or not the graph can be reachable over the internet. All access to graphs IAM authenticated. (true to enable, or false to disable. + public var publicConnectivity: Swift.Bool? + /// The number of replicas in other AZs. Min =0, Max = 2, Default =1 + public var replicaCount: Swift.Int? + /// Adds metadata tags to the new graph. These tags can also be used with cost allocation reporting, or used in a Condition statement in an IAM policy. + public var tags: [Swift.String:Swift.String]? + /// Specifies the number of dimensions for vector embeddings that will be loaded into the graph. The value is specified as dimension=value. Max = 65,535 + public var vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + + public init( + deletionProtection: Swift.Bool? = nil, + graphName: Swift.String? = nil, + kmsKeyIdentifier: Swift.String? = nil, + provisionedMemory: Swift.Int? = nil, + publicConnectivity: Swift.Bool? = nil, + replicaCount: Swift.Int? = nil, + tags: [Swift.String:Swift.String]? = nil, + vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? = nil + ) + { + self.deletionProtection = deletionProtection + self.graphName = graphName + self.kmsKeyIdentifier = kmsKeyIdentifier + self.provisionedMemory = provisionedMemory + self.publicConnectivity = publicConnectivity + self.replicaCount = replicaCount + self.tags = tags + self.vectorSearchConfiguration = vectorSearchConfiguration + } +} + +struct CreateGraphInputBody: Swift.Equatable { + let graphName: Swift.String? + let tags: [Swift.String:Swift.String]? + let publicConnectivity: Swift.Bool? + let kmsKeyIdentifier: Swift.String? + let vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + let replicaCount: Swift.Int? + let deletionProtection: Swift.Bool? + let provisionedMemory: Swift.Int? +} + +extension CreateGraphInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deletionProtection + case graphName + case kmsKeyIdentifier + case provisionedMemory + case publicConnectivity + case replicaCount + case tags + case vectorSearchConfiguration + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let graphNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .graphName) + graphName = graphNameDecoded + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 + let publicConnectivityDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .publicConnectivity) + publicConnectivity = publicConnectivityDecoded + let kmsKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyIdentifier) + kmsKeyIdentifier = kmsKeyIdentifierDecoded + let vectorSearchConfigurationDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.VectorSearchConfiguration.self, forKey: .vectorSearchConfiguration) + vectorSearchConfiguration = vectorSearchConfigurationDecoded + let replicaCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .replicaCount) + replicaCount = replicaCountDecoded + let deletionProtectionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtection) + deletionProtection = deletionProtectionDecoded + let provisionedMemoryDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .provisionedMemory) + provisionedMemory = provisionedMemoryDecoded + } +} + +extension CreateGraphOutput: 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: CreateGraphOutputBody = try responseDecoder.decode(responseBody: data) + self.arn = output.arn + self.buildNumber = output.buildNumber + self.createTime = output.createTime + self.deletionProtection = output.deletionProtection + self.endpoint = output.endpoint + self.id = output.id + self.kmsKeyIdentifier = output.kmsKeyIdentifier + self.name = output.name + self.provisionedMemory = output.provisionedMemory + self.publicConnectivity = output.publicConnectivity + self.replicaCount = output.replicaCount + self.sourceSnapshotId = output.sourceSnapshotId + self.status = output.status + self.statusReason = output.statusReason + self.vectorSearchConfiguration = output.vectorSearchConfiguration + } else { + self.arn = nil + self.buildNumber = nil + self.createTime = nil + self.deletionProtection = nil + self.endpoint = nil + self.id = nil + self.kmsKeyIdentifier = nil + self.name = nil + self.provisionedMemory = nil + self.publicConnectivity = nil + self.replicaCount = nil + self.sourceSnapshotId = nil + self.status = nil + self.statusReason = nil + self.vectorSearchConfiguration = nil + } + } +} + +public struct CreateGraphOutput: Swift.Equatable { + /// The ARN of the graph. + /// This member is required. + public var arn: Swift.String? + /// The build number of the graph software. + public var buildNumber: Swift.String? + /// The time when the graph was created. + public var createTime: ClientRuntime.Date? + /// A value that indicates whether the graph has deletion protection enabled. The graph can't be deleted when deletion protection is enabled. + public var deletionProtection: Swift.Bool? + /// The graph endpoint. + public var endpoint: Swift.String? + /// The ID of the graph. + /// This member is required. + public var id: Swift.String? + /// Specifies the KMS key used to encrypt data in the new graph. + public var kmsKeyIdentifier: Swift.String? + /// The graph name. For example: my-graph-1. The name must contain from 1 to 63 letters, numbers, or hyphens, and its first character must be a letter. It cannot end with a hyphen or contain two consecutive hyphens. + /// This member is required. + public var name: Swift.String? + /// The provisioned memory-optimized Neptune Capacity Units (m-NCUs) to use for the graph. Min = 128 + public var provisionedMemory: Swift.Int? + /// Specifies whether or not the graph can be reachable over the internet. All access to graphs IAM authenticated. + public var publicConnectivity: Swift.Bool? + /// The number of replicas in other AZs. + public var replicaCount: Swift.Int? + /// The ID of the source graph. + public var sourceSnapshotId: Swift.String? + /// The current status of the graph. + public var status: NeptuneGraphClientTypes.GraphStatus? + /// The reason the status was given. + public var statusReason: Swift.String? + /// The vector-search configuration for the graph, which specifies the vector dimension to use in the vector index, if any. + public var vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + + public init( + arn: Swift.String? = nil, + buildNumber: Swift.String? = nil, + createTime: ClientRuntime.Date? = nil, + deletionProtection: Swift.Bool? = nil, + endpoint: Swift.String? = nil, + id: Swift.String? = nil, + kmsKeyIdentifier: Swift.String? = nil, + name: Swift.String? = nil, + provisionedMemory: Swift.Int? = nil, + publicConnectivity: Swift.Bool? = nil, + replicaCount: Swift.Int? = nil, + sourceSnapshotId: Swift.String? = nil, + status: NeptuneGraphClientTypes.GraphStatus? = nil, + statusReason: Swift.String? = nil, + vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? = nil + ) + { + self.arn = arn + self.buildNumber = buildNumber + self.createTime = createTime + self.deletionProtection = deletionProtection + self.endpoint = endpoint + self.id = id + self.kmsKeyIdentifier = kmsKeyIdentifier + self.name = name + self.provisionedMemory = provisionedMemory + self.publicConnectivity = publicConnectivity + self.replicaCount = replicaCount + self.sourceSnapshotId = sourceSnapshotId + self.status = status + self.statusReason = statusReason + self.vectorSearchConfiguration = vectorSearchConfiguration + } +} + +struct CreateGraphOutputBody: Swift.Equatable { + let id: Swift.String? + let name: Swift.String? + let arn: Swift.String? + let status: NeptuneGraphClientTypes.GraphStatus? + let statusReason: Swift.String? + let createTime: ClientRuntime.Date? + let provisionedMemory: Swift.Int? + let endpoint: Swift.String? + let publicConnectivity: Swift.Bool? + let vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + let replicaCount: Swift.Int? + let kmsKeyIdentifier: Swift.String? + let sourceSnapshotId: Swift.String? + let deletionProtection: Swift.Bool? + let buildNumber: Swift.String? +} + +extension CreateGraphOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case buildNumber + case createTime + case deletionProtection + case endpoint + case id + case kmsKeyIdentifier + case name + case provisionedMemory + case publicConnectivity + case replicaCount + case sourceSnapshotId + case status + case statusReason + case vectorSearchConfiguration + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.GraphStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let createTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createTime) + createTime = createTimeDecoded + let provisionedMemoryDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .provisionedMemory) + provisionedMemory = provisionedMemoryDecoded + let endpointDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endpoint) + endpoint = endpointDecoded + let publicConnectivityDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .publicConnectivity) + publicConnectivity = publicConnectivityDecoded + let vectorSearchConfigurationDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.VectorSearchConfiguration.self, forKey: .vectorSearchConfiguration) + vectorSearchConfiguration = vectorSearchConfigurationDecoded + let replicaCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .replicaCount) + replicaCount = replicaCountDecoded + let kmsKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyIdentifier) + kmsKeyIdentifier = kmsKeyIdentifierDecoded + let sourceSnapshotIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceSnapshotId) + sourceSnapshotId = sourceSnapshotIdDecoded + let deletionProtectionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtection) + deletionProtection = deletionProtectionDecoded + let buildNumberDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .buildNumber) + buildNumber = buildNumberDecoded + } +} + +enum CreateGraphOutputError: 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 "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 CreateGraphSnapshotInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case graphIdentifier + case snapshotName + case tags + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let graphIdentifier = self.graphIdentifier { + try encodeContainer.encode(graphIdentifier, forKey: .graphIdentifier) + } + if let snapshotName = self.snapshotName { + try encodeContainer.encode(snapshotName, forKey: .snapshotName) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + } +} + +extension CreateGraphSnapshotInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/snapshots" + } +} + +public struct CreateGraphSnapshotInput: Swift.Equatable { + /// The unique identifier of the Neptune Analytics graph. + /// This member is required. + public var graphIdentifier: Swift.String? + /// The snapshot name. For example: my-snapshot-1. The name must contain from 1 to 63 letters, numbers, or hyphens, and its first character must be a letter. It cannot end with a hyphen or contain two consecutive hyphens. + /// This member is required. + public var snapshotName: Swift.String? + /// Adds metadata tags to the new graph. These tags can also be used with cost allocation reporting, or used in a Condition statement in an IAM policy. + public var tags: [Swift.String:Swift.String]? + + public init( + graphIdentifier: Swift.String? = nil, + snapshotName: Swift.String? = nil, + tags: [Swift.String:Swift.String]? = nil + ) + { + self.graphIdentifier = graphIdentifier + self.snapshotName = snapshotName + self.tags = tags + } +} + +struct CreateGraphSnapshotInputBody: Swift.Equatable { + let graphIdentifier: Swift.String? + let snapshotName: Swift.String? + let tags: [Swift.String:Swift.String]? +} + +extension CreateGraphSnapshotInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case graphIdentifier + case snapshotName + case tags + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let graphIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .graphIdentifier) + graphIdentifier = graphIdentifierDecoded + let snapshotNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .snapshotName) + snapshotName = snapshotNameDecoded + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 + } +} + +extension CreateGraphSnapshotOutput: 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: CreateGraphSnapshotOutputBody = try responseDecoder.decode(responseBody: data) + self.arn = output.arn + self.id = output.id + self.kmsKeyIdentifier = output.kmsKeyIdentifier + self.name = output.name + self.snapshotCreateTime = output.snapshotCreateTime + self.sourceGraphId = output.sourceGraphId + self.status = output.status + } else { + self.arn = nil + self.id = nil + self.kmsKeyIdentifier = nil + self.name = nil + self.snapshotCreateTime = nil + self.sourceGraphId = nil + self.status = nil + } + } +} + +public struct CreateGraphSnapshotOutput: Swift.Equatable { + /// The ARN of the snapshot created. + /// This member is required. + public var arn: Swift.String? + /// The ID of the snapshot created. + /// This member is required. + public var id: Swift.String? + /// The ID of the KMS key used to encrypt and decrypt graph data. + public var kmsKeyIdentifier: Swift.String? + /// The name of the snapshot created. + /// This member is required. + public var name: Swift.String? + /// The snapshot creation time + public var snapshotCreateTime: ClientRuntime.Date? + /// The Id of the Neptune Analytics graph from which the snapshot is created. + public var sourceGraphId: Swift.String? + /// The current state of the snapshot. + public var status: NeptuneGraphClientTypes.SnapshotStatus? + + public init( + arn: Swift.String? = nil, + id: Swift.String? = nil, + kmsKeyIdentifier: Swift.String? = nil, + name: Swift.String? = nil, + snapshotCreateTime: ClientRuntime.Date? = nil, + sourceGraphId: Swift.String? = nil, + status: NeptuneGraphClientTypes.SnapshotStatus? = nil + ) + { + self.arn = arn + self.id = id + self.kmsKeyIdentifier = kmsKeyIdentifier + self.name = name + self.snapshotCreateTime = snapshotCreateTime + self.sourceGraphId = sourceGraphId + self.status = status + } +} + +struct CreateGraphSnapshotOutputBody: Swift.Equatable { + let id: Swift.String? + let name: Swift.String? + let arn: Swift.String? + let sourceGraphId: Swift.String? + let snapshotCreateTime: ClientRuntime.Date? + let status: NeptuneGraphClientTypes.SnapshotStatus? + let kmsKeyIdentifier: Swift.String? +} + +extension CreateGraphSnapshotOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case id + case kmsKeyIdentifier + case name + case snapshotCreateTime + case sourceGraphId + case status + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let sourceGraphIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceGraphId) + sourceGraphId = sourceGraphIdDecoded + let snapshotCreateTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .snapshotCreateTime) + snapshotCreateTime = snapshotCreateTimeDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.SnapshotStatus.self, forKey: .status) + status = statusDecoded + let kmsKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyIdentifier) + kmsKeyIdentifier = kmsKeyIdentifierDecoded + } +} + +enum CreateGraphSnapshotOutputError: 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 "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 CreateGraphUsingImportTaskInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deletionProtection + case failOnError + case format + case graphName + case importOptions + case kmsKeyIdentifier + case maxProvisionedMemory + case minProvisionedMemory + case publicConnectivity + case replicaCount + case roleArn + case source + case tags + case vectorSearchConfiguration + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let deletionProtection = self.deletionProtection { + try encodeContainer.encode(deletionProtection, forKey: .deletionProtection) + } + if let failOnError = self.failOnError { + try encodeContainer.encode(failOnError, forKey: .failOnError) + } + if let format = self.format { + try encodeContainer.encode(format.rawValue, forKey: .format) + } + if let graphName = self.graphName { + try encodeContainer.encode(graphName, forKey: .graphName) + } + if let importOptions = self.importOptions { + try encodeContainer.encode(importOptions, forKey: .importOptions) + } + if let kmsKeyIdentifier = self.kmsKeyIdentifier { + try encodeContainer.encode(kmsKeyIdentifier, forKey: .kmsKeyIdentifier) + } + if let maxProvisionedMemory = self.maxProvisionedMemory { + try encodeContainer.encode(maxProvisionedMemory, forKey: .maxProvisionedMemory) + } + if let minProvisionedMemory = self.minProvisionedMemory { + try encodeContainer.encode(minProvisionedMemory, forKey: .minProvisionedMemory) + } + if let publicConnectivity = self.publicConnectivity { + try encodeContainer.encode(publicConnectivity, forKey: .publicConnectivity) + } + if let replicaCount = self.replicaCount { + try encodeContainer.encode(replicaCount, forKey: .replicaCount) + } + if let roleArn = self.roleArn { + try encodeContainer.encode(roleArn, forKey: .roleArn) + } + if let source = self.source { + try encodeContainer.encode(source, forKey: .source) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + if let vectorSearchConfiguration = self.vectorSearchConfiguration { + try encodeContainer.encode(vectorSearchConfiguration, forKey: .vectorSearchConfiguration) + } + } +} + +extension CreateGraphUsingImportTaskInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/importtasks" + } +} + +public struct CreateGraphUsingImportTaskInput: Swift.Equatable { + /// Indicates whether or not to enable deletion protection on the graph. The graph can’t be deleted when deletion protection is enabled. (true or false). + public var deletionProtection: Swift.Bool? + /// If set to true, the task halts when an import error is encountered. If set to false, the task skips the data that caused the error and continues if possible. + public var failOnError: Swift.Bool? + /// Specifies the format of S3 data to be imported. Valid values are CSV, which identifies the [Gremlin CSV format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) or OPENCYPHER, which identies the [openCypher load format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-opencypher.html). + public var format: NeptuneGraphClientTypes.Format? + /// A name for the new Neptune Analytics graph to be created. The name must contain from 1 to 63 letters, numbers, or hyphens, and its first character must be a letter. It cannot end with a hyphen or contain two consecutive hyphens. + /// This member is required. + public var graphName: Swift.String? + /// Contains options for controlling the import process. For example, if the failOnError key is set to false, the import skips problem data and attempts to continue (whereas if set to true, the default, or if omitted, the import operation halts immediately when an error is encountered. + public var importOptions: NeptuneGraphClientTypes.ImportOptions? + /// Specifies a KMS key to use to encrypt data imported into the new graph. + public var kmsKeyIdentifier: Swift.String? + /// The maximum provisioned memory-optimized Neptune Capacity Units (m-NCUs) to use for the graph. Default: 1024, or the approved upper limit for your account. If both the minimum and maximum values are specified, the max of the min-provisioned-memory and max-provisioned memory is used to create the graph. If neither value is specified 128 m-NCUs are used. + public var maxProvisionedMemory: Swift.Int? + /// The minimum provisioned memory-optimized Neptune Capacity Units (m-NCUs) to use for the graph. Default: 128 + public var minProvisionedMemory: Swift.Int? + /// Specifies whether or not the graph can be reachable over the internet. All access to graphs IAM authenticated. (true to enable, or false to disable. + public var publicConnectivity: Swift.Bool? + /// The number of replicas in other AZs to provision on the new graph after import. Default = 0, Min = 0, Max = 2. + public var replicaCount: Swift.Int? + /// The ARN of the IAM role that will allow access to the data that is to be imported. + /// This member is required. + public var roleArn: Swift.String? + /// A URL identifying to the location of the data to be imported. This can be an Amazon S3 path, or can point to a Neptune database endpoint or snapshot. + /// This member is required. + public var source: Swift.String? + /// Adds metadata tags to the new graph. These tags can also be used with cost allocation reporting, or used in a Condition statement in an IAM policy. + public var tags: [Swift.String:Swift.String]? + /// Specifies the number of dimensions for vector embeddings that will be loaded into the graph. The value is specified as dimension=value. Max = 65,535 + public var vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + + public init( + deletionProtection: Swift.Bool? = nil, + failOnError: Swift.Bool? = nil, + format: NeptuneGraphClientTypes.Format? = nil, + graphName: Swift.String? = nil, + importOptions: NeptuneGraphClientTypes.ImportOptions? = nil, + kmsKeyIdentifier: Swift.String? = nil, + maxProvisionedMemory: Swift.Int? = nil, + minProvisionedMemory: Swift.Int? = nil, + publicConnectivity: Swift.Bool? = nil, + replicaCount: Swift.Int? = nil, + roleArn: Swift.String? = nil, + source: Swift.String? = nil, + tags: [Swift.String:Swift.String]? = nil, + vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? = nil + ) + { + self.deletionProtection = deletionProtection + self.failOnError = failOnError + self.format = format + self.graphName = graphName + self.importOptions = importOptions + self.kmsKeyIdentifier = kmsKeyIdentifier + self.maxProvisionedMemory = maxProvisionedMemory + self.minProvisionedMemory = minProvisionedMemory + self.publicConnectivity = publicConnectivity + self.replicaCount = replicaCount + self.roleArn = roleArn + self.source = source + self.tags = tags + self.vectorSearchConfiguration = vectorSearchConfiguration + } +} + +struct CreateGraphUsingImportTaskInputBody: Swift.Equatable { + let graphName: Swift.String? + let tags: [Swift.String:Swift.String]? + let publicConnectivity: Swift.Bool? + let kmsKeyIdentifier: Swift.String? + let vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + let replicaCount: Swift.Int? + let deletionProtection: Swift.Bool? + let importOptions: NeptuneGraphClientTypes.ImportOptions? + let maxProvisionedMemory: Swift.Int? + let minProvisionedMemory: Swift.Int? + let failOnError: Swift.Bool? + let source: Swift.String? + let format: NeptuneGraphClientTypes.Format? + let roleArn: Swift.String? +} + +extension CreateGraphUsingImportTaskInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deletionProtection + case failOnError + case format + case graphName + case importOptions + case kmsKeyIdentifier + case maxProvisionedMemory + case minProvisionedMemory + case publicConnectivity + case replicaCount + case roleArn + case source + case tags + case vectorSearchConfiguration + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let graphNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .graphName) + graphName = graphNameDecoded + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 + let publicConnectivityDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .publicConnectivity) + publicConnectivity = publicConnectivityDecoded + let kmsKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyIdentifier) + kmsKeyIdentifier = kmsKeyIdentifierDecoded + let vectorSearchConfigurationDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.VectorSearchConfiguration.self, forKey: .vectorSearchConfiguration) + vectorSearchConfiguration = vectorSearchConfigurationDecoded + let replicaCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .replicaCount) + replicaCount = replicaCountDecoded + let deletionProtectionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtection) + deletionProtection = deletionProtectionDecoded + let importOptionsDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.ImportOptions.self, forKey: .importOptions) + importOptions = importOptionsDecoded + let maxProvisionedMemoryDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .maxProvisionedMemory) + maxProvisionedMemory = maxProvisionedMemoryDecoded + let minProvisionedMemoryDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .minProvisionedMemory) + minProvisionedMemory = minProvisionedMemoryDecoded + let failOnErrorDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .failOnError) + failOnError = failOnErrorDecoded + let sourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .source) + source = sourceDecoded + let formatDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.Format.self, forKey: .format) + format = formatDecoded + let roleArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .roleArn) + roleArn = roleArnDecoded + } +} + +extension CreateGraphUsingImportTaskOutput: 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: CreateGraphUsingImportTaskOutputBody = try responseDecoder.decode(responseBody: data) + self.format = output.format + self.graphId = output.graphId + self.importOptions = output.importOptions + self.roleArn = output.roleArn + self.source = output.source + self.status = output.status + self.taskId = output.taskId + } else { + self.format = nil + self.graphId = nil + self.importOptions = nil + self.roleArn = nil + self.source = nil + self.status = nil + self.taskId = nil + } + } +} + +public struct CreateGraphUsingImportTaskOutput: Swift.Equatable { + /// Specifies the format of S3 data to be imported. Valid values are CSV, which identifies the [Gremlin CSV format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) or OPENCYPHER, which identies the [openCypher load format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-opencypher.html). + public var format: NeptuneGraphClientTypes.Format? + /// The unique identifier of the Neptune Analytics graph. + public var graphId: Swift.String? + /// Contains options for controlling the import process. For example, if the failOnError key is set to false, the import skips problem data and attempts to continue (whereas if set to true, the default, or if omitted, the import operation halts immediately when an error is encountered. + public var importOptions: NeptuneGraphClientTypes.ImportOptions? + /// The ARN of the IAM role that will allow access to the data that is to be imported. + /// This member is required. + public var roleArn: Swift.String? + /// A URL identifying to the location of the data to be imported. This can be an Amazon S3 path, or can point to a Neptune database endpoint or snapshot. + /// This member is required. + public var source: Swift.String? + /// The status of the import task. + /// This member is required. + public var status: NeptuneGraphClientTypes.ImportTaskStatus? + /// The unique identifier of the import task. + /// This member is required. + public var taskId: Swift.String? + + public init( + format: NeptuneGraphClientTypes.Format? = nil, + graphId: Swift.String? = nil, + importOptions: NeptuneGraphClientTypes.ImportOptions? = nil, + roleArn: Swift.String? = nil, + source: Swift.String? = nil, + status: NeptuneGraphClientTypes.ImportTaskStatus? = nil, + taskId: Swift.String? = nil + ) + { + self.format = format + self.graphId = graphId + self.importOptions = importOptions + self.roleArn = roleArn + self.source = source + self.status = status + self.taskId = taskId + } +} + +struct CreateGraphUsingImportTaskOutputBody: Swift.Equatable { + let graphId: Swift.String? + let taskId: Swift.String? + let source: Swift.String? + let format: NeptuneGraphClientTypes.Format? + let roleArn: Swift.String? + let status: NeptuneGraphClientTypes.ImportTaskStatus? + let importOptions: NeptuneGraphClientTypes.ImportOptions? +} + +extension CreateGraphUsingImportTaskOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case format + case graphId + case importOptions + case roleArn + case source + case status + case taskId + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let graphIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .graphId) + graphId = graphIdDecoded + let taskIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .taskId) + taskId = taskIdDecoded + let sourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .source) + source = sourceDecoded + let formatDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.Format.self, forKey: .format) + format = formatDecoded + let roleArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .roleArn) + roleArn = roleArnDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.ImportTaskStatus.self, forKey: .status) + status = statusDecoded + let importOptionsDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.ImportOptions.self, forKey: .importOptions) + importOptions = importOptionsDecoded + } +} + +enum CreateGraphUsingImportTaskOutputError: 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 "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 CreatePrivateGraphEndpointInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case subnetIds + case vpcId + case vpcSecurityGroupIds + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let subnetIds = subnetIds { + var subnetIdsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .subnetIds) + for subnetid0 in subnetIds { + try subnetIdsContainer.encode(subnetid0) + } + } + if let vpcId = self.vpcId { + try encodeContainer.encode(vpcId, forKey: .vpcId) + } + if let vpcSecurityGroupIds = vpcSecurityGroupIds { + var vpcSecurityGroupIdsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .vpcSecurityGroupIds) + for securitygroupid0 in vpcSecurityGroupIds { + try vpcSecurityGroupIdsContainer.encode(securitygroupid0) + } + } + } +} + +extension CreatePrivateGraphEndpointInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let graphIdentifier = graphIdentifier else { + return nil + } + return "/graphs/\(graphIdentifier.urlPercentEncoding())/endpoints" + } +} + +public struct CreatePrivateGraphEndpointInput: Swift.Equatable { + /// The unique identifier of the Neptune Analytics graph. + /// This member is required. + public var graphIdentifier: Swift.String? + /// Subnets in which private graph endpoint ENIs are created. + public var subnetIds: [Swift.String]? + /// The VPC in which the private graph endpoint needs to be created. + public var vpcId: Swift.String? + /// Security groups to be attached to the private graph endpoint.. + public var vpcSecurityGroupIds: [Swift.String]? + + public init( + graphIdentifier: Swift.String? = nil, + subnetIds: [Swift.String]? = nil, + vpcId: Swift.String? = nil, + vpcSecurityGroupIds: [Swift.String]? = nil + ) + { + self.graphIdentifier = graphIdentifier + self.subnetIds = subnetIds + self.vpcId = vpcId + self.vpcSecurityGroupIds = vpcSecurityGroupIds + } +} + +struct CreatePrivateGraphEndpointInputBody: Swift.Equatable { + let vpcId: Swift.String? + let subnetIds: [Swift.String]? + let vpcSecurityGroupIds: [Swift.String]? +} + +extension CreatePrivateGraphEndpointInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case subnetIds + case vpcId + case vpcSecurityGroupIds + } + + 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 subnetIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .subnetIds) + var subnetIdsDecoded0:[Swift.String]? = nil + if let subnetIdsContainer = subnetIdsContainer { + subnetIdsDecoded0 = [Swift.String]() + for string0 in subnetIdsContainer { + if let string0 = string0 { + subnetIdsDecoded0?.append(string0) + } + } + } + subnetIds = subnetIdsDecoded0 + let vpcSecurityGroupIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .vpcSecurityGroupIds) + var vpcSecurityGroupIdsDecoded0:[Swift.String]? = nil + if let vpcSecurityGroupIdsContainer = vpcSecurityGroupIdsContainer { + vpcSecurityGroupIdsDecoded0 = [Swift.String]() + for string0 in vpcSecurityGroupIdsContainer { + if let string0 = string0 { + vpcSecurityGroupIdsDecoded0?.append(string0) + } + } + } + vpcSecurityGroupIds = vpcSecurityGroupIdsDecoded0 + } +} + +extension CreatePrivateGraphEndpointOutput: 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: CreatePrivateGraphEndpointOutputBody = try responseDecoder.decode(responseBody: data) + self.status = output.status + self.subnetIds = output.subnetIds + self.vpcEndpointId = output.vpcEndpointId + self.vpcId = output.vpcId + } else { + self.status = nil + self.subnetIds = nil + self.vpcEndpointId = nil + self.vpcId = nil + } + } +} + +public struct CreatePrivateGraphEndpointOutput: Swift.Equatable { + /// Status of the private graph endpoint. + /// This member is required. + public var status: NeptuneGraphClientTypes.PrivateGraphEndpointStatus? + /// Subnets in which the private graph endpoint ENIs are created. + /// This member is required. + public var subnetIds: [Swift.String]? + /// Endpoint ID of the prviate grpah endpoint. + public var vpcEndpointId: Swift.String? + /// VPC in which the private graph endpoint is created. + /// This member is required. + public var vpcId: Swift.String? + + public init( + status: NeptuneGraphClientTypes.PrivateGraphEndpointStatus? = nil, + subnetIds: [Swift.String]? = nil, + vpcEndpointId: Swift.String? = nil, + vpcId: Swift.String? = nil + ) + { + self.status = status + self.subnetIds = subnetIds + self.vpcEndpointId = vpcEndpointId + self.vpcId = vpcId + } +} + +struct CreatePrivateGraphEndpointOutputBody: Swift.Equatable { + let vpcId: Swift.String? + let subnetIds: [Swift.String]? + let status: NeptuneGraphClientTypes.PrivateGraphEndpointStatus? + let vpcEndpointId: Swift.String? +} + +extension CreatePrivateGraphEndpointOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case status + case subnetIds + case vpcEndpointId + case 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 subnetIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .subnetIds) + var subnetIdsDecoded0:[Swift.String]? = nil + if let subnetIdsContainer = subnetIdsContainer { + subnetIdsDecoded0 = [Swift.String]() + for string0 in subnetIdsContainer { + if let string0 = string0 { + subnetIdsDecoded0?.append(string0) + } + } + } + subnetIds = subnetIdsDecoded0 + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.PrivateGraphEndpointStatus.self, forKey: .status) + status = statusDecoded + let vpcEndpointIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .vpcEndpointId) + vpcEndpointId = vpcEndpointIdDecoded + } +} + +enum CreatePrivateGraphEndpointOutputError: 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 "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 DeleteGraphInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + guard let skipSnapshot = skipSnapshot else { + let message = "Creating a URL Query Item failed. skipSnapshot is required and must not be nil." + throw ClientRuntime.ClientError.unknownError(message) + } + let skipSnapshotQueryItem = ClientRuntime.URLQueryItem(name: "skipSnapshot".urlPercentEncoding(), value: Swift.String(skipSnapshot).urlPercentEncoding()) + items.append(skipSnapshotQueryItem) + return items + } + } +} + +extension DeleteGraphInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let graphIdentifier = graphIdentifier else { + return nil + } + return "/graphs/\(graphIdentifier.urlPercentEncoding())" + } +} + +public struct DeleteGraphInput: Swift.Equatable { + /// The unique identifier of the Neptune Analytics graph. + /// This member is required. + public var graphIdentifier: Swift.String? + /// Determines whether a final graph snapshot is created before the graph is deleted. If true is specified, no graph snapshot is created. If false is specified, a graph snapshot is created before the graph is deleted. + /// This member is required. + public var skipSnapshot: Swift.Bool? + + public init( + graphIdentifier: Swift.String? = nil, + skipSnapshot: Swift.Bool? = nil + ) + { + self.graphIdentifier = graphIdentifier + self.skipSnapshot = skipSnapshot + } +} + +struct DeleteGraphInputBody: Swift.Equatable { +} + +extension DeleteGraphInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension DeleteGraphOutput: 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: DeleteGraphOutputBody = try responseDecoder.decode(responseBody: data) + self.arn = output.arn + self.buildNumber = output.buildNumber + self.createTime = output.createTime + self.deletionProtection = output.deletionProtection + self.endpoint = output.endpoint + self.id = output.id + self.kmsKeyIdentifier = output.kmsKeyIdentifier + self.name = output.name + self.provisionedMemory = output.provisionedMemory + self.publicConnectivity = output.publicConnectivity + self.replicaCount = output.replicaCount + self.sourceSnapshotId = output.sourceSnapshotId + self.status = output.status + self.statusReason = output.statusReason + self.vectorSearchConfiguration = output.vectorSearchConfiguration + } else { + self.arn = nil + self.buildNumber = nil + self.createTime = nil + self.deletionProtection = nil + self.endpoint = nil + self.id = nil + self.kmsKeyIdentifier = nil + self.name = nil + self.provisionedMemory = nil + self.publicConnectivity = nil + self.replicaCount = nil + self.sourceSnapshotId = nil + self.status = nil + self.statusReason = nil + self.vectorSearchConfiguration = nil + } + } +} + +public struct DeleteGraphOutput: Swift.Equatable { + /// The ARN associated with the graph. + /// This member is required. + public var arn: Swift.String? + /// The build number associated with the graph. + public var buildNumber: Swift.String? + /// The time at which the graph was created. + public var createTime: ClientRuntime.Date? + /// If true, deletion protection was enabled for the graph. + public var deletionProtection: Swift.Bool? + /// The graph endpoint. + public var endpoint: Swift.String? + /// The unique identifier of the graph. + /// This member is required. + public var id: Swift.String? + /// The ID of the KMS key used to encrypt and decrypt graph data. + public var kmsKeyIdentifier: Swift.String? + /// The name of the graph. + /// This member is required. + public var name: Swift.String? + /// The number of memory-optimized Neptune Capacity Units (m-NCUs) allocated to the graph. + public var provisionedMemory: Swift.Int? + /// If true, the graph has a public endpoint, otherwise not. + public var publicConnectivity: Swift.Bool? + /// The number of replicas for the graph. + public var replicaCount: Swift.Int? + /// The ID of the snapshot from which the graph was created, if the graph was recovered from a snapshot. + public var sourceSnapshotId: Swift.String? + /// The status of the graph. + public var status: NeptuneGraphClientTypes.GraphStatus? + /// The reason for the status of the graph. + public var statusReason: Swift.String? + /// Specifies the number of dimensions for vector embeddings loaded into the graph. Max = 65535 + public var vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + + public init( + arn: Swift.String? = nil, + buildNumber: Swift.String? = nil, + createTime: ClientRuntime.Date? = nil, + deletionProtection: Swift.Bool? = nil, + endpoint: Swift.String? = nil, + id: Swift.String? = nil, + kmsKeyIdentifier: Swift.String? = nil, + name: Swift.String? = nil, + provisionedMemory: Swift.Int? = nil, + publicConnectivity: Swift.Bool? = nil, + replicaCount: Swift.Int? = nil, + sourceSnapshotId: Swift.String? = nil, + status: NeptuneGraphClientTypes.GraphStatus? = nil, + statusReason: Swift.String? = nil, + vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? = nil + ) + { + self.arn = arn + self.buildNumber = buildNumber + self.createTime = createTime + self.deletionProtection = deletionProtection + self.endpoint = endpoint + self.id = id + self.kmsKeyIdentifier = kmsKeyIdentifier + self.name = name + self.provisionedMemory = provisionedMemory + self.publicConnectivity = publicConnectivity + self.replicaCount = replicaCount + self.sourceSnapshotId = sourceSnapshotId + self.status = status + self.statusReason = statusReason + self.vectorSearchConfiguration = vectorSearchConfiguration + } +} + +struct DeleteGraphOutputBody: Swift.Equatable { + let id: Swift.String? + let name: Swift.String? + let arn: Swift.String? + let status: NeptuneGraphClientTypes.GraphStatus? + let statusReason: Swift.String? + let createTime: ClientRuntime.Date? + let provisionedMemory: Swift.Int? + let endpoint: Swift.String? + let publicConnectivity: Swift.Bool? + let vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + let replicaCount: Swift.Int? + let kmsKeyIdentifier: Swift.String? + let sourceSnapshotId: Swift.String? + let deletionProtection: Swift.Bool? + let buildNumber: Swift.String? +} + +extension DeleteGraphOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case buildNumber + case createTime + case deletionProtection + case endpoint + case id + case kmsKeyIdentifier + case name + case provisionedMemory + case publicConnectivity + case replicaCount + case sourceSnapshotId + case status + case statusReason + case vectorSearchConfiguration + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.GraphStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let createTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createTime) + createTime = createTimeDecoded + let provisionedMemoryDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .provisionedMemory) + provisionedMemory = provisionedMemoryDecoded + let endpointDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endpoint) + endpoint = endpointDecoded + let publicConnectivityDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .publicConnectivity) + publicConnectivity = publicConnectivityDecoded + let vectorSearchConfigurationDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.VectorSearchConfiguration.self, forKey: .vectorSearchConfiguration) + vectorSearchConfiguration = vectorSearchConfigurationDecoded + let replicaCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .replicaCount) + replicaCount = replicaCountDecoded + let kmsKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyIdentifier) + kmsKeyIdentifier = kmsKeyIdentifierDecoded + let sourceSnapshotIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceSnapshotId) + sourceSnapshotId = sourceSnapshotIdDecoded + let deletionProtectionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtection) + deletionProtection = deletionProtectionDecoded + let buildNumberDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .buildNumber) + buildNumber = buildNumberDecoded + } +} + +enum DeleteGraphOutputError: 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 "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 DeleteGraphSnapshotInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let snapshotIdentifier = snapshotIdentifier else { + return nil + } + return "/snapshots/\(snapshotIdentifier.urlPercentEncoding())" + } +} + +public struct DeleteGraphSnapshotInput: Swift.Equatable { + /// ID of the graph snapshot to be deleted. + /// This member is required. + public var snapshotIdentifier: Swift.String? + + public init( + snapshotIdentifier: Swift.String? = nil + ) + { + self.snapshotIdentifier = snapshotIdentifier + } +} + +struct DeleteGraphSnapshotInputBody: Swift.Equatable { +} + +extension DeleteGraphSnapshotInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension DeleteGraphSnapshotOutput: 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: DeleteGraphSnapshotOutputBody = try responseDecoder.decode(responseBody: data) + self.arn = output.arn + self.id = output.id + self.kmsKeyIdentifier = output.kmsKeyIdentifier + self.name = output.name + self.snapshotCreateTime = output.snapshotCreateTime + self.sourceGraphId = output.sourceGraphId + self.status = output.status + } else { + self.arn = nil + self.id = nil + self.kmsKeyIdentifier = nil + self.name = nil + self.snapshotCreateTime = nil + self.sourceGraphId = nil + self.status = nil + } + } +} + +public struct DeleteGraphSnapshotOutput: Swift.Equatable { + /// The ARN of the graph snapshot. + /// This member is required. + public var arn: Swift.String? + /// The unique identifier of the graph snapshot. + /// This member is required. + public var id: Swift.String? + /// The ID of the KMS key used to encrypt and decrypt the snapshot. + public var kmsKeyIdentifier: Swift.String? + /// The snapshot name. For example: my-snapshot-1. The name must contain from 1 to 63 letters, numbers, or hyphens, and its first character must be a letter. It cannot end with a hyphen or contain two consecutive hyphens. + /// This member is required. + public var name: Swift.String? + /// The time when the snapshot was created. + public var snapshotCreateTime: ClientRuntime.Date? + /// The graph identifier for the graph from which the snapshot was created. + public var sourceGraphId: Swift.String? + /// The status of the graph snapshot. + public var status: NeptuneGraphClientTypes.SnapshotStatus? + + public init( + arn: Swift.String? = nil, + id: Swift.String? = nil, + kmsKeyIdentifier: Swift.String? = nil, + name: Swift.String? = nil, + snapshotCreateTime: ClientRuntime.Date? = nil, + sourceGraphId: Swift.String? = nil, + status: NeptuneGraphClientTypes.SnapshotStatus? = nil + ) + { + self.arn = arn + self.id = id + self.kmsKeyIdentifier = kmsKeyIdentifier + self.name = name + self.snapshotCreateTime = snapshotCreateTime + self.sourceGraphId = sourceGraphId + self.status = status + } +} + +struct DeleteGraphSnapshotOutputBody: Swift.Equatable { + let id: Swift.String? + let name: Swift.String? + let arn: Swift.String? + let sourceGraphId: Swift.String? + let snapshotCreateTime: ClientRuntime.Date? + let status: NeptuneGraphClientTypes.SnapshotStatus? + let kmsKeyIdentifier: Swift.String? +} + +extension DeleteGraphSnapshotOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case id + case kmsKeyIdentifier + case name + case snapshotCreateTime + case sourceGraphId + case status + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let sourceGraphIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceGraphId) + sourceGraphId = sourceGraphIdDecoded + let snapshotCreateTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .snapshotCreateTime) + snapshotCreateTime = snapshotCreateTimeDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.SnapshotStatus.self, forKey: .status) + status = statusDecoded + let kmsKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyIdentifier) + kmsKeyIdentifier = kmsKeyIdentifierDecoded + } +} + +enum DeleteGraphSnapshotOutputError: 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 "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 DeletePrivateGraphEndpointInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let graphIdentifier = graphIdentifier else { + return nil + } + guard let vpcId = vpcId else { + return nil + } + return "/graphs/\(graphIdentifier.urlPercentEncoding())/endpoints/\(vpcId.urlPercentEncoding())" + } +} + +public struct DeletePrivateGraphEndpointInput: Swift.Equatable { + /// The unique identifier of the Neptune Analytics graph. + /// This member is required. + public var graphIdentifier: Swift.String? + /// The ID of the VPC where the private endpoint is located. + /// This member is required. + public var vpcId: Swift.String? + + public init( + graphIdentifier: Swift.String? = nil, + vpcId: Swift.String? = nil + ) + { + self.graphIdentifier = graphIdentifier + self.vpcId = vpcId + } +} + +struct DeletePrivateGraphEndpointInputBody: Swift.Equatable { +} + +extension DeletePrivateGraphEndpointInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension DeletePrivateGraphEndpointOutput: 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: DeletePrivateGraphEndpointOutputBody = try responseDecoder.decode(responseBody: data) + self.status = output.status + self.subnetIds = output.subnetIds + self.vpcEndpointId = output.vpcEndpointId + self.vpcId = output.vpcId + } else { + self.status = nil + self.subnetIds = nil + self.vpcEndpointId = nil + self.vpcId = nil + } + } +} + +public struct DeletePrivateGraphEndpointOutput: Swift.Equatable { + /// The status of the delete operation. + /// This member is required. + public var status: NeptuneGraphClientTypes.PrivateGraphEndpointStatus? + /// The subnet IDs involved. + /// This member is required. + public var subnetIds: [Swift.String]? + /// The ID of the VPC endpoint that was deleted. + public var vpcEndpointId: Swift.String? + /// The ID of the VPC where the private endpoint was deleted. + /// This member is required. + public var vpcId: Swift.String? + + public init( + status: NeptuneGraphClientTypes.PrivateGraphEndpointStatus? = nil, + subnetIds: [Swift.String]? = nil, + vpcEndpointId: Swift.String? = nil, + vpcId: Swift.String? = nil + ) + { + self.status = status + self.subnetIds = subnetIds + self.vpcEndpointId = vpcEndpointId + self.vpcId = vpcId + } +} + +struct DeletePrivateGraphEndpointOutputBody: Swift.Equatable { + let vpcId: Swift.String? + let subnetIds: [Swift.String]? + let status: NeptuneGraphClientTypes.PrivateGraphEndpointStatus? + let vpcEndpointId: Swift.String? +} + +extension DeletePrivateGraphEndpointOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case status + case subnetIds + case vpcEndpointId + case 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 subnetIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .subnetIds) + var subnetIdsDecoded0:[Swift.String]? = nil + if let subnetIdsContainer = subnetIdsContainer { + subnetIdsDecoded0 = [Swift.String]() + for string0 in subnetIdsContainer { + if let string0 = string0 { + subnetIdsDecoded0?.append(string0) + } + } + } + subnetIds = subnetIdsDecoded0 + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.PrivateGraphEndpointStatus.self, forKey: .status) + status = statusDecoded + let vpcEndpointIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .vpcEndpointId) + vpcEndpointId = vpcEndpointIdDecoded + } +} + +enum DeletePrivateGraphEndpointOutputError: 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 "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 NeptuneGraphClientTypes { + public enum Format: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case csv + case openCypher + case sdkUnknown(Swift.String) + + public static var allCases: [Format] { + return [ + .csv, + .openCypher, + .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 .csv: return "CSV" + case .openCypher: return "OPEN_CYPHER" + 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 = Format(rawValue: rawValue) ?? Format.sdkUnknown(rawValue) + } + } +} + +extension GetGraphInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let graphIdentifier = graphIdentifier else { + return nil + } + return "/graphs/\(graphIdentifier.urlPercentEncoding())" + } +} + +public struct GetGraphInput: Swift.Equatable { + /// The unique identifier of the Neptune Analytics graph. + /// This member is required. + public var graphIdentifier: Swift.String? + + public init( + graphIdentifier: Swift.String? = nil + ) + { + self.graphIdentifier = graphIdentifier + } +} + +struct GetGraphInputBody: Swift.Equatable { +} + +extension GetGraphInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetGraphOutput: 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: GetGraphOutputBody = try responseDecoder.decode(responseBody: data) + self.arn = output.arn + self.buildNumber = output.buildNumber + self.createTime = output.createTime + self.deletionProtection = output.deletionProtection + self.endpoint = output.endpoint + self.id = output.id + self.kmsKeyIdentifier = output.kmsKeyIdentifier + self.name = output.name + self.provisionedMemory = output.provisionedMemory + self.publicConnectivity = output.publicConnectivity + self.replicaCount = output.replicaCount + self.sourceSnapshotId = output.sourceSnapshotId + self.status = output.status + self.statusReason = output.statusReason + self.vectorSearchConfiguration = output.vectorSearchConfiguration + } else { + self.arn = nil + self.buildNumber = nil + self.createTime = nil + self.deletionProtection = nil + self.endpoint = nil + self.id = nil + self.kmsKeyIdentifier = nil + self.name = nil + self.provisionedMemory = nil + self.publicConnectivity = nil + self.replicaCount = nil + self.sourceSnapshotId = nil + self.status = nil + self.statusReason = nil + self.vectorSearchConfiguration = nil + } + } +} + +public struct GetGraphOutput: Swift.Equatable { + /// The ARN associated with the graph. + /// This member is required. + public var arn: Swift.String? + /// The build number of the graph. + public var buildNumber: Swift.String? + /// The time at which the graph was created. + public var createTime: ClientRuntime.Date? + /// If true, deletion protection is enabled for the graph. + public var deletionProtection: Swift.Bool? + /// The graph endpoint. + public var endpoint: Swift.String? + /// The unique identifier of the graph. + /// This member is required. + public var id: Swift.String? + /// The ID of the KMS key used to encrypt and decrypt graph data. + public var kmsKeyIdentifier: Swift.String? + /// The name of the graph. + /// This member is required. + public var name: Swift.String? + /// The number of memory-optimized Neptune Capacity Units (m-NCUs) allocated to the graph. + public var provisionedMemory: Swift.Int? + /// If true, the graph has a public endpoint, otherwise not. + public var publicConnectivity: Swift.Bool? + /// The number of replicas for the graph. + public var replicaCount: Swift.Int? + /// The ID of the snapshot from which the graph was created, if it was created from a snapshot. + public var sourceSnapshotId: Swift.String? + /// The status of the graph. + public var status: NeptuneGraphClientTypes.GraphStatus? + /// The reason that the graph has this status. + public var statusReason: Swift.String? + /// Specifies the number of dimensions for vector embeddings loaded into the graph. Max = 65535 + public var vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + + public init( + arn: Swift.String? = nil, + buildNumber: Swift.String? = nil, + createTime: ClientRuntime.Date? = nil, + deletionProtection: Swift.Bool? = nil, + endpoint: Swift.String? = nil, + id: Swift.String? = nil, + kmsKeyIdentifier: Swift.String? = nil, + name: Swift.String? = nil, + provisionedMemory: Swift.Int? = nil, + publicConnectivity: Swift.Bool? = nil, + replicaCount: Swift.Int? = nil, + sourceSnapshotId: Swift.String? = nil, + status: NeptuneGraphClientTypes.GraphStatus? = nil, + statusReason: Swift.String? = nil, + vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? = nil + ) + { + self.arn = arn + self.buildNumber = buildNumber + self.createTime = createTime + self.deletionProtection = deletionProtection + self.endpoint = endpoint + self.id = id + self.kmsKeyIdentifier = kmsKeyIdentifier + self.name = name + self.provisionedMemory = provisionedMemory + self.publicConnectivity = publicConnectivity + self.replicaCount = replicaCount + self.sourceSnapshotId = sourceSnapshotId + self.status = status + self.statusReason = statusReason + self.vectorSearchConfiguration = vectorSearchConfiguration + } +} + +struct GetGraphOutputBody: Swift.Equatable { + let id: Swift.String? + let name: Swift.String? + let arn: Swift.String? + let status: NeptuneGraphClientTypes.GraphStatus? + let statusReason: Swift.String? + let createTime: ClientRuntime.Date? + let provisionedMemory: Swift.Int? + let endpoint: Swift.String? + let publicConnectivity: Swift.Bool? + let vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + let replicaCount: Swift.Int? + let kmsKeyIdentifier: Swift.String? + let sourceSnapshotId: Swift.String? + let deletionProtection: Swift.Bool? + let buildNumber: Swift.String? +} + +extension GetGraphOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case buildNumber + case createTime + case deletionProtection + case endpoint + case id + case kmsKeyIdentifier + case name + case provisionedMemory + case publicConnectivity + case replicaCount + case sourceSnapshotId + case status + case statusReason + case vectorSearchConfiguration + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.GraphStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let createTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createTime) + createTime = createTimeDecoded + let provisionedMemoryDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .provisionedMemory) + provisionedMemory = provisionedMemoryDecoded + let endpointDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endpoint) + endpoint = endpointDecoded + let publicConnectivityDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .publicConnectivity) + publicConnectivity = publicConnectivityDecoded + let vectorSearchConfigurationDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.VectorSearchConfiguration.self, forKey: .vectorSearchConfiguration) + vectorSearchConfiguration = vectorSearchConfigurationDecoded + let replicaCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .replicaCount) + replicaCount = replicaCountDecoded + let kmsKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyIdentifier) + kmsKeyIdentifier = kmsKeyIdentifierDecoded + let sourceSnapshotIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceSnapshotId) + sourceSnapshotId = sourceSnapshotIdDecoded + let deletionProtectionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtection) + deletionProtection = deletionProtectionDecoded + let buildNumberDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .buildNumber) + buildNumber = buildNumberDecoded + } +} + +enum GetGraphOutputError: 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 "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 GetGraphSnapshotInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let snapshotIdentifier = snapshotIdentifier else { + return nil + } + return "/snapshots/\(snapshotIdentifier.urlPercentEncoding())" + } +} + +public struct GetGraphSnapshotInput: Swift.Equatable { + /// The ID of the snapshot to retrieve. + /// This member is required. + public var snapshotIdentifier: Swift.String? + + public init( + snapshotIdentifier: Swift.String? = nil + ) + { + self.snapshotIdentifier = snapshotIdentifier + } +} + +struct GetGraphSnapshotInputBody: Swift.Equatable { +} + +extension GetGraphSnapshotInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetGraphSnapshotOutput: 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: GetGraphSnapshotOutputBody = try responseDecoder.decode(responseBody: data) + self.arn = output.arn + self.id = output.id + self.kmsKeyIdentifier = output.kmsKeyIdentifier + self.name = output.name + self.snapshotCreateTime = output.snapshotCreateTime + self.sourceGraphId = output.sourceGraphId + self.status = output.status + } else { + self.arn = nil + self.id = nil + self.kmsKeyIdentifier = nil + self.name = nil + self.snapshotCreateTime = nil + self.sourceGraphId = nil + self.status = nil + } + } +} + +public struct GetGraphSnapshotOutput: Swift.Equatable { + /// The ARN of the graph snapshot. + /// This member is required. + public var arn: Swift.String? + /// The unique identifier of the graph snapshot. + /// This member is required. + public var id: Swift.String? + /// The ID of the KMS key used to encrypt and decrypt the snapshot. + public var kmsKeyIdentifier: Swift.String? + /// The snapshot name. For example: my-snapshot-1. The name must contain from 1 to 63 letters, numbers, or hyphens, and its first character must be a letter. It cannot end with a hyphen or contain two consecutive hyphens. + /// This member is required. + public var name: Swift.String? + /// The time when the snapshot was created. + public var snapshotCreateTime: ClientRuntime.Date? + /// The graph identifier for the graph for which a snapshot is to be created. + public var sourceGraphId: Swift.String? + /// The status of the graph snapshot. + public var status: NeptuneGraphClientTypes.SnapshotStatus? + + public init( + arn: Swift.String? = nil, + id: Swift.String? = nil, + kmsKeyIdentifier: Swift.String? = nil, + name: Swift.String? = nil, + snapshotCreateTime: ClientRuntime.Date? = nil, + sourceGraphId: Swift.String? = nil, + status: NeptuneGraphClientTypes.SnapshotStatus? = nil + ) + { + self.arn = arn + self.id = id + self.kmsKeyIdentifier = kmsKeyIdentifier + self.name = name + self.snapshotCreateTime = snapshotCreateTime + self.sourceGraphId = sourceGraphId + self.status = status + } +} + +struct GetGraphSnapshotOutputBody: Swift.Equatable { + let id: Swift.String? + let name: Swift.String? + let arn: Swift.String? + let sourceGraphId: Swift.String? + let snapshotCreateTime: ClientRuntime.Date? + let status: NeptuneGraphClientTypes.SnapshotStatus? + let kmsKeyIdentifier: Swift.String? +} + +extension GetGraphSnapshotOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case id + case kmsKeyIdentifier + case name + case snapshotCreateTime + case sourceGraphId + case status + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let sourceGraphIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceGraphId) + sourceGraphId = sourceGraphIdDecoded + let snapshotCreateTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .snapshotCreateTime) + snapshotCreateTime = snapshotCreateTimeDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.SnapshotStatus.self, forKey: .status) + status = statusDecoded + let kmsKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyIdentifier) + kmsKeyIdentifier = kmsKeyIdentifierDecoded + } +} + +enum GetGraphSnapshotOutputError: 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 "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 GetImportTaskInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let taskIdentifier = taskIdentifier else { + return nil + } + return "/importtasks/\(taskIdentifier.urlPercentEncoding())" + } +} + +public struct GetImportTaskInput: Swift.Equatable { + /// The unique identifier of the import task. + /// This member is required. + public var taskIdentifier: Swift.String? + + public init( + taskIdentifier: Swift.String? = nil + ) + { + self.taskIdentifier = taskIdentifier + } +} + +struct GetImportTaskInputBody: Swift.Equatable { +} + +extension GetImportTaskInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetImportTaskOutput: 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: GetImportTaskOutputBody = try responseDecoder.decode(responseBody: data) + self.attemptNumber = output.attemptNumber + self.format = output.format + self.graphId = output.graphId + self.importOptions = output.importOptions + self.importTaskDetails = output.importTaskDetails + self.roleArn = output.roleArn + self.source = output.source + self.status = output.status + self.statusReason = output.statusReason + self.taskId = output.taskId + } else { + self.attemptNumber = nil + self.format = nil + self.graphId = nil + self.importOptions = nil + self.importTaskDetails = nil + self.roleArn = nil + self.source = nil + self.status = nil + self.statusReason = nil + self.taskId = nil + } + } +} + +public struct GetImportTaskOutput: Swift.Equatable { + /// The number of the current attempt to execute the import task. + public var attemptNumber: Swift.Int? + /// Specifies the format of S3 data to be imported. Valid values are CSV, which identifies the [Gremlin CSV format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) or OPENCYPHER, which identies the [openCypher load format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-opencypher.html). + public var format: NeptuneGraphClientTypes.Format? + /// The unique identifier of the Neptune Analytics graph. + public var graphId: Swift.String? + /// Contains options for controlling the import process. For example, if the failOnError key is set to false, the import skips problem data and attempts to continue (whereas if set to true, the default, or if omitted, the import operation halts immediately when an error is encountered. + public var importOptions: NeptuneGraphClientTypes.ImportOptions? + /// Contains details about the specified import task. + public var importTaskDetails: NeptuneGraphClientTypes.ImportTaskDetails? + /// The ARN of the IAM role that will allow access to the data that is to be imported. + /// This member is required. + public var roleArn: Swift.String? + /// A URL identifying to the location of the data to be imported. This can be an Amazon S3 path, or can point to a Neptune database endpoint or snapshot + /// This member is required. + public var source: Swift.String? + /// The status of the import task: + /// + /// * INITIALIZING – The necessary resources needed to create the graph are being prepared. + /// + /// * ANALYZING_DATA – The data is being analyzed to determine the optimal infrastructure configuration for the new graph. + /// + /// * RE_PROVISIONING – The data did not fit into the provisioned graph, so it is being re-provisioned with more capacity. + /// + /// * IMPORTING – The data is being loaded. + /// + /// * ERROR_ENCOUNTERED – An error has been encountered while trying to create the graph and import the data. + /// + /// * ERROR_ENCOUNTERED_ROLLING_BACK – Because of the error that was encountered, the graph is being rolled back and all its resources released. + /// + /// * SUCCEEDED – Graph creation and data loading succeeded. + /// + /// * FAILED – Graph creation or data loading failed. When the status is FAILED, you can use get-graphs to get more information about the state of the graph. + /// + /// * CANCELLING – Because you cancelled the import task, cancellation is in progress. + /// + /// * CANCELLED – You have successfully cancelled the import task. + /// This member is required. + public var status: NeptuneGraphClientTypes.ImportTaskStatus? + /// The reason that the import task has this status value. + public var statusReason: Swift.String? + /// The unique identifier of the import task. + /// This member is required. + public var taskId: Swift.String? + + public init( + attemptNumber: Swift.Int? = nil, + format: NeptuneGraphClientTypes.Format? = nil, + graphId: Swift.String? = nil, + importOptions: NeptuneGraphClientTypes.ImportOptions? = nil, + importTaskDetails: NeptuneGraphClientTypes.ImportTaskDetails? = nil, + roleArn: Swift.String? = nil, + source: Swift.String? = nil, + status: NeptuneGraphClientTypes.ImportTaskStatus? = nil, + statusReason: Swift.String? = nil, + taskId: Swift.String? = nil + ) + { + self.attemptNumber = attemptNumber + self.format = format + self.graphId = graphId + self.importOptions = importOptions + self.importTaskDetails = importTaskDetails + self.roleArn = roleArn + self.source = source + self.status = status + self.statusReason = statusReason + self.taskId = taskId + } +} + +struct GetImportTaskOutputBody: Swift.Equatable { + let graphId: Swift.String? + let taskId: Swift.String? + let source: Swift.String? + let format: NeptuneGraphClientTypes.Format? + let roleArn: Swift.String? + let status: NeptuneGraphClientTypes.ImportTaskStatus? + let importOptions: NeptuneGraphClientTypes.ImportOptions? + let importTaskDetails: NeptuneGraphClientTypes.ImportTaskDetails? + let attemptNumber: Swift.Int? + let statusReason: Swift.String? +} + +extension GetImportTaskOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case attemptNumber + case format + case graphId + case importOptions + case importTaskDetails + case roleArn + case source + case status + case statusReason + case taskId + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let graphIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .graphId) + graphId = graphIdDecoded + let taskIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .taskId) + taskId = taskIdDecoded + let sourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .source) + source = sourceDecoded + let formatDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.Format.self, forKey: .format) + format = formatDecoded + let roleArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .roleArn) + roleArn = roleArnDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.ImportTaskStatus.self, forKey: .status) + status = statusDecoded + let importOptionsDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.ImportOptions.self, forKey: .importOptions) + importOptions = importOptionsDecoded + let importTaskDetailsDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.ImportTaskDetails.self, forKey: .importTaskDetails) + importTaskDetails = importTaskDetailsDecoded + let attemptNumberDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .attemptNumber) + attemptNumber = attemptNumberDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + } +} + +enum GetImportTaskOutputError: 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 "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 GetPrivateGraphEndpointInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let graphIdentifier = graphIdentifier else { + return nil + } + guard let vpcId = vpcId else { + return nil + } + return "/graphs/\(graphIdentifier.urlPercentEncoding())/endpoints/\(vpcId.urlPercentEncoding())" + } +} + +public struct GetPrivateGraphEndpointInput: Swift.Equatable { + /// The unique identifier of the Neptune Analytics graph. + /// This member is required. + public var graphIdentifier: Swift.String? + /// The ID of the VPC where the private endpoint is located. + /// This member is required. + public var vpcId: Swift.String? + + public init( + graphIdentifier: Swift.String? = nil, + vpcId: Swift.String? = nil + ) + { + self.graphIdentifier = graphIdentifier + self.vpcId = vpcId + } +} + +struct GetPrivateGraphEndpointInputBody: Swift.Equatable { +} + +extension GetPrivateGraphEndpointInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension GetPrivateGraphEndpointOutput: 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: GetPrivateGraphEndpointOutputBody = try responseDecoder.decode(responseBody: data) + self.status = output.status + self.subnetIds = output.subnetIds + self.vpcEndpointId = output.vpcEndpointId + self.vpcId = output.vpcId + } else { + self.status = nil + self.subnetIds = nil + self.vpcEndpointId = nil + self.vpcId = nil + } + } +} + +public struct GetPrivateGraphEndpointOutput: Swift.Equatable { + /// The current status of the private endpoint. + /// This member is required. + public var status: NeptuneGraphClientTypes.PrivateGraphEndpointStatus? + /// The subnet IDs involved. + /// This member is required. + public var subnetIds: [Swift.String]? + /// The ID of the private endpoint. + public var vpcEndpointId: Swift.String? + /// The ID of the VPC where the private endpoint is located. + /// This member is required. + public var vpcId: Swift.String? + + public init( + status: NeptuneGraphClientTypes.PrivateGraphEndpointStatus? = nil, + subnetIds: [Swift.String]? = nil, + vpcEndpointId: Swift.String? = nil, + vpcId: Swift.String? = nil + ) + { + self.status = status + self.subnetIds = subnetIds + self.vpcEndpointId = vpcEndpointId + self.vpcId = vpcId + } +} + +struct GetPrivateGraphEndpointOutputBody: Swift.Equatable { + let vpcId: Swift.String? + let subnetIds: [Swift.String]? + let status: NeptuneGraphClientTypes.PrivateGraphEndpointStatus? + let vpcEndpointId: Swift.String? +} + +extension GetPrivateGraphEndpointOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case status + case subnetIds + case vpcEndpointId + case 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 subnetIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .subnetIds) + var subnetIdsDecoded0:[Swift.String]? = nil + if let subnetIdsContainer = subnetIdsContainer { + subnetIdsDecoded0 = [Swift.String]() + for string0 in subnetIdsContainer { + if let string0 = string0 { + subnetIdsDecoded0?.append(string0) + } + } + } + subnetIds = subnetIdsDecoded0 + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.PrivateGraphEndpointStatus.self, forKey: .status) + status = statusDecoded + let vpcEndpointIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .vpcEndpointId) + vpcEndpointId = vpcEndpointIdDecoded + } +} + +enum GetPrivateGraphEndpointOutputError: 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 "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 NeptuneGraphClientTypes.GraphSnapshotSummary: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case id + case kmsKeyIdentifier + case name + case snapshotCreateTime + case sourceGraphId + case status + } + + 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 id = self.id { + try encodeContainer.encode(id, forKey: .id) + } + if let kmsKeyIdentifier = self.kmsKeyIdentifier { + try encodeContainer.encode(kmsKeyIdentifier, forKey: .kmsKeyIdentifier) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let snapshotCreateTime = self.snapshotCreateTime { + try encodeContainer.encodeTimestamp(snapshotCreateTime, format: .epochSeconds, forKey: .snapshotCreateTime) + } + if let sourceGraphId = self.sourceGraphId { + try encodeContainer.encode(sourceGraphId, forKey: .sourceGraphId) + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let sourceGraphIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceGraphId) + sourceGraphId = sourceGraphIdDecoded + let snapshotCreateTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .snapshotCreateTime) + snapshotCreateTime = snapshotCreateTimeDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.SnapshotStatus.self, forKey: .status) + status = statusDecoded + let kmsKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyIdentifier) + kmsKeyIdentifier = kmsKeyIdentifierDecoded + } +} + +extension NeptuneGraphClientTypes { + /// Details about a graph snapshot. + public struct GraphSnapshotSummary: Swift.Equatable { + /// The ARN of the graph snapshot. + /// This member is required. + public var arn: Swift.String? + /// The unique identifier of the graph snapshot. + /// This member is required. + public var id: Swift.String? + /// The ID of the KMS key used to encrypt and decrypt the snapshot. + public var kmsKeyIdentifier: Swift.String? + /// The snapshot name. For example: my-snapshot-1. The name must contain from 1 to 63 letters, numbers, or hyphens, and its first character must be a letter. It cannot end with a hyphen or contain two consecutive hyphens. + /// This member is required. + public var name: Swift.String? + /// The time when the snapshot was created. + public var snapshotCreateTime: ClientRuntime.Date? + /// The graph identifier for the graph for which a snapshot is to be created. + public var sourceGraphId: Swift.String? + /// The status of the graph snapshot. + public var status: NeptuneGraphClientTypes.SnapshotStatus? + + public init( + arn: Swift.String? = nil, + id: Swift.String? = nil, + kmsKeyIdentifier: Swift.String? = nil, + name: Swift.String? = nil, + snapshotCreateTime: ClientRuntime.Date? = nil, + sourceGraphId: Swift.String? = nil, + status: NeptuneGraphClientTypes.SnapshotStatus? = nil + ) + { + self.arn = arn + self.id = id + self.kmsKeyIdentifier = kmsKeyIdentifier + self.name = name + self.snapshotCreateTime = snapshotCreateTime + self.sourceGraphId = sourceGraphId + self.status = status + } + } + +} + +extension NeptuneGraphClientTypes { + public enum GraphStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case available + case creating + case deleting + case failed + case resetting + case snapshotting + case updating + case sdkUnknown(Swift.String) + + public static var allCases: [GraphStatus] { + return [ + .available, + .creating, + .deleting, + .failed, + .resetting, + .snapshotting, + .updating, + .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 .available: return "AVAILABLE" + case .creating: return "CREATING" + case .deleting: return "DELETING" + case .failed: return "FAILED" + case .resetting: return "RESETTING" + case .snapshotting: return "SNAPSHOTTING" + case .updating: return "UPDATING" + 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 = GraphStatus(rawValue: rawValue) ?? GraphStatus.sdkUnknown(rawValue) + } + } +} + +extension NeptuneGraphClientTypes.GraphSummary: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case deletionProtection + case endpoint + case id + case kmsKeyIdentifier + case name + case provisionedMemory + case publicConnectivity + case replicaCount + case status + } + + 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 deletionProtection = self.deletionProtection { + try encodeContainer.encode(deletionProtection, forKey: .deletionProtection) + } + if let endpoint = self.endpoint { + try encodeContainer.encode(endpoint, forKey: .endpoint) + } + if let id = self.id { + try encodeContainer.encode(id, forKey: .id) + } + if let kmsKeyIdentifier = self.kmsKeyIdentifier { + try encodeContainer.encode(kmsKeyIdentifier, forKey: .kmsKeyIdentifier) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let provisionedMemory = self.provisionedMemory { + try encodeContainer.encode(provisionedMemory, forKey: .provisionedMemory) + } + if let publicConnectivity = self.publicConnectivity { + try encodeContainer.encode(publicConnectivity, forKey: .publicConnectivity) + } + if let replicaCount = self.replicaCount { + try encodeContainer.encode(replicaCount, forKey: .replicaCount) + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.GraphStatus.self, forKey: .status) + status = statusDecoded + let provisionedMemoryDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .provisionedMemory) + provisionedMemory = provisionedMemoryDecoded + let publicConnectivityDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .publicConnectivity) + publicConnectivity = publicConnectivityDecoded + let endpointDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endpoint) + endpoint = endpointDecoded + let replicaCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .replicaCount) + replicaCount = replicaCountDecoded + let kmsKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyIdentifier) + kmsKeyIdentifier = kmsKeyIdentifierDecoded + let deletionProtectionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtection) + deletionProtection = deletionProtectionDecoded + } +} + +extension NeptuneGraphClientTypes { + /// Summary details about a graph. + public struct GraphSummary: Swift.Equatable { + /// The ARN associated with the graph. + /// This member is required. + public var arn: Swift.String? + /// If true, deletion protection is enabled for the graph. + public var deletionProtection: Swift.Bool? + /// The graph endpoint. + public var endpoint: Swift.String? + /// The unique identifier of the graph. + /// This member is required. + public var id: Swift.String? + /// The ID of the KMS key used to encrypt and decrypt graph data. + public var kmsKeyIdentifier: Swift.String? + /// The name of the graph. + /// This member is required. + public var name: Swift.String? + /// The number of memory-optimized Neptune Capacity Units (m-NCUs) allocated to the graph. + public var provisionedMemory: Swift.Int? + /// If true, the graph has a public endpoint, otherwise not. + public var publicConnectivity: Swift.Bool? + /// The number of replicas for the graph. + public var replicaCount: Swift.Int? + /// The status of the graph. + public var status: NeptuneGraphClientTypes.GraphStatus? + + public init( + arn: Swift.String? = nil, + deletionProtection: Swift.Bool? = nil, + endpoint: Swift.String? = nil, + id: Swift.String? = nil, + kmsKeyIdentifier: Swift.String? = nil, + name: Swift.String? = nil, + provisionedMemory: Swift.Int? = nil, + publicConnectivity: Swift.Bool? = nil, + replicaCount: Swift.Int? = nil, + status: NeptuneGraphClientTypes.GraphStatus? = nil + ) + { + self.arn = arn + self.deletionProtection = deletionProtection + self.endpoint = endpoint + self.id = id + self.kmsKeyIdentifier = kmsKeyIdentifier + self.name = name + self.provisionedMemory = provisionedMemory + self.publicConnectivity = publicConnectivity + self.replicaCount = replicaCount + self.status = status + } + } + +} + +extension NeptuneGraphClientTypes.ImportOptions: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case neptune + case sdkUnknown + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + switch self { + case let .neptune(neptune): + try container.encode(neptune, forKey: .neptune) + 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 neptuneDecoded = try values.decodeIfPresent(NeptuneGraphClientTypes.NeptuneImportOptions.self, forKey: .neptune) + if let neptune = neptuneDecoded { + self = .neptune(neptune) + return + } + self = .sdkUnknown("") + } +} + +extension NeptuneGraphClientTypes { + /// Options for how to perform an import. + public enum ImportOptions: Swift.Equatable { + /// Options for importing data from a Neptune database. + case neptune(NeptuneGraphClientTypes.NeptuneImportOptions) + case sdkUnknown(Swift.String) + } + +} + +extension NeptuneGraphClientTypes.ImportTaskDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case dictionaryEntryCount + case errorCount + case errorDetails + case progressPercentage + case startTime + case statementCount + case status + case timeElapsedSeconds + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let dictionaryEntryCount = self.dictionaryEntryCount { + try encodeContainer.encode(dictionaryEntryCount, forKey: .dictionaryEntryCount) + } + if let errorCount = self.errorCount { + try encodeContainer.encode(errorCount, forKey: .errorCount) + } + if let errorDetails = self.errorDetails { + try encodeContainer.encode(errorDetails, forKey: .errorDetails) + } + if let progressPercentage = self.progressPercentage { + try encodeContainer.encode(progressPercentage, forKey: .progressPercentage) + } + if let startTime = self.startTime { + try encodeContainer.encodeTimestamp(startTime, format: .epochSeconds, forKey: .startTime) + } + if let statementCount = self.statementCount { + try encodeContainer.encode(statementCount, forKey: .statementCount) + } + if let status = self.status { + try encodeContainer.encode(status, forKey: .status) + } + if let timeElapsedSeconds = self.timeElapsedSeconds { + try encodeContainer.encode(timeElapsedSeconds, forKey: .timeElapsedSeconds) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let statusDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .status) + status = statusDecoded + let startTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .startTime) + startTime = startTimeDecoded + let timeElapsedSecondsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .timeElapsedSeconds) + timeElapsedSeconds = timeElapsedSecondsDecoded + let progressPercentageDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .progressPercentage) + progressPercentage = progressPercentageDecoded + let errorCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .errorCount) + errorCount = errorCountDecoded + let errorDetailsDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .errorDetails) + errorDetails = errorDetailsDecoded + let statementCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .statementCount) + statementCount = statementCountDecoded + let dictionaryEntryCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .dictionaryEntryCount) + dictionaryEntryCount = dictionaryEntryCountDecoded + } +} + +extension NeptuneGraphClientTypes { + /// Contains details about an import task. + public struct ImportTaskDetails: Swift.Equatable { + /// The number of dictionary entries in the import task. + /// This member is required. + public var dictionaryEntryCount: Swift.Int? + /// The number of errors encountered so far. + /// This member is required. + public var errorCount: Swift.Int? + /// Details about the errors that have been encountered. + public var errorDetails: Swift.String? + /// The percentage progress so far. + /// This member is required. + public var progressPercentage: Swift.Int? + /// Time at which the import task started. + /// This member is required. + public var startTime: ClientRuntime.Date? + /// The number of statements in the import task. + /// This member is required. + public var statementCount: Swift.Int? + /// Status of the import task. + /// This member is required. + public var status: Swift.String? + /// Seconds elapsed since the import task started. + /// This member is required. + public var timeElapsedSeconds: Swift.Int? + + public init( + dictionaryEntryCount: Swift.Int? = nil, + errorCount: Swift.Int? = nil, + errorDetails: Swift.String? = nil, + progressPercentage: Swift.Int? = nil, + startTime: ClientRuntime.Date? = nil, + statementCount: Swift.Int? = nil, + status: Swift.String? = nil, + timeElapsedSeconds: Swift.Int? = nil + ) + { + self.dictionaryEntryCount = dictionaryEntryCount + self.errorCount = errorCount + self.errorDetails = errorDetails + self.progressPercentage = progressPercentage + self.startTime = startTime + self.statementCount = statementCount + self.status = status + self.timeElapsedSeconds = timeElapsedSeconds + } + } + +} + +extension NeptuneGraphClientTypes { + public enum ImportTaskStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case analyzingData + case cancelled + case cancelling + case exporting + case failed + case importing + case initializing + case reprovisioning + case rollingBack + case succeeded + case sdkUnknown(Swift.String) + + public static var allCases: [ImportTaskStatus] { + return [ + .analyzingData, + .cancelled, + .cancelling, + .exporting, + .failed, + .importing, + .initializing, + .reprovisioning, + .rollingBack, + .succeeded, + .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 .analyzingData: return "ANALYZING_DATA" + case .cancelled: return "CANCELLED" + case .cancelling: return "CANCELLING" + case .exporting: return "EXPORTING" + case .failed: return "FAILED" + case .importing: return "IMPORTING" + case .initializing: return "INITIALIZING" + case .reprovisioning: return "REPROVISIONING" + case .rollingBack: return "ROLLING_BACK" + case .succeeded: return "SUCCEEDED" + 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 = ImportTaskStatus(rawValue: rawValue) ?? ImportTaskStatus.sdkUnknown(rawValue) + } + } +} + +extension NeptuneGraphClientTypes.ImportTaskSummary: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case format + case graphId + case roleArn + case source + case status + case taskId + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let format = self.format { + try encodeContainer.encode(format.rawValue, forKey: .format) + } + if let graphId = self.graphId { + try encodeContainer.encode(graphId, forKey: .graphId) + } + if let roleArn = self.roleArn { + try encodeContainer.encode(roleArn, forKey: .roleArn) + } + if let source = self.source { + try encodeContainer.encode(source, forKey: .source) + } + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + if let taskId = self.taskId { + try encodeContainer.encode(taskId, forKey: .taskId) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let graphIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .graphId) + graphId = graphIdDecoded + let taskIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .taskId) + taskId = taskIdDecoded + let sourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .source) + source = sourceDecoded + let formatDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.Format.self, forKey: .format) + format = formatDecoded + let roleArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .roleArn) + roleArn = roleArnDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.ImportTaskStatus.self, forKey: .status) + status = statusDecoded + } +} + +extension NeptuneGraphClientTypes { + /// Details about an import task. + public struct ImportTaskSummary: Swift.Equatable { + /// Specifies the format of S3 data to be imported. Valid values are CSV, which identifies the [Gremlin CSV format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) or OPENCYPHER, which identies the [openCypher load format](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-opencypher.html). + public var format: NeptuneGraphClientTypes.Format? + /// The unique identifier of the Neptune Analytics graph. + public var graphId: Swift.String? + /// The ARN of the IAM role that will allow access to the data that is to be imported. + /// This member is required. + public var roleArn: Swift.String? + /// A URL identifying to the location of the data to be imported. This can be an Amazon S3 path, or can point to a Neptune database endpoint or snapshot + /// This member is required. + public var source: Swift.String? + /// Status of the import task. + /// This member is required. + public var status: NeptuneGraphClientTypes.ImportTaskStatus? + /// The unique identifier of the import task. + /// This member is required. + public var taskId: Swift.String? + + public init( + format: NeptuneGraphClientTypes.Format? = nil, + graphId: Swift.String? = nil, + roleArn: Swift.String? = nil, + source: Swift.String? = nil, + status: NeptuneGraphClientTypes.ImportTaskStatus? = nil, + taskId: Swift.String? = nil + ) + { + self.format = format + self.graphId = graphId + self.roleArn = roleArn + self.source = source + self.status = status + self.taskId = taskId + } + } + +} + +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 + } +} + +/// A failure occurred on the server. +public struct InternalServerException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + /// A message describing the problem. + /// This member is required. + 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 { 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 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 ListGraphSnapshotsInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } + if let maxResults = maxResults { + let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) + items.append(maxResultsQueryItem) + } + if let graphIdentifier = graphIdentifier { + let graphIdentifierQueryItem = ClientRuntime.URLQueryItem(name: "graphIdentifier".urlPercentEncoding(), value: Swift.String(graphIdentifier).urlPercentEncoding()) + items.append(graphIdentifierQueryItem) + } + return items + } + } +} + +extension ListGraphSnapshotsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/snapshots" + } +} + +public struct ListGraphSnapshotsInput: Swift.Equatable { + /// The unique identifier of the Neptune Analytics graph. + public var graphIdentifier: Swift.String? + /// The total number of records to return in the command's output. If the total number of records available is more than the value specified, nextToken is provided in the command's output. To resume pagination, provide the nextToken output value in the nextToken argument of a subsequent command. Do not use the nextToken response element directly outside of the Amazon CLI. + public var maxResults: Swift.Int? + /// Pagination token used to paginate output. When this value is provided as input, the service returns results from where the previous response left off. When this value is present in output, it indicates that there are more results to retrieve. + public var nextToken: Swift.String? + + public init( + graphIdentifier: Swift.String? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.graphIdentifier = graphIdentifier + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListGraphSnapshotsInputBody: Swift.Equatable { +} + +extension ListGraphSnapshotsInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension ListGraphSnapshotsOutput: 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: ListGraphSnapshotsOutputBody = try responseDecoder.decode(responseBody: data) + self.graphSnapshots = output.graphSnapshots + self.nextToken = output.nextToken + } else { + self.graphSnapshots = nil + self.nextToken = nil + } + } +} + +public struct ListGraphSnapshotsOutput: Swift.Equatable { + /// The requested list of snapshots. + /// This member is required. + public var graphSnapshots: [NeptuneGraphClientTypes.GraphSnapshotSummary]? + /// Pagination token used to paginate output. When this value is provided as input, the service returns results from where the previous response left off. When this value is present in output, it indicates that there are more results to retrieve. + public var nextToken: Swift.String? + + public init( + graphSnapshots: [NeptuneGraphClientTypes.GraphSnapshotSummary]? = nil, + nextToken: Swift.String? = nil + ) + { + self.graphSnapshots = graphSnapshots + self.nextToken = nextToken + } +} + +struct ListGraphSnapshotsOutputBody: Swift.Equatable { + let graphSnapshots: [NeptuneGraphClientTypes.GraphSnapshotSummary]? + let nextToken: Swift.String? +} + +extension ListGraphSnapshotsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case graphSnapshots + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let graphSnapshotsContainer = try containerValues.decodeIfPresent([NeptuneGraphClientTypes.GraphSnapshotSummary?].self, forKey: .graphSnapshots) + var graphSnapshotsDecoded0:[NeptuneGraphClientTypes.GraphSnapshotSummary]? = nil + if let graphSnapshotsContainer = graphSnapshotsContainer { + graphSnapshotsDecoded0 = [NeptuneGraphClientTypes.GraphSnapshotSummary]() + for structure0 in graphSnapshotsContainer { + if let structure0 = structure0 { + graphSnapshotsDecoded0?.append(structure0) + } + } + } + graphSnapshots = graphSnapshotsDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListGraphSnapshotsOutputError: 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 "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 ListGraphsInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } + if let maxResults = maxResults { + let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) + items.append(maxResultsQueryItem) + } + return items + } + } +} + +extension ListGraphsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/graphs" + } +} + +public struct ListGraphsInput: Swift.Equatable { + /// The total number of records to return in the command's output. If the total number of records available is more than the value specified, nextToken is provided in the command's output. To resume pagination, provide the nextToken output value in the nextToken argument of a subsequent command. Do not use the nextToken response element directly outside of the Amazon CLI. + public var maxResults: Swift.Int? + /// Pagination token used to paginate output. When this value is provided as input, the service returns results from where the previous response left off. When this value is present in output, it indicates that there are more results to retrieve. + public var nextToken: Swift.String? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListGraphsInputBody: Swift.Equatable { +} + +extension ListGraphsInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension ListGraphsOutput: 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: ListGraphsOutputBody = try responseDecoder.decode(responseBody: data) + self.graphs = output.graphs + self.nextToken = output.nextToken + } else { + self.graphs = nil + self.nextToken = nil + } + } +} + +public struct ListGraphsOutput: Swift.Equatable { + /// A list of the graphs. + /// This member is required. + public var graphs: [NeptuneGraphClientTypes.GraphSummary]? + /// Pagination token used to paginate output. When this value is provided as input, the service returns results from where the previous response left off. When this value is present in output, it indicates that there are more results to retrieve. + public var nextToken: Swift.String? + + public init( + graphs: [NeptuneGraphClientTypes.GraphSummary]? = nil, + nextToken: Swift.String? = nil + ) + { + self.graphs = graphs + self.nextToken = nextToken + } +} + +struct ListGraphsOutputBody: Swift.Equatable { + let graphs: [NeptuneGraphClientTypes.GraphSummary]? + let nextToken: Swift.String? +} + +extension ListGraphsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case graphs + case nextToken + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let graphsContainer = try containerValues.decodeIfPresent([NeptuneGraphClientTypes.GraphSummary?].self, forKey: .graphs) + var graphsDecoded0:[NeptuneGraphClientTypes.GraphSummary]? = nil + if let graphsContainer = graphsContainer { + graphsDecoded0 = [NeptuneGraphClientTypes.GraphSummary]() + for structure0 in graphsContainer { + if let structure0 = structure0 { + graphsDecoded0?.append(structure0) + } + } + } + graphs = graphsDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListGraphsOutputError: 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 "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 ListImportTasksInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } + if let maxResults = maxResults { + let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) + items.append(maxResultsQueryItem) + } + return items + } + } +} + +extension ListImportTasksInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/importtasks" + } +} + +public struct ListImportTasksInput: Swift.Equatable { + /// The total number of records to return in the command's output. If the total number of records available is more than the value specified, nextToken is provided in the command's output. To resume pagination, provide the nextToken output value in the nextToken argument of a subsequent command. Do not use the nextToken response element directly outside of the Amazon CLI. + public var maxResults: Swift.Int? + /// Pagination token used to paginate output. When this value is provided as input, the service returns results from where the previous response left off. When this value is present in output, it indicates that there are more results to retrieve. + public var nextToken: Swift.String? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListImportTasksInputBody: Swift.Equatable { +} + +extension ListImportTasksInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension ListImportTasksOutput: 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: ListImportTasksOutputBody = try responseDecoder.decode(responseBody: data) + self.nextToken = output.nextToken + self.tasks = output.tasks + } else { + self.nextToken = nil + self.tasks = nil + } + } +} + +public struct ListImportTasksOutput: Swift.Equatable { + /// Pagination token used to paginate output. When this value is provided as input, the service returns results from where the previous response left off. When this value is present in output, it indicates that there are more results to retrieve. + public var nextToken: Swift.String? + /// The requested list of import tasks. + /// This member is required. + public var tasks: [NeptuneGraphClientTypes.ImportTaskSummary]? + + public init( + nextToken: Swift.String? = nil, + tasks: [NeptuneGraphClientTypes.ImportTaskSummary]? = nil + ) + { + self.nextToken = nextToken + self.tasks = tasks + } +} + +struct ListImportTasksOutputBody: Swift.Equatable { + let tasks: [NeptuneGraphClientTypes.ImportTaskSummary]? + let nextToken: Swift.String? +} + +extension ListImportTasksOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case nextToken + case tasks + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let tasksContainer = try containerValues.decodeIfPresent([NeptuneGraphClientTypes.ImportTaskSummary?].self, forKey: .tasks) + var tasksDecoded0:[NeptuneGraphClientTypes.ImportTaskSummary]? = nil + if let tasksContainer = tasksContainer { + tasksDecoded0 = [NeptuneGraphClientTypes.ImportTaskSummary]() + for structure0 in tasksContainer { + if let structure0 = structure0 { + tasksDecoded0?.append(structure0) + } + } + } + tasks = tasksDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListImportTasksOutputError: 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 "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 ListPrivateGraphEndpointsInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + if let nextToken = nextToken { + let nextTokenQueryItem = ClientRuntime.URLQueryItem(name: "nextToken".urlPercentEncoding(), value: Swift.String(nextToken).urlPercentEncoding()) + items.append(nextTokenQueryItem) + } + if let maxResults = maxResults { + let maxResultsQueryItem = ClientRuntime.URLQueryItem(name: "maxResults".urlPercentEncoding(), value: Swift.String(maxResults).urlPercentEncoding()) + items.append(maxResultsQueryItem) + } + return items + } + } +} + +extension ListPrivateGraphEndpointsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let graphIdentifier = graphIdentifier else { + return nil + } + return "/graphs/\(graphIdentifier.urlPercentEncoding())/endpoints" + } +} + +public struct ListPrivateGraphEndpointsInput: Swift.Equatable { + /// The unique identifier of the Neptune Analytics graph. + /// This member is required. + public var graphIdentifier: Swift.String? + /// The total number of records to return in the command's output. If the total number of records available is more than the value specified, nextToken is provided in the command's output. To resume pagination, provide the nextToken output value in the nextToken argument of a subsequent command. Do not use the nextToken response element directly outside of the Amazon CLI. + public var maxResults: Swift.Int? + /// Pagination token used to paginate output. When this value is provided as input, the service returns results from where the previous response left off. When this value is present in output, it indicates that there are more results to retrieve. + public var nextToken: Swift.String? + + public init( + graphIdentifier: Swift.String? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.graphIdentifier = graphIdentifier + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +struct ListPrivateGraphEndpointsInputBody: Swift.Equatable { +} + +extension ListPrivateGraphEndpointsInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension ListPrivateGraphEndpointsOutput: 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: ListPrivateGraphEndpointsOutputBody = try responseDecoder.decode(responseBody: data) + self.nextToken = output.nextToken + self.privateGraphEndpoints = output.privateGraphEndpoints + } else { + self.nextToken = nil + self.privateGraphEndpoints = nil + } + } +} + +public struct ListPrivateGraphEndpointsOutput: Swift.Equatable { + /// Pagination token used to paginate output. When this value is provided as input, the service returns results from where the previous response left off. When this value is present in output, it indicates that there are more results to retrieve. + public var nextToken: Swift.String? + /// A list of private endpoints for the specified Neptune Analytics graph. + /// This member is required. + public var privateGraphEndpoints: [NeptuneGraphClientTypes.PrivateGraphEndpointSummary]? + + public init( + nextToken: Swift.String? = nil, + privateGraphEndpoints: [NeptuneGraphClientTypes.PrivateGraphEndpointSummary]? = nil + ) + { + self.nextToken = nextToken + self.privateGraphEndpoints = privateGraphEndpoints + } +} + +struct ListPrivateGraphEndpointsOutputBody: Swift.Equatable { + let privateGraphEndpoints: [NeptuneGraphClientTypes.PrivateGraphEndpointSummary]? + let nextToken: Swift.String? +} + +extension ListPrivateGraphEndpointsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case nextToken + case privateGraphEndpoints + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let privateGraphEndpointsContainer = try containerValues.decodeIfPresent([NeptuneGraphClientTypes.PrivateGraphEndpointSummary?].self, forKey: .privateGraphEndpoints) + var privateGraphEndpointsDecoded0:[NeptuneGraphClientTypes.PrivateGraphEndpointSummary]? = nil + if let privateGraphEndpointsContainer = privateGraphEndpointsContainer { + privateGraphEndpointsDecoded0 = [NeptuneGraphClientTypes.PrivateGraphEndpointSummary]() + for structure0 in privateGraphEndpointsContainer { + if let structure0 = structure0 { + privateGraphEndpointsDecoded0?.append(structure0) + } + } + } + privateGraphEndpoints = privateGraphEndpointsDecoded0 + let nextTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .nextToken) + nextToken = nextTokenDecoded + } +} + +enum ListPrivateGraphEndpointsOutputError: 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 "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 ListTagsForResourceInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let resourceArn = resourceArn else { + return nil + } + return "/tags/\(resourceArn.urlPercentEncoding())" + } +} + +public struct ListTagsForResourceInput: Swift.Equatable { + /// The ARN of the resource. + /// This member is required. + public var resourceArn: Swift.String? + + public init( + resourceArn: Swift.String? = nil + ) + { + self.resourceArn = resourceArn + } +} + +struct ListTagsForResourceInputBody: Swift.Equatable { +} + +extension ListTagsForResourceInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension ListTagsForResourceOutput: 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: ListTagsForResourceOutputBody = try responseDecoder.decode(responseBody: data) + self.tags = output.tags + } else { + self.tags = nil + } + } +} + +public struct ListTagsForResourceOutput: Swift.Equatable { + /// The list of metadata tags associated with the resource. + public var tags: [Swift.String:Swift.String]? + + public init( + tags: [Swift.String:Swift.String]? = nil + ) + { + self.tags = tags + } +} + +struct ListTagsForResourceOutputBody: Swift.Equatable { + let tags: [Swift.String:Swift.String]? +} + +extension ListTagsForResourceOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case tags + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 + } +} + +enum ListTagsForResourceOutputError: 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 "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 NeptuneGraphClientTypes.NeptuneImportOptions: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case preserveDefaultVertexLabels + case preserveEdgeIds + case s3ExportKmsKeyId + case s3ExportPath + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let preserveDefaultVertexLabels = self.preserveDefaultVertexLabels { + try encodeContainer.encode(preserveDefaultVertexLabels, forKey: .preserveDefaultVertexLabels) + } + if let preserveEdgeIds = self.preserveEdgeIds { + try encodeContainer.encode(preserveEdgeIds, forKey: .preserveEdgeIds) + } + if let s3ExportKmsKeyId = self.s3ExportKmsKeyId { + try encodeContainer.encode(s3ExportKmsKeyId, forKey: .s3ExportKmsKeyId) + } + if let s3ExportPath = self.s3ExportPath { + try encodeContainer.encode(s3ExportPath, forKey: .s3ExportPath) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let s3ExportPathDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .s3ExportPath) + s3ExportPath = s3ExportPathDecoded + let s3ExportKmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .s3ExportKmsKeyId) + s3ExportKmsKeyId = s3ExportKmsKeyIdDecoded + let preserveDefaultVertexLabelsDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .preserveDefaultVertexLabels) + preserveDefaultVertexLabels = preserveDefaultVertexLabelsDecoded + let preserveEdgeIdsDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .preserveEdgeIds) + preserveEdgeIds = preserveEdgeIdsDecoded + } +} + +extension NeptuneGraphClientTypes { + /// Options for how to import Neptune data. + public struct NeptuneImportOptions: Swift.Equatable { + /// Neptune Analytics supports label-less vertices and no labels are assigned unless one is explicitly provided. Neptune assigns default labels when none is explicitly provided. When importing the data into Neptune Analytics, the default vertex labels can be omitted by setting preserveDefaultVertexLabels to false. Note that if the vertex only has default labels, and has no other properties or edges, then the vertex will effectively not get imported into Neptune Analytics when preserveDefaultVertexLabels is set to false. + public var preserveDefaultVertexLabels: Swift.Bool? + /// Neptune Analytics currently does not support user defined edge ids. The edge ids are not imported by default. They are imported if preserveEdgeIds is set to true, and ids are stored as properties on the relationships with the property name neptuneEdgeId. + public var preserveEdgeIds: Swift.Bool? + /// The KMS key to use to encrypt data in the S3 bucket where the graph data is exported + /// This member is required. + public var s3ExportKmsKeyId: Swift.String? + /// The path to an S3 bucket from which to import data. + /// This member is required. + public var s3ExportPath: Swift.String? + + public init( + preserveDefaultVertexLabels: Swift.Bool? = nil, + preserveEdgeIds: Swift.Bool? = nil, + s3ExportKmsKeyId: Swift.String? = nil, + s3ExportPath: Swift.String? = nil + ) + { + self.preserveDefaultVertexLabels = preserveDefaultVertexLabels + self.preserveEdgeIds = preserveEdgeIds + self.s3ExportKmsKeyId = s3ExportKmsKeyId + self.s3ExportPath = s3ExportPath + } + } + +} + +extension NeptuneGraphClientTypes { + public enum PrivateGraphEndpointStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case available + case creating + case deleting + case failed + case sdkUnknown(Swift.String) + + public static var allCases: [PrivateGraphEndpointStatus] { + return [ + .available, + .creating, + .deleting, + .failed, + .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 .available: return "AVAILABLE" + case .creating: return "CREATING" + case .deleting: return "DELETING" + case .failed: return "FAILED" + 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 = PrivateGraphEndpointStatus(rawValue: rawValue) ?? PrivateGraphEndpointStatus.sdkUnknown(rawValue) + } + } +} + +extension NeptuneGraphClientTypes.PrivateGraphEndpointSummary: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case status + case subnetIds + case vpcEndpointId + case vpcId + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let status = self.status { + try encodeContainer.encode(status.rawValue, forKey: .status) + } + if let subnetIds = subnetIds { + var subnetIdsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .subnetIds) + for subnetid0 in subnetIds { + try subnetIdsContainer.encode(subnetid0) + } + } + if let vpcEndpointId = self.vpcEndpointId { + try encodeContainer.encode(vpcEndpointId, forKey: .vpcEndpointId) + } + if let vpcId = self.vpcId { + try encodeContainer.encode(vpcId, forKey: .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 subnetIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .subnetIds) + var subnetIdsDecoded0:[Swift.String]? = nil + if let subnetIdsContainer = subnetIdsContainer { + subnetIdsDecoded0 = [Swift.String]() + for string0 in subnetIdsContainer { + if let string0 = string0 { + subnetIdsDecoded0?.append(string0) + } + } + } + subnetIds = subnetIdsDecoded0 + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.PrivateGraphEndpointStatus.self, forKey: .status) + status = statusDecoded + let vpcEndpointIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .vpcEndpointId) + vpcEndpointId = vpcEndpointIdDecoded + } +} + +extension NeptuneGraphClientTypes { + /// Details about a private graph endpoint. + public struct PrivateGraphEndpointSummary: Swift.Equatable { + /// The status of the private graph endpoint. + /// This member is required. + public var status: NeptuneGraphClientTypes.PrivateGraphEndpointStatus? + /// The subnet IDs associated with the private graph endpoint. + /// This member is required. + public var subnetIds: [Swift.String]? + /// The ID of the VPC endpoint. + public var vpcEndpointId: Swift.String? + /// The ID of the VPC in which the private graph endpoint is located. + /// This member is required. + public var vpcId: Swift.String? + + public init( + status: NeptuneGraphClientTypes.PrivateGraphEndpointStatus? = nil, + subnetIds: [Swift.String]? = nil, + vpcEndpointId: Swift.String? = nil, + vpcId: Swift.String? = nil + ) + { + self.status = status + self.subnetIds = subnetIds + self.vpcEndpointId = vpcEndpointId + self.vpcId = vpcId + } + } + +} + +extension ResetGraphInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case skipSnapshot + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let skipSnapshot = self.skipSnapshot { + try encodeContainer.encode(skipSnapshot, forKey: .skipSnapshot) + } + } +} + +extension ResetGraphInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let graphIdentifier = graphIdentifier else { + return nil + } + return "/graphs/\(graphIdentifier.urlPercentEncoding())" + } +} + +public struct ResetGraphInput: Swift.Equatable { + /// ID of the graph to reset. + /// This member is required. + public var graphIdentifier: Swift.String? + /// Determines whether a final graph snapshot is created before the graph data is deleted. If set to true, no graph snapshot is created. If set to false, a graph snapshot is created before the data is deleted. + /// This member is required. + public var skipSnapshot: Swift.Bool? + + public init( + graphIdentifier: Swift.String? = nil, + skipSnapshot: Swift.Bool? = nil + ) + { + self.graphIdentifier = graphIdentifier + self.skipSnapshot = skipSnapshot + } +} + +struct ResetGraphInputBody: Swift.Equatable { + let skipSnapshot: Swift.Bool? +} + +extension ResetGraphInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case skipSnapshot + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let skipSnapshotDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .skipSnapshot) + skipSnapshot = skipSnapshotDecoded + } +} + +extension ResetGraphOutput: 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: ResetGraphOutputBody = try responseDecoder.decode(responseBody: data) + self.arn = output.arn + self.buildNumber = output.buildNumber + self.createTime = output.createTime + self.deletionProtection = output.deletionProtection + self.endpoint = output.endpoint + self.id = output.id + self.kmsKeyIdentifier = output.kmsKeyIdentifier + self.name = output.name + self.provisionedMemory = output.provisionedMemory + self.publicConnectivity = output.publicConnectivity + self.replicaCount = output.replicaCount + self.sourceSnapshotId = output.sourceSnapshotId + self.status = output.status + self.statusReason = output.statusReason + self.vectorSearchConfiguration = output.vectorSearchConfiguration + } else { + self.arn = nil + self.buildNumber = nil + self.createTime = nil + self.deletionProtection = nil + self.endpoint = nil + self.id = nil + self.kmsKeyIdentifier = nil + self.name = nil + self.provisionedMemory = nil + self.publicConnectivity = nil + self.replicaCount = nil + self.sourceSnapshotId = nil + self.status = nil + self.statusReason = nil + self.vectorSearchConfiguration = nil + } + } +} + +public struct ResetGraphOutput: Swift.Equatable { + /// The ARN associated with the graph. + /// This member is required. + public var arn: Swift.String? + /// The build number of the graph. + public var buildNumber: Swift.String? + /// The time at which the graph was created. + public var createTime: ClientRuntime.Date? + /// If true, deletion protection is enabled for the graph. + public var deletionProtection: Swift.Bool? + /// The graph endpoint. + public var endpoint: Swift.String? + /// The unique identifier of the graph. + /// This member is required. + public var id: Swift.String? + /// The ID of the KMS key used to encrypt and decrypt graph data. + public var kmsKeyIdentifier: Swift.String? + /// The name of the graph. + /// This member is required. + public var name: Swift.String? + /// The number of memory-optimized Neptune Capacity Units (m-NCUs) allocated to the graph. + public var provisionedMemory: Swift.Int? + /// If true, the graph has a public endpoint, otherwise not. + public var publicConnectivity: Swift.Bool? + /// The number of replicas for the graph. + public var replicaCount: Swift.Int? + /// The ID of the snapshot from which the graph was created, if any. + public var sourceSnapshotId: Swift.String? + /// The status of the graph. + public var status: NeptuneGraphClientTypes.GraphStatus? + /// The reason that the graph has this status. + public var statusReason: Swift.String? + /// Specifies the number of dimensions for vector embeddings loaded into the graph. Max = 65535 + public var vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + + public init( + arn: Swift.String? = nil, + buildNumber: Swift.String? = nil, + createTime: ClientRuntime.Date? = nil, + deletionProtection: Swift.Bool? = nil, + endpoint: Swift.String? = nil, + id: Swift.String? = nil, + kmsKeyIdentifier: Swift.String? = nil, + name: Swift.String? = nil, + provisionedMemory: Swift.Int? = nil, + publicConnectivity: Swift.Bool? = nil, + replicaCount: Swift.Int? = nil, + sourceSnapshotId: Swift.String? = nil, + status: NeptuneGraphClientTypes.GraphStatus? = nil, + statusReason: Swift.String? = nil, + vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? = nil + ) + { + self.arn = arn + self.buildNumber = buildNumber + self.createTime = createTime + self.deletionProtection = deletionProtection + self.endpoint = endpoint + self.id = id + self.kmsKeyIdentifier = kmsKeyIdentifier + self.name = name + self.provisionedMemory = provisionedMemory + self.publicConnectivity = publicConnectivity + self.replicaCount = replicaCount + self.sourceSnapshotId = sourceSnapshotId + self.status = status + self.statusReason = statusReason + self.vectorSearchConfiguration = vectorSearchConfiguration + } +} + +struct ResetGraphOutputBody: Swift.Equatable { + let id: Swift.String? + let name: Swift.String? + let arn: Swift.String? + let status: NeptuneGraphClientTypes.GraphStatus? + let statusReason: Swift.String? + let createTime: ClientRuntime.Date? + let provisionedMemory: Swift.Int? + let endpoint: Swift.String? + let publicConnectivity: Swift.Bool? + let vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + let replicaCount: Swift.Int? + let kmsKeyIdentifier: Swift.String? + let sourceSnapshotId: Swift.String? + let deletionProtection: Swift.Bool? + let buildNumber: Swift.String? +} + +extension ResetGraphOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case buildNumber + case createTime + case deletionProtection + case endpoint + case id + case kmsKeyIdentifier + case name + case provisionedMemory + case publicConnectivity + case replicaCount + case sourceSnapshotId + case status + case statusReason + case vectorSearchConfiguration + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.GraphStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let createTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createTime) + createTime = createTimeDecoded + let provisionedMemoryDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .provisionedMemory) + provisionedMemory = provisionedMemoryDecoded + let endpointDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endpoint) + endpoint = endpointDecoded + let publicConnectivityDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .publicConnectivity) + publicConnectivity = publicConnectivityDecoded + let vectorSearchConfigurationDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.VectorSearchConfiguration.self, forKey: .vectorSearchConfiguration) + vectorSearchConfiguration = vectorSearchConfigurationDecoded + let replicaCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .replicaCount) + replicaCount = replicaCountDecoded + let kmsKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyIdentifier) + kmsKeyIdentifier = kmsKeyIdentifierDecoded + let sourceSnapshotIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceSnapshotId) + sourceSnapshotId = sourceSnapshotIdDecoded + let deletionProtectionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtection) + deletionProtection = deletionProtectionDecoded + let buildNumberDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .buildNumber) + buildNumber = buildNumberDecoded + } +} + +enum ResetGraphOutputError: 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 "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 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 + } +} + +/// A specified resource could not be located. +public struct ResourceNotFoundException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + /// A message describing the problem. + /// This member is required. + 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 RestoreGraphFromSnapshotInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deletionProtection + case graphName + case provisionedMemory + case publicConnectivity + case replicaCount + case tags + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let deletionProtection = self.deletionProtection { + try encodeContainer.encode(deletionProtection, forKey: .deletionProtection) + } + if let graphName = self.graphName { + try encodeContainer.encode(graphName, forKey: .graphName) + } + if let provisionedMemory = self.provisionedMemory { + try encodeContainer.encode(provisionedMemory, forKey: .provisionedMemory) + } + if let publicConnectivity = self.publicConnectivity { + try encodeContainer.encode(publicConnectivity, forKey: .publicConnectivity) + } + if let replicaCount = self.replicaCount { + try encodeContainer.encode(replicaCount, forKey: .replicaCount) + } + if let tags = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + } +} + +extension RestoreGraphFromSnapshotInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let snapshotIdentifier = snapshotIdentifier else { + return nil + } + return "/snapshots/\(snapshotIdentifier.urlPercentEncoding())/restore" + } +} + +public struct RestoreGraphFromSnapshotInput: Swift.Equatable { + /// A value that indicates whether the graph has deletion protection enabled. The graph can't be deleted when deletion protection is enabled. + public var deletionProtection: Swift.Bool? + /// A name for the new Neptune Analytics graph to be created from the snapshot. The name must contain from 1 to 63 letters, numbers, or hyphens, and its first character must be a letter. It cannot end with a hyphen or contain two consecutive hyphens. + /// This member is required. + public var graphName: Swift.String? + /// The provisioned memory-optimized Neptune Capacity Units (m-NCUs) to use for the graph. Min = 128 + public var provisionedMemory: Swift.Int? + /// Specifies whether or not the graph can be reachable over the internet. All access to graphs IAM authenticated. (true to enable, or false to disable). + public var publicConnectivity: Swift.Bool? + /// The number of replicas in other AZs. Min =0, Max = 2, Default =1 + public var replicaCount: Swift.Int? + /// The ID of the snapshot in question. + /// This member is required. + public var snapshotIdentifier: Swift.String? + /// Adds metadata tags to the snapshot. These tags can also be used with cost allocation reporting, or used in a Condition statement in an IAM policy. + public var tags: [Swift.String:Swift.String]? + + public init( + deletionProtection: Swift.Bool? = nil, + graphName: Swift.String? = nil, + provisionedMemory: Swift.Int? = nil, + publicConnectivity: Swift.Bool? = nil, + replicaCount: Swift.Int? = nil, + snapshotIdentifier: Swift.String? = nil, + tags: [Swift.String:Swift.String]? = nil + ) + { + self.deletionProtection = deletionProtection + self.graphName = graphName + self.provisionedMemory = provisionedMemory + self.publicConnectivity = publicConnectivity + self.replicaCount = replicaCount + self.snapshotIdentifier = snapshotIdentifier + self.tags = tags + } +} + +struct RestoreGraphFromSnapshotInputBody: Swift.Equatable { + let graphName: Swift.String? + let provisionedMemory: Swift.Int? + let deletionProtection: Swift.Bool? + let tags: [Swift.String:Swift.String]? + let replicaCount: Swift.Int? + let publicConnectivity: Swift.Bool? +} + +extension RestoreGraphFromSnapshotInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deletionProtection + case graphName + case provisionedMemory + case publicConnectivity + case replicaCount + case tags + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let graphNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .graphName) + graphName = graphNameDecoded + let provisionedMemoryDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .provisionedMemory) + provisionedMemory = provisionedMemoryDecoded + let deletionProtectionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtection) + deletionProtection = deletionProtectionDecoded + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 + let replicaCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .replicaCount) + replicaCount = replicaCountDecoded + let publicConnectivityDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .publicConnectivity) + publicConnectivity = publicConnectivityDecoded + } +} + +extension RestoreGraphFromSnapshotOutput: 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: RestoreGraphFromSnapshotOutputBody = try responseDecoder.decode(responseBody: data) + self.arn = output.arn + self.buildNumber = output.buildNumber + self.createTime = output.createTime + self.deletionProtection = output.deletionProtection + self.endpoint = output.endpoint + self.id = output.id + self.kmsKeyIdentifier = output.kmsKeyIdentifier + self.name = output.name + self.provisionedMemory = output.provisionedMemory + self.publicConnectivity = output.publicConnectivity + self.replicaCount = output.replicaCount + self.sourceSnapshotId = output.sourceSnapshotId + self.status = output.status + self.statusReason = output.statusReason + self.vectorSearchConfiguration = output.vectorSearchConfiguration + } else { + self.arn = nil + self.buildNumber = nil + self.createTime = nil + self.deletionProtection = nil + self.endpoint = nil + self.id = nil + self.kmsKeyIdentifier = nil + self.name = nil + self.provisionedMemory = nil + self.publicConnectivity = nil + self.replicaCount = nil + self.sourceSnapshotId = nil + self.status = nil + self.statusReason = nil + self.vectorSearchConfiguration = nil + } + } +} + +public struct RestoreGraphFromSnapshotOutput: Swift.Equatable { + /// The ARN associated with the graph. + /// This member is required. + public var arn: Swift.String? + /// The build number of the graph. + public var buildNumber: Swift.String? + /// The time at which the graph was created. + public var createTime: ClientRuntime.Date? + /// If true, deletion protection is enabled for the graph. + public var deletionProtection: Swift.Bool? + /// The graph endpoint. + public var endpoint: Swift.String? + /// The unique identifier of the graph. + /// This member is required. + public var id: Swift.String? + /// The ID of the KMS key used to encrypt and decrypt graph data. + public var kmsKeyIdentifier: Swift.String? + /// The name of the graph. + /// This member is required. + public var name: Swift.String? + /// The number of memory-optimized Neptune Capacity Units (m-NCUs) allocated to the graph. + public var provisionedMemory: Swift.Int? + /// If true, the graph has a public endpoint, otherwise not. + public var publicConnectivity: Swift.Bool? + /// The number of replicas for the graph. + public var replicaCount: Swift.Int? + /// The ID of the snapshot from which the graph was created, if any. + public var sourceSnapshotId: Swift.String? + /// The status of the graph. + public var status: NeptuneGraphClientTypes.GraphStatus? + /// The reason that the graph has this status. + public var statusReason: Swift.String? + /// Specifies the number of dimensions for vector embeddings loaded into the graph. Max = 65535 + public var vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + + public init( + arn: Swift.String? = nil, + buildNumber: Swift.String? = nil, + createTime: ClientRuntime.Date? = nil, + deletionProtection: Swift.Bool? = nil, + endpoint: Swift.String? = nil, + id: Swift.String? = nil, + kmsKeyIdentifier: Swift.String? = nil, + name: Swift.String? = nil, + provisionedMemory: Swift.Int? = nil, + publicConnectivity: Swift.Bool? = nil, + replicaCount: Swift.Int? = nil, + sourceSnapshotId: Swift.String? = nil, + status: NeptuneGraphClientTypes.GraphStatus? = nil, + statusReason: Swift.String? = nil, + vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? = nil + ) + { + self.arn = arn + self.buildNumber = buildNumber + self.createTime = createTime + self.deletionProtection = deletionProtection + self.endpoint = endpoint + self.id = id + self.kmsKeyIdentifier = kmsKeyIdentifier + self.name = name + self.provisionedMemory = provisionedMemory + self.publicConnectivity = publicConnectivity + self.replicaCount = replicaCount + self.sourceSnapshotId = sourceSnapshotId + self.status = status + self.statusReason = statusReason + self.vectorSearchConfiguration = vectorSearchConfiguration + } +} + +struct RestoreGraphFromSnapshotOutputBody: Swift.Equatable { + let id: Swift.String? + let name: Swift.String? + let arn: Swift.String? + let status: NeptuneGraphClientTypes.GraphStatus? + let statusReason: Swift.String? + let createTime: ClientRuntime.Date? + let provisionedMemory: Swift.Int? + let endpoint: Swift.String? + let publicConnectivity: Swift.Bool? + let vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + let replicaCount: Swift.Int? + let kmsKeyIdentifier: Swift.String? + let sourceSnapshotId: Swift.String? + let deletionProtection: Swift.Bool? + let buildNumber: Swift.String? +} + +extension RestoreGraphFromSnapshotOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case buildNumber + case createTime + case deletionProtection + case endpoint + case id + case kmsKeyIdentifier + case name + case provisionedMemory + case publicConnectivity + case replicaCount + case sourceSnapshotId + case status + case statusReason + case vectorSearchConfiguration + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.GraphStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let createTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createTime) + createTime = createTimeDecoded + let provisionedMemoryDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .provisionedMemory) + provisionedMemory = provisionedMemoryDecoded + let endpointDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endpoint) + endpoint = endpointDecoded + let publicConnectivityDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .publicConnectivity) + publicConnectivity = publicConnectivityDecoded + let vectorSearchConfigurationDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.VectorSearchConfiguration.self, forKey: .vectorSearchConfiguration) + vectorSearchConfiguration = vectorSearchConfigurationDecoded + let replicaCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .replicaCount) + replicaCount = replicaCountDecoded + let kmsKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyIdentifier) + kmsKeyIdentifier = kmsKeyIdentifierDecoded + let sourceSnapshotIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceSnapshotId) + sourceSnapshotId = sourceSnapshotIdDecoded + let deletionProtectionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtection) + deletionProtection = deletionProtectionDecoded + let buildNumberDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .buildNumber) + buildNumber = buildNumberDecoded + } +} + +enum RestoreGraphFromSnapshotOutputError: 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 "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 ServiceQuotaExceededException { + 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: ServiceQuotaExceededExceptionBody = try responseDecoder.decode(responseBody: data) + self.properties.message = output.message + self.properties.quotaCode = output.quotaCode + self.properties.resourceId = output.resourceId + self.properties.resourceType = output.resourceType + self.properties.serviceCode = output.serviceCode + } else { + self.properties.message = nil + self.properties.quotaCode = nil + self.properties.resourceId = nil + self.properties.resourceType = nil + self.properties.serviceCode = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// A service quota was exceeded. +public struct ServiceQuotaExceededException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + /// This member is required. + public internal(set) var message: Swift.String? = nil + /// Service quota code of the resource for which quota was exceeded. + public internal(set) var quotaCode: Swift.String? = nil + /// The identifier of the resource that exceeded quota. + public internal(set) var resourceId: Swift.String? = nil + /// The type of the resource that exceeded quota. Ex: Graph, Snapshot + public internal(set) var resourceType: Swift.String? = nil + /// The service code that exceeded quota. + public internal(set) var serviceCode: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ServiceQuotaExceededException" } + 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, + quotaCode: Swift.String? = nil, + resourceId: Swift.String? = nil, + resourceType: Swift.String? = nil, + serviceCode: Swift.String? = nil + ) + { + self.properties.message = message + self.properties.quotaCode = quotaCode + self.properties.resourceId = resourceId + self.properties.resourceType = resourceType + self.properties.serviceCode = serviceCode + } +} + +struct ServiceQuotaExceededExceptionBody: Swift.Equatable { + let message: Swift.String? + let resourceId: Swift.String? + let resourceType: Swift.String? + let serviceCode: Swift.String? + let quotaCode: Swift.String? +} + +extension ServiceQuotaExceededExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + case quotaCode + case resourceId + case resourceType + case serviceCode + } + + 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 + let resourceIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceId) + resourceId = resourceIdDecoded + let resourceTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceType) + resourceType = resourceTypeDecoded + let serviceCodeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .serviceCode) + serviceCode = serviceCodeDecoded + let quotaCodeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .quotaCode) + quotaCode = quotaCodeDecoded + } +} + +extension NeptuneGraphClientTypes { + public enum SnapshotStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case available + case creating + case deleting + case failed + case sdkUnknown(Swift.String) + + public static var allCases: [SnapshotStatus] { + return [ + .available, + .creating, + .deleting, + .failed, + .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 .available: return "AVAILABLE" + case .creating: return "CREATING" + case .deleting: return "DELETING" + case .failed: return "FAILED" + 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 = SnapshotStatus(rawValue: rawValue) ?? SnapshotStatus.sdkUnknown(rawValue) + } + } +} + +extension TagResourceInput: Swift.Encodable { + 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 = tags { + var tagsContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .tags) + for (dictKey0, tagMap0) in tags { + try tagsContainer.encode(tagMap0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + } + } + } +} + +extension TagResourceInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let resourceArn = resourceArn else { + return nil + } + return "/tags/\(resourceArn.urlPercentEncoding())" + } +} + +public struct TagResourceInput: Swift.Equatable { + /// ARN of the resource for which tags need to be added. + /// This member is required. + public var resourceArn: Swift.String? + /// The tags to be assigned to the Neptune Analytics resource. The tags are metadata that are specified as a list of key-value pairs: Key (string) – A key is the required name of the tag. The string value can be from 1 to 128 Unicode characters in length. It can't be prefixed with aws: and can only contain the set of Unicode characters specified by this Java regular expression: "^([\p{L}\p{Z}\p{N}_.:/=+\-]*)$"). Value (string) – A value is the optional value of the tag. The string value can be from 1 to 256 Unicode characters in length. It can't be prefixed with aws: and can only contain the set of Unicode characters specified by this Java regular expression: "^([\p{L}\p{Z}\p{N}_.:/=+\-]*)$"). + /// This member is required. + public var tags: [Swift.String:Swift.String]? + + public init( + resourceArn: Swift.String? = nil, + tags: [Swift.String:Swift.String]? = nil + ) + { + self.resourceArn = resourceArn + self.tags = tags + } +} + +struct TagResourceInputBody: Swift.Equatable { + let tags: [Swift.String:Swift.String]? +} + +extension TagResourceInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case tags + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let tagsContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .tags) + var tagsDecoded0: [Swift.String:Swift.String]? = nil + if let tagsContainer = tagsContainer { + tagsDecoded0 = [Swift.String:Swift.String]() + for (key0, tagvalue0) in tagsContainer { + if let tagvalue0 = tagvalue0 { + tagsDecoded0?[key0] = tagvalue0 + } + } + } + tags = tagsDecoded0 + } +} + +extension TagResourceOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct TagResourceOutput: Swift.Equatable { + + public init() { } +} + +enum TagResourceOutputError: 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 "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 ThrottlingException { + 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: ThrottlingExceptionBody = 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 exception was interrupted by throttling. +public struct ThrottlingException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + /// A message describing the problem. + /// This member is required. + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ThrottlingException" } + public static var fault: ErrorFault { .client } + public static var isRetryable: Swift.Bool { true } + public static var isThrottling: Swift.Bool { true } + 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 ThrottlingExceptionBody: Swift.Equatable { + let message: Swift.String? +} + +extension ThrottlingExceptionBody: 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 UntagResourceInput: ClientRuntime.QueryItemProvider { + public var queryItems: [ClientRuntime.URLQueryItem] { + get throws { + var items = [ClientRuntime.URLQueryItem]() + guard let tagKeys = tagKeys else { + let message = "Creating a URL Query Item failed. tagKeys is required and must not be nil." + throw ClientRuntime.ClientError.unknownError(message) + } + tagKeys.forEach { queryItemValue in + let queryItem = ClientRuntime.URLQueryItem(name: "tagKeys".urlPercentEncoding(), value: Swift.String(queryItemValue).urlPercentEncoding()) + items.append(queryItem) + } + return items + } + } +} + +extension UntagResourceInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let resourceArn = resourceArn else { + return nil + } + return "/tags/\(resourceArn.urlPercentEncoding())" + } +} + +public struct UntagResourceInput: Swift.Equatable { + /// ARN of the resource whose tag needs to be removed. + /// This member is required. + public var resourceArn: Swift.String? + /// Tag keys for the tags to be removed. + /// This member is required. + public var tagKeys: [Swift.String]? + + public init( + resourceArn: Swift.String? = nil, + tagKeys: [Swift.String]? = nil + ) + { + self.resourceArn = resourceArn + self.tagKeys = tagKeys + } +} + +struct UntagResourceInputBody: Swift.Equatable { +} + +extension UntagResourceInputBody: Swift.Decodable { + + public init(from decoder: Swift.Decoder) throws { + } +} + +extension UntagResourceOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct UntagResourceOutput: Swift.Equatable { + + public init() { } +} + +enum UntagResourceOutputError: 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 "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 UpdateGraphInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deletionProtection + case provisionedMemory + case publicConnectivity + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let deletionProtection = self.deletionProtection { + try encodeContainer.encode(deletionProtection, forKey: .deletionProtection) + } + if let provisionedMemory = self.provisionedMemory { + try encodeContainer.encode(provisionedMemory, forKey: .provisionedMemory) + } + if let publicConnectivity = self.publicConnectivity { + try encodeContainer.encode(publicConnectivity, forKey: .publicConnectivity) + } + } +} + +extension UpdateGraphInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let graphIdentifier = graphIdentifier else { + return nil + } + return "/graphs/\(graphIdentifier.urlPercentEncoding())" + } +} + +public struct UpdateGraphInput: Swift.Equatable { + /// A value that indicates whether the graph has deletion protection enabled. The graph can't be deleted when deletion protection is enabled. + public var deletionProtection: Swift.Bool? + /// The unique identifier of the Neptune Analytics graph. + /// This member is required. + public var graphIdentifier: Swift.String? + /// The provisioned memory-optimized Neptune Capacity Units (m-NCUs) to use for the graph. Min = 128 + public var provisionedMemory: Swift.Int? + /// Specifies whether or not the graph can be reachable over the internet. All access to graphs IAM authenticated. (true to enable, or false to disable. + public var publicConnectivity: Swift.Bool? + + public init( + deletionProtection: Swift.Bool? = nil, + graphIdentifier: Swift.String? = nil, + provisionedMemory: Swift.Int? = nil, + publicConnectivity: Swift.Bool? = nil + ) + { + self.deletionProtection = deletionProtection + self.graphIdentifier = graphIdentifier + self.provisionedMemory = provisionedMemory + self.publicConnectivity = publicConnectivity + } +} + +struct UpdateGraphInputBody: Swift.Equatable { + let publicConnectivity: Swift.Bool? + let provisionedMemory: Swift.Int? + let deletionProtection: Swift.Bool? +} + +extension UpdateGraphInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case deletionProtection + case provisionedMemory + case publicConnectivity + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let publicConnectivityDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .publicConnectivity) + publicConnectivity = publicConnectivityDecoded + let provisionedMemoryDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .provisionedMemory) + provisionedMemory = provisionedMemoryDecoded + let deletionProtectionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtection) + deletionProtection = deletionProtectionDecoded + } +} + +extension UpdateGraphOutput: 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: UpdateGraphOutputBody = try responseDecoder.decode(responseBody: data) + self.arn = output.arn + self.buildNumber = output.buildNumber + self.createTime = output.createTime + self.deletionProtection = output.deletionProtection + self.endpoint = output.endpoint + self.id = output.id + self.kmsKeyIdentifier = output.kmsKeyIdentifier + self.name = output.name + self.provisionedMemory = output.provisionedMemory + self.publicConnectivity = output.publicConnectivity + self.replicaCount = output.replicaCount + self.sourceSnapshotId = output.sourceSnapshotId + self.status = output.status + self.statusReason = output.statusReason + self.vectorSearchConfiguration = output.vectorSearchConfiguration + } else { + self.arn = nil + self.buildNumber = nil + self.createTime = nil + self.deletionProtection = nil + self.endpoint = nil + self.id = nil + self.kmsKeyIdentifier = nil + self.name = nil + self.provisionedMemory = nil + self.publicConnectivity = nil + self.replicaCount = nil + self.sourceSnapshotId = nil + self.status = nil + self.statusReason = nil + self.vectorSearchConfiguration = nil + } + } +} + +public struct UpdateGraphOutput: Swift.Equatable { + /// The ARN associated with the graph. + /// This member is required. + public var arn: Swift.String? + /// The build number of the graph. + public var buildNumber: Swift.String? + /// The time at which the graph was created. + public var createTime: ClientRuntime.Date? + /// If true, deletion protection is enabled for the graph. + public var deletionProtection: Swift.Bool? + /// The graph endpoint. + public var endpoint: Swift.String? + /// The unique identifier of the graph. + /// This member is required. + public var id: Swift.String? + /// The ID of the KMS key used to encrypt and decrypt graph data. + public var kmsKeyIdentifier: Swift.String? + /// The name of the graph. + /// This member is required. + public var name: Swift.String? + /// The number of memory-optimized Neptune Capacity Units (m-NCUs) allocated to the graph. + public var provisionedMemory: Swift.Int? + /// If true, the graph has a public endpoint, otherwise not. + public var publicConnectivity: Swift.Bool? + /// The number of replicas for the graph. + public var replicaCount: Swift.Int? + /// The ID of the snapshot from which the graph was created, if any. + public var sourceSnapshotId: Swift.String? + /// The status of the graph. + public var status: NeptuneGraphClientTypes.GraphStatus? + /// The reason that the graph has this status. + public var statusReason: Swift.String? + /// Specifies the number of dimensions for vector embeddings loaded into the graph. Max = 65535 + public var vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + + public init( + arn: Swift.String? = nil, + buildNumber: Swift.String? = nil, + createTime: ClientRuntime.Date? = nil, + deletionProtection: Swift.Bool? = nil, + endpoint: Swift.String? = nil, + id: Swift.String? = nil, + kmsKeyIdentifier: Swift.String? = nil, + name: Swift.String? = nil, + provisionedMemory: Swift.Int? = nil, + publicConnectivity: Swift.Bool? = nil, + replicaCount: Swift.Int? = nil, + sourceSnapshotId: Swift.String? = nil, + status: NeptuneGraphClientTypes.GraphStatus? = nil, + statusReason: Swift.String? = nil, + vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? = nil + ) + { + self.arn = arn + self.buildNumber = buildNumber + self.createTime = createTime + self.deletionProtection = deletionProtection + self.endpoint = endpoint + self.id = id + self.kmsKeyIdentifier = kmsKeyIdentifier + self.name = name + self.provisionedMemory = provisionedMemory + self.publicConnectivity = publicConnectivity + self.replicaCount = replicaCount + self.sourceSnapshotId = sourceSnapshotId + self.status = status + self.statusReason = statusReason + self.vectorSearchConfiguration = vectorSearchConfiguration + } +} + +struct UpdateGraphOutputBody: Swift.Equatable { + let id: Swift.String? + let name: Swift.String? + let arn: Swift.String? + let status: NeptuneGraphClientTypes.GraphStatus? + let statusReason: Swift.String? + let createTime: ClientRuntime.Date? + let provisionedMemory: Swift.Int? + let endpoint: Swift.String? + let publicConnectivity: Swift.Bool? + let vectorSearchConfiguration: NeptuneGraphClientTypes.VectorSearchConfiguration? + let replicaCount: Swift.Int? + let kmsKeyIdentifier: Swift.String? + let sourceSnapshotId: Swift.String? + let deletionProtection: Swift.Bool? + let buildNumber: Swift.String? +} + +extension UpdateGraphOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case arn + case buildNumber + case createTime + case deletionProtection + case endpoint + case id + case kmsKeyIdentifier + case name + case provisionedMemory + case publicConnectivity + case replicaCount + case sourceSnapshotId + case status + case statusReason + case vectorSearchConfiguration + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let idDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .id) + id = idDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let arnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .arn) + arn = arnDecoded + let statusDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.GraphStatus.self, forKey: .status) + status = statusDecoded + let statusReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statusReason) + statusReason = statusReasonDecoded + let createTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .createTime) + createTime = createTimeDecoded + let provisionedMemoryDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .provisionedMemory) + provisionedMemory = provisionedMemoryDecoded + let endpointDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .endpoint) + endpoint = endpointDecoded + let publicConnectivityDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .publicConnectivity) + publicConnectivity = publicConnectivityDecoded + let vectorSearchConfigurationDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.VectorSearchConfiguration.self, forKey: .vectorSearchConfiguration) + vectorSearchConfiguration = vectorSearchConfigurationDecoded + let replicaCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .replicaCount) + replicaCount = replicaCountDecoded + let kmsKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyIdentifier) + kmsKeyIdentifier = kmsKeyIdentifierDecoded + let sourceSnapshotIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .sourceSnapshotId) + sourceSnapshotId = sourceSnapshotIdDecoded + let deletionProtectionDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtection) + deletionProtection = deletionProtectionDecoded + let buildNumberDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .buildNumber) + buildNumber = buildNumberDecoded + } +} + +enum UpdateGraphOutputError: 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 "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 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 + self.properties.reason = output.reason + } else { + self.properties.message = nil + self.properties.reason = nil + } + self.httpResponse = httpResponse + self.requestID = requestID + self.message = message + } +} + +/// A resource could not be validated +public struct ValidationException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + /// A message describing the problem. + /// This member is required. + public internal(set) var message: Swift.String? = nil + /// The reason that the resource could not be validated. + public internal(set) var reason: NeptuneGraphClientTypes.ValidationExceptionReason? = 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, + reason: NeptuneGraphClientTypes.ValidationExceptionReason? = nil + ) + { + self.properties.message = message + self.properties.reason = reason + } +} + +struct ValidationExceptionBody: Swift.Equatable { + let message: Swift.String? + let reason: NeptuneGraphClientTypes.ValidationExceptionReason? +} + +extension ValidationExceptionBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case message + case reason + } + + 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 + let reasonDecoded = try containerValues.decodeIfPresent(NeptuneGraphClientTypes.ValidationExceptionReason.self, forKey: .reason) + reason = reasonDecoded + } +} + +extension NeptuneGraphClientTypes { + public enum ValidationExceptionReason: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case badRequest + case constraintViolation + case illegalArgument + case malformedQuery + case queryCancelled + case queryTooLarge + case unsupportedOperation + case sdkUnknown(Swift.String) + + public static var allCases: [ValidationExceptionReason] { + return [ + .badRequest, + .constraintViolation, + .illegalArgument, + .malformedQuery, + .queryCancelled, + .queryTooLarge, + .unsupportedOperation, + .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 .badRequest: return "BAD_REQUEST" + case .constraintViolation: return "CONSTRAINT_VIOLATION" + case .illegalArgument: return "ILLEGAL_ARGUMENT" + case .malformedQuery: return "MALFORMED_QUERY" + case .queryCancelled: return "QUERY_CANCELLED" + case .queryTooLarge: return "QUERY_TOO_LARGE" + case .unsupportedOperation: return "UNSUPPORTED_OPERATION" + 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 = ValidationExceptionReason(rawValue: rawValue) ?? ValidationExceptionReason.sdkUnknown(rawValue) + } + } +} + +extension NeptuneGraphClientTypes.VectorSearchConfiguration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case dimension + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let dimension = self.dimension { + try encodeContainer.encode(dimension, forKey: .dimension) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let dimensionDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .dimension) + dimension = dimensionDecoded + } +} + +extension NeptuneGraphClientTypes { + /// Specifies the number of dimensions for vector embeddings loaded into the graph. Max = 65535 + public struct VectorSearchConfiguration: Swift.Equatable { + /// The number of dimensions. + /// This member is required. + public var dimension: Swift.Int? + + public init( + dimension: Swift.Int? = nil + ) + { + self.dimension = dimension + } + } + +} diff --git a/Sources/Services/AWSOpenSearch/OpenSearchClient.swift b/Sources/Services/AWSOpenSearch/OpenSearchClient.swift index 169025c32fd..7a574331f5f 100644 --- a/Sources/Services/AWSOpenSearch/OpenSearchClient.swift +++ b/Sources/Services/AWSOpenSearch/OpenSearchClient.swift @@ -114,7 +114,7 @@ extension OpenSearchClient: OpenSearchClientProtocol { /// Performs the `AddDataSource` operation on the `AmazonOpenSearchService` service. /// - /// Adds the data source on the domain. + /// Creates a new direct-query data source to the specified domain. For more information, see [Creating Amazon OpenSearch Service data source integrations with Amazon S3](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/direct-query-s3-creating.html). /// /// - Parameter AddDataSourceInput : Container for the parameters to the AddDataSource operation. /// @@ -567,7 +567,7 @@ extension OpenSearchClient: OpenSearchClientProtocol { /// Performs the `DeleteDataSource` operation on the `AmazonOpenSearchService` service. /// - /// Deletes the data source. + /// Deletes a direct-query data source. For more information, see [Deleting an Amazon OpenSearch Service data source with Amazon S3](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/direct-query-s3-delete.html). /// /// - Parameter DeleteDataSourceInput : Container for the parameters to the DeleteDataSource operation. /// @@ -1654,7 +1654,7 @@ extension OpenSearchClient: OpenSearchClientProtocol { /// Performs the `GetDataSource` operation on the `AmazonOpenSearchService` service. /// - /// Describes the data source details. + /// Retrieves information about a direct query data source. /// /// - Parameter GetDataSourceInput : Container for the parameters to the GetDataSource operation. /// @@ -1893,7 +1893,7 @@ extension OpenSearchClient: OpenSearchClientProtocol { /// Performs the `ListDataSources` operation on the `AmazonOpenSearchService` service. /// - /// A list of the data source details of the domain. + /// Lists direct-query data sources for a specific domain. For more information, see For more information, see [Working with Amazon OpenSearch Service direct queries with Amazon S3](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/direct-query-s3.html). /// /// - Parameter ListDataSourcesInput : Container for the parameters to the ListDataSources operation. /// @@ -2751,7 +2751,7 @@ extension OpenSearchClient: OpenSearchClientProtocol { /// Performs the `UpdateDataSource` operation on the `AmazonOpenSearchService` service. /// - /// Updates the data source on the domain. + /// Updates a direct-query data source. For more information, see [Working with Amazon OpenSearch Service data source integrations with Amazon S3](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/direct-query-s3-creating.html). /// /// - Parameter UpdateDataSourceInput : Container for the parameters to the UpdateDataSource operation. /// diff --git a/Sources/Services/AWSOpenSearch/OpenSearchClientProtocol.swift b/Sources/Services/AWSOpenSearch/OpenSearchClientProtocol.swift index 20a906776c2..141af945ab1 100644 --- a/Sources/Services/AWSOpenSearch/OpenSearchClientProtocol.swift +++ b/Sources/Services/AWSOpenSearch/OpenSearchClientProtocol.swift @@ -21,7 +21,7 @@ public protocol OpenSearchClientProtocol { func acceptInboundConnection(input: AcceptInboundConnectionInput) async throws -> AcceptInboundConnectionOutput /// Performs the `AddDataSource` operation on the `AmazonOpenSearchService` service. /// - /// Adds the data source on the domain. + /// Creates a new direct-query data source to the specified domain. For more information, see [Creating Amazon OpenSearch Service data source integrations with Amazon S3](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/direct-query-s3-creating.html). /// /// - Parameter AddDataSourceInput : Container for the parameters to the AddDataSource operation. /// @@ -180,7 +180,7 @@ public protocol OpenSearchClientProtocol { func createVpcEndpoint(input: CreateVpcEndpointInput) async throws -> CreateVpcEndpointOutput /// Performs the `DeleteDataSource` operation on the `AmazonOpenSearchService` service. /// - /// Deletes the data source. + /// Deletes a direct-query data source. For more information, see [Deleting an Amazon OpenSearch Service data source with Amazon S3](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/direct-query-s3-delete.html). /// /// - Parameter DeleteDataSourceInput : Container for the parameters to the DeleteDataSource operation. /// @@ -553,7 +553,7 @@ public protocol OpenSearchClientProtocol { func getCompatibleVersions(input: GetCompatibleVersionsInput) async throws -> GetCompatibleVersionsOutput /// Performs the `GetDataSource` operation on the `AmazonOpenSearchService` service. /// - /// Describes the data source details. + /// Retrieves information about a direct query data source. /// /// - Parameter GetDataSourceInput : Container for the parameters to the GetDataSource operation. /// @@ -639,7 +639,7 @@ public protocol OpenSearchClientProtocol { func getUpgradeStatus(input: GetUpgradeStatusInput) async throws -> GetUpgradeStatusOutput /// Performs the `ListDataSources` operation on the `AmazonOpenSearchService` service. /// - /// A list of the data source details of the domain. + /// Lists direct-query data sources for a specific domain. For more information, see For more information, see [Working with Amazon OpenSearch Service direct queries with Amazon S3](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/direct-query-s3.html). /// /// - Parameter ListDataSourcesInput : Container for the parameters to the ListDataSources operation. /// @@ -931,7 +931,7 @@ public protocol OpenSearchClientProtocol { func startServiceSoftwareUpdate(input: StartServiceSoftwareUpdateInput) async throws -> StartServiceSoftwareUpdateOutput /// Performs the `UpdateDataSource` operation on the `AmazonOpenSearchService` service. /// - /// Updates the data source on the domain. + /// Updates a direct-query data source. For more information, see [Working with Amazon OpenSearch Service data source integrations with Amazon S3](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/direct-query-s3-creating.html). /// /// - Parameter UpdateDataSourceInput : Container for the parameters to the UpdateDataSource operation. /// diff --git a/Sources/Services/AWSOpenSearch/models/Models.swift b/Sources/Services/AWSOpenSearch/models/Models.swift index 72e0eb24649..bc5de4a9d19 100644 --- a/Sources/Services/AWSOpenSearch/models/Models.swift +++ b/Sources/Services/AWSOpenSearch/models/Models.swift @@ -398,10 +398,10 @@ public struct AddDataSourceInput: Swift.Equatable { public var dataSourceType: OpenSearchClientTypes.DataSourceType? /// A description of the data source. public var description: Swift.String? - /// The name of the domain. + /// The name of the domain to add the data source to. /// This member is required. public var domainName: Swift.String? - /// The name of the data source. + /// A name for the data source. /// This member is required. public var name: Swift.String? @@ -457,7 +457,7 @@ extension AddDataSourceOutput: ClientRuntime.HttpResponseBinding { /// The result of an AddDataSource operation. public struct AddDataSourceOutput: Swift.Equatable { - /// A message associated with the data source. + /// A message associated with creation of the data source. public var message: Swift.String? public init( @@ -3716,7 +3716,7 @@ extension OpenSearchClientTypes.DataSourceDetails: Swift.Codable { } extension OpenSearchClientTypes { - /// Details about the data sources. + /// Details about a direct-query data source. public struct DataSourceDetails: Swift.Equatable { /// The type of data source. public var dataSourceType: OpenSearchClientTypes.DataSourceType? @@ -3767,9 +3767,9 @@ extension OpenSearchClientTypes.DataSourceType: Swift.Codable { } extension OpenSearchClientTypes { - /// Information about the data source. + /// The type of data source. public enum DataSourceType: Swift.Equatable { - /// The data source for the AWS S3 Glue Data Catalog. + /// An Amazon S3 data source. case s3gluedatacatalog(OpenSearchClientTypes.S3GlueDataCatalog) case sdkUnknown(Swift.String) } @@ -3793,7 +3793,7 @@ public struct DeleteDataSourceInput: Swift.Equatable { /// The name of the domain. /// This member is required. public var domainName: Swift.String? - /// The name of the data source. + /// The name of the data source to delete. /// This member is required. public var name: Swift.String? @@ -3830,7 +3830,7 @@ extension DeleteDataSourceOutput: ClientRuntime.HttpResponseBinding { /// The result of a GetDataSource operation. public struct DeleteDataSourceOutput: Swift.Equatable { - /// A message associated with the initiated request. + /// A message associated with deletion of the data source. public var message: Swift.String? public init( @@ -6923,13 +6923,9 @@ extension OpenSearchClientTypes { public var enforceHTTPS: Swift.Bool? /// Specify the TLS security policy to apply to the HTTPS endpoint of the domain. The policy can be one of the following values: /// - /// * Policy-Min-TLS-1-0-2019-07: TLS security policy which supports TLS version 1.0 to TLS version 1.2 - /// - /// * Policy-Min-TLS-1-2-2019-07: TLS security policy which supports only TLS version 1.2 + /// * Policy-Min-TLS-1-0-2019-07: TLS security policy that supports TLS version 1.0 to TLS version 1.2 /// - /// * Policy-Min-TLS-1-0-2023-10: TLS security policy which supports TLS version 1.0 to TLS version 1.3 - /// - /// * Policy-Min-TLS-1-2-2023-10: TLS security policy which supports TLS version 1.2 to TLS version 1.3 with perfect forward secrecy cipher suites + /// * Policy-Min-TLS-1-2-2019-07: TLS security policy that supports only TLS version 1.2 public var tlsSecurityPolicy: OpenSearchClientTypes.TLSSecurityPolicy? public init( @@ -8610,7 +8606,7 @@ public struct GetDataSourceInput: Swift.Equatable { /// The name of the domain. /// This member is required. public var domainName: Swift.String? - /// The name of the data source. + /// The name of the data source to get information about. /// This member is required. public var name: Swift.String? @@ -10073,7 +10069,7 @@ extension ListDataSourcesOutput: ClientRuntime.HttpResponseBinding { /// The result of a ListDataSources operation. public struct ListDataSourcesOutput: Swift.Equatable { - /// A list of the data sources. + /// A list of data sources associated with specified domain. public var dataSources: [OpenSearchClientTypes.DataSourceDetails]? public init( @@ -14204,9 +14200,9 @@ extension OpenSearchClientTypes.S3GlueDataCatalog: Swift.Codable { } extension OpenSearchClientTypes { - /// Information about the AWS S3 Glue Data Catalog. + /// Information about the Amazon S3 Glue Data Catalog. public struct S3GlueDataCatalog: Swift.Equatable { - /// The role ARN for the AWS S3 Glue Data Catalog. + /// >The Amazon Resource Name (ARN) for the S3 Glue Data Catalog. public var roleArn: Swift.String? public init( @@ -15681,12 +15677,12 @@ public struct UpdateDataSourceInput: Swift.Equatable { /// The type of data source. /// This member is required. public var dataSourceType: OpenSearchClientTypes.DataSourceType? - /// A description of the data source. + /// A new description of the data source. public var description: Swift.String? /// The name of the domain. /// This member is required. public var domainName: Swift.String? - /// The name of the data source. + /// The name of the data source to modify. /// This member is required. public var name: Swift.String? @@ -15738,7 +15734,7 @@ extension UpdateDataSourceOutput: ClientRuntime.HttpResponseBinding { /// The result of an UpdateDataSource operation. public struct UpdateDataSourceOutput: Swift.Equatable { - /// A message associated with the data source. + /// A message associated with the updated data source. public var message: Swift.String? public init( diff --git a/Sources/Services/AWSPaymentCryptography/Paginators.swift b/Sources/Services/AWSPaymentCryptography/Paginators.swift index aee86237b74..10304cba458 100644 --- a/Sources/Services/AWSPaymentCryptography/Paginators.swift +++ b/Sources/Services/AWSPaymentCryptography/Paginators.swift @@ -2,67 +2,6 @@ import ClientRuntime -extension PaymentCryptographyClient { - /// Paginate over `[ListAliasesOutput]` 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 `[ListAliasesInput]` to start pagination - /// - Returns: An `AsyncSequence` that can iterate over `ListAliasesOutput` - public func listAliasesPaginated(input: ListAliasesInput) -> ClientRuntime.PaginatorSequence { - return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.listAliases(input:)) - } -} - -extension ListAliasesInput: ClientRuntime.PaginateToken { - public func usingPaginationToken(_ token: Swift.String) -> ListAliasesInput { - return ListAliasesInput( - maxResults: self.maxResults, - nextToken: token - )} -} - -extension PaginatorSequence where OperationStackInput == ListAliasesInput, OperationStackOutput == ListAliasesOutput { - /// This paginator transforms the `AsyncSequence` returned by `listAliasesPaginated` - /// to access the nested member `[PaymentCryptographyClientTypes.Alias]` - /// - Returns: `[PaymentCryptographyClientTypes.Alias]` - public func aliases() async throws -> [PaymentCryptographyClientTypes.Alias] { - return try await self.asyncCompactMap { item in item.aliases } - } -} -extension PaymentCryptographyClient { - /// Paginate over `[ListKeysOutput]` 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 `[ListKeysInput]` to start pagination - /// - Returns: An `AsyncSequence` that can iterate over `ListKeysOutput` - public func listKeysPaginated(input: ListKeysInput) -> ClientRuntime.PaginatorSequence { - return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.listKeys(input:)) - } -} - -extension ListKeysInput: ClientRuntime.PaginateToken { - public func usingPaginationToken(_ token: Swift.String) -> ListKeysInput { - return ListKeysInput( - keyState: self.keyState, - maxResults: self.maxResults, - nextToken: token - )} -} - -extension PaginatorSequence where OperationStackInput == ListKeysInput, OperationStackOutput == ListKeysOutput { - /// This paginator transforms the `AsyncSequence` returned by `listKeysPaginated` - /// to access the nested member `[PaymentCryptographyClientTypes.KeySummary]` - /// - Returns: `[PaymentCryptographyClientTypes.KeySummary]` - public func keys() async throws -> [PaymentCryptographyClientTypes.KeySummary] { - return try await self.asyncCompactMap { item in item.keys } - } -} extension PaymentCryptographyClient { /// Paginate over `[ListTagsForResourceOutput]` results. /// diff --git a/Sources/Services/AWSPaymentCryptography/PaymentCryptographyClient.swift b/Sources/Services/AWSPaymentCryptography/PaymentCryptographyClient.swift index 075f27f7676..89de173093a 100644 --- a/Sources/Services/AWSPaymentCryptography/PaymentCryptographyClient.swift +++ b/Sources/Services/AWSPaymentCryptography/PaymentCryptographyClient.swift @@ -131,7 +131,7 @@ extension PaymentCryptographyClient: PaymentCryptographyClientProtocol { /// Performs the `CreateKey` operation on the `PaymentCryptographyControlPlane` service. /// - /// Creates an Amazon Web Services Payment Cryptography key, a logical representation of a cryptographic key, that is unique in your account and Amazon Web Services Region. You use keys for cryptographic functions such as encryption and decryption. In addition to the key material used in cryptographic operations, an Amazon Web Services Payment Cryptography key includes metadata such as the key ARN, key usage, key origin, creation date, description, and key state. When you create a key, you specify both immutable and mutable data about the key. The immutable data contains key attributes that defines the scope and cryptographic operations that you can perform using the key, for example key class (example: SYMMETRIC_KEY), key algorithm (example: TDES_2KEY), key usage (example: TR31_P0_PIN_ENCRYPTION_KEY) and key modes of use (example: Encrypt). For information about valid combinations of key attributes, see [Understanding key attributes](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html) in the Amazon Web Services Payment Cryptography User Guide. The mutable data contained within a key includes usage timestamp and key deletion timestamp and can be modified after creation. Amazon Web Services Payment Cryptography binds key attributes to keys using key blocks when you store or export them. Amazon Web Services Payment Cryptography stores the key contents wrapped and never stores or transmits them in the clear. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: + /// Creates an Amazon Web Services Payment Cryptography key, a logical representation of a cryptographic key, that is unique in your account and Amazon Web Services Region. You use keys for cryptographic functions such as encryption and decryption. In addition to the key material used in cryptographic operations, an Amazon Web Services Payment Cryptography key includes metadata such as the key ARN, key usage, key origin, creation date, description, and key state. When you create a key, you specify both immutable and mutable data about the key. The immutable data contains key attributes that define the scope and cryptographic operations that you can perform using the key, for example key class (example: SYMMETRIC_KEY), key algorithm (example: TDES_2KEY), key usage (example: TR31_P0_PIN_ENCRYPTION_KEY) and key modes of use (example: Encrypt). For information about valid combinations of key attributes, see [Understanding key attributes](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html) in the Amazon Web Services Payment Cryptography User Guide. The mutable data contained within a key includes usage timestamp and key deletion timestamp and can be modified after creation. Amazon Web Services Payment Cryptography binds key attributes to keys using key blocks when you store or export them. Amazon Web Services Payment Cryptography stores the key contents wrapped and never stores or transmits them in the clear. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: /// /// * [DeleteKey] /// @@ -252,7 +252,7 @@ extension PaymentCryptographyClient: PaymentCryptographyClientProtocol { /// Performs the `DeleteKey` operation on the `PaymentCryptographyControlPlane` service. /// - /// Deletes the key material and all metadata associated with Amazon Web Services Payment Cryptography key. Key deletion is irreversible. After a key is deleted, you can't perform cryptographic operations using the key. For example, you can't decrypt data that was encrypted by a deleted Amazon Web Services Payment Cryptography key, and the data may become unrecoverable. Because key deletion is destructive, Amazon Web Services Payment Cryptography has a safety mechanism to prevent accidental deletion of a key. When you call this operation, Amazon Web Services Payment Cryptography disables the specified key but doesn't delete it until after a waiting period. The default waiting period is 7 days. To set a different waiting period, set DeleteKeyInDays. During the waiting period, the KeyState is DELETE_PENDING. After the key is deleted, the KeyState is DELETE_COMPLETE. If you delete key material, you can use [ImportKey] to reimport the same key material into the Amazon Web Services Payment Cryptography key. You should delete a key only when you are sure that you don't need to use it anymore and no other parties are utilizing this key. If you aren't sure, consider deactivating it instead by calling [StopKeyUsage]. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: + /// Deletes the key material and metadata associated with Amazon Web Services Payment Cryptography key. Key deletion is irreversible. After a key is deleted, you can't perform cryptographic operations using the key. For example, you can't decrypt data that was encrypted by a deleted Amazon Web Services Payment Cryptography key, and the data may become unrecoverable. Because key deletion is destructive, Amazon Web Services Payment Cryptography has a safety mechanism to prevent accidental deletion of a key. When you call this operation, Amazon Web Services Payment Cryptography disables the specified key but doesn't delete it until after a waiting period set using DeleteKeyInDays. The default waiting period is 7 days. During the waiting period, the KeyState is DELETE_PENDING. After the key is deleted, the KeyState is DELETE_COMPLETE. You should delete a key only when you are sure that you don't need to use it anymore and no other parties are utilizing this key. If you aren't sure, consider deactivating it instead by calling [StopKeyUsage]. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: /// /// * [RestoreKey] /// @@ -311,7 +311,31 @@ extension PaymentCryptographyClient: PaymentCryptographyClientProtocol { /// Performs the `ExportKey` operation on the `PaymentCryptographyControlPlane` service. /// - /// Exports a key from Amazon Web Services Payment Cryptography using either ANSI X9 TR-34 or TR-31 key export standard. Amazon Web Services Payment Cryptography simplifies main or root key exchange process by eliminating the need of a paper-based key exchange process. It takes a modern and secure approach based of the ANSI X9 TR-34 key exchange standard. You can use ExportKey to export main or root keys such as KEK (Key Encryption Key), using asymmetric key exchange technique following ANSI X9 TR-34 standard. The ANSI X9 TR-34 standard uses asymmetric keys to establishes bi-directional trust between the two parties exchanging keys. After which you can export working keys using the ANSI X9 TR-31 symmetric key exchange standard as mandated by PCI PIN. Using this operation, you can share your Amazon Web Services Payment Cryptography generated keys with other service partners to perform cryptographic operations outside of Amazon Web Services Payment Cryptography TR-34 key export Amazon Web Services Payment Cryptography uses TR-34 asymmetric key exchange standard to export main keys such as KEK. In TR-34 terminology, the sending party of the key is called Key Distribution Host (KDH) and the receiving party of the key is called Key Receiving Host (KRH). In key export process, KDH is Amazon Web Services Payment Cryptography which initiates key export. KRH is the user receiving the key. Before you initiate TR-34 key export, you must obtain an export token by calling [GetParametersForExport]. This operation also returns the signing key certificate that KDH uses to sign the wrapped key to generate a TR-34 wrapped key block. The export token expires after 7 days. Set the following parameters: CertificateAuthorityPublicKeyIdentifier The KeyARN of the certificate chain that will sign the wrapping key certificate. This must exist within Amazon Web Services Payment Cryptography before you initiate TR-34 key export. If it does not exist, you can import it by calling [ImportKey] for RootCertificatePublicKey. ExportToken Obtained from KDH by calling [GetParametersForExport]. WrappingKeyCertificate Amazon Web Services Payment Cryptography uses this to wrap the key under export. When this operation is successful, Amazon Web Services Payment Cryptography returns the TR-34 wrapped key block. TR-31 key export Amazon Web Services Payment Cryptography uses TR-31 symmetric key exchange standard to export working keys. In TR-31, you must use a main key such as KEK to encrypt or wrap the key under export. To establish a KEK, you can use [CreateKey] or [ImportKey]. When this operation is successful, Amazon Web Services Payment Cryptography returns a TR-31 wrapped key block. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: + /// Exports a key from Amazon Web Services Payment Cryptography. Amazon Web Services Payment Cryptography simplifies key exchange by replacing the existing paper-based approach with a modern electronic approach. With ExportKey you can export symmetric keys using either symmetric and asymmetric key exchange mechanisms. Using this operation, you can share your Amazon Web Services Payment Cryptography generated keys with other service partners to perform cryptographic operations outside of Amazon Web Services Payment Cryptography For symmetric key exchange, Amazon Web Services Payment Cryptography uses the ANSI X9 TR-31 norm in accordance with PCI PIN guidelines. And for asymmetric key exchange, Amazon Web Services Payment Cryptography supports ANSI X9 TR-34 norm . Asymmetric key exchange methods are typically used to establish bi-directional trust between the two parties exhanging keys and are used for initial key exchange such as Key Encryption Key (KEK). After which you can export working keys using symmetric method to perform various cryptographic operations within Amazon Web Services Payment Cryptography. The TR-34 norm is intended for exchanging 3DES keys only and keys are imported in a WrappedKeyBlock format. Key attributes (such as KeyUsage, KeyAlgorithm, KeyModesOfUse, Exportability) are contained within the key block. You can also use ExportKey functionality to generate and export an IPEK (Initial Pin Encryption Key) from Amazon Web Services Payment Cryptography using either TR-31 or TR-34 export key exchange. IPEK is generated from BDK (Base Derivation Key) and ExportDukptInitialKey attribute KSN (KeySerialNumber). The generated IPEK does not persist within Amazon Web Services Payment Cryptography and has to be re-generated each time during export. To export KEK or IPEK using TR-34 Using this operation, you can export initial key using TR-34 asymmetric key exchange. You can only export KEK generated within Amazon Web Services Payment Cryptography. In TR-34 terminology, the sending party of the key is called Key Distribution Host (KDH) and the receiving party of the key is called Key Receiving Device (KRD). During key export process, KDH is Amazon Web Services Payment Cryptography which initiates key export and KRD is the user receiving the key. To initiate TR-34 key export, the KRD must obtain an export token by calling [GetParametersForExport]. This operation also generates a key pair for the purpose of key export, signs the key and returns back the signing public key certificate (also known as KDH signing certificate) and root certificate chain. The KDH uses the private key to sign the the export payload and the signing public key certificate is provided to KRD to verify the signature. The KRD can import the root certificate into its Hardware Security Module (HSM), as required. The export token and the associated KDH signing certificate expires after 7 days. Next the KRD generates a key pair for the the purpose of encrypting the KDH key and provides the public key cerificate (also known as KRD wrapping certificate) back to KDH. The KRD will also import the root cerificate chain into Amazon Web Services Payment Cryptography by calling [ImportKey] for RootCertificatePublicKey. The KDH, Amazon Web Services Payment Cryptography, will use the KRD wrapping cerificate to encrypt (wrap) the key under export and signs it with signing private key to generate a TR-34 WrappedKeyBlock. For more information on TR-34 key export, see section [Exporting symmetric keys](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-export.html) in the Amazon Web Services Payment Cryptography User Guide. Set the following parameters: + /// + /// * ExportAttributes: Specify export attributes in case of IPEK export. This parameter is optional for KEK export. + /// + /// * ExportKeyIdentifier: The KeyARN of the KEK or BDK (in case of IPEK) under export. + /// + /// * KeyMaterial: Use Tr34KeyBlock parameters. + /// + /// * CertificateAuthorityPublicKeyIdentifier: The KeyARN of the certificate chain that signed the KRD wrapping key certificate. + /// + /// * ExportToken: Obtained from KDH by calling [GetParametersForImport]. + /// + /// * WrappingKeyCertificate: The public key certificate in PEM format (base64 encoded) of the KRD wrapping key Amazon Web Services Payment Cryptography uses for encryption of the TR-34 export payload. This certificate must be signed by the root certificate (CertificateAuthorityPublicKeyIdentifier) imported into Amazon Web Services Payment Cryptography. + /// + /// + /// When this operation is successful, Amazon Web Services Payment Cryptography returns the KEK or IPEK as a TR-34 WrappedKeyBlock. To export WK (Working Key) or IPEK using TR-31 Using this operation, you can export working keys or IPEK using TR-31 symmetric key exchange. In TR-31, you must use an initial key such as KEK to encrypt or wrap the key under export. To establish a KEK, you can use [CreateKey] or [ImportKey]. Set the following parameters: + /// + /// * ExportAttributes: Specify export attributes in case of IPEK export. This parameter is optional for KEK export. + /// + /// * ExportKeyIdentifier: The KeyARN of the KEK or BDK (in case of IPEK) under export. + /// + /// * KeyMaterial: Use Tr31KeyBlock parameters. + /// + /// + /// When this operation is successful, Amazon Web Services Payment Cryptography returns the WK or IPEK as a TR-31 WrappedKeyBlock. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: /// /// * [GetParametersForExport] /// @@ -544,7 +568,7 @@ extension PaymentCryptographyClient: PaymentCryptographyClientProtocol { /// Performs the `GetParametersForImport` operation on the `PaymentCryptographyControlPlane` service. /// - /// Gets the import token and the wrapping key certificate to initiate a TR-34 key import into Amazon Web Services Payment Cryptography. The wrapping key certificate wraps the key under import within the TR-34 key payload. The import token and wrapping key certificate must be in place and operational before calling [ImportKey]. The import token expires in 7 days. The same import token can be used to import multiple keys into your service account. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: + /// Gets the import token and the wrapping key certificate in PEM format (base64 encoded) to initiate a TR-34 WrappedKeyBlock. The wrapping key certificate wraps the key under import. The import token and wrapping key certificate must be in place and operational before calling [ImportKey]. The import token expires in 7 days. You can use the same import token to import multiple keys into your service account. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: /// /// * [GetParametersForExport] /// @@ -654,7 +678,7 @@ extension PaymentCryptographyClient: PaymentCryptographyClientProtocol { /// Performs the `ImportKey` operation on the `PaymentCryptographyControlPlane` service. /// - /// Imports keys and public key certificates into Amazon Web Services Payment Cryptography. Amazon Web Services Payment Cryptography simplifies main or root key exchange process by eliminating the need of a paper-based key exchange process. It takes a modern and secure approach based of the ANSI X9 TR-34 key exchange standard. You can use ImportKey to import main or root keys such as KEK (Key Encryption Key) using asymmetric key exchange technique following the ANSI X9 TR-34 standard. The ANSI X9 TR-34 standard uses asymmetric keys to establishes bi-directional trust between the two parties exchanging keys. After you have imported a main or root key, you can import working keys to perform various cryptographic operations within Amazon Web Services Payment Cryptography using the ANSI X9 TR-31 symmetric key exchange standard as mandated by PCI PIN. You can also import a root public key certificate, a self-signed certificate used to sign other public key certificates, or a trusted public key certificate under an already established root public key certificate. To import a public root key certificate Using this operation, you can import the public component (in PEM cerificate format) of your private root key. You can use the imported public root key certificate for digital signatures, for example signing wrapping key or signing key in TR-34, within your Amazon Web Services Payment Cryptography account. Set the following parameters: + /// Imports symmetric keys and public key certificates in PEM format (base64 encoded) into Amazon Web Services Payment Cryptography. Amazon Web Services Payment Cryptography simplifies key exchange by replacing the existing paper-based approach with a modern electronic approach. With ImportKey you can import symmetric keys using either symmetric and asymmetric key exchange mechanisms. For symmetric key exchange, Amazon Web Services Payment Cryptography uses the ANSI X9 TR-31 norm in accordance with PCI PIN guidelines. And for asymmetric key exchange, Amazon Web Services Payment Cryptography supports ANSI X9 TR-34 norm . Asymmetric key exchange methods are typically used to establish bi-directional trust between the two parties exhanging keys and are used for initial key exchange such as Key Encryption Key (KEK) or Zone Master Key (ZMK). After which you can import working keys using symmetric method to perform various cryptographic operations within Amazon Web Services Payment Cryptography. The TR-34 norm is intended for exchanging 3DES keys only and keys are imported in a WrappedKeyBlock format. Key attributes (such as KeyUsage, KeyAlgorithm, KeyModesOfUse, Exportability) are contained within the key block. You can also import a root public key certificate, used to sign other public key certificates, or a trusted public key certificate under an already established root public key certificate. To import a public root key certificate You can also import a root public key certificate, used to sign other public key certificates, or a trusted public key certificate under an already established root public key certificate. To import a public root key certificate Using this operation, you can import the public component (in PEM cerificate format) of your private root key. You can use the imported public root key certificate for digital signatures, for example signing wrapping key or signing key in TR-34, within your Amazon Web Services Payment Cryptography account. Set the following parameters: /// /// * KeyMaterial: RootCertificatePublicKey /// @@ -664,7 +688,7 @@ extension PaymentCryptographyClient: PaymentCryptographyClientProtocol { /// /// * KeyUsage: TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE /// - /// * PublicKeyCertificate: The certificate authority used to sign the root public key certificate. + /// * PublicKeyCertificate: The public key certificate in PEM format (base64 encoded) of the private root key under import. /// /// /// To import a trusted public key certificate The root public key certificate must be in place and operational before you import a trusted public key certificate. Set the following parameters: @@ -675,23 +699,27 @@ extension PaymentCryptographyClient: PaymentCryptographyClientProtocol { /// /// * KeyModesOfUse and KeyUsage: Corresponding to the cryptographic operations such as wrap, sign, or encrypt that you will allow the trusted public key certificate to perform. /// - /// * PublicKeyCertificate: The certificate authority used to sign the trusted public key certificate. + /// * PublicKeyCertificate: The trusted public key certificate in PEM format (base64 encoded) under import. + /// + /// + /// To import KEK or ZMK using TR-34 Using this operation, you can import initial key using TR-34 asymmetric key exchange. In TR-34 terminology, the sending party of the key is called Key Distribution Host (KDH) and the receiving party of the key is called Key Receiving Device (KRD). During the key import process, KDH is the user who initiates the key import and KRD is Amazon Web Services Payment Cryptography who receives the key. To initiate TR-34 key import, the KDH must obtain an import token by calling [GetParametersForImport]. This operation generates an encryption keypair for the purpose of key import, signs the key and returns back the wrapping key certificate (also known as KRD wrapping certificate) and the root certificate chain. The KDH must trust and install the KRD wrapping certificate on its HSM and use it to encrypt (wrap) the KDH key during TR-34 WrappedKeyBlock generation. The import token and associated KRD wrapping certificate expires after 7 days. Next the KDH generates a key pair for the purpose of signing the encrypted KDH key and provides the public certificate of the signing key to Amazon Web Services Payment Cryptography. The KDH will also need to import the root certificate chain of the KDH signing certificate by calling ImportKey for RootCertificatePublicKey. For more information on TR-34 key import, see section [Importing symmetric keys](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-import.html) in the Amazon Web Services Payment Cryptography User Guide. Set the following parameters: /// + /// * KeyMaterial: Use Tr34KeyBlock parameters. /// - /// Import main keys Amazon Web Services Payment Cryptography uses TR-34 asymmetric key exchange standard to import main keys such as KEK. In TR-34 terminology, the sending party of the key is called Key Distribution Host (KDH) and the receiving party of the key is called Key Receiving Host (KRH). During the key import process, KDH is the user who initiates the key import and KRH is Amazon Web Services Payment Cryptography who receives the key. Before initiating TR-34 key import, you must obtain an import token by calling [GetParametersForImport]. This operation also returns the wrapping key certificate that KDH uses wrap key under import to generate a TR-34 wrapped key block. The import token expires after 7 days. Set the following parameters: + /// * CertificateAuthorityPublicKeyIdentifier: The KeyARN of the certificate chain that signed the KDH signing key certificate. /// - /// * CertificateAuthorityPublicKeyIdentifier: The KeyArn of the certificate chain that will sign the signing key certificate and should exist within Amazon Web Services Payment Cryptography before initiating TR-34 key import. If it does not exist, you can import it by calling by calling ImportKey for RootCertificatePublicKey. + /// * ImportToken: Obtained from KRD by calling [GetParametersForImport]. /// - /// * ImportToken: Obtained from KRH by calling [GetParametersForImport]. + /// * WrappedKeyBlock: The TR-34 wrapped key material from KDH. It contains the KDH key under import, wrapped with KRD wrapping certificate and signed by KDH signing private key. This TR-34 key block is typically generated by the KDH Hardware Security Module (HSM) outside of Amazon Web Services Payment Cryptography. /// - /// * WrappedKeyBlock: The TR-34 wrapped key block from KDH. It contains the KDH key under import, wrapped with KRH provided wrapping key certificate and signed by the KDH private signing key. This TR-34 key block is generated by the KDH Hardware Security Module (HSM) outside of Amazon Web Services Payment Cryptography. + /// * SigningKeyCertificate: The public key certificate in PEM format (base64 encoded) of the KDH signing key generated under the root certificate (CertificateAuthorityPublicKeyIdentifier) imported in Amazon Web Services Payment Cryptography. /// - /// * SigningKeyCertificate: The public component of the private key that signed the KDH TR-34 wrapped key block. In PEM certificate format. /// + /// To import WK (Working Key) using TR-31 Amazon Web Services Payment Cryptography uses TR-31 symmetric key exchange norm to import working keys. A KEK must be established within Amazon Web Services Payment Cryptography by using TR-34 key import or by using [CreateKey]. To initiate a TR-31 key import, set the following parameters: /// - /// TR-34 is intended primarily to exchange 3DES keys. Your ability to export AES-128 and larger AES keys may be dependent on your source system. Import working keys Amazon Web Services Payment Cryptography uses TR-31 symmetric key exchange standard to import working keys. A KEK must be established within Amazon Web Services Payment Cryptography by using TR-34 key import. To initiate a TR-31 key import, set the following parameters: + /// * KeyMaterial: Use Tr31KeyBlock parameters. /// - /// * WrappedKeyBlock: The key under import and encrypted using KEK. The TR-31 key block generated by your HSM outside of Amazon Web Services Payment Cryptography. + /// * WrappedKeyBlock: The TR-31 wrapped key material. It contains the key under import, encrypted using KEK. The TR-31 key block is typically generated by a HSM outside of Amazon Web Services Payment Cryptography. /// /// * WrappingKeyIdentifier: The KeyArn of the KEK that Amazon Web Services Payment Cryptography uses to decrypt or unwrap the key under import. /// diff --git a/Sources/Services/AWSPaymentCryptography/PaymentCryptographyClientProtocol.swift b/Sources/Services/AWSPaymentCryptography/PaymentCryptographyClientProtocol.swift index 0094372a395..60c95eb95ac 100644 --- a/Sources/Services/AWSPaymentCryptography/PaymentCryptographyClientProtocol.swift +++ b/Sources/Services/AWSPaymentCryptography/PaymentCryptographyClientProtocol.swift @@ -2,7 +2,7 @@ import ClientRuntime -/// You use the Amazon Web Services Payment Cryptography Control Plane to manage the encryption keys you use for payment-related cryptographic operations. You can create, import, export, share, manage, and delete keys. You can also manage Identity and Access Management (IAM) policies for keys. For more information, see [Identity and access management](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/security-iam.html) in the Amazon Web Services Payment Cryptography User Guide. To use encryption keys for payment-related transaction processing and associated cryptographic operations, you use the [Amazon Web Services Payment Cryptography Data Plane](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/Welcome.html). You can encrypt, decrypt, generate, verify, and translate payment-related cryptographic operations. All Amazon Web Services Payment Cryptography API calls must be signed and transmitted using Transport Layer Security (TLS). We recommend you always use the latest supported TLS version for logging API requests. Amazon Web Services Payment Cryptography supports CloudTrail, a service that logs Amazon Web Services API calls and related events for your Amazon Web Services account and delivers them to an Amazon S3 bucket that you specify. By using the information collected by CloudTrail, you can determine what requests were made to Amazon Web Services Payment Cryptography, who made the request, when it was made, and so on. If you don't configure a trail, you can still view the most recent events in the CloudTrail console. For more information, see the [CloudTrail User Guide](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/). +/// Amazon Web Services Payment Cryptography Control Plane APIs manage encryption keys for use during payment-related cryptographic operations. You can create, import, export, share, manage, and delete keys. You can also manage Identity and Access Management (IAM) policies for keys. For more information, see [Identity and access management](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/security-iam.html) in the Amazon Web Services Payment Cryptography User Guide. To use encryption keys for payment-related transaction processing and associated cryptographic operations, you use the [Amazon Web Services Payment Cryptography Data Plane](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/Welcome.html). You can perform actions like encrypt, decrypt, generate, and verify payment-related data. All Amazon Web Services Payment Cryptography API calls must be signed and transmitted using Transport Layer Security (TLS). We recommend you always use the latest supported TLS version for logging API requests. Amazon Web Services Payment Cryptography supports CloudTrail for control plane operations, a service that logs Amazon Web Services API calls and related events for your Amazon Web Services account and delivers them to an Amazon S3 bucket you specify. By using the information collected by CloudTrail, you can determine what requests were made to Amazon Web Services Payment Cryptography, who made the request, when it was made, and so on. If you don't configure a trail, you can still view the most recent events in the CloudTrail console. For more information, see the [CloudTrail User Guide](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/). public protocol PaymentCryptographyClientProtocol { /// Performs the `CreateAlias` operation on the `PaymentCryptographyControlPlane` service. /// @@ -34,7 +34,7 @@ public protocol PaymentCryptographyClientProtocol { func createAlias(input: CreateAliasInput) async throws -> CreateAliasOutput /// Performs the `CreateKey` operation on the `PaymentCryptographyControlPlane` service. /// - /// Creates an Amazon Web Services Payment Cryptography key, a logical representation of a cryptographic key, that is unique in your account and Amazon Web Services Region. You use keys for cryptographic functions such as encryption and decryption. In addition to the key material used in cryptographic operations, an Amazon Web Services Payment Cryptography key includes metadata such as the key ARN, key usage, key origin, creation date, description, and key state. When you create a key, you specify both immutable and mutable data about the key. The immutable data contains key attributes that defines the scope and cryptographic operations that you can perform using the key, for example key class (example: SYMMETRIC_KEY), key algorithm (example: TDES_2KEY), key usage (example: TR31_P0_PIN_ENCRYPTION_KEY) and key modes of use (example: Encrypt). For information about valid combinations of key attributes, see [Understanding key attributes](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html) in the Amazon Web Services Payment Cryptography User Guide. The mutable data contained within a key includes usage timestamp and key deletion timestamp and can be modified after creation. Amazon Web Services Payment Cryptography binds key attributes to keys using key blocks when you store or export them. Amazon Web Services Payment Cryptography stores the key contents wrapped and never stores or transmits them in the clear. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: + /// Creates an Amazon Web Services Payment Cryptography key, a logical representation of a cryptographic key, that is unique in your account and Amazon Web Services Region. You use keys for cryptographic functions such as encryption and decryption. In addition to the key material used in cryptographic operations, an Amazon Web Services Payment Cryptography key includes metadata such as the key ARN, key usage, key origin, creation date, description, and key state. When you create a key, you specify both immutable and mutable data about the key. The immutable data contains key attributes that define the scope and cryptographic operations that you can perform using the key, for example key class (example: SYMMETRIC_KEY), key algorithm (example: TDES_2KEY), key usage (example: TR31_P0_PIN_ENCRYPTION_KEY) and key modes of use (example: Encrypt). For information about valid combinations of key attributes, see [Understanding key attributes](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-validattributes.html) in the Amazon Web Services Payment Cryptography User Guide. The mutable data contained within a key includes usage timestamp and key deletion timestamp and can be modified after creation. Amazon Web Services Payment Cryptography binds key attributes to keys using key blocks when you store or export them. Amazon Web Services Payment Cryptography stores the key contents wrapped and never stores or transmits them in the clear. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: /// /// * [DeleteKey] /// @@ -87,7 +87,7 @@ public protocol PaymentCryptographyClientProtocol { func deleteAlias(input: DeleteAliasInput) async throws -> DeleteAliasOutput /// Performs the `DeleteKey` operation on the `PaymentCryptographyControlPlane` service. /// - /// Deletes the key material and all metadata associated with Amazon Web Services Payment Cryptography key. Key deletion is irreversible. After a key is deleted, you can't perform cryptographic operations using the key. For example, you can't decrypt data that was encrypted by a deleted Amazon Web Services Payment Cryptography key, and the data may become unrecoverable. Because key deletion is destructive, Amazon Web Services Payment Cryptography has a safety mechanism to prevent accidental deletion of a key. When you call this operation, Amazon Web Services Payment Cryptography disables the specified key but doesn't delete it until after a waiting period. The default waiting period is 7 days. To set a different waiting period, set DeleteKeyInDays. During the waiting period, the KeyState is DELETE_PENDING. After the key is deleted, the KeyState is DELETE_COMPLETE. If you delete key material, you can use [ImportKey] to reimport the same key material into the Amazon Web Services Payment Cryptography key. You should delete a key only when you are sure that you don't need to use it anymore and no other parties are utilizing this key. If you aren't sure, consider deactivating it instead by calling [StopKeyUsage]. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: + /// Deletes the key material and metadata associated with Amazon Web Services Payment Cryptography key. Key deletion is irreversible. After a key is deleted, you can't perform cryptographic operations using the key. For example, you can't decrypt data that was encrypted by a deleted Amazon Web Services Payment Cryptography key, and the data may become unrecoverable. Because key deletion is destructive, Amazon Web Services Payment Cryptography has a safety mechanism to prevent accidental deletion of a key. When you call this operation, Amazon Web Services Payment Cryptography disables the specified key but doesn't delete it until after a waiting period set using DeleteKeyInDays. The default waiting period is 7 days. During the waiting period, the KeyState is DELETE_PENDING. After the key is deleted, the KeyState is DELETE_COMPLETE. You should delete a key only when you are sure that you don't need to use it anymore and no other parties are utilizing this key. If you aren't sure, consider deactivating it instead by calling [StopKeyUsage]. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: /// /// * [RestoreKey] /// @@ -112,7 +112,31 @@ public protocol PaymentCryptographyClientProtocol { func deleteKey(input: DeleteKeyInput) async throws -> DeleteKeyOutput /// Performs the `ExportKey` operation on the `PaymentCryptographyControlPlane` service. /// - /// Exports a key from Amazon Web Services Payment Cryptography using either ANSI X9 TR-34 or TR-31 key export standard. Amazon Web Services Payment Cryptography simplifies main or root key exchange process by eliminating the need of a paper-based key exchange process. It takes a modern and secure approach based of the ANSI X9 TR-34 key exchange standard. You can use ExportKey to export main or root keys such as KEK (Key Encryption Key), using asymmetric key exchange technique following ANSI X9 TR-34 standard. The ANSI X9 TR-34 standard uses asymmetric keys to establishes bi-directional trust between the two parties exchanging keys. After which you can export working keys using the ANSI X9 TR-31 symmetric key exchange standard as mandated by PCI PIN. Using this operation, you can share your Amazon Web Services Payment Cryptography generated keys with other service partners to perform cryptographic operations outside of Amazon Web Services Payment Cryptography TR-34 key export Amazon Web Services Payment Cryptography uses TR-34 asymmetric key exchange standard to export main keys such as KEK. In TR-34 terminology, the sending party of the key is called Key Distribution Host (KDH) and the receiving party of the key is called Key Receiving Host (KRH). In key export process, KDH is Amazon Web Services Payment Cryptography which initiates key export. KRH is the user receiving the key. Before you initiate TR-34 key export, you must obtain an export token by calling [GetParametersForExport]. This operation also returns the signing key certificate that KDH uses to sign the wrapped key to generate a TR-34 wrapped key block. The export token expires after 7 days. Set the following parameters: CertificateAuthorityPublicKeyIdentifier The KeyARN of the certificate chain that will sign the wrapping key certificate. This must exist within Amazon Web Services Payment Cryptography before you initiate TR-34 key export. If it does not exist, you can import it by calling [ImportKey] for RootCertificatePublicKey. ExportToken Obtained from KDH by calling [GetParametersForExport]. WrappingKeyCertificate Amazon Web Services Payment Cryptography uses this to wrap the key under export. When this operation is successful, Amazon Web Services Payment Cryptography returns the TR-34 wrapped key block. TR-31 key export Amazon Web Services Payment Cryptography uses TR-31 symmetric key exchange standard to export working keys. In TR-31, you must use a main key such as KEK to encrypt or wrap the key under export. To establish a KEK, you can use [CreateKey] or [ImportKey]. When this operation is successful, Amazon Web Services Payment Cryptography returns a TR-31 wrapped key block. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: + /// Exports a key from Amazon Web Services Payment Cryptography. Amazon Web Services Payment Cryptography simplifies key exchange by replacing the existing paper-based approach with a modern electronic approach. With ExportKey you can export symmetric keys using either symmetric and asymmetric key exchange mechanisms. Using this operation, you can share your Amazon Web Services Payment Cryptography generated keys with other service partners to perform cryptographic operations outside of Amazon Web Services Payment Cryptography For symmetric key exchange, Amazon Web Services Payment Cryptography uses the ANSI X9 TR-31 norm in accordance with PCI PIN guidelines. And for asymmetric key exchange, Amazon Web Services Payment Cryptography supports ANSI X9 TR-34 norm . Asymmetric key exchange methods are typically used to establish bi-directional trust between the two parties exhanging keys and are used for initial key exchange such as Key Encryption Key (KEK). After which you can export working keys using symmetric method to perform various cryptographic operations within Amazon Web Services Payment Cryptography. The TR-34 norm is intended for exchanging 3DES keys only and keys are imported in a WrappedKeyBlock format. Key attributes (such as KeyUsage, KeyAlgorithm, KeyModesOfUse, Exportability) are contained within the key block. You can also use ExportKey functionality to generate and export an IPEK (Initial Pin Encryption Key) from Amazon Web Services Payment Cryptography using either TR-31 or TR-34 export key exchange. IPEK is generated from BDK (Base Derivation Key) and ExportDukptInitialKey attribute KSN (KeySerialNumber). The generated IPEK does not persist within Amazon Web Services Payment Cryptography and has to be re-generated each time during export. To export KEK or IPEK using TR-34 Using this operation, you can export initial key using TR-34 asymmetric key exchange. You can only export KEK generated within Amazon Web Services Payment Cryptography. In TR-34 terminology, the sending party of the key is called Key Distribution Host (KDH) and the receiving party of the key is called Key Receiving Device (KRD). During key export process, KDH is Amazon Web Services Payment Cryptography which initiates key export and KRD is the user receiving the key. To initiate TR-34 key export, the KRD must obtain an export token by calling [GetParametersForExport]. This operation also generates a key pair for the purpose of key export, signs the key and returns back the signing public key certificate (also known as KDH signing certificate) and root certificate chain. The KDH uses the private key to sign the the export payload and the signing public key certificate is provided to KRD to verify the signature. The KRD can import the root certificate into its Hardware Security Module (HSM), as required. The export token and the associated KDH signing certificate expires after 7 days. Next the KRD generates a key pair for the the purpose of encrypting the KDH key and provides the public key cerificate (also known as KRD wrapping certificate) back to KDH. The KRD will also import the root cerificate chain into Amazon Web Services Payment Cryptography by calling [ImportKey] for RootCertificatePublicKey. The KDH, Amazon Web Services Payment Cryptography, will use the KRD wrapping cerificate to encrypt (wrap) the key under export and signs it with signing private key to generate a TR-34 WrappedKeyBlock. For more information on TR-34 key export, see section [Exporting symmetric keys](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-export.html) in the Amazon Web Services Payment Cryptography User Guide. Set the following parameters: + /// + /// * ExportAttributes: Specify export attributes in case of IPEK export. This parameter is optional for KEK export. + /// + /// * ExportKeyIdentifier: The KeyARN of the KEK or BDK (in case of IPEK) under export. + /// + /// * KeyMaterial: Use Tr34KeyBlock parameters. + /// + /// * CertificateAuthorityPublicKeyIdentifier: The KeyARN of the certificate chain that signed the KRD wrapping key certificate. + /// + /// * ExportToken: Obtained from KDH by calling [GetParametersForImport]. + /// + /// * WrappingKeyCertificate: The public key certificate in PEM format (base64 encoded) of the KRD wrapping key Amazon Web Services Payment Cryptography uses for encryption of the TR-34 export payload. This certificate must be signed by the root certificate (CertificateAuthorityPublicKeyIdentifier) imported into Amazon Web Services Payment Cryptography. + /// + /// + /// When this operation is successful, Amazon Web Services Payment Cryptography returns the KEK or IPEK as a TR-34 WrappedKeyBlock. To export WK (Working Key) or IPEK using TR-31 Using this operation, you can export working keys or IPEK using TR-31 symmetric key exchange. In TR-31, you must use an initial key such as KEK to encrypt or wrap the key under export. To establish a KEK, you can use [CreateKey] or [ImportKey]. Set the following parameters: + /// + /// * ExportAttributes: Specify export attributes in case of IPEK export. This parameter is optional for KEK export. + /// + /// * ExportKeyIdentifier: The KeyARN of the KEK or BDK (in case of IPEK) under export. + /// + /// * KeyMaterial: Use Tr31KeyBlock parameters. + /// + /// + /// When this operation is successful, Amazon Web Services Payment Cryptography returns the WK or IPEK as a TR-31 WrappedKeyBlock. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: /// /// * [GetParametersForExport] /// @@ -209,7 +233,7 @@ public protocol PaymentCryptographyClientProtocol { func getParametersForExport(input: GetParametersForExportInput) async throws -> GetParametersForExportOutput /// Performs the `GetParametersForImport` operation on the `PaymentCryptographyControlPlane` service. /// - /// Gets the import token and the wrapping key certificate to initiate a TR-34 key import into Amazon Web Services Payment Cryptography. The wrapping key certificate wraps the key under import within the TR-34 key payload. The import token and wrapping key certificate must be in place and operational before calling [ImportKey]. The import token expires in 7 days. The same import token can be used to import multiple keys into your service account. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: + /// Gets the import token and the wrapping key certificate in PEM format (base64 encoded) to initiate a TR-34 WrappedKeyBlock. The wrapping key certificate wraps the key under import. The import token and wrapping key certificate must be in place and operational before calling [ImportKey]. The import token expires in 7 days. You can use the same import token to import multiple keys into your service account. Cross-account use: This operation can't be used across different Amazon Web Services accounts. Related operations: /// /// * [GetParametersForExport] /// @@ -251,7 +275,7 @@ public protocol PaymentCryptographyClientProtocol { func getPublicKeyCertificate(input: GetPublicKeyCertificateInput) async throws -> GetPublicKeyCertificateOutput /// Performs the `ImportKey` operation on the `PaymentCryptographyControlPlane` service. /// - /// Imports keys and public key certificates into Amazon Web Services Payment Cryptography. Amazon Web Services Payment Cryptography simplifies main or root key exchange process by eliminating the need of a paper-based key exchange process. It takes a modern and secure approach based of the ANSI X9 TR-34 key exchange standard. You can use ImportKey to import main or root keys such as KEK (Key Encryption Key) using asymmetric key exchange technique following the ANSI X9 TR-34 standard. The ANSI X9 TR-34 standard uses asymmetric keys to establishes bi-directional trust between the two parties exchanging keys. After you have imported a main or root key, you can import working keys to perform various cryptographic operations within Amazon Web Services Payment Cryptography using the ANSI X9 TR-31 symmetric key exchange standard as mandated by PCI PIN. You can also import a root public key certificate, a self-signed certificate used to sign other public key certificates, or a trusted public key certificate under an already established root public key certificate. To import a public root key certificate Using this operation, you can import the public component (in PEM cerificate format) of your private root key. You can use the imported public root key certificate for digital signatures, for example signing wrapping key or signing key in TR-34, within your Amazon Web Services Payment Cryptography account. Set the following parameters: + /// Imports symmetric keys and public key certificates in PEM format (base64 encoded) into Amazon Web Services Payment Cryptography. Amazon Web Services Payment Cryptography simplifies key exchange by replacing the existing paper-based approach with a modern electronic approach. With ImportKey you can import symmetric keys using either symmetric and asymmetric key exchange mechanisms. For symmetric key exchange, Amazon Web Services Payment Cryptography uses the ANSI X9 TR-31 norm in accordance with PCI PIN guidelines. And for asymmetric key exchange, Amazon Web Services Payment Cryptography supports ANSI X9 TR-34 norm . Asymmetric key exchange methods are typically used to establish bi-directional trust between the two parties exhanging keys and are used for initial key exchange such as Key Encryption Key (KEK) or Zone Master Key (ZMK). After which you can import working keys using symmetric method to perform various cryptographic operations within Amazon Web Services Payment Cryptography. The TR-34 norm is intended for exchanging 3DES keys only and keys are imported in a WrappedKeyBlock format. Key attributes (such as KeyUsage, KeyAlgorithm, KeyModesOfUse, Exportability) are contained within the key block. You can also import a root public key certificate, used to sign other public key certificates, or a trusted public key certificate under an already established root public key certificate. To import a public root key certificate You can also import a root public key certificate, used to sign other public key certificates, or a trusted public key certificate under an already established root public key certificate. To import a public root key certificate Using this operation, you can import the public component (in PEM cerificate format) of your private root key. You can use the imported public root key certificate for digital signatures, for example signing wrapping key or signing key in TR-34, within your Amazon Web Services Payment Cryptography account. Set the following parameters: /// /// * KeyMaterial: RootCertificatePublicKey /// @@ -261,7 +285,7 @@ public protocol PaymentCryptographyClientProtocol { /// /// * KeyUsage: TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE /// - /// * PublicKeyCertificate: The certificate authority used to sign the root public key certificate. + /// * PublicKeyCertificate: The public key certificate in PEM format (base64 encoded) of the private root key under import. /// /// /// To import a trusted public key certificate The root public key certificate must be in place and operational before you import a trusted public key certificate. Set the following parameters: @@ -272,23 +296,27 @@ public protocol PaymentCryptographyClientProtocol { /// /// * KeyModesOfUse and KeyUsage: Corresponding to the cryptographic operations such as wrap, sign, or encrypt that you will allow the trusted public key certificate to perform. /// - /// * PublicKeyCertificate: The certificate authority used to sign the trusted public key certificate. + /// * PublicKeyCertificate: The trusted public key certificate in PEM format (base64 encoded) under import. + /// + /// + /// To import KEK or ZMK using TR-34 Using this operation, you can import initial key using TR-34 asymmetric key exchange. In TR-34 terminology, the sending party of the key is called Key Distribution Host (KDH) and the receiving party of the key is called Key Receiving Device (KRD). During the key import process, KDH is the user who initiates the key import and KRD is Amazon Web Services Payment Cryptography who receives the key. To initiate TR-34 key import, the KDH must obtain an import token by calling [GetParametersForImport]. This operation generates an encryption keypair for the purpose of key import, signs the key and returns back the wrapping key certificate (also known as KRD wrapping certificate) and the root certificate chain. The KDH must trust and install the KRD wrapping certificate on its HSM and use it to encrypt (wrap) the KDH key during TR-34 WrappedKeyBlock generation. The import token and associated KRD wrapping certificate expires after 7 days. Next the KDH generates a key pair for the purpose of signing the encrypted KDH key and provides the public certificate of the signing key to Amazon Web Services Payment Cryptography. The KDH will also need to import the root certificate chain of the KDH signing certificate by calling ImportKey for RootCertificatePublicKey. For more information on TR-34 key import, see section [Importing symmetric keys](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/keys-import.html) in the Amazon Web Services Payment Cryptography User Guide. Set the following parameters: /// + /// * KeyMaterial: Use Tr34KeyBlock parameters. /// - /// Import main keys Amazon Web Services Payment Cryptography uses TR-34 asymmetric key exchange standard to import main keys such as KEK. In TR-34 terminology, the sending party of the key is called Key Distribution Host (KDH) and the receiving party of the key is called Key Receiving Host (KRH). During the key import process, KDH is the user who initiates the key import and KRH is Amazon Web Services Payment Cryptography who receives the key. Before initiating TR-34 key import, you must obtain an import token by calling [GetParametersForImport]. This operation also returns the wrapping key certificate that KDH uses wrap key under import to generate a TR-34 wrapped key block. The import token expires after 7 days. Set the following parameters: + /// * CertificateAuthorityPublicKeyIdentifier: The KeyARN of the certificate chain that signed the KDH signing key certificate. /// - /// * CertificateAuthorityPublicKeyIdentifier: The KeyArn of the certificate chain that will sign the signing key certificate and should exist within Amazon Web Services Payment Cryptography before initiating TR-34 key import. If it does not exist, you can import it by calling by calling ImportKey for RootCertificatePublicKey. + /// * ImportToken: Obtained from KRD by calling [GetParametersForImport]. /// - /// * ImportToken: Obtained from KRH by calling [GetParametersForImport]. + /// * WrappedKeyBlock: The TR-34 wrapped key material from KDH. It contains the KDH key under import, wrapped with KRD wrapping certificate and signed by KDH signing private key. This TR-34 key block is typically generated by the KDH Hardware Security Module (HSM) outside of Amazon Web Services Payment Cryptography. /// - /// * WrappedKeyBlock: The TR-34 wrapped key block from KDH. It contains the KDH key under import, wrapped with KRH provided wrapping key certificate and signed by the KDH private signing key. This TR-34 key block is generated by the KDH Hardware Security Module (HSM) outside of Amazon Web Services Payment Cryptography. + /// * SigningKeyCertificate: The public key certificate in PEM format (base64 encoded) of the KDH signing key generated under the root certificate (CertificateAuthorityPublicKeyIdentifier) imported in Amazon Web Services Payment Cryptography. /// - /// * SigningKeyCertificate: The public component of the private key that signed the KDH TR-34 wrapped key block. In PEM certificate format. /// + /// To import WK (Working Key) using TR-31 Amazon Web Services Payment Cryptography uses TR-31 symmetric key exchange norm to import working keys. A KEK must be established within Amazon Web Services Payment Cryptography by using TR-34 key import or by using [CreateKey]. To initiate a TR-31 key import, set the following parameters: /// - /// TR-34 is intended primarily to exchange 3DES keys. Your ability to export AES-128 and larger AES keys may be dependent on your source system. Import working keys Amazon Web Services Payment Cryptography uses TR-31 symmetric key exchange standard to import working keys. A KEK must be established within Amazon Web Services Payment Cryptography by using TR-34 key import. To initiate a TR-31 key import, set the following parameters: + /// * KeyMaterial: Use Tr31KeyBlock parameters. /// - /// * WrappedKeyBlock: The key under import and encrypted using KEK. The TR-31 key block generated by your HSM outside of Amazon Web Services Payment Cryptography. + /// * WrappedKeyBlock: The TR-31 wrapped key material. It contains the key under import, encrypted using KEK. The TR-31 key block is typically generated by a HSM outside of Amazon Web Services Payment Cryptography. /// /// * WrappingKeyIdentifier: The KeyArn of the KEK that Amazon Web Services Payment Cryptography uses to decrypt or unwrap the key under import. /// diff --git a/Sources/Services/AWSPaymentCryptography/models/Models.swift b/Sources/Services/AWSPaymentCryptography/models/Models.swift index afc9ef3cc78..d07e4ba3bd9 100644 --- a/Sources/Services/AWSPaymentCryptography/models/Models.swift +++ b/Sources/Services/AWSPaymentCryptography/models/Models.swift @@ -182,7 +182,7 @@ extension CreateAliasInput: ClientRuntime.URLPathProvider { } public struct CreateAliasInput: Swift.Equatable { - /// A friendly name that you can use to refer a key. An alias must begin with alias/ followed by a name, for example alias/ExampleAlias. It can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). Don't include confidential or sensitive information in this field. This field may be displayed in plaintext in CloudTrail logs and other output. + /// A friendly name that you can use to refer to a key. An alias must begin with alias/ followed by a name, for example alias/ExampleAlias. It can contain only alphanumeric characters, forward slashes (/), underscores (_), and dashes (-). Don't include personal, confidential or sensitive information in this field. This field may be displayed in plaintext in CloudTrail logs and other output. /// This member is required. public var aliasName: Swift.String? /// The KeyARN of the key to associate with the alias. @@ -316,7 +316,7 @@ extension CreateKeyInput: ClientRuntime.URLPathProvider { } public struct CreateKeyInput: Swift.Equatable { - /// Specifies whether to enable the key. If the key is enabled, it is activated for use within the service. If the key not enabled, then it is created but not activated. The default value is enabled. + /// Specifies whether to enable the key. If the key is enabled, it is activated for use within the service. If the key is not enabled, then it is created but not activated. The default value is enabled. public var enabled: Swift.Bool? /// Specifies whether the key is exportable from the service. /// This member is required. @@ -324,9 +324,9 @@ public struct CreateKeyInput: Swift.Equatable { /// The role of the key, the algorithm it supports, and the cryptographic operations allowed with the key. This data is immutable after the key is created. /// This member is required. public var keyAttributes: PaymentCryptographyClientTypes.KeyAttributes? - /// The algorithm that Amazon Web Services Payment Cryptography uses to calculate the key check value (KCV) for DES and AES keys. For DES key, the KCV is computed by encrypting 8 bytes, each with value '00', with the key to be checked and retaining the 3 highest order bytes of the encrypted result. For AES key, the KCV is computed by encrypting 8 bytes, each with value '01', with the key to be checked and retaining the 3 highest order bytes of the encrypted result. + /// The algorithm that Amazon Web Services Payment Cryptography uses to calculate the key check value (KCV). It is used to validate the key integrity. For TDES keys, the KCV is computed by encrypting 8 bytes, each with value of zero, with the key to be checked and retaining the 3 highest order bytes of the encrypted result. For AES keys, the KCV is computed using a CMAC algorithm where the input data is 16 bytes of zero and retaining the 3 highest order bytes of the encrypted result. public var keyCheckValueAlgorithm: PaymentCryptographyClientTypes.KeyCheckValueAlgorithm? - /// The tags to attach to the key. Each tag consists of a tag key and a tag value. Both the tag key and the tag value are required, but the tag value can be an empty (null) string. You can't have more than one tag on an Amazon Web Services Payment Cryptography key with the same tag key. To use this parameter, you must have TagResource permission. Don't include confidential or sensitive information in this field. This field may be displayed in plaintext in CloudTrail logs and other output. Tagging or untagging an Amazon Web Services Payment Cryptography key can allow or deny permission to the key. + /// Assigns one or more tags to the Amazon Web Services Payment Cryptography key. Use this parameter to tag a key when it is created. To tag an existing Amazon Web Services Payment Cryptography key, use the [TagResource] operation. Each tag consists of a tag key and a tag value. Both the tag key and the tag value are required, but the tag value can be an empty (null) string. You can't have more than one tag on an Amazon Web Services Payment Cryptography key with the same tag key. Don't include personal, confidential or sensitive information in this field. This field may be displayed in plaintext in CloudTrail logs and other output. Tagging or untagging an Amazon Web Services Payment Cryptography key can allow or deny permission to the key. public var tags: [PaymentCryptographyClientTypes.Tag]? public init( @@ -638,14 +638,99 @@ enum DeleteKeyOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension PaymentCryptographyClientTypes.ExportAttributes: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case exportDukptInitialKey = "ExportDukptInitialKey" + case keyCheckValueAlgorithm = "KeyCheckValueAlgorithm" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let exportDukptInitialKey = self.exportDukptInitialKey { + try encodeContainer.encode(exportDukptInitialKey, forKey: .exportDukptInitialKey) + } + if let keyCheckValueAlgorithm = self.keyCheckValueAlgorithm { + try encodeContainer.encode(keyCheckValueAlgorithm.rawValue, forKey: .keyCheckValueAlgorithm) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let exportDukptInitialKeyDecoded = try containerValues.decodeIfPresent(PaymentCryptographyClientTypes.ExportDukptInitialKey.self, forKey: .exportDukptInitialKey) + exportDukptInitialKey = exportDukptInitialKeyDecoded + let keyCheckValueAlgorithmDecoded = try containerValues.decodeIfPresent(PaymentCryptographyClientTypes.KeyCheckValueAlgorithm.self, forKey: .keyCheckValueAlgorithm) + keyCheckValueAlgorithm = keyCheckValueAlgorithmDecoded + } +} + +extension PaymentCryptographyClientTypes { + /// The attributes for IPEK generation during export. + public struct ExportAttributes: Swift.Equatable { + /// Parameter information for IPEK export. + public var exportDukptInitialKey: PaymentCryptographyClientTypes.ExportDukptInitialKey? + /// The algorithm that Amazon Web Services Payment Cryptography uses to calculate the key check value (KCV). It is used to validate the key integrity. Specify KCV for IPEK export only. For TDES keys, the KCV is computed by encrypting 8 bytes, each with value of zero, with the key to be checked and retaining the 3 highest order bytes of the encrypted result. For AES keys, the KCV is computed using a CMAC algorithm where the input data is 16 bytes of zero and retaining the 3 highest order bytes of the encrypted result. + public var keyCheckValueAlgorithm: PaymentCryptographyClientTypes.KeyCheckValueAlgorithm? + + public init( + exportDukptInitialKey: PaymentCryptographyClientTypes.ExportDukptInitialKey? = nil, + keyCheckValueAlgorithm: PaymentCryptographyClientTypes.KeyCheckValueAlgorithm? = nil + ) + { + self.exportDukptInitialKey = exportDukptInitialKey + self.keyCheckValueAlgorithm = keyCheckValueAlgorithm + } + } + +} + +extension PaymentCryptographyClientTypes.ExportDukptInitialKey: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case keySerialNumber = "KeySerialNumber" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let keySerialNumber = self.keySerialNumber { + try encodeContainer.encode(keySerialNumber, forKey: .keySerialNumber) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let keySerialNumberDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .keySerialNumber) + keySerialNumber = keySerialNumberDecoded + } +} + +extension PaymentCryptographyClientTypes { + /// Parameter information for IPEK generation during export. + public struct ExportDukptInitialKey: Swift.Equatable { + /// The KSN for IPEK generation using DUKPT. KSN must be padded before sending to Amazon Web Services Payment Cryptography. KSN hex length should be 20 for a TDES_2KEY key or 24 for an AES key. + /// This member is required. + public var keySerialNumber: Swift.String? + + public init( + keySerialNumber: Swift.String? = nil + ) + { + self.keySerialNumber = keySerialNumber + } + } + +} + extension ExportKeyInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case exportAttributes = "ExportAttributes" case exportKeyIdentifier = "ExportKeyIdentifier" case keyMaterial = "KeyMaterial" } public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let exportAttributes = self.exportAttributes { + try encodeContainer.encode(exportAttributes, forKey: .exportAttributes) + } if let exportKeyIdentifier = self.exportKeyIdentifier { try encodeContainer.encode(exportKeyIdentifier, forKey: .exportKeyIdentifier) } @@ -662,6 +747,8 @@ extension ExportKeyInput: ClientRuntime.URLPathProvider { } public struct ExportKeyInput: Swift.Equatable { + /// The attributes for IPEK generation during export. + public var exportAttributes: PaymentCryptographyClientTypes.ExportAttributes? /// The KeyARN of the key under export from Amazon Web Services Payment Cryptography. /// This member is required. public var exportKeyIdentifier: Swift.String? @@ -670,10 +757,12 @@ public struct ExportKeyInput: Swift.Equatable { public var keyMaterial: PaymentCryptographyClientTypes.ExportKeyMaterial? public init( + exportAttributes: PaymentCryptographyClientTypes.ExportAttributes? = nil, exportKeyIdentifier: Swift.String? = nil, keyMaterial: PaymentCryptographyClientTypes.ExportKeyMaterial? = nil ) { + self.exportAttributes = exportAttributes self.exportKeyIdentifier = exportKeyIdentifier self.keyMaterial = keyMaterial } @@ -682,10 +771,12 @@ public struct ExportKeyInput: Swift.Equatable { struct ExportKeyInputBody: Swift.Equatable { let keyMaterial: PaymentCryptographyClientTypes.ExportKeyMaterial? let exportKeyIdentifier: Swift.String? + let exportAttributes: PaymentCryptographyClientTypes.ExportAttributes? } extension ExportKeyInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { + case exportAttributes = "ExportAttributes" case exportKeyIdentifier = "ExportKeyIdentifier" case keyMaterial = "KeyMaterial" } @@ -696,6 +787,8 @@ extension ExportKeyInputBody: Swift.Decodable { keyMaterial = keyMaterialDecoded let exportKeyIdentifierDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .exportKeyIdentifier) exportKeyIdentifier = exportKeyIdentifierDecoded + let exportAttributesDecoded = try containerValues.decodeIfPresent(PaymentCryptographyClientTypes.ExportAttributes.self, forKey: .exportAttributes) + exportAttributes = exportAttributesDecoded } } @@ -735,11 +828,11 @@ extension PaymentCryptographyClientTypes.ExportKeyMaterial: Swift.Codable { } extension PaymentCryptographyClientTypes { - /// Parameter information for key material export from Amazon Web Services Payment Cryptography. + /// Parameter information for key material export from Amazon Web Services Payment Cryptography using TR-31 or TR-34 key exchange method. public enum ExportKeyMaterial: Swift.Equatable { - /// Parameter information for key material export using TR-31 standard. + /// Parameter information for key material export using symmetric TR-31 key exchange method. case tr31keyblock(PaymentCryptographyClientTypes.ExportTr31KeyBlock) - /// Parameter information for key material export using TR-34 standard. + /// Parameter information for key material export using the asymmetric TR-34 key exchange method. case tr34keyblock(PaymentCryptographyClientTypes.ExportTr34KeyBlock) case sdkUnknown(Swift.String) } @@ -759,7 +852,7 @@ extension ExportKeyOutput: ClientRuntime.HttpResponseBinding { } public struct ExportKeyOutput: Swift.Equatable { - /// The key material under export as a TR-34 or TR-31 wrapped key block. + /// The key material under export as a TR-34 WrappedKeyBlock or a TR-31 WrappedKeyBlock. public var wrappedKey: PaymentCryptographyClientTypes.WrappedKey? public init( @@ -823,7 +916,7 @@ extension PaymentCryptographyClientTypes.ExportTr31KeyBlock: Swift.Codable { } extension PaymentCryptographyClientTypes { - /// Parameter information for key material export using TR-31 standard. + /// Parameter information for key material export using symmetric TR-31 key exchange method. public struct ExportTr31KeyBlock: Swift.Equatable { /// The KeyARN of the the wrapping key. This key encrypts or wraps the key under export for TR-31 key block generation. /// This member is required. @@ -888,7 +981,7 @@ extension PaymentCryptographyClientTypes.ExportTr34KeyBlock: Swift.CustomDebugSt } extension PaymentCryptographyClientTypes { - /// Parameter information for key material export using TR-34 standard. + /// Parameter information for key material export using the asymmetric TR-34 key exchange method. public struct ExportTr34KeyBlock: Swift.Equatable { /// The KeyARN of the certificate chain that signs the wrapping key certificate during TR-34 key export. /// This member is required. @@ -1160,7 +1253,7 @@ public struct GetParametersForExportInput: Swift.Equatable { /// The key block format type (for example, TR-34 or TR-31) to use during key material export. Export token is only required for a TR-34 key export, TR34_KEY_BLOCK. Export token is not required for TR-31 key export. /// This member is required. public var keyMaterialType: PaymentCryptographyClientTypes.KeyMaterialType? - /// The signing key algorithm to generate a signing key certificate. This certificate signs the wrapped key under export within the TR-34 key block cryptogram. RSA_2048 is the only signing key algorithm allowed. + /// The signing key algorithm to generate a signing key certificate. This certificate signs the wrapped key under export within the TR-34 key block. RSA_2048 is the only signing key algorithm allowed. /// This member is required. public var signingKeyAlgorithm: PaymentCryptographyClientTypes.KeyAlgorithm? @@ -1229,10 +1322,10 @@ public struct GetParametersForExportOutput: Swift.Equatable { /// The algorithm of the signing key certificate for use in TR-34 key block generation. RSA_2048 is the only signing key algorithm allowed. /// This member is required. public var signingKeyAlgorithm: PaymentCryptographyClientTypes.KeyAlgorithm? - /// The signing key certificate of the public key for signature within the TR-34 key block cryptogram. The certificate expires after 7 days. + /// The signing key certificate in PEM format (base64 encoded) of the public key for signature within the TR-34 key block. The certificate expires after 7 days. /// This member is required. public var signingKeyCertificate: Swift.String? - /// The certificate chain that signed the signing key certificate. This is the root certificate authority (CA) within your service account. + /// The root certificate authority (CA) that signed the signing key certificate in PEM format (base64 encoded). /// This member is required. public var signingKeyCertificateChain: Swift.String? @@ -1326,10 +1419,10 @@ extension GetParametersForImportInput: ClientRuntime.URLPathProvider { } public struct GetParametersForImportInput: Swift.Equatable { - /// The key block format type such as TR-34 or TR-31 to use during key material import. Import token is only required for TR-34 key import TR34_KEY_BLOCK. Import token is not required for TR-31 key import. + /// The method to use for key material import. Import token is only required for TR-34 WrappedKeyBlock (TR34_KEY_BLOCK). Import token is not required for TR-31, root public key cerificate or trusted public key certificate. /// This member is required. public var keyMaterialType: PaymentCryptographyClientTypes.KeyMaterialType? - /// The wrapping key algorithm to generate a wrapping key certificate. This certificate wraps the key under import within the TR-34 key block cryptogram. RSA_2048 is the only wrapping key algorithm allowed. + /// The wrapping key algorithm to generate a wrapping key certificate. This certificate wraps the key under import. At this time, RSA_2048, RSA_3072, RSA_4096 are the only allowed algorithms for TR-34 WrappedKeyBlock import. /// This member is required. public var wrappingKeyAlgorithm: PaymentCryptographyClientTypes.KeyAlgorithm? @@ -1395,13 +1488,13 @@ public struct GetParametersForImportOutput: Swift.Equatable { /// The validity period of the import token. /// This member is required. public var parametersValidUntilTimestamp: ClientRuntime.Date? - /// The algorithm of the wrapping key for use within TR-34 key block. RSA_2048 is the only wrapping key algorithm allowed. + /// The algorithm of the wrapping key for use within TR-34 WrappedKeyBlock. /// This member is required. public var wrappingKeyAlgorithm: PaymentCryptographyClientTypes.KeyAlgorithm? - /// The wrapping key certificate of the wrapping key for use within the TR-34 key block. The certificate expires in 7 days. + /// The wrapping key certificate in PEM format (base64 encoded) of the wrapping key for use within the TR-34 key block. The certificate expires in 7 days. /// This member is required. public var wrappingKeyCertificate: Swift.String? - /// The Amazon Web Services Payment Cryptography certificate chain that signed the wrapping key certificate. This is the root certificate authority (CA) within your service account. + /// The Amazon Web Services Payment Cryptography root certificate authority (CA) that signed the wrapping key certificate in PEM format (base64 encoded). /// This member is required. public var wrappingKeyCertificateChain: Swift.String? @@ -1539,10 +1632,10 @@ extension GetPublicKeyCertificateOutput: ClientRuntime.HttpResponseBinding { } public struct GetPublicKeyCertificateOutput: Swift.Equatable { - /// The public key component of the asymmetric key pair in a certificate (PEM) format. It is signed by the root certificate authority (CA) within your service account. The certificate expires in 90 days. + /// The public key component of the asymmetric key pair in a certificate PEM format (base64 encoded). It is signed by the root certificate authority (CA). The certificate expires in 90 days. /// This member is required. public var keyCertificate: Swift.String? - /// The certificate chain that signed the public key certificate of the asymmetric key pair. This is the root certificate authority (CA) within your service account. + /// The root certificate authority (CA) that signed the public key certificate in PEM format (base64 encoded) of the asymmetric key pair. /// This member is required. public var keyCertificateChain: Swift.String? @@ -1629,12 +1722,12 @@ extension ImportKeyInput: ClientRuntime.URLPathProvider { public struct ImportKeyInput: Swift.Equatable { /// Specifies whether import key is enabled. public var enabled: Swift.Bool? - /// The algorithm that Amazon Web Services Payment Cryptography uses to calculate the key check value (KCV) for DES and AES keys. For DES key, the KCV is computed by encrypting 8 bytes, each with value '00', with the key to be checked and retaining the 3 highest order bytes of the encrypted result. For AES key, the KCV is computed by encrypting 8 bytes, each with value '01', with the key to be checked and retaining the 3 highest order bytes of the encrypted result. + /// The algorithm that Amazon Web Services Payment Cryptography uses to calculate the key check value (KCV). It is used to validate the key integrity. For TDES keys, the KCV is computed by encrypting 8 bytes, each with value of zero, with the key to be checked and retaining the 3 highest order bytes of the encrypted result. For AES keys, the KCV is computed using a CMAC algorithm where the input data is 16 bytes of zero and retaining the 3 highest order bytes of the encrypted result. public var keyCheckValueAlgorithm: PaymentCryptographyClientTypes.KeyCheckValueAlgorithm? /// The key or public key certificate type to use during key material import, for example TR-34 or RootCertificatePublicKey. /// This member is required. public var keyMaterial: PaymentCryptographyClientTypes.ImportKeyMaterial? - /// The tags to attach to the key. Each tag consists of a tag key and a tag value. Both the tag key and the tag value are required, but the tag value can be an empty (null) string. You can't have more than one tag on an Amazon Web Services Payment Cryptography key with the same tag key. You can't have more than one tag on an Amazon Web Services Payment Cryptography key with the same tag key. If you specify an existing tag key with a different tag value, Amazon Web Services Payment Cryptography replaces the current tag value with the specified one. To use this parameter, you must have TagResource permission. Don't include confidential or sensitive information in this field. This field may be displayed in plaintext in CloudTrail logs and other output. Tagging or untagging an Amazon Web Services Payment Cryptography key can allow or deny permission to the key. + /// Assigns one or more tags to the Amazon Web Services Payment Cryptography key. Use this parameter to tag a key when it is imported. To tag an existing Amazon Web Services Payment Cryptography key, use the [TagResource] operation. Each tag consists of a tag key and a tag value. Both the tag key and the tag value are required, but the tag value can be an empty (null) string. You can't have more than one tag on an Amazon Web Services Payment Cryptography key with the same tag key. If you specify an existing tag key with a different tag value, Amazon Web Services Payment Cryptography replaces the current tag value with the specified one. Don't include personal, confidential or sensitive information in this field. This field may be displayed in plaintext in CloudTrail logs and other output. Tagging or untagging an Amazon Web Services Payment Cryptography key can allow or deny permission to the key. public var tags: [PaymentCryptographyClientTypes.Tag]? public init( @@ -1740,15 +1833,15 @@ extension PaymentCryptographyClientTypes.ImportKeyMaterial: Swift.Codable { } extension PaymentCryptographyClientTypes { - /// Parameter information for key material import. + /// Parameter information for key material import into Amazon Web Services Payment Cryptography using TR-31 or TR-34 key exchange method. public enum ImportKeyMaterial: Swift.Equatable { /// Parameter information for root public key certificate import. case rootcertificatepublickey(PaymentCryptographyClientTypes.RootCertificatePublicKey) /// Parameter information for trusted public key certificate import. case trustedcertificatepublickey(PaymentCryptographyClientTypes.TrustedCertificatePublicKey) - /// Parameter information for key material import using TR-31 standard. + /// Parameter information for key material import using symmetric TR-31 key exchange method. case tr31keyblock(PaymentCryptographyClientTypes.ImportTr31KeyBlock) - /// Parameter information for key material import using TR-34 standard. + /// Parameter information for key material import using the asymmetric TR-34 key exchange method. case tr34keyblock(PaymentCryptographyClientTypes.ImportTr34KeyBlock) case sdkUnknown(Swift.String) } @@ -1840,9 +1933,9 @@ extension PaymentCryptographyClientTypes.ImportTr31KeyBlock: Swift.Codable { } extension PaymentCryptographyClientTypes { - /// Parameter information for key material import using TR-31 standard. + /// Parameter information for key material import using symmetric TR-31 key exchange method. public struct ImportTr31KeyBlock: Swift.Equatable { - /// The TR-34 wrapped key block to import. + /// The TR-31 wrapped key block to import. /// This member is required. public var wrappedKeyBlock: Swift.String? /// The KeyARN of the key that will decrypt or unwrap a TR-31 key block during import. @@ -1916,12 +2009,12 @@ extension PaymentCryptographyClientTypes.ImportTr34KeyBlock: Swift.CustomDebugSt } extension PaymentCryptographyClientTypes { - /// Parameter information for key material import using TR-34 standard. + /// Parameter information for key material import using the asymmetric TR-34 key exchange method. public struct ImportTr34KeyBlock: Swift.Equatable { /// The KeyARN of the certificate chain that signs the signing key certificate during TR-34 key import. /// This member is required. public var certificateAuthorityPublicKeyIdentifier: Swift.String? - /// The import token that initiates key import into Amazon Web Services Payment Cryptography. It expires after 7 days. You can use the same import token to import multiple keys to the same service account. + /// The import token that initiates key import using the asymmetric TR-34 key exchange method into Amazon Web Services Payment Cryptography. It expires after 7 days. You can use the same import token to import multiple keys to the same service account. /// This member is required. public var importToken: Swift.String? /// The key block format to use during key import. The only value allowed is X9_TR34_2012. @@ -1929,7 +2022,7 @@ extension PaymentCryptographyClientTypes { public var keyBlockFormat: PaymentCryptographyClientTypes.Tr34KeyBlockFormat? /// A random number value that is unique to the TR-34 key block generated using 2 pass. The operation will fail, if a random nonce value is not provided for a TR-34 key block generated using 2 pass. public var randomNonce: Swift.String? - /// The public key component in PEM certificate format of the private key that signs the KDH TR-34 wrapped key block. + /// The public key component in PEM certificate format of the private key that signs the KDH TR-34 WrappedKeyBlock. /// This member is required. public var signingKeyCertificate: Swift.String? /// The TR-34 wrapped key block to import. @@ -2124,10 +2217,10 @@ extension PaymentCryptographyClientTypes { /// The role of the key, the algorithm it supports, and the cryptographic operations allowed with the key. This data is immutable after the key is created. /// This member is required. public var keyAttributes: PaymentCryptographyClientTypes.KeyAttributes? - /// The key check value (KCV) is used to check if all parties holding a given key have the same key or to detect that a key has changed. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram. + /// The key check value (KCV) is used to check if all parties holding a given key have the same key or to detect that a key has changed. /// This member is required. public var keyCheckValue: Swift.String? - /// The algorithm used for calculating key check value (KCV) for DES and AES keys. For a DES key, Amazon Web Services Payment Cryptography computes the KCV by encrypting 8 bytes, each with value '00', with the key to be checked and retaining the 3 highest order bytes of the encrypted result. For an AES key, Amazon Web Services Payment Cryptography computes the KCV by encrypting 8 bytes, each with value '01', with the key to be checked and retaining the 3 highest order bytes of the encrypted result. + /// The algorithm that Amazon Web Services Payment Cryptography uses to calculate the key check value (KCV). It is used to validate the key integrity. For TDES keys, the KCV is computed by encrypting 8 bytes, each with value of zero, with the key to be checked and retaining the 3 highest order bytes of the encrypted result. For AES keys, the KCV is computed using a CMAC algorithm where the input data is 16 bytes of zero and retaining the 3 highest order bytes of the encrypted result. /// This member is required. public var keyCheckValueAlgorithm: PaymentCryptographyClientTypes.KeyCheckValueAlgorithm? /// The source of the key material. For keys created within Amazon Web Services Payment Cryptography, the value is AWS_PAYMENT_CRYPTOGRAPHY. For keys imported into Amazon Web Services Payment Cryptography, the value is EXTERNAL. @@ -2653,7 +2746,7 @@ extension PaymentCryptographyClientTypes { /// The role of the key, the algorithm it supports, and the cryptographic operations allowed with the key. This data is immutable after the key is created. /// This member is required. public var keyAttributes: PaymentCryptographyClientTypes.KeyAttributes? - /// The key check value (KCV) is used to check if all parties holding a given key have the same key or to detect that a key has changed. Amazon Web Services Payment Cryptography calculates the KCV by using standard algorithms, typically by encrypting 8 or 16 bytes or "00" or "01" and then truncating the result to the first 3 bytes, or 6 hex digits, of the resulting cryptogram. + /// The key check value (KCV) is used to check if all parties holding a given key have the same key or to detect that a key has changed. /// This member is required. public var keyCheckValue: Swift.String? /// The state of an Amazon Web Services Payment Cryptography that is being created or deleted. @@ -2937,7 +3030,7 @@ extension ListKeysInput: ClientRuntime.URLPathProvider { public struct ListKeysInput: Swift.Equatable { /// The key state of the keys you want to list. public var keyState: PaymentCryptographyClientTypes.KeyState? - /// Use this parameter to specify the maximum number of items to return. When this value is present, Amazon Web Services Payment Cryptography does not return more than the specified number of items, but it might return fewer. + /// Use this parameter to specify the maximum number of items to return. When this value is present, Amazon Web Services Payment Cryptography does not return more than the specified number of items, but it might return fewer. This value is optional. If you include a value, it must be between 1 and 100, inclusive. If you do not include a value, it defaults to 50. public var maxResults: Swift.Int? /// Use this parameter in a subsequent request after you receive a response with truncated results. Set it to the value of NextToken from the truncated response you just received. public var nextToken: Swift.String? @@ -3082,7 +3175,7 @@ extension ListTagsForResourceInput: ClientRuntime.URLPathProvider { } public struct ListTagsForResourceInput: Swift.Equatable { - /// Use this parameter to specify the maximum number of items to return. When this value is present, Amazon Web Services Payment Cryptography does not return more than the specified number of items, but it might return fewer. + /// Use this parameter to specify the maximum number of items to return. When this value is present, Amazon Web Services Payment Cryptography does not return more than the specified number of items, but it might return fewer. This value is optional. If you include a value, it must be between 1 and 100, inclusive. If you do not include a value, it defaults to 50. public var maxResults: Swift.Int? /// Use this parameter in a subsequent request after you receive a response with truncated results. Set it to the value of NextToken from the truncated response you just received. public var nextToken: Swift.String? @@ -3817,7 +3910,7 @@ public struct TagResourceInput: Swift.Equatable { /// The KeyARN of the key whose tags are being updated. /// This member is required. public var resourceArn: Swift.String? - /// One or more tags. Each tag consists of a tag key and a tag value. The tag value can be an empty (null) string. You can't have more than one tag on an Amazon Web Services Payment Cryptography key with the same tag key. If you specify an existing tag key with a different tag value, Amazon Web Services Payment Cryptography replaces the current tag value with the new one. Don't include confidential or sensitive information in this field. This field may be displayed in plaintext in CloudTrail logs and other output. To use this parameter, you must have [TagResource] permission in an IAM policy. Don't include confidential or sensitive information in this field. This field may be displayed in plaintext in CloudTrail logs and other output. + /// One or more tags. Each tag consists of a tag key and a tag value. The tag value can be an empty (null) string. You can't have more than one tag on an Amazon Web Services Payment Cryptography key with the same tag key. If you specify an existing tag key with a different tag value, Amazon Web Services Payment Cryptography replaces the current tag value with the new one. Don't include personal, confidential or sensitive information in this field. This field may be displayed in plaintext in CloudTrail logs and other output. To use this parameter, you must have [TagResource] permission in an IAM policy. Don't include personal, confidential or sensitive information in this field. This field may be displayed in plaintext in CloudTrail logs and other output. /// This member is required. public var tags: [PaymentCryptographyClientTypes.Tag]? @@ -4310,6 +4403,8 @@ extension ValidationExceptionBody: Swift.Decodable { extension PaymentCryptographyClientTypes.WrappedKey: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { + case keyCheckValue = "KeyCheckValue" + case keyCheckValueAlgorithm = "KeyCheckValueAlgorithm" case keyMaterial = "KeyMaterial" case wrappedKeyMaterialFormat = "WrappedKeyMaterialFormat" case wrappingKeyArn = "WrappingKeyArn" @@ -4317,6 +4412,12 @@ extension PaymentCryptographyClientTypes.WrappedKey: Swift.Codable { public func encode(to encoder: Swift.Encoder) throws { var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let keyCheckValue = self.keyCheckValue { + try encodeContainer.encode(keyCheckValue, forKey: .keyCheckValue) + } + if let keyCheckValueAlgorithm = self.keyCheckValueAlgorithm { + try encodeContainer.encode(keyCheckValueAlgorithm.rawValue, forKey: .keyCheckValueAlgorithm) + } if let keyMaterial = self.keyMaterial { try encodeContainer.encode(keyMaterial, forKey: .keyMaterial) } @@ -4336,18 +4437,26 @@ extension PaymentCryptographyClientTypes.WrappedKey: Swift.Codable { wrappedKeyMaterialFormat = wrappedKeyMaterialFormatDecoded let keyMaterialDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .keyMaterial) keyMaterial = keyMaterialDecoded + let keyCheckValueDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .keyCheckValue) + keyCheckValue = keyCheckValueDecoded + let keyCheckValueAlgorithmDecoded = try containerValues.decodeIfPresent(PaymentCryptographyClientTypes.KeyCheckValueAlgorithm.self, forKey: .keyCheckValueAlgorithm) + keyCheckValueAlgorithm = keyCheckValueAlgorithmDecoded } } extension PaymentCryptographyClientTypes.WrappedKey: Swift.CustomDebugStringConvertible { public var debugDescription: Swift.String { - "WrappedKey(wrappedKeyMaterialFormat: \(Swift.String(describing: wrappedKeyMaterialFormat)), wrappingKeyArn: \(Swift.String(describing: wrappingKeyArn)), keyMaterial: \"CONTENT_REDACTED\")"} + "WrappedKey(keyCheckValue: \(Swift.String(describing: keyCheckValue)), keyCheckValueAlgorithm: \(Swift.String(describing: keyCheckValueAlgorithm)), wrappedKeyMaterialFormat: \(Swift.String(describing: wrappedKeyMaterialFormat)), wrappingKeyArn: \(Swift.String(describing: wrappingKeyArn)), keyMaterial: \"CONTENT_REDACTED\")"} } extension PaymentCryptographyClientTypes { - /// Parameter information for generating a wrapped key using TR-31 or TR-34 standard. + /// Parameter information for generating a WrappedKeyBlock for key exchange. public struct WrappedKey: Swift.Equatable { - /// Parameter information for generating a wrapped key using TR-31 or TR-34 standard. + /// The key check value (KCV) is used to check if all parties holding a given key have the same key or to detect that a key has changed. + public var keyCheckValue: Swift.String? + /// The algorithm that Amazon Web Services Payment Cryptography uses to calculate the key check value (KCV). It is used to validate the key integrity. For TDES keys, the KCV is computed by encrypting 8 bytes, each with value of zero, with the key to be checked and retaining the 3 highest order bytes of the encrypted result. For AES keys, the KCV is computed using a CMAC algorithm where the input data is 16 bytes of zero and retaining the 3 highest order bytes of the encrypted result. + public var keyCheckValueAlgorithm: PaymentCryptographyClientTypes.KeyCheckValueAlgorithm? + /// Parameter information for generating a wrapped key using TR-31 or TR-34 skey exchange method. /// This member is required. public var keyMaterial: Swift.String? /// The key block format of a wrapped key. @@ -4358,11 +4467,15 @@ extension PaymentCryptographyClientTypes { public var wrappingKeyArn: Swift.String? public init( + keyCheckValue: Swift.String? = nil, + keyCheckValueAlgorithm: PaymentCryptographyClientTypes.KeyCheckValueAlgorithm? = nil, keyMaterial: Swift.String? = nil, wrappedKeyMaterialFormat: PaymentCryptographyClientTypes.WrappedKeyMaterialFormat? = nil, wrappingKeyArn: Swift.String? = nil ) { + self.keyCheckValue = keyCheckValue + self.keyCheckValueAlgorithm = keyCheckValueAlgorithm self.keyMaterial = keyMaterial self.wrappedKeyMaterialFormat = wrappedKeyMaterialFormat self.wrappingKeyArn = wrappingKeyArn diff --git a/Sources/Services/AWSPinpoint/models/Models.swift b/Sources/Services/AWSPinpoint/models/Models.swift index 6470e31686f..9e24366f565 100644 --- a/Sources/Services/AWSPinpoint/models/Models.swift +++ b/Sources/Services/AWSPinpoint/models/Models.swift @@ -4035,7 +4035,7 @@ extension PinpointClientTypes { public var daily: Swift.Int? /// The maximum amount of time, in seconds, that a campaign can attempt to deliver a message after the scheduled start time for the campaign. The minimum value is 60 seconds. public var maximumDuration: Swift.Int? - /// The maximum number of messages that a campaign can send each second. For an application, this value specifies the default limit for the number of messages that campaigns can send each second. The minimum value is 50. The maximum value is 20,000. + /// The maximum number of messages that a campaign can send each second. For an application, this value specifies the default limit for the number of messages that campaigns can send each second. The minimum value is 1. The maximum value is 20,000. public var messagesPerSecond: Swift.Int? /// The maximum total number of messages that the campaign can send per user session. public var session: Swift.Int? diff --git a/Sources/Services/AWSQuickSight/QuickSightClient.swift b/Sources/Services/AWSQuickSight/QuickSightClient.swift index dfcce356cd2..f50eaab3de3 100644 --- a/Sources/Services/AWSQuickSight/QuickSightClient.swift +++ b/Sources/Services/AWSQuickSight/QuickSightClient.swift @@ -171,7 +171,7 @@ extension QuickSightClient: QuickSightClientProtocol { /// Performs the `CreateAccountSubscription` operation on the `QuickSight_20180401` service. /// - /// Creates an Amazon QuickSight account, or subscribes to Amazon QuickSight Q. The Amazon Web Services Region for the account is derived from what is configured in the CLI or SDK. This operation isn't supported in the US East (Ohio) Region, South America (Sao Paulo) Region, or Asia Pacific (Singapore) Region. Before you use this operation, make sure that you can connect to an existing Amazon Web Services account. If you don't have an Amazon Web Services account, see [Sign up for Amazon Web Services](https://docs.aws.amazon.com/quicksight/latest/user/setting-up-aws-sign-up.html) in the Amazon QuickSight User Guide. The person who signs up for Amazon QuickSight needs to have the correct Identity and Access Management (IAM) permissions. For more information, see [IAM Policy Examples for Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/iam-policy-examples.html) in the Amazon QuickSight User Guide. If your IAM policy includes both the Subscribe and CreateAccountSubscription actions, make sure that both actions are set to Allow. If either action is set to Deny, the Deny action prevails and your API call fails. You can't pass an existing IAM role to access other Amazon Web Services services using this API operation. To pass your existing IAM role to Amazon QuickSight, see [Passing IAM roles to Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/security_iam_service-with-iam.html#security-create-iam-role) in the Amazon QuickSight User Guide. You can't set default resource access on the new account from the Amazon QuickSight API. Instead, add default resource access from the Amazon QuickSight console. For more information about setting default resource access to Amazon Web Services services, see [Setting default resource access to Amazon Web Services services](https://docs.aws.amazon.com/quicksight/latest/user/scoping-policies-defaults.html) in the Amazon QuickSight User Guide. + /// Creates an Amazon QuickSight account, or subscribes to Amazon QuickSight Q. The Amazon Web Services Region for the account is derived from what is configured in the CLI or SDK. Before you use this operation, make sure that you can connect to an existing Amazon Web Services account. If you don't have an Amazon Web Services account, see [Sign up for Amazon Web Services](https://docs.aws.amazon.com/quicksight/latest/user/setting-up-aws-sign-up.html) in the Amazon QuickSight User Guide. The person who signs up for Amazon QuickSight needs to have the correct Identity and Access Management (IAM) permissions. For more information, see [IAM Policy Examples for Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/iam-policy-examples.html) in the Amazon QuickSight User Guide. If your IAM policy includes both the Subscribe and CreateAccountSubscription actions, make sure that both actions are set to Allow. If either action is set to Deny, the Deny action prevails and your API call fails. You can't pass an existing IAM role to access other Amazon Web Services services using this API operation. To pass your existing IAM role to Amazon QuickSight, see [Passing IAM roles to Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/security_iam_service-with-iam.html#security-create-iam-role) in the Amazon QuickSight User Guide. You can't set default resource access on the new account from the Amazon QuickSight API. Instead, add default resource access from the Amazon QuickSight console. For more information about setting default resource access to Amazon Web Services services, see [Setting default resource access to Amazon Web Services services](https://docs.aws.amazon.com/quicksight/latest/user/scoping-policies-defaults.html) in the Amazon QuickSight User Guide. /// /// - Parameter CreateAccountSubscriptionInput : [no documentation found] /// @@ -542,7 +542,7 @@ extension QuickSightClient: QuickSightClientProtocol { /// Performs the `CreateGroup` operation on the `QuickSight_20180401` service. /// - /// Use the CreateGroup operation to create a group in Amazon QuickSight. You can create up to 10,000 groups in a namespace. If you want to create more than 10,000 groups in a namespace, contact AWS Support. The permissions resource is arn:aws:quicksight:::group/default/ . The response is a group object. + /// Use the CreateGroup operation to create a group in Amazon QuickSight. You can create up to 10,000 groups in a namespace. If you want to create more than 10,000 groups in a namespace, contact Amazon Web Services Support. The permissions resource is arn:aws:quicksight:::group/default/ . The response is a group object. /// /// - Parameter CreateGroupInput : The request object for this operation. /// @@ -7306,6 +7306,57 @@ extension QuickSightClient: QuickSightClientProtocol { return result } + /// Performs the `UpdateDashboardLinks` operation on the `QuickSight_20180401` service. + /// + /// Updates the linked analyses on a dashboard. + /// + /// - Parameter UpdateDashboardLinksInput : [no documentation found] + /// + /// - Returns: `UpdateDashboardLinksOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access to this item. The provided credentials couldn't be validated. You might not be authorized to carry out the request. Make sure that your account is authorized to use the Amazon QuickSight service, that your policies have the correct permissions, and that you are using the correct credentials. + /// - `ConflictException` : Updating or deleting a resource can cause an inconsistent state. + /// - `InternalFailureException` : An internal failure occurred. + /// - `InvalidParameterValueException` : One or more parameters has a value that isn't valid. + /// - `ResourceNotFoundException` : One or more resources can't be found. + /// - `ThrottlingException` : Access is throttled. + public func updateDashboardLinks(input: UpdateDashboardLinksInput) async throws -> UpdateDashboardLinksOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .put) + .withServiceName(value: serviceName) + .withOperation(value: "updateDashboardLinks") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "quicksight") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "updateDashboardLinks") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(UpdateDashboardLinksOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `UpdateDashboardPermissions` operation on the `QuickSight_20180401` service. /// /// Updates read and write permissions on a dashboard. diff --git a/Sources/Services/AWSQuickSight/QuickSightClientProtocol.swift b/Sources/Services/AWSQuickSight/QuickSightClientProtocol.swift index ac76c2ff414..06a30fd2749 100644 --- a/Sources/Services/AWSQuickSight/QuickSightClientProtocol.swift +++ b/Sources/Services/AWSQuickSight/QuickSightClientProtocol.swift @@ -44,7 +44,7 @@ public protocol QuickSightClientProtocol { func createAccountCustomization(input: CreateAccountCustomizationInput) async throws -> CreateAccountCustomizationOutput /// Performs the `CreateAccountSubscription` operation on the `QuickSight_20180401` service. /// - /// Creates an Amazon QuickSight account, or subscribes to Amazon QuickSight Q. The Amazon Web Services Region for the account is derived from what is configured in the CLI or SDK. This operation isn't supported in the US East (Ohio) Region, South America (Sao Paulo) Region, or Asia Pacific (Singapore) Region. Before you use this operation, make sure that you can connect to an existing Amazon Web Services account. If you don't have an Amazon Web Services account, see [Sign up for Amazon Web Services](https://docs.aws.amazon.com/quicksight/latest/user/setting-up-aws-sign-up.html) in the Amazon QuickSight User Guide. The person who signs up for Amazon QuickSight needs to have the correct Identity and Access Management (IAM) permissions. For more information, see [IAM Policy Examples for Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/iam-policy-examples.html) in the Amazon QuickSight User Guide. If your IAM policy includes both the Subscribe and CreateAccountSubscription actions, make sure that both actions are set to Allow. If either action is set to Deny, the Deny action prevails and your API call fails. You can't pass an existing IAM role to access other Amazon Web Services services using this API operation. To pass your existing IAM role to Amazon QuickSight, see [Passing IAM roles to Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/security_iam_service-with-iam.html#security-create-iam-role) in the Amazon QuickSight User Guide. You can't set default resource access on the new account from the Amazon QuickSight API. Instead, add default resource access from the Amazon QuickSight console. For more information about setting default resource access to Amazon Web Services services, see [Setting default resource access to Amazon Web Services services](https://docs.aws.amazon.com/quicksight/latest/user/scoping-policies-defaults.html) in the Amazon QuickSight User Guide. + /// Creates an Amazon QuickSight account, or subscribes to Amazon QuickSight Q. The Amazon Web Services Region for the account is derived from what is configured in the CLI or SDK. Before you use this operation, make sure that you can connect to an existing Amazon Web Services account. If you don't have an Amazon Web Services account, see [Sign up for Amazon Web Services](https://docs.aws.amazon.com/quicksight/latest/user/setting-up-aws-sign-up.html) in the Amazon QuickSight User Guide. The person who signs up for Amazon QuickSight needs to have the correct Identity and Access Management (IAM) permissions. For more information, see [IAM Policy Examples for Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/iam-policy-examples.html) in the Amazon QuickSight User Guide. If your IAM policy includes both the Subscribe and CreateAccountSubscription actions, make sure that both actions are set to Allow. If either action is set to Deny, the Deny action prevails and your API call fails. You can't pass an existing IAM role to access other Amazon Web Services services using this API operation. To pass your existing IAM role to Amazon QuickSight, see [Passing IAM roles to Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/security_iam_service-with-iam.html#security-create-iam-role) in the Amazon QuickSight User Guide. You can't set default resource access on the new account from the Amazon QuickSight API. Instead, add default resource access from the Amazon QuickSight console. For more information about setting default resource access to Amazon Web Services services, see [Setting default resource access to Amazon Web Services services](https://docs.aws.amazon.com/quicksight/latest/user/scoping-policies-defaults.html) in the Amazon QuickSight User Guide. /// /// - Parameter CreateAccountSubscriptionInput : [no documentation found] /// @@ -187,7 +187,7 @@ public protocol QuickSightClientProtocol { func createFolderMembership(input: CreateFolderMembershipInput) async throws -> CreateFolderMembershipOutput /// Performs the `CreateGroup` operation on the `QuickSight_20180401` service. /// - /// Use the CreateGroup operation to create a group in Amazon QuickSight. You can create up to 10,000 groups in a namespace. If you want to create more than 10,000 groups in a namespace, contact AWS Support. The permissions resource is arn:aws:quicksight:::group/default/ . The response is a group object. + /// Use the CreateGroup operation to create a group in Amazon QuickSight. You can create up to 10,000 groups in a namespace. If you want to create more than 10,000 groups in a namespace, contact Amazon Web Services Support. The permissions resource is arn:aws:quicksight:::group/default/ . The response is a group object. /// /// - Parameter CreateGroupInput : The request object for this operation. /// @@ -2763,6 +2763,24 @@ public protocol QuickSightClientProtocol { /// - `ThrottlingException` : Access is throttled. /// - `UnsupportedUserEditionException` : This error indicates that you are calling an operation on an Amazon QuickSight subscription where the edition doesn't include support for that operation. Amazon Amazon QuickSight currently has Standard Edition and Enterprise Edition. Not every operation and capability is available in every edition. func updateDashboard(input: UpdateDashboardInput) async throws -> UpdateDashboardOutput + /// Performs the `UpdateDashboardLinks` operation on the `QuickSight_20180401` service. + /// + /// Updates the linked analyses on a dashboard. + /// + /// - Parameter UpdateDashboardLinksInput : [no documentation found] + /// + /// - Returns: `UpdateDashboardLinksOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You don't have access to this item. The provided credentials couldn't be validated. You might not be authorized to carry out the request. Make sure that your account is authorized to use the Amazon QuickSight service, that your policies have the correct permissions, and that you are using the correct credentials. + /// - `ConflictException` : Updating or deleting a resource can cause an inconsistent state. + /// - `InternalFailureException` : An internal failure occurred. + /// - `InvalidParameterValueException` : One or more parameters has a value that isn't valid. + /// - `ResourceNotFoundException` : One or more resources can't be found. + /// - `ThrottlingException` : Access is throttled. + func updateDashboardLinks(input: UpdateDashboardLinksInput) async throws -> UpdateDashboardLinksOutput /// Performs the `UpdateDashboardPermissions` operation on the `QuickSight_20180401` service. /// /// Updates read and write permissions on a dashboard. diff --git a/Sources/Services/AWSQuickSight/models/Models.swift b/Sources/Services/AWSQuickSight/models/Models.swift index b522c67c5ae..46b3de3f12c 100644 --- a/Sources/Services/AWSQuickSight/models/Models.swift +++ b/Sources/Services/AWSQuickSight/models/Models.swift @@ -10241,6 +10241,7 @@ extension QuickSightClientTypes.ComboChartConfiguration: Swift.Codable { case referenceLines = "ReferenceLines" case secondaryYAxisDisplayOptions = "SecondaryYAxisDisplayOptions" case secondaryYAxisLabelOptions = "SecondaryYAxisLabelOptions" + case singleAxisOptions = "SingleAxisOptions" case sortConfiguration = "SortConfiguration" case tooltip = "Tooltip" case visualPalette = "VisualPalette" @@ -10290,6 +10291,9 @@ extension QuickSightClientTypes.ComboChartConfiguration: Swift.Codable { if let secondaryYAxisLabelOptions = self.secondaryYAxisLabelOptions { try encodeContainer.encode(secondaryYAxisLabelOptions, forKey: .secondaryYAxisLabelOptions) } + if let singleAxisOptions = self.singleAxisOptions { + try encodeContainer.encode(singleAxisOptions, forKey: .singleAxisOptions) + } if let sortConfiguration = self.sortConfiguration { try encodeContainer.encode(sortConfiguration, forKey: .sortConfiguration) } @@ -10321,6 +10325,8 @@ extension QuickSightClientTypes.ComboChartConfiguration: Swift.Codable { secondaryYAxisDisplayOptions = secondaryYAxisDisplayOptionsDecoded let secondaryYAxisLabelOptionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.ChartAxisLabelOptions.self, forKey: .secondaryYAxisLabelOptions) secondaryYAxisLabelOptions = secondaryYAxisLabelOptionsDecoded + let singleAxisOptionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.SingleAxisOptions.self, forKey: .singleAxisOptions) + singleAxisOptions = singleAxisOptionsDecoded let colorLabelOptionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.ChartAxisLabelOptions.self, forKey: .colorLabelOptions) colorLabelOptions = colorLabelOptionsDecoded let legendDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.LegendOptions.self, forKey: .legend) @@ -10382,6 +10388,8 @@ extension QuickSightClientTypes { public var secondaryYAxisDisplayOptions: QuickSightClientTypes.AxisDisplayOptions? /// The label options (label text, label visibility, and sort icon visibility) of a combo chart's secondary y-axis(line) field well. public var secondaryYAxisLabelOptions: QuickSightClientTypes.ChartAxisLabelOptions? + /// The settings of a chart's single axis configuration. + public var singleAxisOptions: QuickSightClientTypes.SingleAxisOptions? /// The sort configuration of a ComboChartVisual. public var sortConfiguration: QuickSightClientTypes.ComboChartSortConfiguration? /// The legend display setup of the visual. @@ -10403,6 +10411,7 @@ extension QuickSightClientTypes { referenceLines: [QuickSightClientTypes.ReferenceLine]? = nil, secondaryYAxisDisplayOptions: QuickSightClientTypes.AxisDisplayOptions? = nil, secondaryYAxisLabelOptions: QuickSightClientTypes.ChartAxisLabelOptions? = nil, + singleAxisOptions: QuickSightClientTypes.SingleAxisOptions? = nil, sortConfiguration: QuickSightClientTypes.ComboChartSortConfiguration? = nil, tooltip: QuickSightClientTypes.TooltipOptions? = nil, visualPalette: QuickSightClientTypes.VisualPalette? = nil @@ -10421,6 +10430,7 @@ extension QuickSightClientTypes { self.referenceLines = referenceLines self.secondaryYAxisDisplayOptions = secondaryYAxisDisplayOptions self.secondaryYAxisLabelOptions = secondaryYAxisLabelOptions + self.singleAxisOptions = singleAxisOptions self.sortConfiguration = sortConfiguration self.tooltip = tooltip self.visualPalette = visualPalette @@ -12580,6 +12590,7 @@ extension CreateDashboardInput: Swift.Encodable { case dashboardPublishOptions = "DashboardPublishOptions" case definition = "Definition" case folderArns = "FolderArns" + case linkEntities = "LinkEntities" case linkSharingConfiguration = "LinkSharingConfiguration" case name = "Name" case parameters = "Parameters" @@ -12605,6 +12616,12 @@ extension CreateDashboardInput: Swift.Encodable { try folderArnsContainer.encode(arn0) } } + if let linkEntities = linkEntities { + var linkEntitiesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .linkEntities) + for linkentityarn0 in linkEntities { + try linkEntitiesContainer.encode(linkentityarn0) + } + } if let linkSharingConfiguration = self.linkSharingConfiguration { try encodeContainer.encode(linkSharingConfiguration, forKey: .linkSharingConfiguration) } @@ -12672,6 +12689,8 @@ public struct CreateDashboardInput: Swift.Equatable { public var definition: QuickSightClientTypes.DashboardVersionDefinition? /// When you create the dashboard, Amazon QuickSight adds the dashboard to these folders. public var folderArns: [Swift.String]? + /// A list of analysis Amazon Resource Names (ARNs) to be linked to the dashboard. + public var linkEntities: [Swift.String]? /// A structure that contains the permissions of a shareable link to the dashboard. public var linkSharingConfiguration: QuickSightClientTypes.LinkSharingConfiguration? /// The display name of the dashboard. @@ -12698,6 +12717,7 @@ public struct CreateDashboardInput: Swift.Equatable { dashboardPublishOptions: QuickSightClientTypes.DashboardPublishOptions? = nil, definition: QuickSightClientTypes.DashboardVersionDefinition? = nil, folderArns: [Swift.String]? = nil, + linkEntities: [Swift.String]? = nil, linkSharingConfiguration: QuickSightClientTypes.LinkSharingConfiguration? = nil, name: Swift.String? = nil, parameters: QuickSightClientTypes.Parameters? = nil, @@ -12714,6 +12734,7 @@ public struct CreateDashboardInput: Swift.Equatable { self.dashboardPublishOptions = dashboardPublishOptions self.definition = definition self.folderArns = folderArns + self.linkEntities = linkEntities self.linkSharingConfiguration = linkSharingConfiguration self.name = name self.parameters = parameters @@ -12739,6 +12760,7 @@ struct CreateDashboardInputBody: Swift.Equatable { let validationStrategy: QuickSightClientTypes.ValidationStrategy? let folderArns: [Swift.String]? let linkSharingConfiguration: QuickSightClientTypes.LinkSharingConfiguration? + let linkEntities: [Swift.String]? } extension CreateDashboardInputBody: Swift.Decodable { @@ -12746,6 +12768,7 @@ extension CreateDashboardInputBody: Swift.Decodable { case dashboardPublishOptions = "DashboardPublishOptions" case definition = "Definition" case folderArns = "FolderArns" + case linkEntities = "LinkEntities" case linkSharingConfiguration = "LinkSharingConfiguration" case name = "Name" case parameters = "Parameters" @@ -12810,6 +12833,17 @@ extension CreateDashboardInputBody: Swift.Decodable { folderArns = folderArnsDecoded0 let linkSharingConfigurationDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.LinkSharingConfiguration.self, forKey: .linkSharingConfiguration) linkSharingConfiguration = linkSharingConfigurationDecoded + let linkEntitiesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .linkEntities) + var linkEntitiesDecoded0:[Swift.String]? = nil + if let linkEntitiesContainer = linkEntitiesContainer { + linkEntitiesDecoded0 = [Swift.String]() + for string0 in linkEntitiesContainer { + if let string0 = string0 { + linkEntitiesDecoded0?.append(string0) + } + } + } + linkEntities = linkEntitiesDecoded0 } } @@ -17857,6 +17891,7 @@ extension QuickSightClientTypes.Dashboard: Swift.Codable { case dashboardId = "DashboardId" case lastPublishedTime = "LastPublishedTime" case lastUpdatedTime = "LastUpdatedTime" + case linkEntities = "LinkEntities" case name = "Name" case version = "Version" } @@ -17878,6 +17913,12 @@ extension QuickSightClientTypes.Dashboard: Swift.Codable { if let lastUpdatedTime = self.lastUpdatedTime { try encodeContainer.encodeTimestamp(lastUpdatedTime, format: .epochSeconds, forKey: .lastUpdatedTime) } + if let linkEntities = linkEntities { + var linkEntitiesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .linkEntities) + for linkentityarn0 in linkEntities { + try linkEntitiesContainer.encode(linkentityarn0) + } + } if let name = self.name { try encodeContainer.encode(name, forKey: .name) } @@ -17902,6 +17943,17 @@ extension QuickSightClientTypes.Dashboard: Swift.Codable { lastPublishedTime = lastPublishedTimeDecoded let lastUpdatedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastUpdatedTime) lastUpdatedTime = lastUpdatedTimeDecoded + let linkEntitiesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .linkEntities) + var linkEntitiesDecoded0:[Swift.String]? = nil + if let linkEntitiesContainer = linkEntitiesContainer { + linkEntitiesDecoded0 = [Swift.String]() + for string0 in linkEntitiesContainer { + if let string0 = string0 { + linkEntitiesDecoded0?.append(string0) + } + } + } + linkEntities = linkEntitiesDecoded0 } } @@ -17918,6 +17970,8 @@ extension QuickSightClientTypes { public var lastPublishedTime: ClientRuntime.Date? /// The last time that this dashboard was updated. public var lastUpdatedTime: ClientRuntime.Date? + /// A list of analysis Amazon Resource Names (ARNs) to be linked to the dashboard. + public var linkEntities: [Swift.String]? /// A display name for the dashboard. public var name: Swift.String? /// Version. @@ -17929,6 +17983,7 @@ extension QuickSightClientTypes { dashboardId: Swift.String? = nil, lastPublishedTime: ClientRuntime.Date? = nil, lastUpdatedTime: ClientRuntime.Date? = nil, + linkEntities: [Swift.String]? = nil, name: Swift.String? = nil, version: QuickSightClientTypes.DashboardVersion? = nil ) @@ -17938,6 +17993,7 @@ extension QuickSightClientTypes { self.dashboardId = dashboardId self.lastPublishedTime = lastPublishedTime self.lastUpdatedTime = lastUpdatedTime + self.linkEntities = linkEntities self.name = name self.version = version } @@ -45882,6 +45938,7 @@ extension QuickSightClientTypes.LineChartConfiguration: Swift.Codable { case secondaryYAxisDisplayOptions = "SecondaryYAxisDisplayOptions" case secondaryYAxisLabelOptions = "SecondaryYAxisLabelOptions" case series = "Series" + case singleAxisOptions = "SingleAxisOptions" case smallMultiplesOptions = "SmallMultiplesOptions" case sortConfiguration = "SortConfiguration" case tooltip = "Tooltip" @@ -45941,6 +45998,9 @@ extension QuickSightClientTypes.LineChartConfiguration: Swift.Codable { try seriesContainer.encode(seriesitem0) } } + if let singleAxisOptions = self.singleAxisOptions { + try encodeContainer.encode(singleAxisOptions, forKey: .singleAxisOptions) + } if let smallMultiplesOptions = self.smallMultiplesOptions { try encodeContainer.encode(smallMultiplesOptions, forKey: .smallMultiplesOptions) } @@ -45997,6 +46057,8 @@ extension QuickSightClientTypes.LineChartConfiguration: Swift.Codable { secondaryYAxisDisplayOptions = secondaryYAxisDisplayOptionsDecoded let secondaryYAxisLabelOptionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.ChartAxisLabelOptions.self, forKey: .secondaryYAxisLabelOptions) secondaryYAxisLabelOptions = secondaryYAxisLabelOptionsDecoded + let singleAxisOptionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.SingleAxisOptions.self, forKey: .singleAxisOptions) + singleAxisOptions = singleAxisOptionsDecoded let defaultSeriesSettingsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.LineChartDefaultSeriesSettings.self, forKey: .defaultSeriesSettings) defaultSeriesSettings = defaultSeriesSettingsDecoded let seriesContainer = try containerValues.decodeIfPresent([QuickSightClientTypes.SeriesItem?].self, forKey: .series) @@ -46070,6 +46132,8 @@ extension QuickSightClientTypes { public var secondaryYAxisLabelOptions: QuickSightClientTypes.ChartAxisLabelOptions? /// The series item configuration of a line chart. public var series: [QuickSightClientTypes.SeriesItem]? + /// The settings of a chart's single axis configuration. + public var singleAxisOptions: QuickSightClientTypes.SingleAxisOptions? /// The small multiples setup for the visual. public var smallMultiplesOptions: QuickSightClientTypes.SmallMultiplesOptions? /// The sort configuration of a line chart. @@ -46098,6 +46162,7 @@ extension QuickSightClientTypes { secondaryYAxisDisplayOptions: QuickSightClientTypes.LineSeriesAxisDisplayOptions? = nil, secondaryYAxisLabelOptions: QuickSightClientTypes.ChartAxisLabelOptions? = nil, series: [QuickSightClientTypes.SeriesItem]? = nil, + singleAxisOptions: QuickSightClientTypes.SingleAxisOptions? = nil, smallMultiplesOptions: QuickSightClientTypes.SmallMultiplesOptions? = nil, sortConfiguration: QuickSightClientTypes.LineChartSortConfiguration? = nil, tooltip: QuickSightClientTypes.TooltipOptions? = nil, @@ -46119,6 +46184,7 @@ extension QuickSightClientTypes { self.secondaryYAxisDisplayOptions = secondaryYAxisDisplayOptions self.secondaryYAxisLabelOptions = secondaryYAxisLabelOptions self.series = series + self.singleAxisOptions = singleAxisOptions self.smallMultiplesOptions = smallMultiplesOptions self.sortConfiguration = sortConfiguration self.tooltip = tooltip @@ -63751,6 +63817,7 @@ extension QuickSightClientTypes.ScatterPlotConfiguration: Swift.Codable { case dataLabels = "DataLabels" case fieldWells = "FieldWells" case legend = "Legend" + case sortConfiguration = "SortConfiguration" case tooltip = "Tooltip" case visualPalette = "VisualPalette" case xAxisDisplayOptions = "XAxisDisplayOptions" @@ -63770,6 +63837,9 @@ extension QuickSightClientTypes.ScatterPlotConfiguration: Swift.Codable { if let legend = self.legend { try encodeContainer.encode(legend, forKey: .legend) } + if let sortConfiguration = self.sortConfiguration { + try encodeContainer.encode(sortConfiguration, forKey: .sortConfiguration) + } if let tooltip = self.tooltip { try encodeContainer.encode(tooltip, forKey: .tooltip) } @@ -63794,6 +63864,8 @@ extension QuickSightClientTypes.ScatterPlotConfiguration: Swift.Codable { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let fieldWellsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.ScatterPlotFieldWells.self, forKey: .fieldWells) fieldWells = fieldWellsDecoded + let sortConfigurationDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.ScatterPlotSortConfiguration.self, forKey: .sortConfiguration) + sortConfiguration = sortConfigurationDecoded let xAxisLabelOptionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.ChartAxisLabelOptions.self, forKey: .xAxisLabelOptions) xAxisLabelOptions = xAxisLabelOptionsDecoded let xAxisDisplayOptionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.AxisDisplayOptions.self, forKey: .xAxisDisplayOptions) @@ -63822,6 +63894,8 @@ extension QuickSightClientTypes { public var fieldWells: QuickSightClientTypes.ScatterPlotFieldWells? /// The legend display setup of the visual. public var legend: QuickSightClientTypes.LegendOptions? + /// The sort configuration of a scatter plot. + public var sortConfiguration: QuickSightClientTypes.ScatterPlotSortConfiguration? /// The legend display setup of the visual. public var tooltip: QuickSightClientTypes.TooltipOptions? /// The palette (chart color) display setup of the visual. @@ -63839,6 +63913,7 @@ extension QuickSightClientTypes { dataLabels: QuickSightClientTypes.DataLabelOptions? = nil, fieldWells: QuickSightClientTypes.ScatterPlotFieldWells? = nil, legend: QuickSightClientTypes.LegendOptions? = nil, + sortConfiguration: QuickSightClientTypes.ScatterPlotSortConfiguration? = nil, tooltip: QuickSightClientTypes.TooltipOptions? = nil, visualPalette: QuickSightClientTypes.VisualPalette? = nil, xAxisDisplayOptions: QuickSightClientTypes.AxisDisplayOptions? = nil, @@ -63850,6 +63925,7 @@ extension QuickSightClientTypes { self.dataLabels = dataLabels self.fieldWells = fieldWells self.legend = legend + self.sortConfiguration = sortConfiguration self.tooltip = tooltip self.visualPalette = visualPalette self.xAxisDisplayOptions = xAxisDisplayOptions @@ -63906,6 +63982,41 @@ extension QuickSightClientTypes { } +extension QuickSightClientTypes.ScatterPlotSortConfiguration: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case scatterPlotLimitConfiguration = "ScatterPlotLimitConfiguration" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let scatterPlotLimitConfiguration = self.scatterPlotLimitConfiguration { + try encodeContainer.encode(scatterPlotLimitConfiguration, forKey: .scatterPlotLimitConfiguration) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let scatterPlotLimitConfigurationDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.ItemsLimitConfiguration.self, forKey: .scatterPlotLimitConfiguration) + scatterPlotLimitConfiguration = scatterPlotLimitConfigurationDecoded + } +} + +extension QuickSightClientTypes { + /// The sort configuration of a scatter plot. + public struct ScatterPlotSortConfiguration: Swift.Equatable { + /// The limit configuration of the visual display for an axis. + public var scatterPlotLimitConfiguration: QuickSightClientTypes.ItemsLimitConfiguration? + + public init( + scatterPlotLimitConfiguration: QuickSightClientTypes.ItemsLimitConfiguration? = nil + ) + { + self.scatterPlotLimitConfiguration = scatterPlotLimitConfiguration + } + } + +} + extension QuickSightClientTypes.ScatterPlotUnaggregatedFieldWells: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case category = "Category" @@ -67572,6 +67683,70 @@ extension QuickSightClientTypes { } } +extension QuickSightClientTypes.SingleAxisOptions: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case yAxisOptions = "YAxisOptions" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let yAxisOptions = self.yAxisOptions { + try encodeContainer.encode(yAxisOptions, forKey: .yAxisOptions) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let yAxisOptionsDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.YAxisOptions.self, forKey: .yAxisOptions) + yAxisOptions = yAxisOptionsDecoded + } +} + +extension QuickSightClientTypes { + /// The settings of a chart's single axis configuration. + public struct SingleAxisOptions: Swift.Equatable { + /// The Y axis options of a single axis configuration. + public var yAxisOptions: QuickSightClientTypes.YAxisOptions? + + public init( + yAxisOptions: QuickSightClientTypes.YAxisOptions? = nil + ) + { + self.yAxisOptions = yAxisOptions + } + } + +} + +extension QuickSightClientTypes { + public enum SingleYAxisOption: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case primaryYAxis + case sdkUnknown(Swift.String) + + public static var allCases: [SingleYAxisOption] { + return [ + .primaryYAxis, + .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 .primaryYAxis: return "PRIMARY_Y_AXIS" + 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 = SingleYAxisOption(rawValue: rawValue) ?? SingleYAxisOption.sdkUnknown(rawValue) + } + } +} + extension QuickSightClientTypes.SliderControlDisplayOptions: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case infoIconLabelOptions = "InfoIconLabelOptions" @@ -68595,6 +68770,7 @@ extension QuickSightClientTypes { /// A structure that describes the Amazon S3 settings to use to save the generated dashboard snapshot. public struct SnapshotS3DestinationConfiguration: Swift.Equatable { /// A structure that contains details about the Amazon S3 bucket that the generated dashboard snapshot is saved in. + /// This member is required. public var bucketConfiguration: QuickSightClientTypes.S3BucketConfiguration? public init( @@ -79634,6 +79810,176 @@ extension UpdateDashboardInputBody: Swift.Decodable { } } +extension UpdateDashboardLinksInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case linkEntities = "LinkEntities" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let linkEntities = linkEntities { + var linkEntitiesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .linkEntities) + for linkentityarn0 in linkEntities { + try linkEntitiesContainer.encode(linkentityarn0) + } + } + } +} + +extension UpdateDashboardLinksInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + guard let awsAccountId = awsAccountId else { + return nil + } + guard let dashboardId = dashboardId else { + return nil + } + return "/accounts/\(awsAccountId.urlPercentEncoding())/dashboards/\(dashboardId.urlPercentEncoding())/linked-entities" + } +} + +public struct UpdateDashboardLinksInput: Swift.Equatable { + /// The ID of the Amazon Web Services account that contains the dashboard whose links you want to update. + /// This member is required. + public var awsAccountId: Swift.String? + /// The ID for the dashboard. + /// This member is required. + public var dashboardId: Swift.String? + /// list of analysis Amazon Resource Names (ARNs) to be linked to the dashboard. + /// This member is required. + public var linkEntities: [Swift.String]? + + public init( + awsAccountId: Swift.String? = nil, + dashboardId: Swift.String? = nil, + linkEntities: [Swift.String]? = nil + ) + { + self.awsAccountId = awsAccountId + self.dashboardId = dashboardId + self.linkEntities = linkEntities + } +} + +struct UpdateDashboardLinksInputBody: Swift.Equatable { + let linkEntities: [Swift.String]? +} + +extension UpdateDashboardLinksInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case linkEntities = "LinkEntities" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let linkEntitiesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .linkEntities) + var linkEntitiesDecoded0:[Swift.String]? = nil + if let linkEntitiesContainer = linkEntitiesContainer { + linkEntitiesDecoded0 = [Swift.String]() + for string0 in linkEntitiesContainer { + if let string0 = string0 { + linkEntitiesDecoded0?.append(string0) + } + } + } + linkEntities = linkEntitiesDecoded0 + } +} + +extension UpdateDashboardLinksOutput: 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: UpdateDashboardLinksOutputBody = try responseDecoder.decode(responseBody: data) + self.dashboardArn = output.dashboardArn + self.linkEntities = output.linkEntities + self.requestId = output.requestId + } else { + self.dashboardArn = nil + self.linkEntities = nil + self.requestId = nil + } + self.status = httpResponse.statusCode.rawValue + } +} + +public struct UpdateDashboardLinksOutput: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the dashboard. + public var dashboardArn: Swift.String? + /// A list of analysis Amazon Resource Names (ARNs) to be linked to the dashboard. + public var linkEntities: [Swift.String]? + /// The Amazon Web Services request ID for this operation. + public var requestId: Swift.String? + /// The HTTP status of the request. + public var status: Swift.Int + + public init( + dashboardArn: Swift.String? = nil, + linkEntities: [Swift.String]? = nil, + requestId: Swift.String? = nil, + status: Swift.Int = 0 + ) + { + self.dashboardArn = dashboardArn + self.linkEntities = linkEntities + self.requestId = requestId + self.status = status + } +} + +struct UpdateDashboardLinksOutputBody: Swift.Equatable { + let requestId: Swift.String? + let status: Swift.Int + let dashboardArn: Swift.String? + let linkEntities: [Swift.String]? +} + +extension UpdateDashboardLinksOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case dashboardArn = "DashboardArn" + case linkEntities = "LinkEntities" + case requestId = "RequestId" + case status = "Status" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let requestIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .requestId) + requestId = requestIdDecoded + let statusDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .status) ?? 0 + status = statusDecoded + let dashboardArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dashboardArn) + dashboardArn = dashboardArnDecoded + let linkEntitiesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .linkEntities) + var linkEntitiesDecoded0:[Swift.String]? = nil + if let linkEntitiesContainer = linkEntitiesContainer { + linkEntitiesDecoded0 = [Swift.String]() + for string0 in linkEntitiesContainer { + if let string0 = string0 { + linkEntitiesDecoded0?.append(string0) + } + } + } + linkEntities = linkEntitiesDecoded0 + } +} + +enum UpdateDashboardLinksOutputError: 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 "InternalFailureException": return try await InternalFailureException(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) + case "InvalidParameterValueException": return try await InvalidParameterValueException(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 UpdateDashboardOutput: ClientRuntime.HttpResponseBinding { public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { if let data = try await httpResponse.body.readData(), @@ -87509,3 +87855,39 @@ extension QuickSightClientTypes { } } } + +extension QuickSightClientTypes.YAxisOptions: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case yAxis = "YAxis" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let yAxis = self.yAxis { + try encodeContainer.encode(yAxis.rawValue, forKey: .yAxis) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let yAxisDecoded = try containerValues.decodeIfPresent(QuickSightClientTypes.SingleYAxisOption.self, forKey: .yAxis) + yAxis = yAxisDecoded + } +} + +extension QuickSightClientTypes { + /// The options that are available for a single Y axis in a chart. + public struct YAxisOptions: Swift.Equatable { + /// The Y axis type to be used in the chart. If you choose PRIMARY_Y_AXIS, the primary Y Axis is located on the leftmost vertical axis of the chart. + /// This member is required. + public var yAxis: QuickSightClientTypes.SingleYAxisOption? + + public init( + yAxis: QuickSightClientTypes.SingleYAxisOption? = nil + ) + { + self.yAxis = yAxis + } + } + +} diff --git a/Sources/Services/AWSRDS/Paginators.swift b/Sources/Services/AWSRDS/Paginators.swift index 9a688c9bc8b..f78390e553e 100644 --- a/Sources/Services/AWSRDS/Paginators.swift +++ b/Sources/Services/AWSRDS/Paginators.swift @@ -635,6 +635,40 @@ extension PaginatorSequence where OperationStackInput == DescribeDBProxyTargetsI return try await self.asyncCompactMap { item in item.targets } } } +extension RDSClient { + /// Paginate over `[DescribeDBRecommendationsOutput]` 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 `[DescribeDBRecommendationsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `DescribeDBRecommendationsOutput` + public func describeDBRecommendationsPaginated(input: DescribeDBRecommendationsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \.marker, outputKey: \.marker, paginationFunction: self.describeDBRecommendations(input:)) + } +} + +extension DescribeDBRecommendationsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> DescribeDBRecommendationsInput { + return DescribeDBRecommendationsInput( + filters: self.filters, + lastUpdatedAfter: self.lastUpdatedAfter, + lastUpdatedBefore: self.lastUpdatedBefore, + locale: self.locale, + marker: token, + maxRecords: self.maxRecords + )} +} + +extension PaginatorSequence where OperationStackInput == DescribeDBRecommendationsInput, OperationStackOutput == DescribeDBRecommendationsOutput { + /// This paginator transforms the `AsyncSequence` returned by `describeDBRecommendationsPaginated` + /// to access the nested member `[RDSClientTypes.DBRecommendation]` + /// - Returns: `[RDSClientTypes.DBRecommendation]` + public func dbRecommendations() async throws -> [RDSClientTypes.DBRecommendation] { + return try await self.asyncCompactMap { item in item.dbRecommendations } + } +} extension RDSClient { /// Paginate over `[DescribeDBSecurityGroupsOutput]` results. /// diff --git a/Sources/Services/AWSRDS/RDSClient.swift b/Sources/Services/AWSRDS/RDSClient.swift index 696c8805033..3dd2ba5a1e0 100644 --- a/Sources/Services/AWSRDS/RDSClient.swift +++ b/Sources/Services/AWSRDS/RDSClient.swift @@ -3705,6 +3705,47 @@ extension RDSClient: RDSClientProtocol { return result } + /// Performs the `DescribeDBRecommendations` operation on the `AmazonRDSv19` service. + /// + /// Describes the recommendations to resolve the issues for your DB instances, DB clusters, and DB parameter groups. + /// + /// - Parameter DescribeDBRecommendationsInput : [no documentation found] + /// + /// - Returns: `DescribeDBRecommendationsOutput` : [no documentation found] + public func describeDBRecommendations(input: DescribeDBRecommendationsInput) async throws -> DescribeDBRecommendationsOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "describeDBRecommendations") + .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: "describeDBRecommendations") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.FormURLReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: FormURLReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(DescribeDBRecommendationsOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `DescribeDBSecurityGroups` operation on the `AmazonRDSv19` service. /// /// Returns a list of DBSecurityGroup descriptions. If a DBSecurityGroupName is specified, the list will contain only the descriptions of the specified DB security group. EC2-Classic was retired on August 15, 2022. If you haven't migrated from EC2-Classic to a VPC, we recommend that you migrate as soon as possible. For more information, see [Migrate from EC2-Classic to a VPC](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) in the Amazon EC2 User Guide, the blog [EC2-Classic Networking is Retiring – Here’s How to Prepare](http://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/), and [Moving a DB instance not in a VPC into a VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.Non-VPC2VPC.html) in the Amazon RDS User Guide. @@ -5562,6 +5603,47 @@ extension RDSClient: RDSClientProtocol { return result } + /// Performs the `ModifyDBRecommendation` operation on the `AmazonRDSv19` service. + /// + /// Updates the recommendation status and recommended action status for the specified recommendation. + /// + /// - Parameter ModifyDBRecommendationInput : [no documentation found] + /// + /// - Returns: `ModifyDBRecommendationOutput` : [no documentation found] + public func modifyDBRecommendation(input: ModifyDBRecommendationInput) async throws -> ModifyDBRecommendationOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "modifyDBRecommendation") + .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: "modifyDBRecommendation") + 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.BodyMiddleware(documentWritingClosure: ClientRuntime.FormURLReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: FormURLReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(ModifyDBRecommendationOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `ModifyDBSnapshot` operation on the `AmazonRDSv19` service. /// /// Updates a manual DB snapshot with a new engine version. The snapshot can be encrypted or unencrypted, but not shared or public. Amazon RDS supports upgrading DB snapshots for MySQL, PostgreSQL, and Oracle. This operation doesn't apply to RDS Custom or RDS for Db2. diff --git a/Sources/Services/AWSRDS/RDSClientProtocol.swift b/Sources/Services/AWSRDS/RDSClientProtocol.swift index 4a553bc289a..bccc39fe5d3 100644 --- a/Sources/Services/AWSRDS/RDSClientProtocol.swift +++ b/Sources/Services/AWSRDS/RDSClientProtocol.swift @@ -1219,6 +1219,14 @@ public protocol RDSClientProtocol { /// - `DBProxyTargetNotFoundFault` : The specified RDS DB instance or Aurora DB cluster isn't available for a proxy owned by your Amazon Web Services account in the specified Amazon Web Services Region. /// - `InvalidDBProxyStateFault` : The requested operation can't be performed while the proxy is in this state. func describeDBProxyTargets(input: DescribeDBProxyTargetsInput) async throws -> DescribeDBProxyTargetsOutput + /// Performs the `DescribeDBRecommendations` operation on the `AmazonRDSv19` service. + /// + /// Describes the recommendations to resolve the issues for your DB instances, DB clusters, and DB parameter groups. + /// + /// - Parameter DescribeDBRecommendationsInput : [no documentation found] + /// + /// - Returns: `DescribeDBRecommendationsOutput` : [no documentation found] + func describeDBRecommendations(input: DescribeDBRecommendationsInput) async throws -> DescribeDBRecommendationsOutput /// Performs the `DescribeDBSecurityGroups` operation on the `AmazonRDSv19` service. /// /// Returns a list of DBSecurityGroup descriptions. If a DBSecurityGroupName is specified, the list will contain only the descriptions of the specified DB security group. EC2-Classic was retired on August 15, 2022. If you haven't migrated from EC2-Classic to a VPC, we recommend that you migrate as soon as possible. For more information, see [Migrate from EC2-Classic to a VPC](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) in the Amazon EC2 User Guide, the blog [EC2-Classic Networking is Retiring – Here’s How to Prepare](http://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/), and [Moving a DB instance not in a VPC into a VPC](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.Non-VPC2VPC.html) in the Amazon RDS User Guide. @@ -1789,6 +1797,14 @@ public protocol RDSClientProtocol { /// - `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. /// - `InvalidDBProxyStateFault` : The requested operation can't be performed while the proxy is in this state. func modifyDBProxyTargetGroup(input: ModifyDBProxyTargetGroupInput) async throws -> ModifyDBProxyTargetGroupOutput + /// Performs the `ModifyDBRecommendation` operation on the `AmazonRDSv19` service. + /// + /// Updates the recommendation status and recommended action status for the specified recommendation. + /// + /// - Parameter ModifyDBRecommendationInput : [no documentation found] + /// + /// - Returns: `ModifyDBRecommendationOutput` : [no documentation found] + func modifyDBRecommendation(input: ModifyDBRecommendationInput) async throws -> ModifyDBRecommendationOutput /// Performs the `ModifyDBSnapshot` operation on the `AmazonRDSv19` service. /// /// Updates a manual DB snapshot with a new engine version. The snapshot can be encrypted or unencrypted, but not shared or public. Amazon RDS supports upgrading DB snapshots for MySQL, PostgreSQL, and Oracle. This operation doesn't apply to RDS Custom or RDS for Db2. diff --git a/Sources/Services/AWSRDS/models/Models.swift b/Sources/Services/AWSRDS/models/Models.swift index 27e9bec895f..99abeafb0de 100644 --- a/Sources/Services/AWSRDS/models/Models.swift +++ b/Sources/Services/AWSRDS/models/Models.swift @@ -2932,6 +2932,51 @@ extension RDSClientTypes { } +extension RDSClientTypes.ContextAttribute: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case key = "Key" + case value = "Value" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let key = key { + try container.encode(key, forKey: ClientRuntime.Key("Key")) + } + if let value = value { + try container.encode(value, forKey: ClientRuntime.Key("Value")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let keyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .key) + key = keyDecoded + let valueDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .value) + value = valueDecoded + } +} + +extension RDSClientTypes { + /// The additional attributes of RecommendedAction data type. + public struct ContextAttribute: Swift.Equatable { + /// The key of ContextAttribute. + public var key: Swift.String? + /// The value of ContextAttribute. + public var value: Swift.String? + + public init( + key: Swift.String? = nil, + value: Swift.String? = nil + ) + { + self.key = key + self.value = value + } + } + +} + extension CopyDBClusterParameterGroupInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -6772,7 +6817,7 @@ public struct CreateDBInstanceInput: Swift.Equatable { /// /// RDS for Db2 Constraints to the amount of storage for each storage type are the following: /// - /// * General Purpose (SSD) storage (gp2, gp3): Must be an integer from 20 to 64000. + /// * General Purpose (SSD) storage (gp3): Must be an integer from 20 to 64000. /// /// * Provisioned IOPS storage (io1): Must be an integer from 100 to 64000. /// @@ -19006,6 +19051,311 @@ extension DBProxyTargetNotFoundFaultBody: Swift.Decodable { } } +extension RDSClientTypes.DBRecommendation: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case additionalInfo = "AdditionalInfo" + case category = "Category" + case createdTime = "CreatedTime" + case description = "Description" + case detection = "Detection" + case impact = "Impact" + case issueDetails = "IssueDetails" + case links = "Links" + case reason = "Reason" + case recommendation = "Recommendation" + case recommendationId = "RecommendationId" + case recommendedActions = "RecommendedActions" + case resourceArn = "ResourceArn" + case severity = "Severity" + case source = "Source" + case status = "Status" + case typeDetection = "TypeDetection" + case typeId = "TypeId" + case typeRecommendation = "TypeRecommendation" + case updatedTime = "UpdatedTime" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let additionalInfo = additionalInfo { + try container.encode(additionalInfo, forKey: ClientRuntime.Key("AdditionalInfo")) + } + if let category = category { + try container.encode(category, forKey: ClientRuntime.Key("Category")) + } + if let createdTime = createdTime { + try container.encodeTimestamp(createdTime, format: .dateTime, forKey: ClientRuntime.Key("CreatedTime")) + } + if let description = description { + try container.encode(description, forKey: ClientRuntime.Key("Description")) + } + if let detection = detection { + try container.encode(detection, forKey: ClientRuntime.Key("Detection")) + } + if let impact = impact { + try container.encode(impact, forKey: ClientRuntime.Key("Impact")) + } + if let issueDetails = issueDetails { + try container.encode(issueDetails, forKey: ClientRuntime.Key("IssueDetails")) + } + if let links = links { + if !links.isEmpty { + var linksContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Links")) + for (index0, doclink0) in links.enumerated() { + try linksContainer.encode(doclink0, forKey: ClientRuntime.Key("member.\(index0.advanced(by: 1))")) + } + } + else { + var linksContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Links")) + try linksContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let reason = reason { + try container.encode(reason, forKey: ClientRuntime.Key("Reason")) + } + if let recommendation = recommendation { + try container.encode(recommendation, forKey: ClientRuntime.Key("Recommendation")) + } + if let recommendationId = recommendationId { + try container.encode(recommendationId, forKey: ClientRuntime.Key("RecommendationId")) + } + if let recommendedActions = recommendedActions { + if !recommendedActions.isEmpty { + var recommendedActionsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("RecommendedActions")) + for (index0, recommendedaction0) in recommendedActions.enumerated() { + try recommendedActionsContainer.encode(recommendedaction0, forKey: ClientRuntime.Key("member.\(index0.advanced(by: 1))")) + } + } + else { + var recommendedActionsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("RecommendedActions")) + try recommendedActionsContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let resourceArn = resourceArn { + try container.encode(resourceArn, forKey: ClientRuntime.Key("ResourceArn")) + } + if let severity = severity { + try container.encode(severity, forKey: ClientRuntime.Key("Severity")) + } + if let source = source { + try container.encode(source, forKey: ClientRuntime.Key("Source")) + } + if let status = status { + try container.encode(status, forKey: ClientRuntime.Key("Status")) + } + if let typeDetection = typeDetection { + try container.encode(typeDetection, forKey: ClientRuntime.Key("TypeDetection")) + } + if let typeId = typeId { + try container.encode(typeId, forKey: ClientRuntime.Key("TypeId")) + } + if let typeRecommendation = typeRecommendation { + try container.encode(typeRecommendation, forKey: ClientRuntime.Key("TypeRecommendation")) + } + if let updatedTime = updatedTime { + try container.encodeTimestamp(updatedTime, format: .dateTime, forKey: ClientRuntime.Key("UpdatedTime")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let recommendationIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .recommendationId) + recommendationId = recommendationIdDecoded + let typeIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .typeId) + typeId = typeIdDecoded + let severityDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .severity) + severity = severityDecoded + let resourceArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .resourceArn) + resourceArn = resourceArnDecoded + let statusDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .status) + status = statusDecoded + let createdTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .createdTime) + createdTime = createdTimeDecoded + let updatedTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .updatedTime) + updatedTime = updatedTimeDecoded + let detectionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .detection) + detection = detectionDecoded + let recommendationDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .recommendation) + recommendation = recommendationDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let reasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .reason) + reason = reasonDecoded + if containerValues.contains(.recommendedActions) { + struct KeyVal0{struct member{}} + let recommendedActionsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .recommendedActions) + if let recommendedActionsWrappedContainer = recommendedActionsWrappedContainer { + let recommendedActionsContainer = try recommendedActionsWrappedContainer.decodeIfPresent([RDSClientTypes.RecommendedAction].self, forKey: .member) + var recommendedActionsBuffer:[RDSClientTypes.RecommendedAction]? = nil + if let recommendedActionsContainer = recommendedActionsContainer { + recommendedActionsBuffer = [RDSClientTypes.RecommendedAction]() + for structureContainer0 in recommendedActionsContainer { + recommendedActionsBuffer?.append(structureContainer0) + } + } + recommendedActions = recommendedActionsBuffer + } else { + recommendedActions = [] + } + } else { + recommendedActions = nil + } + let categoryDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .category) + category = categoryDecoded + let sourceDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .source) + source = sourceDecoded + let typeDetectionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .typeDetection) + typeDetection = typeDetectionDecoded + let typeRecommendationDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .typeRecommendation) + typeRecommendation = typeRecommendationDecoded + let impactDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .impact) + impact = impactDecoded + let additionalInfoDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .additionalInfo) + additionalInfo = additionalInfoDecoded + if containerValues.contains(.links) { + struct KeyVal0{struct member{}} + let linksWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .links) + if let linksWrappedContainer = linksWrappedContainer { + let linksContainer = try linksWrappedContainer.decodeIfPresent([RDSClientTypes.DocLink].self, forKey: .member) + var linksBuffer:[RDSClientTypes.DocLink]? = nil + if let linksContainer = linksContainer { + linksBuffer = [RDSClientTypes.DocLink]() + for structureContainer0 in linksContainer { + linksBuffer?.append(structureContainer0) + } + } + links = linksBuffer + } else { + links = [] + } + } else { + links = nil + } + let issueDetailsDecoded = try containerValues.decodeIfPresent(RDSClientTypes.IssueDetails.self, forKey: .issueDetails) + issueDetails = issueDetailsDecoded + } +} + +extension RDSClientTypes { + /// The recommendation for your DB instances, DB clusters, and DB parameter groups. + public struct DBRecommendation: Swift.Equatable { + /// Additional information about the recommendation. The information might contain markdown. + public var additionalInfo: Swift.String? + /// The category of the recommendation. Valid values: + /// + /// * performance efficiency + /// + /// * security + /// + /// * reliability + /// + /// * cost optimization + /// + /// * operational excellence + /// + /// * sustainability + public var category: Swift.String? + /// The time when the recommendation was created. For example, 2023-09-28T01:13:53.931000+00:00. + public var createdTime: ClientRuntime.Date? + /// A detailed description of the recommendation. The description might contain markdown. + public var description: Swift.String? + /// A short description of the issue identified for this recommendation. The description might contain markdown. + public var detection: Swift.String? + /// A short description that explains the possible impact of an issue. + public var impact: Swift.String? + /// Details of the issue that caused the recommendation. + public var issueDetails: RDSClientTypes.IssueDetails? + /// A link to documentation that provides additional information about the recommendation. + public var links: [RDSClientTypes.DocLink]? + /// The reason why this recommendation was created. The information might contain markdown. + public var reason: Swift.String? + /// A short description of the recommendation to resolve an issue. The description might contain markdown. + public var recommendation: Swift.String? + /// The unique identifier of the recommendation. + public var recommendationId: Swift.String? + /// A list of recommended actions. + public var recommendedActions: [RDSClientTypes.RecommendedAction]? + /// The Amazon Resource Name (ARN) of the RDS resource associated with the recommendation. + public var resourceArn: Swift.String? + /// The severity level of the recommendation. The severity level can help you decide the urgency with which to address the recommendation. Valid values: + /// + /// * high + /// + /// * medium + /// + /// * low + /// + /// * informational + public var severity: Swift.String? + /// The Amazon Web Services service that generated the recommendations. + public var source: Swift.String? + /// The current status of the recommendation. Valid values: + /// + /// * active - The recommendations which are ready for you to apply. + /// + /// * pending - The applied or scheduled recommendations which are in progress. + /// + /// * resolved - The recommendations which are completed. + /// + /// * dismissed - The recommendations that you dismissed. + public var status: Swift.String? + /// A short description of the recommendation type. The description might contain markdown. + public var typeDetection: Swift.String? + /// A value that indicates the type of recommendation. This value determines how the description is rendered. + public var typeId: Swift.String? + /// A short description that summarizes the recommendation to fix all the issues of the recommendation type. The description might contain markdown. + public var typeRecommendation: Swift.String? + /// The time when the recommendation was last updated. + public var updatedTime: ClientRuntime.Date? + + public init( + additionalInfo: Swift.String? = nil, + category: Swift.String? = nil, + createdTime: ClientRuntime.Date? = nil, + description: Swift.String? = nil, + detection: Swift.String? = nil, + impact: Swift.String? = nil, + issueDetails: RDSClientTypes.IssueDetails? = nil, + links: [RDSClientTypes.DocLink]? = nil, + reason: Swift.String? = nil, + recommendation: Swift.String? = nil, + recommendationId: Swift.String? = nil, + recommendedActions: [RDSClientTypes.RecommendedAction]? = nil, + resourceArn: Swift.String? = nil, + severity: Swift.String? = nil, + source: Swift.String? = nil, + status: Swift.String? = nil, + typeDetection: Swift.String? = nil, + typeId: Swift.String? = nil, + typeRecommendation: Swift.String? = nil, + updatedTime: ClientRuntime.Date? = nil + ) + { + self.additionalInfo = additionalInfo + self.category = category + self.createdTime = createdTime + self.description = description + self.detection = detection + self.impact = impact + self.issueDetails = issueDetails + self.links = links + self.reason = reason + self.recommendation = recommendation + self.recommendationId = recommendationId + self.recommendedActions = recommendedActions + self.resourceArn = resourceArn + self.severity = severity + self.source = source + self.status = status + self.typeDetection = typeDetection + self.typeId = typeId + self.typeRecommendation = typeRecommendation + self.updatedTime = updatedTime + } + } + +} + extension RDSClientTypes.DBSecurityGroup: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case dbSecurityGroupArn = "DBSecurityGroupArn" @@ -28004,6 +28354,271 @@ enum DescribeDBProxyTargetsOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DescribeDBRecommendationsInput: 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 lastUpdatedAfter = lastUpdatedAfter { + try container.encodeTimestamp(lastUpdatedAfter, format: .dateTime, forKey: ClientRuntime.Key("LastUpdatedAfter")) + } + if let lastUpdatedBefore = lastUpdatedBefore { + try container.encodeTimestamp(lastUpdatedBefore, format: .dateTime, forKey: ClientRuntime.Key("LastUpdatedBefore")) + } + if let locale = locale { + try container.encode(locale, forKey: ClientRuntime.Key("Locale")) + } + 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("DescribeDBRecommendations", forKey:ClientRuntime.Key("Action")) + try container.encode("2014-10-31", forKey:ClientRuntime.Key("Version")) + } +} + +extension DescribeDBRecommendationsInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct DescribeDBRecommendationsInput: Swift.Equatable { + /// A filter that specifies one or more recommendations to describe. Supported Filters: + /// + /// * recommendation-id - Accepts a list of recommendation identifiers. The results list only includes the recommendations whose identifier is one of the specified filter values. + /// + /// * status - Accepts a list of recommendation statuses. Valid values: + /// + /// * active - The recommendations which are ready for you to apply. + /// + /// * pending - The applied or scheduled recommendations which are in progress. + /// + /// * resolved - The recommendations which are completed. + /// + /// * dismissed - The recommendations that you dismissed. + /// + /// + /// The results list only includes the recommendations whose status is one of the specified filter values. + /// + /// * severity - Accepts a list of recommendation severities. The results list only includes the recommendations whose severity is one of the specified filter values. Valid values: + /// + /// * high + /// + /// * medium + /// + /// * low + /// + /// * informational + /// + /// + /// + /// + /// * type-id - Accepts a list of recommendation type identifiers. The results list only includes the recommendations whose type is one of the specified filter values. + /// + /// * dbi-resource-id - Accepts a list of database resource identifiers. The results list only includes the recommendations that generated for the specified databases. + /// + /// * cluster-resource-id - Accepts a list of cluster resource identifiers. The results list only includes the recommendations that generated for the specified clusters. + /// + /// * pg-arn - Accepts a list of parameter group ARNs. The results list only includes the recommendations that generated for the specified parameter groups. + /// + /// * cluster-pg-arn - Accepts a list of cluster parameter group ARNs. The results list only includes the recommendations that generated for the specified cluster parameter groups. + public var filters: [RDSClientTypes.Filter]? + /// A filter to include only the recommendations that were updated after this specified time. + public var lastUpdatedAfter: ClientRuntime.Date? + /// A filter to include only the recommendations that were updated before this specified time. + public var lastUpdatedBefore: ClientRuntime.Date? + /// The language that you choose to return the list of recommendations. Valid values: + /// + /// * en + /// + /// * en_UK + /// + /// * de + /// + /// * es + /// + /// * fr + /// + /// * id + /// + /// * it + /// + /// * ja + /// + /// * ko + /// + /// * pt_BR + /// + /// * zh_TW + /// + /// * zh_CN + public var locale: Swift.String? + /// An optional pagination token provided by a previous DescribeDBRecommendations 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 recommendations 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. + public var maxRecords: Swift.Int? + + public init( + filters: [RDSClientTypes.Filter]? = nil, + lastUpdatedAfter: ClientRuntime.Date? = nil, + lastUpdatedBefore: ClientRuntime.Date? = nil, + locale: Swift.String? = nil, + marker: Swift.String? = nil, + maxRecords: Swift.Int? = nil + ) + { + self.filters = filters + self.lastUpdatedAfter = lastUpdatedAfter + self.lastUpdatedBefore = lastUpdatedBefore + self.locale = locale + self.marker = marker + self.maxRecords = maxRecords + } +} + +struct DescribeDBRecommendationsInputBody: Swift.Equatable { + let lastUpdatedAfter: ClientRuntime.Date? + let lastUpdatedBefore: ClientRuntime.Date? + let locale: Swift.String? + let filters: [RDSClientTypes.Filter]? + let maxRecords: Swift.Int? + let marker: Swift.String? +} + +extension DescribeDBRecommendationsInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case filters = "Filters" + case lastUpdatedAfter = "LastUpdatedAfter" + case lastUpdatedBefore = "LastUpdatedBefore" + case locale = "Locale" + case marker = "Marker" + case maxRecords = "MaxRecords" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let lastUpdatedAfterDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .lastUpdatedAfter) + lastUpdatedAfter = lastUpdatedAfterDecoded + let lastUpdatedBeforeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .lastUpdatedBefore) + lastUpdatedBefore = lastUpdatedBeforeDecoded + let localeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .locale) + locale = localeDecoded + 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 DescribeDBRecommendationsOutput: 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: DescribeDBRecommendationsOutputBody = try responseDecoder.decode(responseBody: data) + self.dbRecommendations = output.dbRecommendations + self.marker = output.marker + } else { + self.dbRecommendations = nil + self.marker = nil + } + } +} + +public struct DescribeDBRecommendationsOutput: Swift.Equatable { + /// A list of recommendations which is returned from DescribeDBRecommendations API request. + public var dbRecommendations: [RDSClientTypes.DBRecommendation]? + /// An optional pagination token provided by a previous DBRecommendationsMessage request. This token can be used later in a DescribeDBRecomendations request. + public var marker: Swift.String? + + public init( + dbRecommendations: [RDSClientTypes.DBRecommendation]? = nil, + marker: Swift.String? = nil + ) + { + self.dbRecommendations = dbRecommendations + self.marker = marker + } +} + +struct DescribeDBRecommendationsOutputBody: Swift.Equatable { + let dbRecommendations: [RDSClientTypes.DBRecommendation]? + let marker: Swift.String? +} + +extension DescribeDBRecommendationsOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case dbRecommendations = "DBRecommendations" + 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("DescribeDBRecommendationsResult")) + if containerValues.contains(.dbRecommendations) { + struct KeyVal0{struct member{}} + let dbRecommendationsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .dbRecommendations) + if let dbRecommendationsWrappedContainer = dbRecommendationsWrappedContainer { + let dbRecommendationsContainer = try dbRecommendationsWrappedContainer.decodeIfPresent([RDSClientTypes.DBRecommendation].self, forKey: .member) + var dbRecommendationsBuffer:[RDSClientTypes.DBRecommendation]? = nil + if let dbRecommendationsContainer = dbRecommendationsContainer { + dbRecommendationsBuffer = [RDSClientTypes.DBRecommendation]() + for structureContainer0 in dbRecommendationsContainer { + dbRecommendationsBuffer?.append(structureContainer0) + } + } + dbRecommendations = dbRecommendationsBuffer + } else { + dbRecommendations = [] + } + } else { + dbRecommendations = nil + } + let markerDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .marker) + marker = markerDecoded + } +} + +enum DescribeDBRecommendationsOutputError: 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 { + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) + } + } +} + extension DescribeDBSecurityGroupsInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -32491,6 +33106,51 @@ enum DescribeValidDBInstanceModificationsOutputError: ClientRuntime.HttpResponse } } +extension RDSClientTypes.DocLink: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case text = "Text" + case url = "Url" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let text = text { + try container.encode(text, forKey: ClientRuntime.Key("Text")) + } + if let url = url { + try container.encode(url, forKey: ClientRuntime.Key("Url")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let textDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .text) + text = textDecoded + let urlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .url) + url = urlDecoded + } +} + +extension RDSClientTypes { + /// A link to documentation that provides additional information for a recommendation. + public struct DocLink: Swift.Equatable { + /// The text with the link to documentation for the recommendation. + public var text: Swift.String? + /// The URL for the documentation for the recommendation. + public var url: Swift.String? + + public init( + text: Swift.String? = nil, + url: Swift.String? = nil + ) + { + self.text = text + self.url = url + } + } + +} + extension RDSClientTypes.DomainMembership: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case authSecretArn = "AuthSecretArn" @@ -34387,6 +35047,8 @@ extension RDSClientTypes { /// /// * DescribeDBInstances /// + /// * DescribeDBRecommendations + /// /// * DescribePendingMaintenanceActions public struct Filter: Swift.Equatable { /// The name of the filter. Filter names are case-sensitive. @@ -37346,6 +38008,41 @@ extension InvalidVPCNetworkStateFaultBody: Swift.Decodable { } } +extension RDSClientTypes.IssueDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case performanceIssueDetails = "PerformanceIssueDetails" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let performanceIssueDetails = performanceIssueDetails { + try container.encode(performanceIssueDetails, forKey: ClientRuntime.Key("PerformanceIssueDetails")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let performanceIssueDetailsDecoded = try containerValues.decodeIfPresent(RDSClientTypes.PerformanceIssueDetails.self, forKey: .performanceIssueDetails) + performanceIssueDetails = performanceIssueDetailsDecoded + } +} + +extension RDSClientTypes { + /// The details of an issue with your DB instances, DB clusters, and DB parameter groups. + public struct IssueDetails: Swift.Equatable { + /// A detailed description of the issue when the recommendation category is performance. + public var performanceIssueDetails: RDSClientTypes.PerformanceIssueDetails? + + public init( + performanceIssueDetails: RDSClientTypes.PerformanceIssueDetails? = nil + ) + { + self.performanceIssueDetails = performanceIssueDetails + } + } + +} + extension KMSKeyNotAccessibleFault { 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 { @@ -37665,6 +38362,177 @@ extension RDSClientTypes { } +extension RDSClientTypes.Metric: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case metricQuery = "MetricQuery" + case name = "Name" + case references = "References" + case statisticsDetails = "StatisticsDetails" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let metricQuery = metricQuery { + try container.encode(metricQuery, forKey: ClientRuntime.Key("MetricQuery")) + } + if let name = name { + try container.encode(name, forKey: ClientRuntime.Key("Name")) + } + if let references = references { + if !references.isEmpty { + var referencesContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("References")) + for (index0, metricreference0) in references.enumerated() { + try referencesContainer.encode(metricreference0, forKey: ClientRuntime.Key("member.\(index0.advanced(by: 1))")) + } + } + else { + var referencesContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("References")) + try referencesContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let statisticsDetails = statisticsDetails { + try container.encode(statisticsDetails, forKey: ClientRuntime.Key("StatisticsDetails")) + } + } + + 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 + if containerValues.contains(.references) { + struct KeyVal0{struct member{}} + let referencesWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .references) + if let referencesWrappedContainer = referencesWrappedContainer { + let referencesContainer = try referencesWrappedContainer.decodeIfPresent([RDSClientTypes.MetricReference].self, forKey: .member) + var referencesBuffer:[RDSClientTypes.MetricReference]? = nil + if let referencesContainer = referencesContainer { + referencesBuffer = [RDSClientTypes.MetricReference]() + for structureContainer0 in referencesContainer { + referencesBuffer?.append(structureContainer0) + } + } + references = referencesBuffer + } else { + references = [] + } + } else { + references = nil + } + let statisticsDetailsDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .statisticsDetails) + statisticsDetails = statisticsDetailsDecoded + let metricQueryDecoded = try containerValues.decodeIfPresent(RDSClientTypes.MetricQuery.self, forKey: .metricQuery) + metricQuery = metricQueryDecoded + } +} + +extension RDSClientTypes { + /// The representation of a metric. + public struct Metric: Swift.Equatable { + /// The query to retrieve metric data points. + public var metricQuery: RDSClientTypes.MetricQuery? + /// The name of a metric. + public var name: Swift.String? + /// A list of metric references (thresholds). + public var references: [RDSClientTypes.MetricReference]? + /// The details of different statistics for a metric. The description might contain markdown. + public var statisticsDetails: Swift.String? + + public init( + metricQuery: RDSClientTypes.MetricQuery? = nil, + name: Swift.String? = nil, + references: [RDSClientTypes.MetricReference]? = nil, + statisticsDetails: Swift.String? = nil + ) + { + self.metricQuery = metricQuery + self.name = name + self.references = references + self.statisticsDetails = statisticsDetails + } + } + +} + +extension RDSClientTypes.MetricQuery: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case performanceInsightsMetricQuery = "PerformanceInsightsMetricQuery" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let performanceInsightsMetricQuery = performanceInsightsMetricQuery { + try container.encode(performanceInsightsMetricQuery, forKey: ClientRuntime.Key("PerformanceInsightsMetricQuery")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let performanceInsightsMetricQueryDecoded = try containerValues.decodeIfPresent(RDSClientTypes.PerformanceInsightsMetricQuery.self, forKey: .performanceInsightsMetricQuery) + performanceInsightsMetricQuery = performanceInsightsMetricQueryDecoded + } +} + +extension RDSClientTypes { + /// The query to retrieve metric data points. + public struct MetricQuery: Swift.Equatable { + /// The Performance Insights query that you can use to retrieve Performance Insights metric data points. + public var performanceInsightsMetricQuery: RDSClientTypes.PerformanceInsightsMetricQuery? + + public init( + performanceInsightsMetricQuery: RDSClientTypes.PerformanceInsightsMetricQuery? = nil + ) + { + self.performanceInsightsMetricQuery = performanceInsightsMetricQuery + } + } + +} + +extension RDSClientTypes.MetricReference: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case name = "Name" + case referenceDetails = "ReferenceDetails" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let name = name { + try container.encode(name, forKey: ClientRuntime.Key("Name")) + } + if let referenceDetails = referenceDetails { + try container.encode(referenceDetails, forKey: ClientRuntime.Key("ReferenceDetails")) + } + } + + 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 referenceDetailsDecoded = try containerValues.decodeIfPresent(RDSClientTypes.ReferenceDetails.self, forKey: .referenceDetails) + referenceDetails = referenceDetailsDecoded + } +} + +extension RDSClientTypes { + /// The reference (threshold) for a metric. + public struct MetricReference: Swift.Equatable { + /// The name of the metric reference. + public var name: Swift.String? + /// The details of a performance issue. + public var referenceDetails: RDSClientTypes.ReferenceDetails? + + public init( + name: Swift.String? = nil, + referenceDetails: RDSClientTypes.ReferenceDetails? = nil + ) + { + self.name = name + self.referenceDetails = referenceDetails + } + } + +} + extension RDSClientTypes.MinimumEngineVersionPerAllowedValue: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case allowedValue = "AllowedValue" @@ -41815,6 +42683,165 @@ enum ModifyDBProxyTargetGroupOutputError: ClientRuntime.HttpResponseErrorBinding } } +extension ModifyDBRecommendationInput: Swift.Encodable { + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let locale = locale { + try container.encode(locale, forKey: ClientRuntime.Key("Locale")) + } + if let recommendationId = recommendationId { + try container.encode(recommendationId, forKey: ClientRuntime.Key("RecommendationId")) + } + if let recommendedActionUpdates = recommendedActionUpdates { + if !recommendedActionUpdates.isEmpty { + var recommendedActionUpdatesContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("RecommendedActionUpdates")) + for (index0, recommendedactionupdate0) in recommendedActionUpdates.enumerated() { + try recommendedActionUpdatesContainer.encode(recommendedactionupdate0, forKey: ClientRuntime.Key("member.\(index0.advanced(by: 1))")) + } + } + else { + var recommendedActionUpdatesContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("RecommendedActionUpdates")) + try recommendedActionUpdatesContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let status = status { + try container.encode(status, forKey: ClientRuntime.Key("Status")) + } + try container.encode("ModifyDBRecommendation", forKey:ClientRuntime.Key("Action")) + try container.encode("2014-10-31", forKey:ClientRuntime.Key("Version")) + } +} + +extension ModifyDBRecommendationInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct ModifyDBRecommendationInput: Swift.Equatable { + /// The language of the modified recommendation. + public var locale: Swift.String? + /// The identifier of the recommendation to update. + /// This member is required. + public var recommendationId: Swift.String? + /// The list of recommended action status to update. You can update multiple recommended actions at one time. + public var recommendedActionUpdates: [RDSClientTypes.RecommendedActionUpdate]? + /// The recommendation status to update. Valid values: + /// + /// * active + /// + /// * dismissed + public var status: Swift.String? + + public init( + locale: Swift.String? = nil, + recommendationId: Swift.String? = nil, + recommendedActionUpdates: [RDSClientTypes.RecommendedActionUpdate]? = nil, + status: Swift.String? = nil + ) + { + self.locale = locale + self.recommendationId = recommendationId + self.recommendedActionUpdates = recommendedActionUpdates + self.status = status + } +} + +struct ModifyDBRecommendationInputBody: Swift.Equatable { + let recommendationId: Swift.String? + let locale: Swift.String? + let status: Swift.String? + let recommendedActionUpdates: [RDSClientTypes.RecommendedActionUpdate]? +} + +extension ModifyDBRecommendationInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case locale = "Locale" + case recommendationId = "RecommendationId" + case recommendedActionUpdates = "RecommendedActionUpdates" + case status = "Status" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let recommendationIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .recommendationId) + recommendationId = recommendationIdDecoded + let localeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .locale) + locale = localeDecoded + let statusDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .status) + status = statusDecoded + if containerValues.contains(.recommendedActionUpdates) { + struct KeyVal0{struct member{}} + let recommendedActionUpdatesWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .recommendedActionUpdates) + if let recommendedActionUpdatesWrappedContainer = recommendedActionUpdatesWrappedContainer { + let recommendedActionUpdatesContainer = try recommendedActionUpdatesWrappedContainer.decodeIfPresent([RDSClientTypes.RecommendedActionUpdate].self, forKey: .member) + var recommendedActionUpdatesBuffer:[RDSClientTypes.RecommendedActionUpdate]? = nil + if let recommendedActionUpdatesContainer = recommendedActionUpdatesContainer { + recommendedActionUpdatesBuffer = [RDSClientTypes.RecommendedActionUpdate]() + for structureContainer0 in recommendedActionUpdatesContainer { + recommendedActionUpdatesBuffer?.append(structureContainer0) + } + } + recommendedActionUpdates = recommendedActionUpdatesBuffer + } else { + recommendedActionUpdates = [] + } + } else { + recommendedActionUpdates = nil + } + } +} + +extension ModifyDBRecommendationOutput: 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: ModifyDBRecommendationOutputBody = try responseDecoder.decode(responseBody: data) + self.dbRecommendation = output.dbRecommendation + } else { + self.dbRecommendation = nil + } + } +} + +public struct ModifyDBRecommendationOutput: Swift.Equatable { + /// The recommendation for your DB instances, DB clusters, and DB parameter groups. + public var dbRecommendation: RDSClientTypes.DBRecommendation? + + public init( + dbRecommendation: RDSClientTypes.DBRecommendation? = nil + ) + { + self.dbRecommendation = dbRecommendation + } +} + +struct ModifyDBRecommendationOutputBody: Swift.Equatable { + let dbRecommendation: RDSClientTypes.DBRecommendation? +} + +extension ModifyDBRecommendationOutputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case dbRecommendation = "DBRecommendation" + } + + 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("ModifyDBRecommendationResult")) + let dbRecommendationDecoded = try containerValues.decodeIfPresent(RDSClientTypes.DBRecommendation.self, forKey: .dbRecommendation) + dbRecommendation = dbRecommendationDecoded + } +} + +enum ModifyDBRecommendationOutputError: 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 { + default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restXMLError.message, requestID: restXMLError.requestId, typeName: restXMLError.errorCode) + } + } +} + extension ModifyDBSnapshotAttributeInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -45482,6 +46509,245 @@ extension RDSClientTypes { } +extension RDSClientTypes.PerformanceInsightsMetricDimensionGroup: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case dimensions = "Dimensions" + case group = "Group" + case limit = "Limit" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let dimensions = dimensions { + if !dimensions.isEmpty { + var dimensionsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Dimensions")) + for (index0, string0) in dimensions.enumerated() { + try dimensionsContainer.encode(string0, forKey: ClientRuntime.Key("member.\(index0.advanced(by: 1))")) + } + } + else { + var dimensionsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Dimensions")) + try dimensionsContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let group = group { + try container.encode(group, forKey: ClientRuntime.Key("Group")) + } + if let limit = limit { + try container.encode(limit, forKey: ClientRuntime.Key("Limit")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + if containerValues.contains(.dimensions) { + struct KeyVal0{struct member{}} + let dimensionsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .dimensions) + if let dimensionsWrappedContainer = dimensionsWrappedContainer { + let dimensionsContainer = try dimensionsWrappedContainer.decodeIfPresent([Swift.String].self, forKey: .member) + var dimensionsBuffer:[Swift.String]? = nil + if let dimensionsContainer = dimensionsContainer { + dimensionsBuffer = [Swift.String]() + for stringContainer0 in dimensionsContainer { + dimensionsBuffer?.append(stringContainer0) + } + } + dimensions = dimensionsBuffer + } else { + dimensions = [] + } + } else { + dimensions = nil + } + let groupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .group) + group = groupDecoded + let limitDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .limit) + limit = limitDecoded + } +} + +extension RDSClientTypes { + /// A logical grouping of Performance Insights metrics for a related subject area. For example, the db.sql dimension group consists of the following dimensions: + /// + /// * db.sql.id - The hash of a running SQL statement, generated by Performance Insights. + /// + /// * db.sql.db_id - Either the SQL ID generated by the database engine, or a value generated by Performance Insights that begins with pi-. + /// + /// * db.sql.statement - The full text of the SQL statement that is running, for example, SELECT * FROM employees. + /// + /// * db.sql_tokenized.id - The hash of the SQL digest generated by Performance Insights. + /// + /// + /// Each response element returns a maximum of 500 bytes. For larger elements, such as SQL statements, only the first 500 bytes are returned. + public struct PerformanceInsightsMetricDimensionGroup: Swift.Equatable { + /// A list of specific dimensions from a dimension group. If this list isn't included, then all of the dimensions in the group were requested, or are present in the response. + public var dimensions: [Swift.String]? + /// The available dimension groups for Performance Insights metric type. + public var group: Swift.String? + /// The maximum number of items to fetch for this dimension group. + public var limit: Swift.Int? + + public init( + dimensions: [Swift.String]? = nil, + group: Swift.String? = nil, + limit: Swift.Int? = nil + ) + { + self.dimensions = dimensions + self.group = group + self.limit = limit + } + } + +} + +extension RDSClientTypes.PerformanceInsightsMetricQuery: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case groupBy = "GroupBy" + case metric = "Metric" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let groupBy = groupBy { + try container.encode(groupBy, forKey: ClientRuntime.Key("GroupBy")) + } + if let metric = metric { + try container.encode(metric, forKey: ClientRuntime.Key("Metric")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let groupByDecoded = try containerValues.decodeIfPresent(RDSClientTypes.PerformanceInsightsMetricDimensionGroup.self, forKey: .groupBy) + groupBy = groupByDecoded + let metricDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .metric) + metric = metricDecoded + } +} + +extension RDSClientTypes { + /// A single Performance Insights metric query to process. You must provide the metric to the query. If other parameters aren't specified, Performance Insights returns all data points for the specified metric. Optionally, you can request the data points to be aggregated by dimension group (GroupBy) and return only those data points that match your criteria (Filter). Constraints: + /// + /// * Must be a valid Performance Insights query. + public struct PerformanceInsightsMetricQuery: Swift.Equatable { + /// A specification for how to aggregate the data points from a query result. You must specify a valid dimension group. Performance Insights will return all of the dimensions within that group, unless you provide the names of specific dimensions within that group. You can also request that Performance Insights return a limited number of values for a dimension. + public var groupBy: RDSClientTypes.PerformanceInsightsMetricDimensionGroup? + /// The name of a Performance Insights metric to be measured. Valid Values: + /// + /// * db.load.avg - A scaled representation of the number of active sessions for the database engine. + /// + /// * db.sampledload.avg - The raw number of active sessions for the database engine. + /// + /// * The counter metrics listed in [Performance Insights operating system counters](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights_Counters.html#USER_PerfInsights_Counters.OS) in the Amazon Aurora User Guide. + /// + /// + /// If the number of active sessions is less than an internal Performance Insights threshold, db.load.avg and db.sampledload.avg are the same value. If the number of active sessions is greater than the internal threshold, Performance Insights samples the active sessions, with db.load.avg showing the scaled values, db.sampledload.avg showing the raw values, and db.sampledload.avg less than db.load.avg. For most use cases, you can query db.load.avg only. + public var metric: Swift.String? + + public init( + groupBy: RDSClientTypes.PerformanceInsightsMetricDimensionGroup? = nil, + metric: Swift.String? = nil + ) + { + self.groupBy = groupBy + self.metric = metric + } + } + +} + +extension RDSClientTypes.PerformanceIssueDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case analysis = "Analysis" + case endTime = "EndTime" + case metrics = "Metrics" + case startTime = "StartTime" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let analysis = analysis { + try container.encode(analysis, forKey: ClientRuntime.Key("Analysis")) + } + if let endTime = endTime { + try container.encodeTimestamp(endTime, format: .dateTime, forKey: ClientRuntime.Key("EndTime")) + } + if let metrics = metrics { + if !metrics.isEmpty { + var metricsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Metrics")) + for (index0, metric0) in metrics.enumerated() { + try metricsContainer.encode(metric0, forKey: ClientRuntime.Key("member.\(index0.advanced(by: 1))")) + } + } + else { + var metricsContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Metrics")) + try metricsContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let startTime = startTime { + try container.encodeTimestamp(startTime, format: .dateTime, forKey: ClientRuntime.Key("StartTime")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let startTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .startTime) + startTime = startTimeDecoded + let endTimeDecoded = try containerValues.decodeTimestampIfPresent(.dateTime, forKey: .endTime) + endTime = endTimeDecoded + if containerValues.contains(.metrics) { + struct KeyVal0{struct member{}} + let metricsWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .metrics) + if let metricsWrappedContainer = metricsWrappedContainer { + let metricsContainer = try metricsWrappedContainer.decodeIfPresent([RDSClientTypes.Metric].self, forKey: .member) + var metricsBuffer:[RDSClientTypes.Metric]? = nil + if let metricsContainer = metricsContainer { + metricsBuffer = [RDSClientTypes.Metric]() + for structureContainer0 in metricsContainer { + metricsBuffer?.append(structureContainer0) + } + } + metrics = metricsBuffer + } else { + metrics = [] + } + } else { + metrics = nil + } + let analysisDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .analysis) + analysis = analysisDecoded + } +} + +extension RDSClientTypes { + /// Details of the performance issue. + public struct PerformanceIssueDetails: Swift.Equatable { + /// The analysis of the performance issue. The information might contain markdown. + public var analysis: Swift.String? + /// The time when the performance issue stopped. + public var endTime: ClientRuntime.Date? + /// The metrics that are relevant to the performance issue. + public var metrics: [RDSClientTypes.Metric]? + /// The time when the performance issue started. + public var startTime: ClientRuntime.Date? + + public init( + analysis: Swift.String? = nil, + endTime: ClientRuntime.Date? = nil, + metrics: [RDSClientTypes.Metric]? = nil, + startTime: ClientRuntime.Date? = nil + ) + { + self.analysis = analysis + self.endTime = endTime + self.metrics = metrics + self.startTime = startTime + } + } + +} + extension PointInTimeRestoreNotEnabledFault { 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 { @@ -46390,6 +47656,309 @@ enum RebootDBInstanceOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension RDSClientTypes.RecommendedAction: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case actionId = "ActionId" + case applyModes = "ApplyModes" + case contextAttributes = "ContextAttributes" + case description = "Description" + case issueDetails = "IssueDetails" + case operation = "Operation" + case parameters = "Parameters" + case status = "Status" + case title = "Title" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let actionId = actionId { + try container.encode(actionId, forKey: ClientRuntime.Key("ActionId")) + } + if let applyModes = applyModes { + if !applyModes.isEmpty { + var applyModesContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("ApplyModes")) + for (index0, string0) in applyModes.enumerated() { + try applyModesContainer.encode(string0, forKey: ClientRuntime.Key("member.\(index0.advanced(by: 1))")) + } + } + else { + var applyModesContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("ApplyModes")) + try applyModesContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let contextAttributes = contextAttributes { + if !contextAttributes.isEmpty { + var contextAttributesContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("ContextAttributes")) + for (index0, contextattribute0) in contextAttributes.enumerated() { + try contextAttributesContainer.encode(contextattribute0, forKey: ClientRuntime.Key("member.\(index0.advanced(by: 1))")) + } + } + else { + var contextAttributesContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("ContextAttributes")) + try contextAttributesContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let description = description { + try container.encode(description, forKey: ClientRuntime.Key("Description")) + } + if let issueDetails = issueDetails { + try container.encode(issueDetails, forKey: ClientRuntime.Key("IssueDetails")) + } + if let operation = operation { + try container.encode(operation, forKey: ClientRuntime.Key("Operation")) + } + if let parameters = parameters { + if !parameters.isEmpty { + var parametersContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Parameters")) + for (index0, recommendedactionparameter0) in parameters.enumerated() { + try parametersContainer.encode(recommendedactionparameter0, forKey: ClientRuntime.Key("member.\(index0.advanced(by: 1))")) + } + } + else { + var parametersContainer = container.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: ClientRuntime.Key("Parameters")) + try parametersContainer.encode("", forKey: ClientRuntime.Key("")) + } + } + if let status = status { + try container.encode(status, forKey: ClientRuntime.Key("Status")) + } + if let title = title { + try container.encode(title, forKey: ClientRuntime.Key("Title")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let actionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .actionId) + actionId = actionIdDecoded + let titleDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .title) + title = titleDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let operationDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .operation) + operation = operationDecoded + if containerValues.contains(.parameters) { + struct KeyVal0{struct member{}} + let parametersWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .parameters) + if let parametersWrappedContainer = parametersWrappedContainer { + let parametersContainer = try parametersWrappedContainer.decodeIfPresent([RDSClientTypes.RecommendedActionParameter].self, forKey: .member) + var parametersBuffer:[RDSClientTypes.RecommendedActionParameter]? = nil + if let parametersContainer = parametersContainer { + parametersBuffer = [RDSClientTypes.RecommendedActionParameter]() + for structureContainer0 in parametersContainer { + parametersBuffer?.append(structureContainer0) + } + } + parameters = parametersBuffer + } else { + parameters = [] + } + } else { + parameters = nil + } + if containerValues.contains(.applyModes) { + struct KeyVal0{struct member{}} + let applyModesWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .applyModes) + if let applyModesWrappedContainer = applyModesWrappedContainer { + let applyModesContainer = try applyModesWrappedContainer.decodeIfPresent([Swift.String].self, forKey: .member) + var applyModesBuffer:[Swift.String]? = nil + if let applyModesContainer = applyModesContainer { + applyModesBuffer = [Swift.String]() + for stringContainer0 in applyModesContainer { + applyModesBuffer?.append(stringContainer0) + } + } + applyModes = applyModesBuffer + } else { + applyModes = [] + } + } else { + applyModes = nil + } + let statusDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .status) + status = statusDecoded + let issueDetailsDecoded = try containerValues.decodeIfPresent(RDSClientTypes.IssueDetails.self, forKey: .issueDetails) + issueDetails = issueDetailsDecoded + if containerValues.contains(.contextAttributes) { + struct KeyVal0{struct member{}} + let contextAttributesWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey.CodingKeys.self, forKey: .contextAttributes) + if let contextAttributesWrappedContainer = contextAttributesWrappedContainer { + let contextAttributesContainer = try contextAttributesWrappedContainer.decodeIfPresent([RDSClientTypes.ContextAttribute].self, forKey: .member) + var contextAttributesBuffer:[RDSClientTypes.ContextAttribute]? = nil + if let contextAttributesContainer = contextAttributesContainer { + contextAttributesBuffer = [RDSClientTypes.ContextAttribute]() + for structureContainer0 in contextAttributesContainer { + contextAttributesBuffer?.append(structureContainer0) + } + } + contextAttributes = contextAttributesBuffer + } else { + contextAttributes = [] + } + } else { + contextAttributes = nil + } + } +} + +extension RDSClientTypes { + /// The recommended actions to apply to resolve the issues associated with your DB instances, DB clusters, and DB parameter groups. + public struct RecommendedAction: Swift.Equatable { + /// The unique identifier of the recommended action. + public var actionId: Swift.String? + /// The methods to apply the recommended action. Valid values: + /// + /// * manual - The action requires you to resolve the recommendation manually. + /// + /// * immediately - The action is applied immediately. + /// + /// * next-maintainance-window - The action is applied during the next scheduled maintainance. + public var applyModes: [Swift.String]? + /// The supporting attributes to explain the recommended action. + public var contextAttributes: [RDSClientTypes.ContextAttribute]? + /// A detailed description of the action. The description might contain markdown. + public var description: Swift.String? + /// The details of the issue. + public var issueDetails: RDSClientTypes.IssueDetails? + /// An API operation for the action. + public var operation: Swift.String? + /// The parameters for the API operation. + public var parameters: [RDSClientTypes.RecommendedActionParameter]? + /// The status of the action. + /// + /// * ready + /// + /// * applied + /// + /// * scheduled + /// + /// * resolved + public var status: Swift.String? + /// A short description to summarize the action. The description might contain markdown. + public var title: Swift.String? + + public init( + actionId: Swift.String? = nil, + applyModes: [Swift.String]? = nil, + contextAttributes: [RDSClientTypes.ContextAttribute]? = nil, + description: Swift.String? = nil, + issueDetails: RDSClientTypes.IssueDetails? = nil, + operation: Swift.String? = nil, + parameters: [RDSClientTypes.RecommendedActionParameter]? = nil, + status: Swift.String? = nil, + title: Swift.String? = nil + ) + { + self.actionId = actionId + self.applyModes = applyModes + self.contextAttributes = contextAttributes + self.description = description + self.issueDetails = issueDetails + self.operation = operation + self.parameters = parameters + self.status = status + self.title = title + } + } + +} + +extension RDSClientTypes.RecommendedActionParameter: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case key = "Key" + case value = "Value" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let key = key { + try container.encode(key, forKey: ClientRuntime.Key("Key")) + } + if let value = value { + try container.encode(value, forKey: ClientRuntime.Key("Value")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let keyDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .key) + key = keyDecoded + let valueDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .value) + value = valueDecoded + } +} + +extension RDSClientTypes { + /// A single parameter to use with the RecommendedAction API operation to apply the action. + public struct RecommendedActionParameter: Swift.Equatable { + /// The key of the parameter to use with the RecommendedAction API operation. + public var key: Swift.String? + /// The value of the parameter to use with the RecommendedAction API operation. + public var value: Swift.String? + + public init( + key: Swift.String? = nil, + value: Swift.String? = nil + ) + { + self.key = key + self.value = value + } + } + +} + +extension RDSClientTypes.RecommendedActionUpdate: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case actionId = "ActionId" + case status = "Status" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let actionId = actionId { + try container.encode(actionId, forKey: ClientRuntime.Key("ActionId")) + } + if let status = status { + try container.encode(status, forKey: ClientRuntime.Key("Status")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let actionIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .actionId) + actionId = actionIdDecoded + let statusDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .status) + status = statusDecoded + } +} + +extension RDSClientTypes { + /// The recommended status to update for the specified recommendation action ID. + public struct RecommendedActionUpdate: Swift.Equatable { + /// A unique identifier of the updated recommendation action. + /// This member is required. + public var actionId: Swift.String? + /// The status of the updated recommendation action. + /// + /// * applied + /// + /// * scheduled + /// This member is required. + public var status: Swift.String? + + public init( + actionId: Swift.String? = nil, + status: Swift.String? = nil + ) + { + self.actionId = actionId + self.status = status + } + } + +} + extension RDSClientTypes.RecurringCharge: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case recurringChargeAmount = "RecurringChargeAmount" @@ -46435,6 +48004,41 @@ extension RDSClientTypes { } +extension RDSClientTypes.ReferenceDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case scalarReferenceDetails = "ScalarReferenceDetails" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let scalarReferenceDetails = scalarReferenceDetails { + try container.encode(scalarReferenceDetails, forKey: ClientRuntime.Key("ScalarReferenceDetails")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let scalarReferenceDetailsDecoded = try containerValues.decodeIfPresent(RDSClientTypes.ScalarReferenceDetails.self, forKey: .scalarReferenceDetails) + scalarReferenceDetails = scalarReferenceDetailsDecoded + } +} + +extension RDSClientTypes { + /// The reference details of a metric. + public struct ReferenceDetails: Swift.Equatable { + /// The metric reference details when the reference is a scalar. + public var scalarReferenceDetails: RDSClientTypes.ScalarReferenceDetails? + + public init( + scalarReferenceDetails: RDSClientTypes.ScalarReferenceDetails? = nil + ) + { + self.scalarReferenceDetails = scalarReferenceDetails + } + } + +} + extension RegisterDBProxyTargetsInput: Swift.Encodable { public func encode(to encoder: Swift.Encoder) throws { var container = encoder.container(keyedBy: ClientRuntime.Key.self) @@ -52859,6 +54463,41 @@ extension SNSTopicArnNotFoundFaultBody: Swift.Decodable { } } +extension RDSClientTypes.ScalarReferenceDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case value = "Value" + } + + public func encode(to encoder: Swift.Encoder) throws { + var container = encoder.container(keyedBy: ClientRuntime.Key.self) + if let value = value { + try container.encode(value, forKey: ClientRuntime.Key("Value")) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let valueDecoded = try containerValues.decodeIfPresent(Swift.Double.self, forKey: .value) + value = valueDecoded + } +} + +extension RDSClientTypes { + /// The metric reference details when the reference is a scalar. + public struct ScalarReferenceDetails: Swift.Equatable { + /// The value of a scalar reference. + public var value: Swift.Double? + + public init( + value: Swift.Double? = nil + ) + { + self.value = value + } + } + +} + extension RDSClientTypes.ScalingConfiguration: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case autoPause = "AutoPause" diff --git a/Sources/Services/AWSRoute53Resolver/Route53ResolverClient.swift b/Sources/Services/AWSRoute53Resolver/Route53ResolverClient.swift index 38f6517938b..b31f4788d45 100644 --- a/Sources/Services/AWSRoute53Resolver/Route53ResolverClient.swift +++ b/Sources/Services/AWSRoute53Resolver/Route53ResolverClient.swift @@ -84,7 +84,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `LimitExceededException` : The request caused one or more limits to be exceeded. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func associateFirewallRuleGroup(input: AssociateFirewallRuleGroupInput) async throws -> AssociateFirewallRuleGroupOutput { let context = ClientRuntime.HttpContextBuilder() @@ -297,7 +297,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `LimitExceededException` : The request caused one or more limits to be exceeded. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func createFirewallDomainList(input: CreateFirewallDomainListInput) async throws -> CreateFirewallDomainListOutput { let context = ClientRuntime.HttpContextBuilder() @@ -350,7 +350,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `LimitExceededException` : The request caused one or more limits to be exceeded. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func createFirewallRule(input: CreateFirewallRuleInput) async throws -> CreateFirewallRuleOutput { let context = ClientRuntime.HttpContextBuilder() @@ -402,7 +402,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `LimitExceededException` : The request caused one or more limits to be exceeded. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func createFirewallRuleGroup(input: CreateFirewallRuleGroupInput) async throws -> CreateFirewallRuleGroupOutput { let context = ClientRuntime.HttpContextBuilder() @@ -441,7 +441,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// Performs the `CreateOutpostResolver` operation on the `Route53Resolver` service. /// - /// Creates an Route 53 Resolver on an Outpost. + /// Creates a Route 53 Resolver on an Outpost. /// /// - Parameter CreateOutpostResolverInput : [no documentation found] /// @@ -455,7 +455,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ServiceQuotaExceededException` : Fulfilling the request would cause one or more quotas to be exceeded. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func createOutpostResolver(input: CreateOutpostResolverInput) async throws -> CreateOutpostResolverOutput { let context = ClientRuntime.HttpContextBuilder() @@ -506,6 +506,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `InvalidParameterException` : One or more parameters in this request are not valid. /// - `InvalidRequestException` : The request is invalid. @@ -614,6 +615,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `InvalidParameterException` : One or more parameters in this request are not valid. /// - `InvalidRequestException` : The request is invalid. @@ -774,7 +776,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func deleteFirewallRuleGroup(input: DeleteFirewallRuleGroupInput) async throws -> DeleteFirewallRuleGroupOutput { let context = ClientRuntime.HttpContextBuilder() @@ -826,7 +828,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func deleteOutpostResolver(input: DeleteOutpostResolverInput) async throws -> DeleteOutpostResolverOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1036,7 +1038,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func disassociateFirewallRuleGroup(input: DisassociateFirewallRuleGroupInput) async throws -> DisassociateFirewallRuleGroupOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1245,7 +1247,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func getFirewallConfig(input: GetFirewallConfigInput) async throws -> GetFirewallConfigOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1446,7 +1448,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func getFirewallRuleGroupPolicy(input: GetFirewallRuleGroupPolicyInput) async throws -> GetFirewallRuleGroupPolicyOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1497,7 +1499,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func getOutpostResolver(input: GetOutpostResolverInput) async throws -> GetOutpostResolverOutput { let context = ClientRuntime.HttpContextBuilder() @@ -1549,7 +1551,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InvalidParameterException` : One or more parameters in this request are not valid. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func getResolverConfig(input: GetResolverConfigInput) async throws -> GetResolverConfigOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2015,7 +2017,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `LimitExceededException` : The request caused one or more limits to be exceeded. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func importFirewallDomains(input: ImportFirewallDomainsInput) async throws -> ImportFirewallDomainsOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2065,7 +2067,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func listFirewallConfigs(input: ListFirewallConfigsInput) async throws -> ListFirewallConfigsOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2115,7 +2117,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func listFirewallDomainLists(input: ListFirewallDomainListsInput) async throws -> ListFirewallDomainListsOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2166,7 +2168,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func listFirewallDomains(input: ListFirewallDomainsInput) async throws -> ListFirewallDomainsOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2216,7 +2218,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func listFirewallRuleGroupAssociations(input: ListFirewallRuleGroupAssociationsInput) async throws -> ListFirewallRuleGroupAssociationsOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2266,7 +2268,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func listFirewallRuleGroups(input: ListFirewallRuleGroupsInput) async throws -> ListFirewallRuleGroupsOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2317,7 +2319,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func listFirewallRules(input: ListFirewallRulesInput) async throws -> ListFirewallRulesOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2368,7 +2370,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func listOutpostResolvers(input: ListOutpostResolversInput) async throws -> ListOutpostResolversOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2421,7 +2423,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InvalidParameterException` : One or more parameters in this request are not valid. /// - `InvalidRequestException` : The request is invalid. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func listResolverConfigs(input: ListResolverConfigsInput) async throws -> ListResolverConfigsOutput { let context = ClientRuntime.HttpContextBuilder() @@ -2884,7 +2886,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func putFirewallRuleGroupPolicy(input: PutFirewallRuleGroupPolicyInput) async throws -> PutFirewallRuleGroupPolicyOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3142,7 +3144,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func updateFirewallConfig(input: UpdateFirewallConfigInput) async throws -> UpdateFirewallConfigOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3195,7 +3197,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `LimitExceededException` : The request caused one or more limits to be exceeded. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func updateFirewallDomains(input: UpdateFirewallDomainsInput) async throws -> UpdateFirewallDomainsOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3247,7 +3249,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func updateFirewallRule(input: UpdateFirewallRuleInput) async throws -> UpdateFirewallRuleOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3299,7 +3301,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func updateFirewallRuleGroupAssociation(input: UpdateFirewallRuleGroupAssociationInput) async throws -> UpdateFirewallRuleGroupAssociationOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3352,7 +3354,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ServiceQuotaExceededException` : Fulfilling the request would cause one or more quotas to be exceeded. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func updateOutpostResolver(input: UpdateOutpostResolverInput) async throws -> UpdateOutpostResolverOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3407,7 +3409,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ResourceUnavailableException` : The specified resource isn't available. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public func updateResolverConfig(input: UpdateResolverConfigInput) async throws -> UpdateResolverConfigOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3497,7 +3499,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// Performs the `UpdateResolverEndpoint` operation on the `Route53Resolver` service. /// - /// Updates the name, or enpoint type for an inbound or an outbound Resolver endpoint. You can only update between IPV4 and DUALSTACK, IPV6 endpoint type can't be updated to other type. + /// Updates the name, or endpoint type for an inbound or an outbound Resolver endpoint. You can only update between IPV4 and DUALSTACK, IPV6 endpoint type can't be updated to other type. /// /// - Parameter UpdateResolverEndpointInput : [no documentation found] /// @@ -3506,6 +3508,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `InvalidParameterException` : One or more parameters in this request are not valid. /// - `InvalidRequestException` : The request is invalid. @@ -3557,6 +3560,7 @@ extension Route53ResolverClient: Route53ResolverClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `InvalidParameterException` : One or more parameters in this request are not valid. /// - `InvalidRequestException` : The request is invalid. diff --git a/Sources/Services/AWSRoute53Resolver/Route53ResolverClientProtocol.swift b/Sources/Services/AWSRoute53Resolver/Route53ResolverClientProtocol.swift index a861bd55b09..579e7a340ae 100644 --- a/Sources/Services/AWSRoute53Resolver/Route53ResolverClientProtocol.swift +++ b/Sources/Services/AWSRoute53Resolver/Route53ResolverClientProtocol.swift @@ -21,7 +21,7 @@ public protocol Route53ResolverClientProtocol { /// - `LimitExceededException` : The request caused one or more limits to be exceeded. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func associateFirewallRuleGroup(input: AssociateFirewallRuleGroupInput) async throws -> AssociateFirewallRuleGroupOutput /// Performs the `AssociateResolverEndpointIpAddress` operation on the `Route53Resolver` service. /// @@ -97,7 +97,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `LimitExceededException` : The request caused one or more limits to be exceeded. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func createFirewallDomainList(input: CreateFirewallDomainListInput) async throws -> CreateFirewallDomainListOutput /// Performs the `CreateFirewallRule` operation on the `Route53Resolver` service. /// @@ -115,7 +115,7 @@ public protocol Route53ResolverClientProtocol { /// - `LimitExceededException` : The request caused one or more limits to be exceeded. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func createFirewallRule(input: CreateFirewallRuleInput) async throws -> CreateFirewallRuleOutput /// Performs the `CreateFirewallRuleGroup` operation on the `Route53Resolver` service. /// @@ -132,11 +132,11 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `LimitExceededException` : The request caused one or more limits to be exceeded. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func createFirewallRuleGroup(input: CreateFirewallRuleGroupInput) async throws -> CreateFirewallRuleGroupOutput /// Performs the `CreateOutpostResolver` operation on the `Route53Resolver` service. /// - /// Creates an Route 53 Resolver on an Outpost. + /// Creates a Route 53 Resolver on an Outpost. /// /// - Parameter CreateOutpostResolverInput : [no documentation found] /// @@ -150,7 +150,7 @@ public protocol Route53ResolverClientProtocol { /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ServiceQuotaExceededException` : Fulfilling the request would cause one or more quotas to be exceeded. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func createOutpostResolver(input: CreateOutpostResolverInput) async throws -> CreateOutpostResolverOutput /// Performs the `CreateResolverEndpoint` operation on the `Route53Resolver` service. /// @@ -167,6 +167,7 @@ public protocol Route53ResolverClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `InvalidParameterException` : One or more parameters in this request are not valid. /// - `InvalidRequestException` : The request is invalid. @@ -206,6 +207,7 @@ public protocol Route53ResolverClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `InvalidParameterException` : One or more parameters in this request are not valid. /// - `InvalidRequestException` : The request is invalid. @@ -264,7 +266,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func deleteFirewallRuleGroup(input: DeleteFirewallRuleGroupInput) async throws -> DeleteFirewallRuleGroupOutput /// Performs the `DeleteOutpostResolver` operation on the `Route53Resolver` service. /// @@ -282,7 +284,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func deleteOutpostResolver(input: DeleteOutpostResolverInput) async throws -> DeleteOutpostResolverOutput /// Performs the `DeleteResolverEndpoint` operation on the `Route53Resolver` service. /// @@ -356,7 +358,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func disassociateFirewallRuleGroup(input: DisassociateFirewallRuleGroupInput) async throws -> DisassociateFirewallRuleGroupOutput /// Performs the `DisassociateResolverEndpointIpAddress` operation on the `Route53Resolver` service. /// @@ -429,7 +431,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func getFirewallConfig(input: GetFirewallConfigInput) async throws -> GetFirewallConfigOutput /// Performs the `GetFirewallDomainList` operation on the `Route53Resolver` service. /// @@ -494,7 +496,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func getFirewallRuleGroupPolicy(input: GetFirewallRuleGroupPolicyInput) async throws -> GetFirewallRuleGroupPolicyOutput /// Performs the `GetOutpostResolver` operation on the `Route53Resolver` service. /// @@ -511,7 +513,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func getOutpostResolver(input: GetOutpostResolverInput) async throws -> GetOutpostResolverOutput /// Performs the `GetResolverConfig` operation on the `Route53Resolver` service. /// @@ -529,7 +531,7 @@ public protocol Route53ResolverClientProtocol { /// - `InvalidParameterException` : One or more parameters in this request are not valid. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func getResolverConfig(input: GetResolverConfigInput) async throws -> GetResolverConfigOutput /// Performs the `GetResolverDnssecConfig` operation on the `Route53Resolver` service. /// @@ -689,7 +691,7 @@ public protocol Route53ResolverClientProtocol { /// - `LimitExceededException` : The request caused one or more limits to be exceeded. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func importFirewallDomains(input: ImportFirewallDomainsInput) async throws -> ImportFirewallDomainsOutput /// Performs the `ListFirewallConfigs` operation on the `Route53Resolver` service. /// @@ -705,7 +707,7 @@ public protocol Route53ResolverClientProtocol { /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func listFirewallConfigs(input: ListFirewallConfigsInput) async throws -> ListFirewallConfigsOutput /// Performs the `ListFirewallDomainLists` operation on the `Route53Resolver` service. /// @@ -721,7 +723,7 @@ public protocol Route53ResolverClientProtocol { /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func listFirewallDomainLists(input: ListFirewallDomainListsInput) async throws -> ListFirewallDomainListsOutput /// Performs the `ListFirewallDomains` operation on the `Route53Resolver` service. /// @@ -738,7 +740,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func listFirewallDomains(input: ListFirewallDomainsInput) async throws -> ListFirewallDomainsOutput /// Performs the `ListFirewallRuleGroupAssociations` operation on the `Route53Resolver` service. /// @@ -754,7 +756,7 @@ public protocol Route53ResolverClientProtocol { /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func listFirewallRuleGroupAssociations(input: ListFirewallRuleGroupAssociationsInput) async throws -> ListFirewallRuleGroupAssociationsOutput /// Performs the `ListFirewallRuleGroups` operation on the `Route53Resolver` service. /// @@ -770,7 +772,7 @@ public protocol Route53ResolverClientProtocol { /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func listFirewallRuleGroups(input: ListFirewallRuleGroupsInput) async throws -> ListFirewallRuleGroupsOutput /// Performs the `ListFirewallRules` operation on the `Route53Resolver` service. /// @@ -787,7 +789,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func listFirewallRules(input: ListFirewallRulesInput) async throws -> ListFirewallRulesOutput /// Performs the `ListOutpostResolvers` operation on the `Route53Resolver` service. /// @@ -804,7 +806,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func listOutpostResolvers(input: ListOutpostResolversInput) async throws -> ListOutpostResolversOutput /// Performs the `ListResolverConfigs` operation on the `Route53Resolver` service. /// @@ -823,7 +825,7 @@ public protocol Route53ResolverClientProtocol { /// - `InvalidParameterException` : One or more parameters in this request are not valid. /// - `InvalidRequestException` : The request is invalid. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func listResolverConfigs(input: ListResolverConfigsInput) async throws -> ListResolverConfigsOutput /// Performs the `ListResolverDnssecConfigs` operation on the `Route53Resolver` service. /// @@ -980,7 +982,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func putFirewallRuleGroupPolicy(input: PutFirewallRuleGroupPolicyInput) async throws -> PutFirewallRuleGroupPolicyOutput /// Performs the `PutResolverQueryLogConfigPolicy` operation on the `Route53Resolver` service. /// @@ -1068,7 +1070,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func updateFirewallConfig(input: UpdateFirewallConfigInput) async throws -> UpdateFirewallConfigOutput /// Performs the `UpdateFirewallDomains` operation on the `Route53Resolver` service. /// @@ -1087,7 +1089,7 @@ public protocol Route53ResolverClientProtocol { /// - `LimitExceededException` : The request caused one or more limits to be exceeded. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func updateFirewallDomains(input: UpdateFirewallDomainsInput) async throws -> UpdateFirewallDomainsOutput /// Performs the `UpdateFirewallRule` operation on the `Route53Resolver` service. /// @@ -1105,7 +1107,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func updateFirewallRule(input: UpdateFirewallRuleInput) async throws -> UpdateFirewallRuleOutput /// Performs the `UpdateFirewallRuleGroupAssociation` operation on the `Route53Resolver` service. /// @@ -1123,7 +1125,7 @@ public protocol Route53ResolverClientProtocol { /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func updateFirewallRuleGroupAssociation(input: UpdateFirewallRuleGroupAssociationInput) async throws -> UpdateFirewallRuleGroupAssociationOutput /// Performs the `UpdateOutpostResolver` operation on the `Route53Resolver` service. /// @@ -1142,7 +1144,7 @@ public protocol Route53ResolverClientProtocol { /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ServiceQuotaExceededException` : Fulfilling the request would cause one or more quotas to be exceeded. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func updateOutpostResolver(input: UpdateOutpostResolverInput) async throws -> UpdateOutpostResolverOutput /// Performs the `UpdateResolverConfig` operation on the `Route53Resolver` service. /// @@ -1163,7 +1165,7 @@ public protocol Route53ResolverClientProtocol { /// - `ResourceNotFoundException` : The specified resource doesn't exist. /// - `ResourceUnavailableException` : The specified resource isn't available. /// - `ThrottlingException` : The request was throttled. Try again in a few minutes. - /// - `ValidationException` : You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. + /// - `ValidationException` : You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. func updateResolverConfig(input: UpdateResolverConfigInput) async throws -> UpdateResolverConfigOutput /// Performs the `UpdateResolverDnssecConfig` operation on the `Route53Resolver` service. /// @@ -1185,7 +1187,7 @@ public protocol Route53ResolverClientProtocol { func updateResolverDnssecConfig(input: UpdateResolverDnssecConfigInput) async throws -> UpdateResolverDnssecConfigOutput /// Performs the `UpdateResolverEndpoint` operation on the `Route53Resolver` service. /// - /// Updates the name, or enpoint type for an inbound or an outbound Resolver endpoint. You can only update between IPV4 and DUALSTACK, IPV6 endpoint type can't be updated to other type. + /// Updates the name, or endpoint type for an inbound or an outbound Resolver endpoint. You can only update between IPV4 and DUALSTACK, IPV6 endpoint type can't be updated to other type. /// /// - Parameter UpdateResolverEndpointInput : [no documentation found] /// @@ -1194,6 +1196,7 @@ public protocol Route53ResolverClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `InvalidParameterException` : One or more parameters in this request are not valid. /// - `InvalidRequestException` : The request is invalid. @@ -1211,6 +1214,7 @@ public protocol Route53ResolverClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `AccessDeniedException` : The current account doesn't have the IAM permissions required to perform the specified Resolver operation. /// - `InternalServiceErrorException` : We encountered an unknown error. Try again in a few minutes. /// - `InvalidParameterException` : One or more parameters in this request are not valid. /// - `InvalidRequestException` : The request is invalid. diff --git a/Sources/Services/AWSRoute53Resolver/models/Models.swift b/Sources/Services/AWSRoute53Resolver/models/Models.swift index 220710e9d8f..3995f946885 100644 --- a/Sources/Services/AWSRoute53Resolver/models/Models.swift +++ b/Sources/Services/AWSRoute53Resolver/models/Models.swift @@ -1506,6 +1506,7 @@ extension CreateResolverEndpointInput: Swift.Encodable { case name = "Name" case outpostArn = "OutpostArn" case preferredInstanceType = "PreferredInstanceType" + case protocols = "Protocols" case resolverEndpointType = "ResolverEndpointType" case securityGroupIds = "SecurityGroupIds" case tags = "Tags" @@ -1534,6 +1535,12 @@ extension CreateResolverEndpointInput: Swift.Encodable { if let preferredInstanceType = self.preferredInstanceType { try encodeContainer.encode(preferredInstanceType, forKey: .preferredInstanceType) } + if let protocols = protocols { + var protocolsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .protocols) + for protocol0 in protocols { + try protocolsContainer.encode(protocol0.rawValue) + } + } if let resolverEndpointType = self.resolverEndpointType { try encodeContainer.encode(resolverEndpointType.rawValue, forKey: .resolverEndpointType) } @@ -1569,7 +1576,7 @@ public struct CreateResolverEndpointInput: Swift.Equatable { /// * OUTBOUND: Resolver forwards DNS queries from the DNS service for a VPC to your network /// This member is required. public var direction: Route53ResolverClientTypes.ResolverEndpointDirection? - /// The subnets and IP addresses in your VPC that DNS queries originate from (for outbound endpoints) or that you forward DNS queries to (for inbound endpoints). The subnet ID uniquely identifies a VPC. + /// The subnets and IP addresses in your VPC that DNS queries originate from (for outbound endpoints) or that you forward DNS queries to (for inbound endpoints). The subnet ID uniquely identifies a VPC. Even though the minimum is 1, Route 53 requires that you create at least two. /// This member is required. public var ipAddresses: [Route53ResolverClientTypes.IpAddressRequest]? /// A friendly name that lets you easily find a configuration in the Resolver dashboard in the Route 53 console. @@ -1578,6 +1585,31 @@ public struct CreateResolverEndpointInput: Swift.Equatable { public var outpostArn: Swift.String? /// The instance type. If you specify this, you must also specify a value for the OutpostArn. public var preferredInstanceType: Swift.String? + /// The protocols you want to use for the endpoint. DoH-FIPS is applicable for inbound endpoints only. For an inbound endpoint you can apply the protocols as follows: + /// + /// * Do53 and DoH in combination. + /// + /// * Do53 and DoH-FIPS in combination. + /// + /// * Do53 alone. + /// + /// * DoH alone. + /// + /// * DoH-FIPS alone. + /// + /// * None, which is treated as Do53. + /// + /// + /// For an outbound endpoint you can apply the protocols as follows: + /// + /// * Do53 and DoH in combination. + /// + /// * Do53 alone. + /// + /// * DoH alone. + /// + /// * None, which is treated as Do53. + public var protocols: [Route53ResolverClientTypes.ModelProtocol]? /// For the endpoint type you can choose either IPv4, IPv6, or dual-stack. A dual-stack endpoint means that it will resolve via both IPv4 and IPv6. This endpoint type is applied to all IP addresses. public var resolverEndpointType: Route53ResolverClientTypes.ResolverEndpointType? /// The ID of one or more security groups that you want to use to control access to this VPC. The security group that you specify must include one or more inbound rules (for inbound Resolver endpoints) or outbound rules (for outbound Resolver endpoints). Inbound and outbound rules must allow TCP and UDP access. For inbound access, open port 53. For outbound access, open the port that you're using for DNS queries on your network. @@ -1593,6 +1625,7 @@ public struct CreateResolverEndpointInput: Swift.Equatable { name: Swift.String? = nil, outpostArn: Swift.String? = nil, preferredInstanceType: Swift.String? = nil, + protocols: [Route53ResolverClientTypes.ModelProtocol]? = nil, resolverEndpointType: Route53ResolverClientTypes.ResolverEndpointType? = nil, securityGroupIds: [Swift.String]? = nil, tags: [Route53ResolverClientTypes.Tag]? = nil @@ -1604,6 +1637,7 @@ public struct CreateResolverEndpointInput: Swift.Equatable { self.name = name self.outpostArn = outpostArn self.preferredInstanceType = preferredInstanceType + self.protocols = protocols self.resolverEndpointType = resolverEndpointType self.securityGroupIds = securityGroupIds self.tags = tags @@ -1616,10 +1650,11 @@ struct CreateResolverEndpointInputBody: Swift.Equatable { let securityGroupIds: [Swift.String]? let direction: Route53ResolverClientTypes.ResolverEndpointDirection? let ipAddresses: [Route53ResolverClientTypes.IpAddressRequest]? - let tags: [Route53ResolverClientTypes.Tag]? - let resolverEndpointType: Route53ResolverClientTypes.ResolverEndpointType? let outpostArn: Swift.String? let preferredInstanceType: Swift.String? + let tags: [Route53ResolverClientTypes.Tag]? + let resolverEndpointType: Route53ResolverClientTypes.ResolverEndpointType? + let protocols: [Route53ResolverClientTypes.ModelProtocol]? } extension CreateResolverEndpointInputBody: Swift.Decodable { @@ -1630,6 +1665,7 @@ extension CreateResolverEndpointInputBody: Swift.Decodable { case name = "Name" case outpostArn = "OutpostArn" case preferredInstanceType = "PreferredInstanceType" + case protocols = "Protocols" case resolverEndpointType = "ResolverEndpointType" case securityGroupIds = "SecurityGroupIds" case tags = "Tags" @@ -1665,6 +1701,10 @@ extension CreateResolverEndpointInputBody: Swift.Decodable { } } ipAddresses = ipAddressesDecoded0 + let outpostArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .outpostArn) + outpostArn = outpostArnDecoded + let preferredInstanceTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .preferredInstanceType) + preferredInstanceType = preferredInstanceTypeDecoded let tagsContainer = try containerValues.decodeIfPresent([Route53ResolverClientTypes.Tag?].self, forKey: .tags) var tagsDecoded0:[Route53ResolverClientTypes.Tag]? = nil if let tagsContainer = tagsContainer { @@ -1678,10 +1718,17 @@ extension CreateResolverEndpointInputBody: Swift.Decodable { tags = tagsDecoded0 let resolverEndpointTypeDecoded = try containerValues.decodeIfPresent(Route53ResolverClientTypes.ResolverEndpointType.self, forKey: .resolverEndpointType) resolverEndpointType = resolverEndpointTypeDecoded - let outpostArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .outpostArn) - outpostArn = outpostArnDecoded - let preferredInstanceTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .preferredInstanceType) - preferredInstanceType = preferredInstanceTypeDecoded + let protocolsContainer = try containerValues.decodeIfPresent([Route53ResolverClientTypes.ModelProtocol?].self, forKey: .protocols) + var protocolsDecoded0:[Route53ResolverClientTypes.ModelProtocol]? = nil + if let protocolsContainer = protocolsContainer { + protocolsDecoded0 = [Route53ResolverClientTypes.ModelProtocol]() + for enum0 in protocolsContainer { + if let enum0 = enum0 { + protocolsDecoded0?.append(enum0) + } + } + } + protocols = protocolsDecoded0 } } @@ -1730,6 +1777,7 @@ enum CreateResolverEndpointOutputError: ClientRuntime.HttpResponseErrorBinding { 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 "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) @@ -1958,7 +2006,6 @@ public struct CreateResolverRuleInput: Swift.Equatable { /// This member is required. public var creatorRequestId: Swift.String? /// DNS queries for this domain name are forwarded to the IP addresses that you specify in TargetIps. If a query matches multiple Resolver rules (example.com and www.example.com), outbound DNS queries are routed using the Resolver rule that contains the most specific domain name (www.example.com). - /// This member is required. public var domainName: Swift.String? /// A friendly name that lets you easily find a rule in the Resolver dashboard in the Route 53 console. public var name: Swift.String? @@ -2095,6 +2142,7 @@ enum CreateResolverRuleOutputError: ClientRuntime.HttpResponseErrorBinding { 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 "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) @@ -8132,7 +8180,7 @@ extension ListResolverDnssecConfigsOutput: ClientRuntime.HttpResponseBinding { public struct ListResolverDnssecConfigsOutput: Swift.Equatable { /// If a response includes the last of the DNSSEC configurations that are associated with the current Amazon Web Services account, NextToken doesn't appear in the response. If a response doesn't include the last of the configurations, you can get more configurations by submitting another [ListResolverDnssecConfigs](https://docs.aws.amazon.com/Route53/latest/APIReference/API_ListResolverDnssecConfigs.html) request. Get the value of NextToken that Amazon Route 53 returned in the previous response and include it in NextToken in the next request. public var nextToken: Swift.String? - /// An array that contains one [ResolverDnssecConfig](https://docs.aws.amazon.com/Route53/latest/APIReference/API_ResolverDnssecConfig.html) element for each configuration for DNSSEC validation that is associated with the current Amazon Web Services account. + /// An array that contains one [ResolverDnssecConfig](https://docs.aws.amazon.com/Route53/latest/APIReference/API_ResolverDnssecConfig.html) element for each configuration for DNSSEC validation that is associated with the current Amazon Web Services account. It doesn't contain disabled DNSSEC configurations for the resource. public var resolverDnssecConfigs: [Route53ResolverClientTypes.ResolverDnssecConfig]? public init( @@ -9675,6 +9723,41 @@ extension Route53ResolverClientTypes { } } +extension Route53ResolverClientTypes { + public enum ModelProtocol: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case do53 + case doh + case dohfips + case sdkUnknown(Swift.String) + + public static var allCases: [ModelProtocol] { + return [ + .do53, + .doh, + .dohfips, + .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 .do53: return "Do53" + case .doh: return "DoH" + case .dohfips: return "DoH-FIPS" + 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 = ModelProtocol(rawValue: rawValue) ?? ModelProtocol.sdkUnknown(rawValue) + } + } +} + extension PutFirewallRuleGroupPolicyInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case arn = "Arn" @@ -10295,6 +10378,7 @@ extension Route53ResolverClientTypes.ResolverEndpoint: Swift.Codable { case name = "Name" case outpostArn = "OutpostArn" case preferredInstanceType = "PreferredInstanceType" + case protocols = "Protocols" case resolverEndpointType = "ResolverEndpointType" case securityGroupIds = "SecurityGroupIds" case status = "Status" @@ -10336,6 +10420,12 @@ extension Route53ResolverClientTypes.ResolverEndpoint: Swift.Codable { if let preferredInstanceType = self.preferredInstanceType { try encodeContainer.encode(preferredInstanceType, forKey: .preferredInstanceType) } + if let protocols = protocols { + var protocolsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .protocols) + for protocol0 in protocols { + try protocolsContainer.encode(protocol0.rawValue) + } + } if let resolverEndpointType = self.resolverEndpointType { try encodeContainer.encode(resolverEndpointType.rawValue, forKey: .resolverEndpointType) } @@ -10388,12 +10478,23 @@ extension Route53ResolverClientTypes.ResolverEndpoint: Swift.Codable { creationTime = creationTimeDecoded let modificationTimeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .modificationTime) modificationTime = modificationTimeDecoded - let resolverEndpointTypeDecoded = try containerValues.decodeIfPresent(Route53ResolverClientTypes.ResolverEndpointType.self, forKey: .resolverEndpointType) - resolverEndpointType = resolverEndpointTypeDecoded let outpostArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .outpostArn) outpostArn = outpostArnDecoded let preferredInstanceTypeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .preferredInstanceType) preferredInstanceType = preferredInstanceTypeDecoded + let resolverEndpointTypeDecoded = try containerValues.decodeIfPresent(Route53ResolverClientTypes.ResolverEndpointType.self, forKey: .resolverEndpointType) + resolverEndpointType = resolverEndpointTypeDecoded + let protocolsContainer = try containerValues.decodeIfPresent([Route53ResolverClientTypes.ModelProtocol?].self, forKey: .protocols) + var protocolsDecoded0:[Route53ResolverClientTypes.ModelProtocol]? = nil + if let protocolsContainer = protocolsContainer { + protocolsDecoded0 = [Route53ResolverClientTypes.ModelProtocol]() + for enum0 in protocolsContainer { + if let enum0 = enum0 { + protocolsDecoded0?.append(enum0) + } + } + } + protocols = protocolsDecoded0 } } @@ -10426,6 +10527,31 @@ extension Route53ResolverClientTypes { public var outpostArn: Swift.String? /// The Amazon EC2 instance type. public var preferredInstanceType: Swift.String? + /// Protocols used for the endpoint. DoH-FIPS is applicable for inbound endpoints only. For an inbound endpoint you can apply the protocols as follows: + /// + /// * Do53 and DoH in combination. + /// + /// * Do53 and DoH-FIPS in combination. + /// + /// * Do53 alone. + /// + /// * DoH alone. + /// + /// * DoH-FIPS alone. + /// + /// * None, which is treated as Do53. + /// + /// + /// For an outbound endpoint you can apply the protocols as follows: + /// + /// * Do53 and DoH in combination. + /// + /// * Do53 alone. + /// + /// * DoH alone. + /// + /// * None, which is treated as Do53. + public var protocols: [Route53ResolverClientTypes.ModelProtocol]? /// The Resolver endpoint IP address type. public var resolverEndpointType: Route53ResolverClientTypes.ResolverEndpointType? /// The ID of one or more security groups that control access to this VPC. The security group must include one or more inbound rules (for inbound endpoints) or outbound rules (for outbound endpoints). Inbound and outbound rules must allow TCP and UDP access. For inbound access, open port 53. For outbound access, open the port that you're using for DNS queries on your network. @@ -10466,6 +10592,7 @@ extension Route53ResolverClientTypes { name: Swift.String? = nil, outpostArn: Swift.String? = nil, preferredInstanceType: Swift.String? = nil, + protocols: [Route53ResolverClientTypes.ModelProtocol]? = nil, resolverEndpointType: Route53ResolverClientTypes.ResolverEndpointType? = nil, securityGroupIds: [Swift.String]? = nil, status: Route53ResolverClientTypes.ResolverEndpointStatus? = nil, @@ -10483,6 +10610,7 @@ extension Route53ResolverClientTypes { self.name = name self.outpostArn = outpostArn self.preferredInstanceType = preferredInstanceType + self.protocols = protocols self.resolverEndpointType = resolverEndpointType self.securityGroupIds = securityGroupIds self.status = status @@ -11956,6 +12084,7 @@ extension Route53ResolverClientTypes.TargetAddress: Swift.Codable { case ip = "Ip" case ipv6 = "Ipv6" case port = "Port" + case `protocol` = "Protocol" } public func encode(to encoder: Swift.Encoder) throws { @@ -11969,6 +12098,9 @@ extension Route53ResolverClientTypes.TargetAddress: Swift.Codable { if let port = self.port { try encodeContainer.encode(port, forKey: .port) } + if let `protocol` = self.`protocol` { + try encodeContainer.encode(`protocol`.rawValue, forKey: .`protocol`) + } } public init(from decoder: Swift.Decoder) throws { @@ -11979,6 +12111,8 @@ extension Route53ResolverClientTypes.TargetAddress: Swift.Codable { port = portDecoded let ipv6Decoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .ipv6) ipv6 = ipv6Decoded + let protocolDecoded = try containerValues.decodeIfPresent(Route53ResolverClientTypes.ModelProtocol.self, forKey: .protocol) + `protocol` = protocolDecoded } } @@ -11991,16 +12125,43 @@ extension Route53ResolverClientTypes { public var ipv6: Swift.String? /// The port at Ip that you want to forward DNS queries to. public var port: Swift.Int? + /// The protocols for the Resolver endpoints. DoH-FIPS is applicable for inbound endpoints only. For an inbound endpoint you can apply the protocols as follows: + /// + /// * Do53 and DoH in combination. + /// + /// * Do53 and DoH-FIPS in combination. + /// + /// * Do53 alone. + /// + /// * DoH alone. + /// + /// * DoH-FIPS alone. + /// + /// * None, which is treated as Do53. + /// + /// + /// For an outbound endpoint you can apply the protocols as follows: + /// + /// * Do53 and DoH in combination. + /// + /// * Do53 alone. + /// + /// * DoH alone. + /// + /// * None, which is treated as Do53. + public var `protocol`: Route53ResolverClientTypes.ModelProtocol? public init( ip: Swift.String? = nil, ipv6: Swift.String? = nil, - port: Swift.Int? = nil + port: Swift.Int? = nil, + `protocol`: Route53ResolverClientTypes.ModelProtocol? = nil ) { self.ip = ip self.ipv6 = ipv6 self.port = port + self.`protocol` = `protocol` } } @@ -13315,6 +13476,7 @@ enum UpdateResolverDnssecConfigOutputError: ClientRuntime.HttpResponseErrorBindi extension UpdateResolverEndpointInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case name = "Name" + case protocols = "Protocols" case resolverEndpointId = "ResolverEndpointId" case resolverEndpointType = "ResolverEndpointType" case updateIpAddresses = "UpdateIpAddresses" @@ -13325,6 +13487,12 @@ extension UpdateResolverEndpointInput: Swift.Encodable { if let name = self.name { try encodeContainer.encode(name, forKey: .name) } + if let protocols = protocols { + var protocolsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .protocols) + for protocol0 in protocols { + try protocolsContainer.encode(protocol0.rawValue) + } + } if let resolverEndpointId = self.resolverEndpointId { try encodeContainer.encode(resolverEndpointId, forKey: .resolverEndpointId) } @@ -13349,6 +13517,34 @@ extension UpdateResolverEndpointInput: ClientRuntime.URLPathProvider { public struct UpdateResolverEndpointInput: Swift.Equatable { /// The name of the Resolver endpoint that you want to update. public var name: Swift.String? + /// The protocols you want to use for the endpoint. DoH-FIPS is applicable for inbound endpoints only. For an inbound endpoint you can apply the protocols as follows: + /// + /// * Do53 and DoH in combination. + /// + /// * Do53 and DoH-FIPS in combination. + /// + /// * Do53 alone. + /// + /// * DoH alone. + /// + /// * DoH-FIPS alone. + /// + /// * None, which is treated as Do53. + /// + /// + /// For an outbound endpoint you can apply the protocols as follows: + /// + /// * Do53 and DoH in combination. + /// + /// * Do53 alone. + /// + /// * DoH alone. + /// + /// * None, which is treated as Do53. + /// + /// + /// You can't change the protocol of an inbound endpoint directly from only Do53 to only DoH, or DoH-FIPS. This is to prevent a sudden disruption to incoming traffic that relies on Do53. To change the protocol from Do53 to DoH, or DoH-FIPS, you must first enable both Do53 and DoH, or Do53 and DoH-FIPS, to make sure that all incoming traffic has transferred to using the DoH protocol, or DoH-FIPS, and then remove the Do53. + public var protocols: [Route53ResolverClientTypes.ModelProtocol]? /// The ID of the Resolver endpoint that you want to update. /// This member is required. public var resolverEndpointId: Swift.String? @@ -13359,12 +13555,14 @@ public struct UpdateResolverEndpointInput: Swift.Equatable { public init( name: Swift.String? = nil, + protocols: [Route53ResolverClientTypes.ModelProtocol]? = nil, resolverEndpointId: Swift.String? = nil, resolverEndpointType: Route53ResolverClientTypes.ResolverEndpointType? = nil, updateIpAddresses: [Route53ResolverClientTypes.UpdateIpAddress]? = nil ) { self.name = name + self.protocols = protocols self.resolverEndpointId = resolverEndpointId self.resolverEndpointType = resolverEndpointType self.updateIpAddresses = updateIpAddresses @@ -13376,11 +13574,13 @@ struct UpdateResolverEndpointInputBody: Swift.Equatable { let name: Swift.String? let resolverEndpointType: Route53ResolverClientTypes.ResolverEndpointType? let updateIpAddresses: [Route53ResolverClientTypes.UpdateIpAddress]? + let protocols: [Route53ResolverClientTypes.ModelProtocol]? } extension UpdateResolverEndpointInputBody: Swift.Decodable { enum CodingKeys: Swift.String, Swift.CodingKey { case name = "Name" + case protocols = "Protocols" case resolverEndpointId = "ResolverEndpointId" case resolverEndpointType = "ResolverEndpointType" case updateIpAddresses = "UpdateIpAddresses" @@ -13405,6 +13605,17 @@ extension UpdateResolverEndpointInputBody: Swift.Decodable { } } updateIpAddresses = updateIpAddressesDecoded0 + let protocolsContainer = try containerValues.decodeIfPresent([Route53ResolverClientTypes.ModelProtocol?].self, forKey: .protocols) + var protocolsDecoded0:[Route53ResolverClientTypes.ModelProtocol]? = nil + if let protocolsContainer = protocolsContainer { + protocolsDecoded0 = [Route53ResolverClientTypes.ModelProtocol]() + for enum0 in protocolsContainer { + if let enum0 = enum0 { + protocolsDecoded0?.append(enum0) + } + } + } + protocols = protocolsDecoded0 } } @@ -13453,6 +13664,7 @@ enum UpdateResolverEndpointOutputError: ClientRuntime.HttpResponseErrorBinding { 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 "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) @@ -13569,6 +13781,7 @@ enum UpdateResolverRuleOutputError: ClientRuntime.HttpResponseErrorBinding { 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 "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) @@ -13631,7 +13844,7 @@ extension ValidationException { } } -/// You have provided an invalid command. Supported values are ADD, REMOVE, or REPLACE a domain. +/// You have provided an invalid command. If you ran the UpdateFirewallDomains request. supported values are ADD, REMOVE, or REPLACE a domain. public struct ValidationException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { public struct Properties { diff --git a/Sources/Services/AWSSageMaker/Paginators.swift b/Sources/Services/AWSSageMaker/Paginators.swift index 9a3695b1eb3..2355b15468b 100644 --- a/Sources/Services/AWSSageMaker/Paginators.swift +++ b/Sources/Services/AWSSageMaker/Paginators.swift @@ -757,6 +757,43 @@ extension PaginatorSequence where OperationStackInput == ListExperimentsInput, O return try await self.asyncCompactMap { item in item.experimentSummaries } } } +extension SageMakerClient { + /// Paginate over `[ListFeatureGroupsOutput]` 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 `[ListFeatureGroupsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `ListFeatureGroupsOutput` + public func listFeatureGroupsPaginated(input: ListFeatureGroupsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.listFeatureGroups(input:)) + } +} + +extension ListFeatureGroupsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> ListFeatureGroupsInput { + return ListFeatureGroupsInput( + creationTimeAfter: self.creationTimeAfter, + creationTimeBefore: self.creationTimeBefore, + featureGroupStatusEquals: self.featureGroupStatusEquals, + maxResults: self.maxResults, + nameContains: self.nameContains, + nextToken: token, + offlineStoreStatusEquals: self.offlineStoreStatusEquals, + sortBy: self.sortBy, + sortOrder: self.sortOrder + )} +} + +extension PaginatorSequence where OperationStackInput == ListFeatureGroupsInput, OperationStackOutput == ListFeatureGroupsOutput { + /// This paginator transforms the `AsyncSequence` returned by `listFeatureGroupsPaginated` + /// to access the nested member `[SageMakerClientTypes.FeatureGroupSummary]` + /// - Returns: `[SageMakerClientTypes.FeatureGroupSummary]` + public func featureGroupSummaries() async throws -> [SageMakerClientTypes.FeatureGroupSummary] { + return try await self.asyncCompactMap { item in item.featureGroupSummaries } + } +} extension SageMakerClient { /// Paginate over `[ListFlowDefinitionsOutput]` results. /// diff --git a/Sources/Services/AWSSageMaker/SageMakerClient.swift b/Sources/Services/AWSSageMaker/SageMakerClient.swift index d4fb4319e3b..352ae1575af 100644 --- a/Sources/Services/AWSSageMaker/SageMakerClient.swift +++ b/Sources/Services/AWSSageMaker/SageMakerClient.swift @@ -480,7 +480,7 @@ extension SageMakerClient: SageMakerClientProtocol { /// Performs the `CreateAutoMLJob` operation on the `SageMaker` service. /// - /// 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). + /// 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.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] /// @@ -528,7 +528,7 @@ extension SageMakerClient: SageMakerClientProtocol { /// Performs the `CreateAutoMLJobV2` operation on the `SageMaker` service. /// - /// 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). + /// 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.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] /// @@ -2295,6 +2295,7 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. public func createPipeline(input: CreatePipelineInput) async throws -> CreatePipelineOutput @@ -3034,6 +3035,11 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Parameter DeleteAlgorithmInput : [no documentation found] /// /// - Returns: `DeleteAlgorithmOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. public func deleteAlgorithm(input: DeleteAlgorithmInput) async throws -> DeleteAlgorithmOutput { let context = ClientRuntime.HttpContextBuilder() @@ -3348,6 +3354,53 @@ extension SageMakerClient: SageMakerClientProtocol { return result } + /// Performs the `DeleteCompilationJob` operation on the `SageMaker` service. + /// + /// Deletes the specified compilation job. This action deletes only the compilation job resource in Amazon SageMaker. It doesn't delete other resources that are related to that job, such as the model artifacts that the job creates, the compilation logs in CloudWatch, the compiled model, or the IAM role. You can delete a compilation job only if its current status is COMPLETED, FAILED, or STOPPED. If the job status is STARTING or INPROGRESS, stop the job, and then delete it after its status becomes STOPPED. + /// + /// - Parameter DeleteCompilationJobInput : [no documentation found] + /// + /// - Returns: `DeleteCompilationJobOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ResourceNotFound` : Resource being access is not found. + public func deleteCompilationJob(input: DeleteCompilationJobInput) async throws -> DeleteCompilationJobOutput + { + let context = ClientRuntime.HttpContextBuilder() + .withEncoder(value: encoder) + .withDecoder(value: decoder) + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "deleteCompilationJob") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withCredentialsProvider(value: config.credentialsProvider) + .withRegion(value: config.region) + .withSigningName(value: "sagemaker") + .withSigningRegion(value: config.signingRegion) + .build() + var operation = ClientRuntime.OperationStack(id: "deleteCompilationJob") + 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: "SageMaker.DeleteCompilationJob")) + operation.serializeStep.intercept(position: .after, middleware: ClientRuntime.BodyMiddleware(documentWritingClosure: ClientRuntime.JSONReadWrite.documentWritingClosure(encoder: encoder), inputWritingClosure: JSONReadWrite.writingClosure())) + 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(responseClosure(decoder: decoder), responseErrorClosure(DeleteCompilationJobOutputError.self, decoder: decoder))) + 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 + } + /// Performs the `DeleteContext` operation on the `SageMaker` service. /// /// Deletes an context. @@ -4695,6 +4748,7 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceNotFound` : Resource being access is not found. public func deletePipeline(input: DeletePipelineInput) async throws -> DeletePipelineOutput { @@ -7867,6 +7921,7 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. public func describeUserProfile(input: DescribeUserProfileInput) async throws -> DescribeUserProfileOutput { @@ -11702,6 +11757,11 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Parameter PutModelPackageGroupPolicyInput : [no documentation found] /// /// - Returns: `PutModelPackageGroupPolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. public func putModelPackageGroupPolicy(input: PutModelPackageGroupPolicyInput) async throws -> PutModelPackageGroupPolicyOutput { let context = ClientRuntime.HttpContextBuilder() @@ -11981,6 +12041,7 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. public func sendPipelineExecutionStepFailure(input: SendPipelineExecutionStepFailureInput) async throws -> SendPipelineExecutionStepFailureOutput @@ -12030,6 +12091,7 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. public func sendPipelineExecutionStepSuccess(input: SendPipelineExecutionStepSuccessInput) async throws -> SendPipelineExecutionStepSuccessOutput @@ -12263,6 +12325,7 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. public func startPipelineExecution(input: StartPipelineExecutionInput) async throws -> StartPipelineExecutionOutput @@ -12768,6 +12831,7 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceNotFound` : Resource being access is not found. public func stopPipelineExecution(input: StopPipelineExecutionInput) async throws -> StopPipelineExecutionOutput { @@ -13145,6 +13209,11 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Parameter UpdateCodeRepositoryInput : [no documentation found] /// /// - Returns: `UpdateCodeRepositoryOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. public func updateCodeRepository(input: UpdateCodeRepositoryInput) async throws -> UpdateCodeRepositoryOutput { let context = ClientRuntime.HttpContextBuilder() @@ -13519,6 +13588,7 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. public func updateFeatureGroup(input: UpdateFeatureGroupInput) async throws -> UpdateFeatureGroupOutput { @@ -13943,6 +14013,11 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Parameter UpdateModelPackageInput : [no documentation found] /// /// - Returns: `UpdateModelPackageOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. public func updateModelPackage(input: UpdateModelPackageInput) async throws -> UpdateModelPackageOutput { let context = ClientRuntime.HttpContextBuilder() @@ -14179,6 +14254,7 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceNotFound` : Resource being access is not found. public func updatePipeline(input: UpdatePipelineInput) async throws -> UpdatePipelineOutput { @@ -14226,6 +14302,7 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceNotFound` : Resource being access is not found. public func updatePipelineExecution(input: UpdatePipelineExecutionInput) async throws -> UpdatePipelineExecutionOutput { @@ -14269,6 +14346,11 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Parameter UpdateProjectInput : [no documentation found] /// /// - Returns: `UpdateProjectOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. public func updateProject(input: UpdateProjectInput) async throws -> UpdateProjectOutput { let context = ClientRuntime.HttpContextBuilder() @@ -14364,6 +14446,7 @@ extension SageMakerClient: SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. public func updateTrainingJob(input: UpdateTrainingJobInput) async throws -> UpdateTrainingJobOutput { diff --git a/Sources/Services/AWSSageMaker/SageMakerClientProtocol.swift b/Sources/Services/AWSSageMaker/SageMakerClientProtocol.swift index 335b2346726..94bb9f733c6 100644 --- a/Sources/Services/AWSSageMaker/SageMakerClientProtocol.swift +++ b/Sources/Services/AWSSageMaker/SageMakerClientProtocol.swift @@ -115,7 +115,7 @@ public protocol SageMakerClientProtocol { func createArtifact(input: CreateArtifactInput) async throws -> CreateArtifactOutput /// Performs the `CreateAutoMLJob` operation on the `SageMaker` service. /// - /// 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). + /// 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.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] /// @@ -129,7 +129,7 @@ public protocol SageMakerClientProtocol { func createAutoMLJob(input: CreateAutoMLJobInput) async throws -> CreateAutoMLJobOutput /// Performs the `CreateAutoMLJobV2` operation on the `SageMaker` service. /// - /// 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). + /// 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.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] /// @@ -670,6 +670,7 @@ public protocol SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. func createPipeline(input: CreatePipelineInput) async throws -> CreatePipelineOutput @@ -898,6 +899,11 @@ public protocol SageMakerClientProtocol { /// - Parameter DeleteAlgorithmInput : [no documentation found] /// /// - Returns: `DeleteAlgorithmOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. func deleteAlgorithm(input: DeleteAlgorithmInput) async throws -> DeleteAlgorithmOutput /// Performs the `DeleteApp` operation on the `SageMaker` service. /// @@ -974,6 +980,19 @@ public protocol SageMakerClientProtocol { /// /// - Returns: `DeleteCodeRepositoryOutput` : [no documentation found] func deleteCodeRepository(input: DeleteCodeRepositoryInput) async throws -> DeleteCodeRepositoryOutput + /// Performs the `DeleteCompilationJob` operation on the `SageMaker` service. + /// + /// Deletes the specified compilation job. This action deletes only the compilation job resource in Amazon SageMaker. It doesn't delete other resources that are related to that job, such as the model artifacts that the job creates, the compilation logs in CloudWatch, the compiled model, or the IAM role. You can delete a compilation job only if its current status is COMPLETED, FAILED, or STOPPED. If the job status is STARTING or INPROGRESS, stop the job, and then delete it after its status becomes STOPPED. + /// + /// - Parameter DeleteCompilationJobInput : [no documentation found] + /// + /// - Returns: `DeleteCompilationJobOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ResourceNotFound` : Resource being access is not found. + func deleteCompilationJob(input: DeleteCompilationJobInput) async throws -> DeleteCompilationJobOutput /// Performs the `DeleteContext` operation on the `SageMaker` service. /// /// Deletes an context. @@ -1335,6 +1354,7 @@ public protocol SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceNotFound` : Resource being access is not found. func deletePipeline(input: DeletePipelineInput) async throws -> DeletePipelineOutput /// Performs the `DeleteProject` operation on the `SageMaker` service. @@ -2160,6 +2180,7 @@ public protocol SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. func describeUserProfile(input: DescribeUserProfileInput) async throws -> DescribeUserProfileOutput /// Performs the `DescribeWorkforce` operation on the `SageMaker` service. @@ -3003,6 +3024,11 @@ public protocol SageMakerClientProtocol { /// - Parameter PutModelPackageGroupPolicyInput : [no documentation found] /// /// - Returns: `PutModelPackageGroupPolicyOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. func putModelPackageGroupPolicy(input: PutModelPackageGroupPolicyInput) async throws -> PutModelPackageGroupPolicyOutput /// Performs the `QueryLineage` operation on the `SageMaker` service. /// @@ -3077,6 +3103,7 @@ public protocol SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. func sendPipelineExecutionStepFailure(input: SendPipelineExecutionStepFailureInput) async throws -> SendPipelineExecutionStepFailureOutput @@ -3091,6 +3118,7 @@ public protocol SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. func sendPipelineExecutionStepSuccess(input: SendPipelineExecutionStepSuccessInput) async throws -> SendPipelineExecutionStepSuccessOutput @@ -3153,6 +3181,7 @@ public protocol SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. func startPipelineExecution(input: StartPipelineExecutionInput) async throws -> StartPipelineExecutionOutput @@ -3283,6 +3312,7 @@ public protocol SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceNotFound` : Resource being access is not found. func stopPipelineExecution(input: StopPipelineExecutionInput) async throws -> StopPipelineExecutionOutput /// Performs the `StopProcessingJob` operation on the `SageMaker` service. @@ -3387,6 +3417,11 @@ public protocol SageMakerClientProtocol { /// - Parameter UpdateCodeRepositoryInput : [no documentation found] /// /// - Returns: `UpdateCodeRepositoryOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. func updateCodeRepository(input: UpdateCodeRepositoryInput) async throws -> UpdateCodeRepositoryOutput /// Performs the `UpdateContext` operation on the `SageMaker` service. /// @@ -3489,6 +3524,7 @@ public protocol SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. func updateFeatureGroup(input: UpdateFeatureGroupInput) async throws -> UpdateFeatureGroupOutput /// Performs the `UpdateFeatureMetadata` operation on the `SageMaker` service. @@ -3607,6 +3643,11 @@ public protocol SageMakerClientProtocol { /// - Parameter UpdateModelPackageInput : [no documentation found] /// /// - Returns: `UpdateModelPackageOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. func updateModelPackage(input: UpdateModelPackageInput) async throws -> UpdateModelPackageOutput /// Performs the `UpdateMonitoringAlert` operation on the `SageMaker` service. /// @@ -3673,6 +3714,7 @@ public protocol SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceNotFound` : Resource being access is not found. func updatePipeline(input: UpdatePipelineInput) async throws -> UpdatePipelineOutput /// Performs the `UpdatePipelineExecution` operation on the `SageMaker` service. @@ -3686,6 +3728,7 @@ public protocol SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. /// - `ResourceNotFound` : Resource being access is not found. func updatePipelineExecution(input: UpdatePipelineExecutionInput) async throws -> UpdatePipelineExecutionOutput /// Performs the `UpdateProject` operation on the `SageMaker` service. @@ -3695,6 +3738,11 @@ public protocol SageMakerClientProtocol { /// - Parameter UpdateProjectInput : [no documentation found] /// /// - Returns: `UpdateProjectOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `ConflictException` : There was a conflict when you attempted to modify a SageMaker entity such as an Experiment or Artifact. func updateProject(input: UpdateProjectInput) async throws -> UpdateProjectOutput /// Performs the `UpdateSpace` operation on the `SageMaker` service. /// @@ -3722,6 +3770,7 @@ public protocol SageMakerClientProtocol { /// - Throws: One of the exceptions listed below __Possible Exceptions__. /// /// __Possible Exceptions:__ + /// - `ResourceLimitExceeded` : You have exceeded an SageMaker resource limit. For example, you might have too many training jobs created. /// - `ResourceNotFound` : Resource being access is not found. func updateTrainingJob(input: UpdateTrainingJobInput) async throws -> UpdateTrainingJobOutput /// Performs the `UpdateTrial` operation on the `SageMaker` service. diff --git a/Sources/Services/AWSSageMaker/models/Models.swift b/Sources/Services/AWSSageMaker/models/Models.swift index 9fb80452717..38a190afb06 100644 --- a/Sources/Services/AWSSageMaker/models/Models.swift +++ b/Sources/Services/AWSSageMaker/models/Models.swift @@ -2064,6 +2064,8 @@ extension SageMakerClientTypes.AppDetails: Swift.Codable { domainId = domainIdDecoded let userProfileNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userProfileName) userProfileName = userProfileNameDecoded + let spaceNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceName) + spaceName = spaceNameDecoded let appTypeDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AppType.self, forKey: .appType) appType = appTypeDecoded let appNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .appName) @@ -2072,8 +2074,6 @@ extension SageMakerClientTypes.AppDetails: Swift.Codable { status = statusDecoded let creationTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .creationTime) creationTime = creationTimeDecoded - let spaceNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceName) - spaceName = spaceNameDecoded let resourceSpecDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ResourceSpec.self, forKey: .resourceSpec) resourceSpec = resourceSpecDecoded } @@ -2674,24 +2674,40 @@ extension SageMakerClientTypes { extension SageMakerClientTypes { public enum AppType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case canvas case codeeditor + case datasetmanager + case detailedprofiler case jupyterlab case jupyterserver case kernelgateway + case local + case rsession case rsessiongateway case rstudioserverpro + case sagemakerlite + case savitur case tensorboard + case vscode case sdkUnknown(Swift.String) public static var allCases: [AppType] { return [ + .canvas, .codeeditor, + .datasetmanager, + .detailedprofiler, .jupyterlab, .jupyterserver, .kernelgateway, + .local, + .rsession, .rsessiongateway, .rstudioserverpro, + .sagemakerlite, + .savitur, .tensorboard, + .vscode, .sdkUnknown("") ] } @@ -2701,13 +2717,21 @@ extension SageMakerClientTypes { } public var rawValue: Swift.String { switch self { + case .canvas: return "Canvas" case .codeeditor: return "CodeEditor" + case .datasetmanager: return "DatasetManager" + case .detailedprofiler: return "DetailedProfiler" case .jupyterlab: return "JupyterLab" case .jupyterserver: return "JupyterServer" case .kernelgateway: return "KernelGateway" + case .local: return "Local" + case .rsession: return "RSession" case .rsessiongateway: return "RSessionGateway" case .rstudioserverpro: return "RStudioServerPro" + case .sagemakerlite: return "SageMakerLite" + case .savitur: return "Savitur" case .tensorboard: return "TensorBoard" + case .vscode: return "VSCode" case let .sdkUnknown(s): return s } } @@ -3108,6 +3132,7 @@ extension SageMakerClientTypes { case contributedTo case derivedFrom case produced + case sameAs case sdkUnknown(Swift.String) public static var allCases: [AssociationEdgeType] { @@ -3116,6 +3141,7 @@ extension SageMakerClientTypes { .contributedTo, .derivedFrom, .produced, + .sameAs, .sdkUnknown("") ] } @@ -3129,6 +3155,7 @@ extension SageMakerClientTypes { case .contributedTo: return "ContributedTo" case .derivedFrom: return "DerivedFrom" case .produced: return "Produced" + case .sameAs: return "SameAs" case let .sdkUnknown(s): return s } } @@ -4230,7 +4257,6 @@ extension SageMakerClientTypes { /// The content type of the data from the input source. You can use 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. - /// This member is required. public var dataSource: SageMakerClientTypes.AutoMLDataSource? /// If specified, this column name indicates which column of the dataset should be treated as sample weights for use by the objective metric during the training, evaluation, and the selection of the best model. This column is not considered as a predictive feature. For more information on Autopilot metrics, see [Metrics and validation](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-metrics-validation.html). Sample weights should be numeric, non-negative, with larger values indicating which rows are more important than others. Data points that have invalid or no weight value are excluded. Support for sample weights is available in [Ensembling](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html) mode only. public var sampleWeightAttributeName: Swift.String? @@ -4639,10 +4665,10 @@ extension SageMakerClientTypes.AutoMLJobConfig: Swift.Codable { completionCriteria = completionCriteriaDecoded let securityConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLSecurityConfig.self, forKey: .securityConfig) securityConfig = securityConfigDecoded - let dataSplitConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLDataSplitConfig.self, forKey: .dataSplitConfig) - dataSplitConfig = dataSplitConfigDecoded let candidateGenerationConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLCandidateGenerationConfig.self, forKey: .candidateGenerationConfig) candidateGenerationConfig = candidateGenerationConfigDecoded + let dataSplitConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLDataSplitConfig.self, forKey: .dataSplitConfig) + dataSplitConfig = dataSplitConfigDecoded let modeDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLMode.self, forKey: .mode) mode = modeDecoded } @@ -5424,16 +5450,16 @@ extension SageMakerClientTypes.AutoMLProblemTypeConfig: Swift.Codable { self = .textclassificationjobconfig(textclassificationjobconfig) return } - let tabularjobconfigDecoded = try values.decodeIfPresent(SageMakerClientTypes.TabularJobConfig.self, forKey: .tabularjobconfig) - if let tabularjobconfig = tabularjobconfigDecoded { - self = .tabularjobconfig(tabularjobconfig) - return - } let timeseriesforecastingjobconfigDecoded = try values.decodeIfPresent(SageMakerClientTypes.TimeSeriesForecastingJobConfig.self, forKey: .timeseriesforecastingjobconfig) if let timeseriesforecastingjobconfig = timeseriesforecastingjobconfigDecoded { self = .timeseriesforecastingjobconfig(timeseriesforecastingjobconfig) return } + let tabularjobconfigDecoded = try values.decodeIfPresent(SageMakerClientTypes.TabularJobConfig.self, forKey: .tabularjobconfig) + if let tabularjobconfig = tabularjobconfigDecoded { + self = .tabularjobconfig(tabularjobconfig) + return + } let textgenerationjobconfigDecoded = try values.decodeIfPresent(SageMakerClientTypes.TextGenerationJobConfig.self, forKey: .textgenerationjobconfig) if let textgenerationjobconfig = textgenerationjobconfigDecoded { self = .textgenerationjobconfig(textgenerationjobconfig) @@ -5450,10 +5476,10 @@ 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 the tabular problem type (regression, classification). - case tabularjobconfig(SageMakerClientTypes.TabularJobConfig) /// 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 tabular problem type (regression, classification). + case tabularjobconfig(SageMakerClientTypes.TabularJobConfig) /// 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) @@ -6019,14 +6045,20 @@ extension SageMakerClientTypes { extension SageMakerClientTypes { public enum AwsManagedHumanLoopRequestSource: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case bedrockModelEvaluation + case handshakeVerifyIdentity case rekognitionDetectModerationLabelsImageV3 case textractAnalyzeDocumentFormsV1 + case textractAnalyzeExpense case sdkUnknown(Swift.String) public static var allCases: [AwsManagedHumanLoopRequestSource] { return [ + .bedrockModelEvaluation, + .handshakeVerifyIdentity, .rekognitionDetectModerationLabelsImageV3, .textractAnalyzeDocumentFormsV1, + .textractAnalyzeExpense, .sdkUnknown("") ] } @@ -6036,8 +6068,11 @@ extension SageMakerClientTypes { } public var rawValue: Swift.String { switch self { + case .bedrockModelEvaluation: return "AWS/Bedrock/ModelEvaluation" + case .handshakeVerifyIdentity: return "AWS/Handshake/VerifyIdentity" case .rekognitionDetectModerationLabelsImageV3: return "AWS/Rekognition/DetectModerationLabels/Image/V3" case .textractAnalyzeDocumentFormsV1: return "AWS/Textract/AnalyzeDocument/Forms/V1" + case .textractAnalyzeExpense: return "AWS/Textract/AnalyzeExpense" case let .sdkUnknown(s): return s } } @@ -7202,10 +7237,10 @@ extension SageMakerClientTypes.CanvasAppSettings: Swift.Codable { } } identityProviderOAuthSettings = identityProviderOAuthSettingsDecoded0 - let kendraSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.KendraSettings.self, forKey: .kendraSettings) - kendraSettings = kendraSettingsDecoded let directDeploySettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.DirectDeploySettings.self, forKey: .directDeploySettings) directDeploySettings = directDeploySettingsDecoded + let kendraSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.KendraSettings.self, forKey: .kendraSettings) + kendraSettings = kendraSettingsDecoded } } @@ -7400,12 +7435,14 @@ extension SageMakerClientTypes { extension SageMakerClientTypes { public enum CaptureMode: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case input + case inputAndOutput case output case sdkUnknown(Swift.String) public static var allCases: [CaptureMode] { return [ .input, + .inputAndOutput, .output, .sdkUnknown("") ] @@ -7417,6 +7454,7 @@ extension SageMakerClientTypes { public var rawValue: Swift.String { switch self { case .input: return "Input" + case .inputAndOutput: return "InputAndOutput" case .output: return "Output" case let .sdkUnknown(s): return s } @@ -10500,6 +10538,8 @@ extension SageMakerClientTypes.ContainerDefinition: Swift.Codable { mode = modeDecoded let modelDataUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .modelDataUrl) modelDataUrl = modelDataUrlDecoded + let modelDataSourceDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ModelDataSource.self, forKey: .modelDataSource) + modelDataSource = modelDataSourceDecoded let environmentContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .environment) var environmentDecoded0: [Swift.String:Swift.String]? = nil if let environmentContainer = environmentContainer { @@ -10517,8 +10557,6 @@ extension SageMakerClientTypes.ContainerDefinition: Swift.Codable { inferenceSpecificationName = inferenceSpecificationNameDecoded let multiModelConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.MultiModelConfig.self, forKey: .multiModelConfig) multiModelConfig = multiModelConfigDecoded - let modelDataSourceDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ModelDataSource.self, forKey: .modelDataSource) - modelDataSource = modelDataSourceDecoded } } @@ -11577,11 +11615,11 @@ public struct CreateAppInput: Swift.Equatable { struct CreateAppInputBody: Swift.Equatable { let domainId: Swift.String? let userProfileName: Swift.String? + let spaceName: Swift.String? let appType: SageMakerClientTypes.AppType? let appName: Swift.String? let tags: [SageMakerClientTypes.Tag]? let resourceSpec: SageMakerClientTypes.ResourceSpec? - let spaceName: Swift.String? } extension CreateAppInputBody: Swift.Decodable { @@ -11601,6 +11639,8 @@ extension CreateAppInputBody: Swift.Decodable { domainId = domainIdDecoded let userProfileNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userProfileName) userProfileName = userProfileNameDecoded + let spaceNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceName) + spaceName = spaceNameDecoded let appTypeDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AppType.self, forKey: .appType) appType = appTypeDecoded let appNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .appName) @@ -11618,8 +11658,6 @@ extension CreateAppInputBody: Swift.Decodable { tags = tagsDecoded0 let resourceSpecDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ResourceSpec.self, forKey: .resourceSpec) resourceSpec = resourceSpecDecoded - let spaceNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceName) - spaceName = spaceNameDecoded } } @@ -11698,8 +11736,8 @@ extension CreateArtifactInput: Swift.Encodable { } if let properties = properties { var propertiesContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .properties) - for (dictKey0, lineageEntityParameters0) in properties { - try propertiesContainer.encode(lineageEntityParameters0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + for (dictKey0, artifactProperties0) in properties { + try propertiesContainer.encode(artifactProperties0, forKey: ClientRuntime.Key(stringValue: dictKey0)) } } if let source = self.source { @@ -11785,9 +11823,9 @@ extension CreateArtifactInputBody: Swift.Decodable { var propertiesDecoded0: [Swift.String:Swift.String]? = nil if let propertiesContainer = propertiesContainer { propertiesDecoded0 = [Swift.String:Swift.String]() - for (key0, stringparametervalue0) in propertiesContainer { - if let stringparametervalue0 = stringparametervalue0 { - propertiesDecoded0?[key0] = stringparametervalue0 + for (key0, artifactpropertyvalue0) in propertiesContainer { + if let artifactpropertyvalue0 = artifactpropertyvalue0 { + propertiesDecoded0?[key0] = artifactpropertyvalue0 } } } @@ -13550,6 +13588,7 @@ struct CreateDomainInputBody: Swift.Equatable { let domainName: Swift.String? let authMode: SageMakerClientTypes.AuthMode? let defaultUserSettings: SageMakerClientTypes.UserSettings? + let domainSettings: SageMakerClientTypes.DomainSettings? let subnetIds: [Swift.String]? let vpcId: Swift.String? let tags: [SageMakerClientTypes.Tag]? @@ -13557,7 +13596,6 @@ struct CreateDomainInputBody: Swift.Equatable { let homeEfsFileSystemKmsKeyId: Swift.String? let kmsKeyId: Swift.String? let appSecurityGroupManagement: SageMakerClientTypes.AppSecurityGroupManagement? - let domainSettings: SageMakerClientTypes.DomainSettings? let defaultSpaceSettings: SageMakerClientTypes.DefaultSpaceSettings? } @@ -13585,6 +13623,8 @@ extension CreateDomainInputBody: Swift.Decodable { authMode = authModeDecoded let defaultUserSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.UserSettings.self, forKey: .defaultUserSettings) defaultUserSettings = defaultUserSettingsDecoded + let domainSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.DomainSettings.self, forKey: .domainSettings) + domainSettings = domainSettingsDecoded let subnetIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .subnetIds) var subnetIdsDecoded0:[Swift.String]? = nil if let subnetIdsContainer = subnetIdsContainer { @@ -13617,8 +13657,6 @@ extension CreateDomainInputBody: Swift.Decodable { kmsKeyId = kmsKeyIdDecoded let appSecurityGroupManagementDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AppSecurityGroupManagement.self, forKey: .appSecurityGroupManagement) appSecurityGroupManagement = appSecurityGroupManagementDecoded - let domainSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.DomainSettings.self, forKey: .domainSettings) - domainSettings = domainSettingsDecoded let defaultSpaceSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.DefaultSpaceSettings.self, forKey: .defaultSpaceSettings) defaultSpaceSettings = defaultSpaceSettingsDecoded } @@ -15000,7 +15038,6 @@ public struct CreateFlowDefinitionInput: Swift.Equatable { /// An object containing information about the events that trigger a human workflow. public var humanLoopActivationConfig: SageMakerClientTypes.HumanLoopActivationConfig? /// An object containing information about the tasks the human reviewers will perform. - /// This member is required. public var humanLoopConfig: SageMakerClientTypes.HumanLoopConfig? /// Container for configuring the source of human task requests. Use to specify if Amazon Rekognition or Amazon Textract is used as an integration source. public var humanLoopRequestSource: SageMakerClientTypes.HumanLoopRequestSource? @@ -18308,11 +18345,11 @@ struct CreateModelPackageInputBody: Swift.Equatable { let metadataProperties: SageMakerClientTypes.MetadataProperties? let modelMetrics: SageMakerClientTypes.ModelMetrics? let clientToken: Swift.String? - let customerMetadataProperties: [Swift.String:Swift.String]? - let driftCheckBaselines: SageMakerClientTypes.DriftCheckBaselines? let domain: Swift.String? let task: Swift.String? let samplePayloadUrl: Swift.String? + let customerMetadataProperties: [Swift.String:Swift.String]? + let driftCheckBaselines: SageMakerClientTypes.DriftCheckBaselines? let additionalInferenceSpecifications: [SageMakerClientTypes.AdditionalInferenceSpecificationDefinition]? let skipModelValidation: SageMakerClientTypes.SkipModelValidation? } @@ -18375,6 +18412,12 @@ extension CreateModelPackageInputBody: Swift.Decodable { modelMetrics = modelMetricsDecoded let clientTokenDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientToken) clientToken = clientTokenDecoded + let domainDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .domain) + domain = domainDecoded + let taskDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .task) + task = taskDecoded + let samplePayloadUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .samplePayloadUrl) + samplePayloadUrl = samplePayloadUrlDecoded let customerMetadataPropertiesContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .customerMetadataProperties) var customerMetadataPropertiesDecoded0: [Swift.String:Swift.String]? = nil if let customerMetadataPropertiesContainer = customerMetadataPropertiesContainer { @@ -18388,12 +18431,6 @@ extension CreateModelPackageInputBody: Swift.Decodable { customerMetadataProperties = customerMetadataPropertiesDecoded0 let driftCheckBaselinesDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.DriftCheckBaselines.self, forKey: .driftCheckBaselines) driftCheckBaselines = driftCheckBaselinesDecoded - let domainDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .domain) - domain = domainDecoded - let taskDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .task) - task = taskDecoded - let samplePayloadUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .samplePayloadUrl) - samplePayloadUrl = samplePayloadUrlDecoded let additionalInferenceSpecificationsContainer = try containerValues.decodeIfPresent([SageMakerClientTypes.AdditionalInferenceSpecificationDefinition?].self, forKey: .additionalInferenceSpecifications) var additionalInferenceSpecificationsDecoded0:[SageMakerClientTypes.AdditionalInferenceSpecificationDefinition]? = nil if let additionalInferenceSpecificationsContainer = additionalInferenceSpecificationsContainer { @@ -19506,6 +19543,7 @@ enum CreatePipelineOutputError: ClientRuntime.HttpResponseErrorBinding { 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 "ResourceLimitExceeded": return try await ResourceLimitExceeded(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ResourceNotFound": return try await ResourceNotFound(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) @@ -19568,6 +19606,8 @@ public struct CreatePresignedDomainUrlInput: Swift.Equatable { /// /// * app:RStudioServerPro:relative/path: Directs users to the relative path in the RStudio application. /// + /// * app:CodeEditor:relative/path: Directs users to the relative path in the Code Editor, based on Code-OSS, Visual Studio Code - Open Source application. + /// /// * app:Canvas:relative/path: Directs users to the relative path in the Canvas application. public var landingUri: Swift.String? /// The session expiration duration in seconds. This value defaults to 43200. @@ -20309,9 +20349,9 @@ struct CreateSpaceInputBody: Swift.Equatable { let spaceName: Swift.String? let tags: [SageMakerClientTypes.Tag]? let spaceSettings: SageMakerClientTypes.SpaceSettings? - let spaceDisplayName: Swift.String? let ownershipSettings: SageMakerClientTypes.OwnershipSettings? let spaceSharingSettings: SageMakerClientTypes.SpaceSharingSettings? + let spaceDisplayName: Swift.String? } extension CreateSpaceInputBody: Swift.Decodable { @@ -20344,12 +20384,12 @@ extension CreateSpaceInputBody: Swift.Decodable { tags = tagsDecoded0 let spaceSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SpaceSettings.self, forKey: .spaceSettings) spaceSettings = spaceSettingsDecoded - let spaceDisplayNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceDisplayName) - spaceDisplayName = spaceDisplayNameDecoded let ownershipSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.OwnershipSettings.self, forKey: .ownershipSettings) ownershipSettings = ownershipSettingsDecoded let spaceSharingSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SpaceSharingSettings.self, forKey: .spaceSharingSettings) spaceSharingSettings = spaceSharingSettingsDecoded + let spaceDisplayNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceDisplayName) + spaceDisplayName = spaceDisplayNameDecoded } } @@ -23814,6 +23854,7 @@ enum DeleteAlgorithmOutputError: ClientRuntime.HttpResponseErrorBinding { 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) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) } } @@ -23957,9 +23998,9 @@ public struct DeleteAppInput: Swift.Equatable { struct DeleteAppInputBody: Swift.Equatable { let domainId: Swift.String? let userProfileName: Swift.String? + let spaceName: Swift.String? let appType: SageMakerClientTypes.AppType? let appName: Swift.String? - let spaceName: Swift.String? } extension DeleteAppInputBody: Swift.Decodable { @@ -23977,12 +24018,12 @@ extension DeleteAppInputBody: Swift.Decodable { domainId = domainIdDecoded let userProfileNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userProfileName) userProfileName = userProfileNameDecoded + let spaceNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceName) + spaceName = spaceNameDecoded let appTypeDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AppType.self, forKey: .appType) appType = appTypeDecoded let appNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .appName) appName = appNameDecoded - let spaceNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceName) - spaceName = spaceNameDecoded } } @@ -24409,6 +24450,75 @@ enum DeleteCodeRepositoryOutputError: ClientRuntime.HttpResponseErrorBinding { } } +extension DeleteCompilationJobInput: Swift.Encodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case compilationJobName = "CompilationJobName" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let compilationJobName = self.compilationJobName { + try encodeContainer.encode(compilationJobName, forKey: .compilationJobName) + } + } +} + +extension DeleteCompilationJobInput: ClientRuntime.URLPathProvider { + public var urlPath: Swift.String? { + return "/" + } +} + +public struct DeleteCompilationJobInput: Swift.Equatable { + /// The name of the compilation job to delete. + /// This member is required. + public var compilationJobName: Swift.String? + + public init( + compilationJobName: Swift.String? = nil + ) + { + self.compilationJobName = compilationJobName + } +} + +struct DeleteCompilationJobInputBody: Swift.Equatable { + let compilationJobName: Swift.String? +} + +extension DeleteCompilationJobInputBody: Swift.Decodable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case compilationJobName = "CompilationJobName" + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let compilationJobNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .compilationJobName) + compilationJobName = compilationJobNameDecoded + } +} + +extension DeleteCompilationJobOutput: ClientRuntime.HttpResponseBinding { + public init(httpResponse: ClientRuntime.HttpResponse, decoder: ClientRuntime.ResponseDecoder? = nil) async throws { + } +} + +public struct DeleteCompilationJobOutput: Swift.Equatable { + + public init() { } +} + +enum DeleteCompilationJobOutputError: 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 "ResourceNotFound": return try await ResourceNotFound(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 DeleteContextInput: Swift.Encodable { enum CodingKeys: Swift.String, Swift.CodingKey { case contextName = "ContextName" @@ -26696,6 +26806,7 @@ enum DeletePipelineOutputError: ClientRuntime.HttpResponseErrorBinding { 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 "ResourceNotFound": return try await ResourceNotFound(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) } @@ -27545,10 +27656,10 @@ extension SageMakerClientTypes.DeploymentConfig: Swift.Codable { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let blueGreenUpdatePolicyDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.BlueGreenUpdatePolicy.self, forKey: .blueGreenUpdatePolicy) blueGreenUpdatePolicy = blueGreenUpdatePolicyDecoded - let autoRollbackConfigurationDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoRollbackConfig.self, forKey: .autoRollbackConfiguration) - autoRollbackConfiguration = autoRollbackConfigurationDecoded let rollingUpdatePolicyDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.RollingUpdatePolicy.self, forKey: .rollingUpdatePolicy) rollingUpdatePolicy = rollingUpdatePolicyDecoded + let autoRollbackConfigurationDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoRollbackConfig.self, forKey: .autoRollbackConfiguration) + autoRollbackConfiguration = autoRollbackConfigurationDecoded } } @@ -28538,9 +28649,9 @@ public struct DescribeAppInput: Swift.Equatable { struct DescribeAppInputBody: Swift.Equatable { let domainId: Swift.String? let userProfileName: Swift.String? + let spaceName: Swift.String? let appType: SageMakerClientTypes.AppType? let appName: Swift.String? - let spaceName: Swift.String? } extension DescribeAppInputBody: Swift.Decodable { @@ -28558,12 +28669,12 @@ extension DescribeAppInputBody: Swift.Decodable { domainId = domainIdDecoded let userProfileNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userProfileName) userProfileName = userProfileNameDecoded + let spaceNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceName) + spaceName = spaceNameDecoded let appTypeDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AppType.self, forKey: .appType) appType = appTypeDecoded let appNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .appName) appName = appNameDecoded - let spaceNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceName) - spaceName = spaceNameDecoded } } @@ -28663,13 +28774,13 @@ struct DescribeAppOutputBody: Swift.Equatable { let appName: Swift.String? let domainId: Swift.String? let userProfileName: Swift.String? + let spaceName: Swift.String? let status: SageMakerClientTypes.AppStatus? let lastHealthCheckTimestamp: ClientRuntime.Date? let lastUserActivityTimestamp: ClientRuntime.Date? let creationTime: ClientRuntime.Date? let failureReason: Swift.String? let resourceSpec: SageMakerClientTypes.ResourceSpec? - let spaceName: Swift.String? } extension DescribeAppOutputBody: Swift.Decodable { @@ -28700,6 +28811,8 @@ extension DescribeAppOutputBody: Swift.Decodable { domainId = domainIdDecoded let userProfileNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .userProfileName) userProfileName = userProfileNameDecoded + let spaceNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceName) + spaceName = spaceNameDecoded let statusDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AppStatus.self, forKey: .status) status = statusDecoded let lastHealthCheckTimestampDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastHealthCheckTimestamp) @@ -28712,8 +28825,6 @@ extension DescribeAppOutputBody: Swift.Decodable { failureReason = failureReasonDecoded let resourceSpecDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ResourceSpec.self, forKey: .resourceSpec) resourceSpec = resourceSpecDecoded - let spaceNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceName) - spaceName = spaceNameDecoded } } @@ -29477,6 +29588,7 @@ struct DescribeAutoMLJobV2OutputBody: Swift.Equatable { let roleArn: Swift.String? let autoMLJobObjective: SageMakerClientTypes.AutoMLJobObjective? let autoMLProblemTypeConfig: SageMakerClientTypes.AutoMLProblemTypeConfig? + let autoMLProblemTypeConfigName: SageMakerClientTypes.AutoMLProblemTypeConfigName? let creationTime: ClientRuntime.Date? let endTime: ClientRuntime.Date? let lastModifiedTime: ClientRuntime.Date? @@ -29485,13 +29597,12 @@ struct DescribeAutoMLJobV2OutputBody: Swift.Equatable { let bestCandidate: SageMakerClientTypes.AutoMLCandidate? let autoMLJobStatus: SageMakerClientTypes.AutoMLJobStatus? let autoMLJobSecondaryStatus: SageMakerClientTypes.AutoMLJobSecondaryStatus? + let autoMLJobArtifacts: SageMakerClientTypes.AutoMLJobArtifacts? + let resolvedAttributes: SageMakerClientTypes.AutoMLResolvedAttributes? let modelDeployConfig: SageMakerClientTypes.ModelDeployConfig? let modelDeployResult: SageMakerClientTypes.ModelDeployResult? let dataSplitConfig: SageMakerClientTypes.AutoMLDataSplitConfig? let securityConfig: SageMakerClientTypes.AutoMLSecurityConfig? - let autoMLJobArtifacts: SageMakerClientTypes.AutoMLJobArtifacts? - let resolvedAttributes: SageMakerClientTypes.AutoMLResolvedAttributes? - let autoMLProblemTypeConfigName: SageMakerClientTypes.AutoMLProblemTypeConfigName? } extension DescribeAutoMLJobV2OutputBody: Swift.Decodable { @@ -29545,6 +29656,8 @@ extension DescribeAutoMLJobV2OutputBody: Swift.Decodable { autoMLJobObjective = autoMLJobObjectiveDecoded let autoMLProblemTypeConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLProblemTypeConfig.self, forKey: .autoMLProblemTypeConfig) autoMLProblemTypeConfig = autoMLProblemTypeConfigDecoded + let autoMLProblemTypeConfigNameDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLProblemTypeConfigName.self, forKey: .autoMLProblemTypeConfigName) + autoMLProblemTypeConfigName = autoMLProblemTypeConfigNameDecoded let creationTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .creationTime) creationTime = creationTimeDecoded let endTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .endTime) @@ -29570,6 +29683,10 @@ extension DescribeAutoMLJobV2OutputBody: Swift.Decodable { autoMLJobStatus = autoMLJobStatusDecoded let autoMLJobSecondaryStatusDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLJobSecondaryStatus.self, forKey: .autoMLJobSecondaryStatus) autoMLJobSecondaryStatus = autoMLJobSecondaryStatusDecoded + let autoMLJobArtifactsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLJobArtifacts.self, forKey: .autoMLJobArtifacts) + autoMLJobArtifacts = autoMLJobArtifactsDecoded + let resolvedAttributesDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLResolvedAttributes.self, forKey: .resolvedAttributes) + resolvedAttributes = resolvedAttributesDecoded let modelDeployConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ModelDeployConfig.self, forKey: .modelDeployConfig) modelDeployConfig = modelDeployConfigDecoded let modelDeployResultDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ModelDeployResult.self, forKey: .modelDeployResult) @@ -29578,12 +29695,6 @@ extension DescribeAutoMLJobV2OutputBody: Swift.Decodable { dataSplitConfig = dataSplitConfigDecoded let securityConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLSecurityConfig.self, forKey: .securityConfig) securityConfig = securityConfigDecoded - let autoMLJobArtifactsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLJobArtifacts.self, forKey: .autoMLJobArtifacts) - autoMLJobArtifacts = autoMLJobArtifactsDecoded - let resolvedAttributesDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLResolvedAttributes.self, forKey: .resolvedAttributes) - resolvedAttributes = resolvedAttributesDecoded - let autoMLProblemTypeConfigNameDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLProblemTypeConfigName.self, forKey: .autoMLProblemTypeConfigName) - autoMLProblemTypeConfigName = autoMLProblemTypeConfigNameDecoded } } @@ -31269,7 +31380,7 @@ public struct DescribeDomainOutput: Swift.Equatable { public var lastModifiedTime: ClientRuntime.Date? /// The ID of the security group that authorizes traffic between the RSessionGateway apps and the RStudioServerPro app. public var securityGroupIdForDomainBoundary: Swift.String? - /// The ARN of the application managed by SageMaker in IAM Identity Center. This value is only returned for domains created after September 19, 2023. + /// The ARN of the application managed by SageMaker in IAM Identity Center. This value is only returned for domains created after October 1, 2023. public var singleSignOnApplicationArn: Swift.String? /// The IAM Identity Center managed application instance ID. public var singleSignOnManagedApplicationInstanceId: Swift.String? @@ -31343,17 +31454,17 @@ struct DescribeDomainOutputBody: Swift.Equatable { let creationTime: ClientRuntime.Date? let lastModifiedTime: ClientRuntime.Date? let failureReason: Swift.String? + let securityGroupIdForDomainBoundary: Swift.String? let authMode: SageMakerClientTypes.AuthMode? let defaultUserSettings: SageMakerClientTypes.UserSettings? + let domainSettings: SageMakerClientTypes.DomainSettings? let appNetworkAccessType: SageMakerClientTypes.AppNetworkAccessType? let homeEfsFileSystemKmsKeyId: Swift.String? let subnetIds: [Swift.String]? let url: Swift.String? let vpcId: Swift.String? let kmsKeyId: Swift.String? - let domainSettings: SageMakerClientTypes.DomainSettings? let appSecurityGroupManagement: SageMakerClientTypes.AppSecurityGroupManagement? - let securityGroupIdForDomainBoundary: Swift.String? let defaultSpaceSettings: SageMakerClientTypes.DefaultSpaceSettings? } @@ -31405,10 +31516,14 @@ extension DescribeDomainOutputBody: Swift.Decodable { lastModifiedTime = lastModifiedTimeDecoded let failureReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .failureReason) failureReason = failureReasonDecoded + let securityGroupIdForDomainBoundaryDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .securityGroupIdForDomainBoundary) + securityGroupIdForDomainBoundary = securityGroupIdForDomainBoundaryDecoded let authModeDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AuthMode.self, forKey: .authMode) authMode = authModeDecoded let defaultUserSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.UserSettings.self, forKey: .defaultUserSettings) defaultUserSettings = defaultUserSettingsDecoded + let domainSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.DomainSettings.self, forKey: .domainSettings) + domainSettings = domainSettingsDecoded let appNetworkAccessTypeDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AppNetworkAccessType.self, forKey: .appNetworkAccessType) appNetworkAccessType = appNetworkAccessTypeDecoded let homeEfsFileSystemKmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .homeEfsFileSystemKmsKeyId) @@ -31430,12 +31545,8 @@ extension DescribeDomainOutputBody: Swift.Decodable { vpcId = vpcIdDecoded let kmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .kmsKeyId) kmsKeyId = kmsKeyIdDecoded - let domainSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.DomainSettings.self, forKey: .domainSettings) - domainSettings = domainSettingsDecoded let appSecurityGroupManagementDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AppSecurityGroupManagement.self, forKey: .appSecurityGroupManagement) appSecurityGroupManagement = appSecurityGroupManagementDecoded - let securityGroupIdForDomainBoundaryDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .securityGroupIdForDomainBoundary) - securityGroupIdForDomainBoundary = securityGroupIdForDomainBoundaryDecoded let defaultSpaceSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.DefaultSpaceSettings.self, forKey: .defaultSpaceSettings) defaultSpaceSettings = defaultSpaceSettingsDecoded } @@ -32268,7 +32379,6 @@ public struct DescribeEndpointOutput: Swift.Equatable { /// This member is required. public var endpointArn: Swift.String? /// The name of the endpoint configuration associated with this endpoint. - /// This member is required. public var endpointConfigName: Swift.String? /// Name of the endpoint. /// This member is required. @@ -33213,7 +33323,6 @@ public struct DescribeFlowDefinitionOutput: Swift.Equatable { /// An object containing information about what triggers a human review workflow. public var humanLoopActivationConfig: SageMakerClientTypes.HumanLoopActivationConfig? /// An object containing information about who works on the task, the workforce task price, and other task details. - /// This member is required. public var humanLoopConfig: SageMakerClientTypes.HumanLoopConfig? /// Container for configuring the source of human task requests. Used to specify if Amazon Rekognition or Amazon Textract is used as an integration source. public var humanLoopRequestSource: SageMakerClientTypes.HumanLoopRequestSource? @@ -34170,10 +34279,10 @@ struct DescribeHyperParameterTuningJobOutputBody: Swift.Equatable { let bestTrainingJob: SageMakerClientTypes.HyperParameterTrainingJobSummary? let overallBestTrainingJob: SageMakerClientTypes.HyperParameterTrainingJobSummary? let warmStartConfig: SageMakerClientTypes.HyperParameterTuningJobWarmStartConfig? + let autotune: SageMakerClientTypes.Autotune? let failureReason: Swift.String? let tuningJobCompletionDetails: SageMakerClientTypes.HyperParameterTuningJobCompletionDetails? let consumedResources: SageMakerClientTypes.HyperParameterTuningJobConsumedResources? - let autotune: SageMakerClientTypes.Autotune? } extension DescribeHyperParameterTuningJobOutputBody: Swift.Decodable { @@ -34237,14 +34346,14 @@ extension DescribeHyperParameterTuningJobOutputBody: Swift.Decodable { overallBestTrainingJob = overallBestTrainingJobDecoded let warmStartConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.HyperParameterTuningJobWarmStartConfig.self, forKey: .warmStartConfig) warmStartConfig = warmStartConfigDecoded + let autotuneDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.Autotune.self, forKey: .autotune) + autotune = autotuneDecoded let failureReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .failureReason) failureReason = failureReasonDecoded let tuningJobCompletionDetailsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.HyperParameterTuningJobCompletionDetails.self, forKey: .tuningJobCompletionDetails) tuningJobCompletionDetails = tuningJobCompletionDetailsDecoded let consumedResourcesDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.HyperParameterTuningJobConsumedResources.self, forKey: .consumedResources) consumedResources = consumedResourcesDecoded - let autotuneDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.Autotune.self, forKey: .autotune) - autotune = autotuneDecoded } } @@ -37433,11 +37542,11 @@ struct DescribeModelPackageOutputBody: Swift.Equatable { let lastModifiedTime: ClientRuntime.Date? let lastModifiedBy: SageMakerClientTypes.UserContext? let approvalDescription: Swift.String? - let customerMetadataProperties: [Swift.String:Swift.String]? - let driftCheckBaselines: SageMakerClientTypes.DriftCheckBaselines? let domain: Swift.String? let task: Swift.String? let samplePayloadUrl: Swift.String? + let customerMetadataProperties: [Swift.String:Swift.String]? + let driftCheckBaselines: SageMakerClientTypes.DriftCheckBaselines? let additionalInferenceSpecifications: [SageMakerClientTypes.AdditionalInferenceSpecificationDefinition]? let skipModelValidation: SageMakerClientTypes.SkipModelValidation? } @@ -37512,6 +37621,12 @@ extension DescribeModelPackageOutputBody: Swift.Decodable { lastModifiedBy = lastModifiedByDecoded let approvalDescriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .approvalDescription) approvalDescription = approvalDescriptionDecoded + let domainDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .domain) + domain = domainDecoded + let taskDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .task) + task = taskDecoded + let samplePayloadUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .samplePayloadUrl) + samplePayloadUrl = samplePayloadUrlDecoded let customerMetadataPropertiesContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .customerMetadataProperties) var customerMetadataPropertiesDecoded0: [Swift.String:Swift.String]? = nil if let customerMetadataPropertiesContainer = customerMetadataPropertiesContainer { @@ -37525,12 +37640,6 @@ extension DescribeModelPackageOutputBody: Swift.Decodable { customerMetadataProperties = customerMetadataPropertiesDecoded0 let driftCheckBaselinesDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.DriftCheckBaselines.self, forKey: .driftCheckBaselines) driftCheckBaselines = driftCheckBaselinesDecoded - let domainDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .domain) - domain = domainDecoded - let taskDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .task) - task = taskDecoded - let samplePayloadUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .samplePayloadUrl) - samplePayloadUrl = samplePayloadUrlDecoded let additionalInferenceSpecificationsContainer = try containerValues.decodeIfPresent([SageMakerClientTypes.AdditionalInferenceSpecificationDefinition?].self, forKey: .additionalInferenceSpecifications) var additionalInferenceSpecificationsDecoded0:[SageMakerClientTypes.AdditionalInferenceSpecificationDefinition]? = nil if let additionalInferenceSpecificationsContainer = additionalInferenceSpecificationsContainer { @@ -39669,6 +39778,8 @@ public struct DescribeSpaceOutput: Swift.Equatable { /// * Studio Classic: &redirect=JupyterServer /// /// * JupyterLab: &redirect=JupyterLab + /// + /// * Code Editor, based on Code-OSS, Visual Studio Code - Open Source: &redirect=CodeEditor public var url: Swift.String? public init( @@ -39713,10 +39824,10 @@ struct DescribeSpaceOutputBody: Swift.Equatable { let creationTime: ClientRuntime.Date? let failureReason: Swift.String? let spaceSettings: SageMakerClientTypes.SpaceSettings? - let url: Swift.String? - let spaceDisplayName: Swift.String? let ownershipSettings: SageMakerClientTypes.OwnershipSettings? let spaceSharingSettings: SageMakerClientTypes.SpaceSharingSettings? + let spaceDisplayName: Swift.String? + let url: Swift.String? } extension DescribeSpaceOutputBody: Swift.Decodable { @@ -39756,14 +39867,14 @@ extension DescribeSpaceOutputBody: Swift.Decodable { failureReason = failureReasonDecoded let spaceSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SpaceSettings.self, forKey: .spaceSettings) spaceSettings = spaceSettingsDecoded - let urlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .url) - url = urlDecoded - let spaceDisplayNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceDisplayName) - spaceDisplayName = spaceDisplayNameDecoded let ownershipSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.OwnershipSettings.self, forKey: .ownershipSettings) ownershipSettings = ownershipSettingsDecoded let spaceSharingSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SpaceSharingSettings.self, forKey: .spaceSharingSettings) spaceSharingSettings = spaceSharingSettingsDecoded + let spaceDisplayNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceDisplayName) + spaceDisplayName = spaceDisplayNameDecoded + let urlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .url) + url = urlDecoded } } @@ -40431,6 +40542,7 @@ struct DescribeTrainingJobOutputBody: Swift.Equatable { let inputDataConfig: [SageMakerClientTypes.Channel]? let outputDataConfig: SageMakerClientTypes.OutputDataConfig? let resourceConfig: SageMakerClientTypes.ResourceConfig? + let warmPoolStatus: SageMakerClientTypes.WarmPoolStatus? let vpcConfig: SageMakerClientTypes.VpcConfig? let stoppingCondition: SageMakerClientTypes.StoppingCondition? let creationTime: ClientRuntime.Date? @@ -40454,9 +40566,8 @@ struct DescribeTrainingJobOutputBody: Swift.Equatable { let profilerRuleConfigurations: [SageMakerClientTypes.ProfilerRuleConfiguration]? let profilerRuleEvaluationStatuses: [SageMakerClientTypes.ProfilerRuleEvaluationStatus]? let profilingStatus: SageMakerClientTypes.ProfilingStatus? - let retryStrategy: SageMakerClientTypes.RetryStrategy? let environment: [Swift.String:Swift.String]? - let warmPoolStatus: SageMakerClientTypes.WarmPoolStatus? + let retryStrategy: SageMakerClientTypes.RetryStrategy? let infraCheckConfig: SageMakerClientTypes.InfraCheckConfig? } @@ -40556,6 +40667,8 @@ extension DescribeTrainingJobOutputBody: Swift.Decodable { outputDataConfig = outputDataConfigDecoded let resourceConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ResourceConfig.self, forKey: .resourceConfig) resourceConfig = resourceConfigDecoded + let warmPoolStatusDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.WarmPoolStatus.self, forKey: .warmPoolStatus) + warmPoolStatus = warmPoolStatusDecoded let vpcConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.VpcConfig.self, forKey: .vpcConfig) vpcConfig = vpcConfigDecoded let stoppingConditionDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.StoppingCondition.self, forKey: .stoppingCondition) @@ -40656,8 +40769,6 @@ extension DescribeTrainingJobOutputBody: Swift.Decodable { profilerRuleEvaluationStatuses = profilerRuleEvaluationStatusesDecoded0 let profilingStatusDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ProfilingStatus.self, forKey: .profilingStatus) profilingStatus = profilingStatusDecoded - let retryStrategyDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.RetryStrategy.self, forKey: .retryStrategy) - retryStrategy = retryStrategyDecoded let environmentContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .environment) var environmentDecoded0: [Swift.String:Swift.String]? = nil if let environmentContainer = environmentContainer { @@ -40669,8 +40780,8 @@ extension DescribeTrainingJobOutputBody: Swift.Decodable { } } environment = environmentDecoded0 - let warmPoolStatusDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.WarmPoolStatus.self, forKey: .warmPoolStatus) - warmPoolStatus = warmPoolStatusDecoded + let retryStrategyDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.RetryStrategy.self, forKey: .retryStrategy) + retryStrategy = retryStrategyDecoded let infraCheckConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.InfraCheckConfig.self, forKey: .infraCheckConfig) infraCheckConfig = infraCheckConfigDecoded } @@ -41723,6 +41834,7 @@ enum DescribeUserProfileOutputError: ClientRuntime.HttpResponseErrorBinding { let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) let requestID = httpResponse.requestId switch restJSONError.errorType { + case "ResourceLimitExceeded": return try await ResourceLimitExceeded(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ResourceNotFound": return try await ResourceNotFound(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) } @@ -44996,7 +45108,6 @@ extension SageMakerClientTypes { /// Details about a customer endpoint that was compared in an Inference Recommender job. public struct EndpointInfo: Swift.Equatable { /// The name of a customer's endpoint. - /// This member is required. public var endpointName: Swift.String? public init( @@ -45174,12 +45285,12 @@ extension SageMakerClientTypes.EndpointInputConfiguration: Swift.Codable { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let instanceTypeDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ProductionVariantInstanceType.self, forKey: .instanceType) instanceType = instanceTypeDecoded + let serverlessConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ProductionVariantServerlessConfig.self, forKey: .serverlessConfig) + serverlessConfig = serverlessConfigDecoded let inferenceSpecificationNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .inferenceSpecificationName) inferenceSpecificationName = inferenceSpecificationNameDecoded let environmentParameterRangesDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.EnvironmentParameterRanges.self, forKey: .environmentParameterRanges) environmentParameterRanges = environmentParameterRangesDecoded - let serverlessConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ProductionVariantServerlessConfig.self, forKey: .serverlessConfig) - serverlessConfig = serverlessConfigDecoded } } @@ -46299,8 +46410,10 @@ extension SageMakerClientTypes { /// * Vector: A specialized list that represents a fixed-size array of elements. The vector dimension is determined by you. Must have elements with fractional feature types. public var collectionType: SageMakerClientTypes.CollectionType? /// The name of a feature. The type must be a string. FeatureName cannot be any of the following: is_deleted, write_time, api_invocation_time. + /// This member is required. public var featureName: Swift.String? /// The value type of a feature. Valid values are Integral, Fractional, or String. + /// This member is required. public var featureType: SageMakerClientTypes.FeatureType? public init( @@ -50811,6 +50924,8 @@ extension SageMakerClientTypes.HyperParameterTrainingJobDefinition: Swift.Codabl outputDataConfig = outputDataConfigDecoded let resourceConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ResourceConfig.self, forKey: .resourceConfig) resourceConfig = resourceConfigDecoded + let hyperParameterTuningResourceConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.HyperParameterTuningResourceConfig.self, forKey: .hyperParameterTuningResourceConfig) + hyperParameterTuningResourceConfig = hyperParameterTuningResourceConfigDecoded let stoppingConditionDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.StoppingCondition.self, forKey: .stoppingCondition) stoppingCondition = stoppingConditionDecoded let enableNetworkIsolationDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .enableNetworkIsolation) @@ -50823,8 +50938,6 @@ extension SageMakerClientTypes.HyperParameterTrainingJobDefinition: Swift.Codabl checkpointConfig = checkpointConfigDecoded let retryStrategyDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.RetryStrategy.self, forKey: .retryStrategy) retryStrategy = retryStrategyDecoded - let hyperParameterTuningResourceConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.HyperParameterTuningResourceConfig.self, forKey: .hyperParameterTuningResourceConfig) - hyperParameterTuningResourceConfig = hyperParameterTuningResourceConfigDecoded let environmentContainer = try containerValues.decodeIfPresent([Swift.String: Swift.String?].self, forKey: .environment) var environmentDecoded0: [Swift.String:Swift.String]? = nil if let environmentContainer = environmentContainer { @@ -51581,6 +51694,10 @@ extension SageMakerClientTypes.HyperParameterTuningJobSearchEntity: Swift.Codabl warmStartConfig = warmStartConfigDecoded let failureReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .failureReason) failureReason = failureReasonDecoded + let tuningJobCompletionDetailsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.HyperParameterTuningJobCompletionDetails.self, forKey: .tuningJobCompletionDetails) + tuningJobCompletionDetails = tuningJobCompletionDetailsDecoded + let consumedResourcesDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.HyperParameterTuningJobConsumedResources.self, forKey: .consumedResources) + consumedResources = consumedResourcesDecoded let tagsContainer = try containerValues.decodeIfPresent([SageMakerClientTypes.Tag?].self, forKey: .tags) var tagsDecoded0:[SageMakerClientTypes.Tag]? = nil if let tagsContainer = tagsContainer { @@ -51592,10 +51709,6 @@ extension SageMakerClientTypes.HyperParameterTuningJobSearchEntity: Swift.Codabl } } tags = tagsDecoded0 - let tuningJobCompletionDetailsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.HyperParameterTuningJobCompletionDetails.self, forKey: .tuningJobCompletionDetails) - tuningJobCompletionDetails = tuningJobCompletionDetailsDecoded - let consumedResourcesDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.HyperParameterTuningJobConsumedResources.self, forKey: .consumedResources) - consumedResources = consumedResourcesDecoded } } @@ -51721,6 +51834,8 @@ extension SageMakerClientTypes { extension SageMakerClientTypes { public enum HyperParameterTuningJobStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case completed + case deleteFailed + case deleting case failed case inProgress case stopped @@ -51730,6 +51845,8 @@ extension SageMakerClientTypes { public static var allCases: [HyperParameterTuningJobStatus] { return [ .completed, + .deleteFailed, + .deleting, .failed, .inProgress, .stopped, @@ -51744,6 +51861,8 @@ extension SageMakerClientTypes { public var rawValue: Swift.String { switch self { case .completed: return "Completed" + case .deleteFailed: return "DeleteFailed" + case .deleting: return "Deleting" case .failed: return "Failed" case .inProgress: return "InProgress" case .stopped: return "Stopped" @@ -54240,14 +54359,14 @@ extension SageMakerClientTypes.InferenceRecommendation: Swift.Codable { public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let recommendationIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .recommendationId) + recommendationId = recommendationIdDecoded let metricsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.RecommendationMetrics.self, forKey: .metrics) metrics = metricsDecoded let endpointConfigurationDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.EndpointOutputConfiguration.self, forKey: .endpointConfiguration) endpointConfiguration = endpointConfigurationDecoded let modelConfigurationDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ModelConfiguration.self, forKey: .modelConfiguration) modelConfiguration = modelConfigurationDecoded - let recommendationIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .recommendationId) - recommendationId = recommendationIdDecoded let invocationEndTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .invocationEndTime) invocationEndTime = invocationEndTimeDecoded let invocationStartTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .invocationStartTime) @@ -55496,6 +55615,7 @@ extension SageMakerClientTypes { extension SageMakerClientTypes.JupyterLabAppImageConfig: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case containerConfig = "ContainerConfig" + case fileSystemConfig = "FileSystemConfig" } public func encode(to encoder: Swift.Encoder) throws { @@ -55503,10 +55623,15 @@ extension SageMakerClientTypes.JupyterLabAppImageConfig: Swift.Codable { if let containerConfig = self.containerConfig { try encodeContainer.encode(containerConfig, forKey: .containerConfig) } + if let fileSystemConfig = self.fileSystemConfig { + try encodeContainer.encode(fileSystemConfig, forKey: .fileSystemConfig) + } } public init(from decoder: Swift.Decoder) throws { let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let fileSystemConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.FileSystemConfig.self, forKey: .fileSystemConfig) + fileSystemConfig = fileSystemConfigDecoded let containerConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ContainerConfig.self, forKey: .containerConfig) containerConfig = containerConfigDecoded } @@ -55517,12 +55642,16 @@ extension SageMakerClientTypes { public struct JupyterLabAppImageConfig: Swift.Equatable { /// The configuration used to run the application image container. public var containerConfig: SageMakerClientTypes.ContainerConfig? + /// The Amazon Elastic File System (EFS) storage configuration for a SageMaker image. + public var fileSystemConfig: SageMakerClientTypes.FileSystemConfig? public init( - containerConfig: SageMakerClientTypes.ContainerConfig? = nil + containerConfig: SageMakerClientTypes.ContainerConfig? = nil, + fileSystemConfig: SageMakerClientTypes.FileSystemConfig? = nil ) { self.containerConfig = containerConfig + self.fileSystemConfig = fileSystemConfig } } @@ -62014,7 +62143,6 @@ public struct ListFeatureGroupsOutput: Swift.Equatable { /// This member is required. public var featureGroupSummaries: [SageMakerClientTypes.FeatureGroupSummary]? /// A token to resume pagination of ListFeatureGroups results. - /// This member is required. public var nextToken: Swift.String? public init( @@ -72627,12 +72755,12 @@ extension SageMakerClientTypes.MetricDatum: Swift.Codable { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let metricNameDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLMetricEnum.self, forKey: .metricName) metricName = metricNameDecoded + let standardMetricNameDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLMetricExtendedEnum.self, forKey: .standardMetricName) + standardMetricName = standardMetricNameDecoded let valueDecoded = try containerValues.decodeIfPresent(Swift.Float.self, forKey: .value) value = valueDecoded let setDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.MetricSetSource.self, forKey: .set) `set` = setDecoded - let standardMetricNameDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLMetricExtendedEnum.self, forKey: .standardMetricName) - standardMetricName = standardMetricNameDecoded } } @@ -74920,7 +75048,6 @@ extension SageMakerClientTypes { /// Specifies the location of ML model data to deploy. If specified, you must specify one and only one of the available data sources. public struct ModelDataSource: Swift.Equatable { /// Specifies the S3 location of ML model data to deploy. - /// This member is required. public var s3DataSource: SageMakerClientTypes.S3ModelDataSource? public init( @@ -80684,7 +80811,6 @@ extension SageMakerClientTypes { /// A list of user groups that exist in your OIDC Identity Provider (IdP). One to ten groups can be used to create a single private work team. When you add a user group to the list of Groups, you can add that user group to one or more private work teams. If you add a user group to a private work team, all workers in that user group are added to the work team. public struct OidcMemberDefinition: Swift.Equatable { /// A list of comma seperated strings that identifies user groups in your OIDC IdP. Each user group is made up of a group of private workers. - /// This member is required. public var groups: [Swift.String]? public init( @@ -81191,7 +81317,7 @@ extension SageMakerClientTypes { /// * // Amazon Resource Name (ARN) of a KMS Key Alias "arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias" /// /// - /// If you use a KMS key ID or an alias of your KMS key, the SageMaker execution role must include permissions to call kms:Encrypt. If you don't provide a KMS key ID, SageMaker uses the default KMS key for Amazon S3 for your role's account. SageMaker uses server-side encryption with KMS-managed keys for OutputDataConfig. If you use a bucket policy with an s3:PutObject permission that only allows objects with server-side encryption, set the condition key of s3:x-amz-server-side-encryption to "aws:kms". For more information, see [KMS-Managed Encryption Keys](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) in the Amazon Simple Storage Service Developer Guide. The KMS key policy must grant permission to the IAM role that you specify in your CreateTrainingJob, CreateTransformJob, or CreateHyperParameterTuningJob requests. For more information, see [Using Key Policies in Amazon Web Services KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) in the Amazon Web Services Key Management Service Developer Guide. + /// If you use a KMS key ID or an alias of your KMS key, the SageMaker execution role must include permissions to call kms:Encrypt. If you don't provide a KMS key ID, SageMaker uses the default KMS key for Amazon S3 for your role's account. For more information, see [KMS-Managed Encryption Keys](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) in the Amazon Simple Storage Service Developer Guide. If the output data is stored in Amazon S3 Express One Zone, it is encrypted with server-side encryption with Amazon S3 managed keys (SSE-S3). KMS key is not supported for Amazon S3 Express One Zone The KMS key policy must grant permission to the IAM role that you specify in your CreateTrainingJob, CreateTransformJob, or CreateHyperParameterTuningJob requests. For more information, see [Using Key Policies in Amazon Web Services KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) in the Amazon Web Services Key Management Service Developer Guide. public var kmsKeyId: Swift.String? /// Identifies the S3 path where you want SageMaker to store the model artifacts. For example, s3://bucket-name/key-name-prefix. /// This member is required. @@ -82340,6 +82466,8 @@ extension SageMakerClientTypes.PipelineExecution: Swift.Codable { lastModifiedBy = lastModifiedByDecoded let parallelismConfigurationDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ParallelismConfiguration.self, forKey: .parallelismConfiguration) parallelismConfiguration = parallelismConfigurationDecoded + let selectiveExecutionConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SelectiveExecutionConfig.self, forKey: .selectiveExecutionConfig) + selectiveExecutionConfig = selectiveExecutionConfigDecoded let pipelineParametersContainer = try containerValues.decodeIfPresent([SageMakerClientTypes.Parameter?].self, forKey: .pipelineParameters) var pipelineParametersDecoded0:[SageMakerClientTypes.Parameter]? = nil if let pipelineParametersContainer = pipelineParametersContainer { @@ -82351,8 +82479,6 @@ extension SageMakerClientTypes.PipelineExecution: Swift.Codable { } } pipelineParameters = pipelineParametersDecoded0 - let selectiveExecutionConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SelectiveExecutionConfig.self, forKey: .selectiveExecutionConfig) - selectiveExecutionConfig = selectiveExecutionConfigDecoded } } @@ -82533,12 +82659,12 @@ extension SageMakerClientTypes.PipelineExecutionStep: Swift.Codable { stepStatus = stepStatusDecoded let cacheHitResultDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.CacheHitResult.self, forKey: .cacheHitResult) cacheHitResult = cacheHitResultDecoded - let attemptCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .attemptCount) - attemptCount = attemptCountDecoded let failureReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .failureReason) failureReason = failureReasonDecoded let metadataDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.PipelineExecutionStepMetadata.self, forKey: .metadata) metadata = metadataDecoded + let attemptCountDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .attemptCount) + attemptCount = attemptCountDecoded let selectiveExecutionResultDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SelectiveExecutionResult.self, forKey: .selectiveExecutionResult) selectiveExecutionResult = selectiveExecutionResultDecoded } @@ -82684,12 +82810,12 @@ extension SageMakerClientTypes.PipelineExecutionStepMetadata: Swift.Codable { callback = callbackDecoded let lambdaDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.LambdaStepMetadata.self, forKey: .lambda) lambda = lambdaDecoded + let emrDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.EMRStepMetadata.self, forKey: .emr) + emr = emrDecoded let qualityCheckDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.QualityCheckStepMetadata.self, forKey: .qualityCheck) qualityCheck = qualityCheckDecoded let clarifyCheckDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ClarifyCheckStepMetadata.self, forKey: .clarifyCheck) clarifyCheck = clarifyCheckDecoded - let emrDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.EMRStepMetadata.self, forKey: .emr) - emr = emrDecoded let failDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.FailStepMetadata.self, forKey: .fail) fail = failDecoded let autoMLJobDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AutoMLJobStepMetadata.self, forKey: .autoMLJob) @@ -82930,11 +83056,13 @@ extension SageMakerClientTypes { extension SageMakerClientTypes { public enum PipelineStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case active + case deleting case sdkUnknown(Swift.String) public static var allCases: [PipelineStatus] { return [ .active, + .deleting, .sdkUnknown("") ] } @@ -82945,6 +83073,7 @@ extension SageMakerClientTypes { public var rawValue: Swift.String { switch self { case .active: return "Active" + case .deleting: return "Deleting" case let .sdkUnknown(s): return s } } @@ -84787,6 +84916,16 @@ extension SageMakerClientTypes { case mlC7g8xlarge case mlC7gLarge case mlC7gXlarge + case mlC7i12xlarge + case mlC7i16xlarge + case mlC7i24xlarge + case mlC7i2xlarge + case mlC7i48xlarge + case mlC7i4xlarge + case mlC7i8xlarge + case mlC7iLarge + case mlC7iXlarge + case mlDl124xlarge case mlG4dn12xlarge case mlG4dn16xlarge case mlG4dn2xlarge @@ -84840,6 +84979,15 @@ extension SageMakerClientTypes { case mlM6g8xlarge case mlM6gLarge case mlM6gXlarge + case mlM7i12xlarge + case mlM7i16xlarge + case mlM7i24xlarge + case mlM7i2xlarge + case mlM7i48xlarge + case mlM7i4xlarge + case mlM7i8xlarge + case mlM7iLarge + case mlM7iXlarge case mlP216xlarge case mlP28xlarge case mlP2Xlarge @@ -84875,10 +85023,20 @@ extension SageMakerClientTypes { case mlR6g8xlarge case mlR6gLarge case mlR6gXlarge + case mlR7i12xlarge + case mlR7i16xlarge + case mlR7i24xlarge + case mlR7i2xlarge + case mlR7i48xlarge + case mlR7i4xlarge + case mlR7i8xlarge + case mlR7iLarge + case mlR7iXlarge case mlT22xlarge case mlT2Large case mlT2Medium case mlT2Xlarge + case mlTrn1n32xlarge case mlTrn12xlarge case mlTrn132xlarge case sdkUnknown(Swift.String) @@ -84939,6 +85097,16 @@ extension SageMakerClientTypes { .mlC7g8xlarge, .mlC7gLarge, .mlC7gXlarge, + .mlC7i12xlarge, + .mlC7i16xlarge, + .mlC7i24xlarge, + .mlC7i2xlarge, + .mlC7i48xlarge, + .mlC7i4xlarge, + .mlC7i8xlarge, + .mlC7iLarge, + .mlC7iXlarge, + .mlDl124xlarge, .mlG4dn12xlarge, .mlG4dn16xlarge, .mlG4dn2xlarge, @@ -84992,6 +85160,15 @@ extension SageMakerClientTypes { .mlM6g8xlarge, .mlM6gLarge, .mlM6gXlarge, + .mlM7i12xlarge, + .mlM7i16xlarge, + .mlM7i24xlarge, + .mlM7i2xlarge, + .mlM7i48xlarge, + .mlM7i4xlarge, + .mlM7i8xlarge, + .mlM7iLarge, + .mlM7iXlarge, .mlP216xlarge, .mlP28xlarge, .mlP2Xlarge, @@ -85027,10 +85204,20 @@ extension SageMakerClientTypes { .mlR6g8xlarge, .mlR6gLarge, .mlR6gXlarge, + .mlR7i12xlarge, + .mlR7i16xlarge, + .mlR7i24xlarge, + .mlR7i2xlarge, + .mlR7i48xlarge, + .mlR7i4xlarge, + .mlR7i8xlarge, + .mlR7iLarge, + .mlR7iXlarge, .mlT22xlarge, .mlT2Large, .mlT2Medium, .mlT2Xlarge, + .mlTrn1n32xlarge, .mlTrn12xlarge, .mlTrn132xlarge, .sdkUnknown("") @@ -85096,6 +85283,16 @@ extension SageMakerClientTypes { case .mlC7g8xlarge: return "ml.c7g.8xlarge" case .mlC7gLarge: return "ml.c7g.large" case .mlC7gXlarge: return "ml.c7g.xlarge" + case .mlC7i12xlarge: return "ml.c7i.12xlarge" + case .mlC7i16xlarge: return "ml.c7i.16xlarge" + case .mlC7i24xlarge: return "ml.c7i.24xlarge" + case .mlC7i2xlarge: return "ml.c7i.2xlarge" + case .mlC7i48xlarge: return "ml.c7i.48xlarge" + case .mlC7i4xlarge: return "ml.c7i.4xlarge" + case .mlC7i8xlarge: return "ml.c7i.8xlarge" + case .mlC7iLarge: return "ml.c7i.large" + case .mlC7iXlarge: return "ml.c7i.xlarge" + case .mlDl124xlarge: return "ml.dl1.24xlarge" case .mlG4dn12xlarge: return "ml.g4dn.12xlarge" case .mlG4dn16xlarge: return "ml.g4dn.16xlarge" case .mlG4dn2xlarge: return "ml.g4dn.2xlarge" @@ -85149,6 +85346,15 @@ extension SageMakerClientTypes { case .mlM6g8xlarge: return "ml.m6g.8xlarge" case .mlM6gLarge: return "ml.m6g.large" case .mlM6gXlarge: return "ml.m6g.xlarge" + case .mlM7i12xlarge: return "ml.m7i.12xlarge" + case .mlM7i16xlarge: return "ml.m7i.16xlarge" + case .mlM7i24xlarge: return "ml.m7i.24xlarge" + case .mlM7i2xlarge: return "ml.m7i.2xlarge" + case .mlM7i48xlarge: return "ml.m7i.48xlarge" + case .mlM7i4xlarge: return "ml.m7i.4xlarge" + case .mlM7i8xlarge: return "ml.m7i.8xlarge" + case .mlM7iLarge: return "ml.m7i.large" + case .mlM7iXlarge: return "ml.m7i.xlarge" case .mlP216xlarge: return "ml.p2.16xlarge" case .mlP28xlarge: return "ml.p2.8xlarge" case .mlP2Xlarge: return "ml.p2.xlarge" @@ -85184,10 +85390,20 @@ extension SageMakerClientTypes { case .mlR6g8xlarge: return "ml.r6g.8xlarge" case .mlR6gLarge: return "ml.r6g.large" case .mlR6gXlarge: return "ml.r6g.xlarge" + case .mlR7i12xlarge: return "ml.r7i.12xlarge" + case .mlR7i16xlarge: return "ml.r7i.16xlarge" + case .mlR7i24xlarge: return "ml.r7i.24xlarge" + case .mlR7i2xlarge: return "ml.r7i.2xlarge" + case .mlR7i48xlarge: return "ml.r7i.48xlarge" + case .mlR7i4xlarge: return "ml.r7i.4xlarge" + case .mlR7i8xlarge: return "ml.r7i.8xlarge" + case .mlR7iLarge: return "ml.r7i.large" + case .mlR7iXlarge: return "ml.r7i.xlarge" case .mlT22xlarge: return "ml.t2.2xlarge" case .mlT2Large: return "ml.t2.large" case .mlT2Medium: return "ml.t2.medium" case .mlT2Xlarge: return "ml.t2.xlarge" + case .mlTrn1n32xlarge: return "ml.trn1n.32xlarge" case .mlTrn12xlarge: return "ml.trn1.2xlarge" case .mlTrn132xlarge: return "ml.trn1.32xlarge" case let .sdkUnknown(s): return s @@ -86818,6 +87034,7 @@ enum PutModelPackageGroupPolicyOutputError: ClientRuntime.HttpResponseErrorBindi 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) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) } } @@ -87837,10 +88054,10 @@ extension SageMakerClientTypes.RecommendationJobContainerConfig: Swift.Codable { } } supportedInstanceTypes = supportedInstanceTypesDecoded0 - let dataInputConfigDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dataInputConfig) - dataInputConfig = dataInputConfigDecoded let supportedEndpointTypeDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.RecommendationJobSupportedEndpointType.self, forKey: .supportedEndpointType) supportedEndpointType = supportedEndpointTypeDecoded + let dataInputConfigDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .dataInputConfig) + dataInputConfig = dataInputConfigDecoded let supportedResponseMIMETypesContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .supportedResponseMIMETypes) var supportedResponseMIMETypesDecoded0:[Swift.String]? = nil if let supportedResponseMIMETypesContainer = supportedResponseMIMETypesContainer { @@ -87947,14 +88164,14 @@ extension SageMakerClientTypes.RecommendationJobInferenceBenchmark: Swift.Codabl let containerValues = try decoder.container(keyedBy: CodingKeys.self) let metricsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.RecommendationMetrics.self, forKey: .metrics) metrics = metricsDecoded + let endpointMetricsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.InferenceMetrics.self, forKey: .endpointMetrics) + endpointMetrics = endpointMetricsDecoded let endpointConfigurationDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.EndpointOutputConfiguration.self, forKey: .endpointConfiguration) endpointConfiguration = endpointConfigurationDecoded let modelConfigurationDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ModelConfiguration.self, forKey: .modelConfiguration) modelConfiguration = modelConfigurationDecoded let failureReasonDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .failureReason) failureReason = failureReasonDecoded - let endpointMetricsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.InferenceMetrics.self, forKey: .endpointMetrics) - endpointMetrics = endpointMetricsDecoded let invocationEndTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .invocationEndTime) invocationEndTime = invocationEndTimeDecoded let invocationStartTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .invocationStartTime) @@ -88061,6 +88278,8 @@ extension SageMakerClientTypes.RecommendationJobInputConfig: Swift.Codable { let containerValues = try decoder.container(keyedBy: CodingKeys.self) let modelPackageVersionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .modelPackageVersionArn) modelPackageVersionArn = modelPackageVersionArnDecoded + let modelNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .modelName) + modelName = modelNameDecoded let jobDurationInSecondsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .jobDurationInSeconds) jobDurationInSeconds = jobDurationInSecondsDecoded let trafficPatternDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.TrafficPattern.self, forKey: .trafficPattern) @@ -88095,8 +88314,6 @@ extension SageMakerClientTypes.RecommendationJobInputConfig: Swift.Codable { endpoints = endpointsDecoded0 let vpcConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.RecommendationJobVpcConfig.self, forKey: .vpcConfig) vpcConfig = vpcConfigDecoded - let modelNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .modelName) - modelName = modelNameDecoded } } @@ -88232,8 +88449,8 @@ extension SageMakerClientTypes.RecommendationJobPayloadConfig: Swift.Codable { } if let supportedContentTypes = supportedContentTypes { var supportedContentTypesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .supportedContentTypes) - for string0 in supportedContentTypes { - try supportedContentTypesContainer.encode(string0) + for recommendationjobsupportedcontenttype0 in supportedContentTypes { + try supportedContentTypesContainer.encode(recommendationjobsupportedcontenttype0) } } } @@ -88324,6 +88541,8 @@ extension SageMakerClientTypes { extension SageMakerClientTypes { public enum RecommendationJobStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { case completed + case deleted + case deleting case failed case inProgress case pending @@ -88334,6 +88553,8 @@ extension SageMakerClientTypes { public static var allCases: [RecommendationJobStatus] { return [ .completed, + .deleted, + .deleting, .failed, .inProgress, .pending, @@ -88349,6 +88570,8 @@ extension SageMakerClientTypes { public var rawValue: Swift.String { switch self { case .completed: return "COMPLETED" + case .deleted: return "DELETED" + case .deleting: return "DELETING" case .failed: return "FAILED" case .inProgress: return "IN_PROGRESS" case .pending: return "PENDING" @@ -89653,6 +89876,8 @@ extension SageMakerClientTypes.ResourceConfig: Swift.Codable { volumeSizeInGB = volumeSizeInGBDecoded let volumeKmsKeyIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .volumeKmsKeyId) volumeKmsKeyId = volumeKmsKeyIdDecoded + let keepAlivePeriodInSecondsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .keepAlivePeriodInSeconds) + keepAlivePeriodInSeconds = keepAlivePeriodInSecondsDecoded let instanceGroupsContainer = try containerValues.decodeIfPresent([SageMakerClientTypes.InstanceGroup?].self, forKey: .instanceGroups) var instanceGroupsDecoded0:[SageMakerClientTypes.InstanceGroup]? = nil if let instanceGroupsContainer = instanceGroupsContainer { @@ -89664,8 +89889,6 @@ extension SageMakerClientTypes.ResourceConfig: Swift.Codable { } } instanceGroups = instanceGroupsDecoded0 - let keepAlivePeriodInSecondsDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .keepAlivePeriodInSeconds) - keepAlivePeriodInSeconds = keepAlivePeriodInSecondsDecoded } } @@ -90026,7 +90249,7 @@ extension SageMakerClientTypes { public var lifecycleConfigArn: Swift.String? /// The ARN of the SageMaker image that the image version belongs to. public var sageMakerImageArn: Swift.String? - /// The SageMakerImageVersionAlias. + /// The SageMakerImageVersionAlias of the image to launch with. This value is in SemVer 2.0.0 versioning format. public var sageMakerImageVersionAlias: Swift.String? /// The ARN of the image version created on the instance. public var sageMakerImageVersionArn: Swift.String? @@ -90058,6 +90281,8 @@ extension SageMakerClientTypes { case featureGroup case featureMetadata case hyperParameterTuningJob + case image + case imageVersion case model case modelCard case modelPackage @@ -90077,6 +90302,8 @@ extension SageMakerClientTypes { .featureGroup, .featureMetadata, .hyperParameterTuningJob, + .image, + .imageVersion, .model, .modelCard, .modelPackage, @@ -90101,6 +90328,8 @@ extension SageMakerClientTypes { case .featureGroup: return "FeatureGroup" case .featureMetadata: return "FeatureMetadata" case .hyperParameterTuningJob: return "HyperParameterTuningJob" + case .image: return "Image" + case .imageVersion: return "ImageVersion" case .model: return "Model" case .modelCard: return "ModelCard" case .modelPackage: return "ModelPackage" @@ -91551,16 +91780,16 @@ extension SageMakerClientTypes.SearchRecord: Swift.Codable { pipelineExecution = pipelineExecutionDecoded let featureGroupDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.FeatureGroup.self, forKey: .featureGroup) featureGroup = featureGroupDecoded - let projectDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.Project.self, forKey: .project) - project = projectDecoded let featureMetadataDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.FeatureMetadata.self, forKey: .featureMetadata) featureMetadata = featureMetadataDecoded + let projectDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.Project.self, forKey: .project) + project = projectDecoded let hyperParameterTuningJobDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.HyperParameterTuningJobSearchEntity.self, forKey: .hyperParameterTuningJob) hyperParameterTuningJob = hyperParameterTuningJobDecoded - let modelDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ModelDashboardModel.self, forKey: .model) - model = modelDecoded let modelCardDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ModelCard.self, forKey: .modelCard) modelCard = modelCardDecoded + let modelDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ModelDashboardModel.self, forKey: .model) + model = modelDecoded } } @@ -91678,6 +91907,7 @@ extension SageMakerClientTypes { case launchingMlInstances case maxRuntimeExceeded case maxWaitTimeExceeded + case pending case preparingTrainingStack case restarting case starting @@ -91698,6 +91928,7 @@ extension SageMakerClientTypes { .launchingMlInstances, .maxRuntimeExceeded, .maxWaitTimeExceeded, + .pending, .preparingTrainingStack, .restarting, .starting, @@ -91723,6 +91954,7 @@ extension SageMakerClientTypes { case .launchingMlInstances: return "LaunchingMLInstances" case .maxRuntimeExceeded: return "MaxRuntimeExceeded" case .maxWaitTimeExceeded: return "MaxWaitTimeExceeded" + case .pending: return "Pending" case .preparingTrainingStack: return "PreparingTrainingStack" case .restarting: return "Restarting" case .starting: return "Starting" @@ -92120,6 +92352,7 @@ enum SendPipelineExecutionStepFailureOutputError: ClientRuntime.HttpResponseErro 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 "ResourceLimitExceeded": return try await ResourceLimitExceeded(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ResourceNotFound": return try await ResourceNotFound(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) @@ -92256,6 +92489,7 @@ enum SendPipelineExecutionStepSuccessOutputError: ClientRuntime.HttpResponseErro 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 "ResourceLimitExceeded": return try await ResourceLimitExceeded(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ResourceNotFound": return try await ResourceNotFound(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) @@ -93375,14 +93609,14 @@ extension SageMakerClientTypes.SpaceDetails: Swift.Codable { creationTime = creationTimeDecoded let lastModifiedTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .lastModifiedTime) lastModifiedTime = lastModifiedTimeDecoded - let spaceDisplayNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceDisplayName) - spaceDisplayName = spaceDisplayNameDecoded let spaceSettingsSummaryDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SpaceSettingsSummary.self, forKey: .spaceSettingsSummary) spaceSettingsSummary = spaceSettingsSummaryDecoded let spaceSharingSettingsSummaryDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SpaceSharingSettingsSummary.self, forKey: .spaceSharingSettingsSummary) spaceSharingSettingsSummary = spaceSharingSettingsSummaryDecoded let ownershipSettingsSummaryDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.OwnershipSettingsSummary.self, forKey: .ownershipSettingsSummary) ownershipSettingsSummary = ownershipSettingsSummaryDecoded + let spaceDisplayNameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .spaceDisplayName) + spaceDisplayName = spaceDisplayNameDecoded } } @@ -93536,14 +93770,14 @@ extension SageMakerClientTypes.SpaceSettings: Swift.Codable { jupyterServerAppSettings = jupyterServerAppSettingsDecoded let kernelGatewayAppSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.KernelGatewayAppSettings.self, forKey: .kernelGatewayAppSettings) kernelGatewayAppSettings = kernelGatewayAppSettingsDecoded - let jupyterLabAppSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SpaceJupyterLabAppSettings.self, forKey: .jupyterLabAppSettings) - jupyterLabAppSettings = jupyterLabAppSettingsDecoded let codeEditorAppSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SpaceCodeEditorAppSettings.self, forKey: .codeEditorAppSettings) codeEditorAppSettings = codeEditorAppSettingsDecoded - let spaceStorageSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SpaceStorageSettings.self, forKey: .spaceStorageSettings) - spaceStorageSettings = spaceStorageSettingsDecoded + let jupyterLabAppSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SpaceJupyterLabAppSettings.self, forKey: .jupyterLabAppSettings) + jupyterLabAppSettings = jupyterLabAppSettingsDecoded let appTypeDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AppType.self, forKey: .appType) appType = appTypeDecoded + let spaceStorageSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.SpaceStorageSettings.self, forKey: .spaceStorageSettings) + spaceStorageSettings = spaceStorageSettingsDecoded let customFileSystemsContainer = try containerValues.decodeIfPresent([SageMakerClientTypes.CustomFileSystem?].self, forKey: .customFileSystems) var customFileSystemsDecoded0:[SageMakerClientTypes.CustomFileSystem]? = nil if let customFileSystemsContainer = customFileSystemsContainer { @@ -94469,6 +94703,7 @@ enum StartPipelineExecutionOutputError: ClientRuntime.HttpResponseErrorBinding { 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 "ResourceLimitExceeded": return try await ResourceLimitExceeded(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ResourceNotFound": return try await ResourceNotFound(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) @@ -95482,6 +95717,7 @@ enum StopPipelineExecutionOutputError: ClientRuntime.HttpResponseErrorBinding { 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 "ResourceNotFound": return try await ResourceNotFound(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) } @@ -95788,6 +96024,8 @@ extension SageMakerClientTypes { case jupyterlab case jupyterserver case kernelgateway + case savitur + case vscode case sdkUnknown(Swift.String) public static var allCases: [StudioLifecycleConfigAppType] { @@ -95796,6 +96034,8 @@ extension SageMakerClientTypes { .jupyterlab, .jupyterserver, .kernelgateway, + .savitur, + .vscode, .sdkUnknown("") ] } @@ -95809,6 +96049,8 @@ extension SageMakerClientTypes { case .jupyterlab: return "JupyterLab" case .jupyterserver: return "JupyterServer" case .kernelgateway: return "KernelGateway" + case .savitur: return "Savitur" + case .vscode: return "VSCode" case let .sdkUnknown(s): return s } } @@ -96075,12 +96317,14 @@ extension SageMakerClientTypes { extension SageMakerClientTypes { public enum TableFormat: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Codable, Swift.Hashable { + case `default` case glue case iceberg case sdkUnknown(Swift.String) public static var allCases: [TableFormat] { return [ + .default, .glue, .iceberg, .sdkUnknown("") @@ -96092,6 +96336,7 @@ extension SageMakerClientTypes { } public var rawValue: Swift.String { switch self { + case .default: return "Default" case .glue: return "Glue" case .iceberg: return "Iceberg" case let .sdkUnknown(s): return s @@ -96311,18 +96556,21 @@ extension SageMakerClientTypes { case lambda case mlC4 case mlC5 + case mlC6g case mlEia2 case mlG4dn case mlInf1 case mlInf2 case mlM4 case mlM5 + case mlM6g case mlP2 case mlP3 case mlTrn1 case qcs603 case qcs605 case rasp3b + case rasp4b case rk3288 case rk3399 case sbeC @@ -96349,18 +96597,21 @@ extension SageMakerClientTypes { .lambda, .mlC4, .mlC5, + .mlC6g, .mlEia2, .mlG4dn, .mlInf1, .mlInf2, .mlM4, .mlM5, + .mlM6g, .mlP2, .mlP3, .mlTrn1, .qcs603, .qcs605, .rasp3b, + .rasp4b, .rk3288, .rk3399, .sbeC, @@ -96392,18 +96643,21 @@ extension SageMakerClientTypes { case .lambda: return "lambda" case .mlC4: return "ml_c4" case .mlC5: return "ml_c5" + case .mlC6g: return "ml_c6g" case .mlEia2: return "ml_eia2" case .mlG4dn: return "ml_g4dn" case .mlInf1: return "ml_inf1" case .mlInf2: return "ml_inf2" case .mlM4: return "ml_m4" case .mlM5: return "ml_m5" + case .mlM6g: return "ml_m6g" case .mlP2: return "ml_p2" case .mlP3: return "ml_p3" case .mlTrn1: return "ml_trn1" case .qcs603: return "qcs603" case .qcs605: return "qcs605" case .rasp3b: return "rasp3b" + case .rasp4b: return "rasp4b" case .rk3288: return "rk3288" case .rk3399: return "rk3399" case .sbeC: return "sbe_c" @@ -96796,6 +97050,7 @@ extension SageMakerClientTypes.TextGenerationJobConfig: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case baseModelName = "BaseModelName" case completionCriteria = "CompletionCriteria" + case modelAccessConfig = "ModelAccessConfig" case textGenerationHyperParameters = "TextGenerationHyperParameters" } @@ -96807,6 +97062,9 @@ extension SageMakerClientTypes.TextGenerationJobConfig: Swift.Codable { if let completionCriteria = self.completionCriteria { try encodeContainer.encode(completionCriteria, forKey: .completionCriteria) } + if let modelAccessConfig = self.modelAccessConfig { + try encodeContainer.encode(modelAccessConfig, forKey: .modelAccessConfig) + } if let textGenerationHyperParameters = textGenerationHyperParameters { var textGenerationHyperParametersContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .textGenerationHyperParameters) for (dictKey0, textGenerationHyperParameters0) in textGenerationHyperParameters { @@ -96832,6 +97090,8 @@ extension SageMakerClientTypes.TextGenerationJobConfig: Swift.Codable { } } textGenerationHyperParameters = textGenerationHyperParametersDecoded0 + let modelAccessConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.ModelAccessConfig.self, forKey: .modelAccessConfig) + modelAccessConfig = modelAccessConfigDecoded } } @@ -96842,6 +97102,8 @@ extension SageMakerClientTypes { public var baseModelName: Swift.String? /// How long a fine-tuning job is allowed to run. For TextGenerationJobConfig problem types, the MaxRuntimePerTrainingJobInSeconds attribute of AutoMLJobCompletionCriteria defaults to 72h (259200s). public var completionCriteria: SageMakerClientTypes.AutoMLJobCompletionCriteria? + /// The access configuration file for the ML model. You can explicitly accept the model end-user license agreement (EULA) within the ModelAccessConfig. For more information, see [End-user license agreements](https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-choose.html#jumpstart-foundation-models-choose-eula). + public var modelAccessConfig: SageMakerClientTypes.ModelAccessConfig? /// The hyperparameters used to configure and optimize the learning process of the base model. You can set any combination of the following hyperparameters for all base models. For more information on each supported hyperparameter, see [Optimize the learning process of your text generation models with hyperparameters](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-llms-finetuning-set-hyperparameters.html). /// /// * "epochCount": The number of times the model goes through the entire training dataset. Its value should be a string containing an integer value within the range of "1" to "10". @@ -96859,11 +97121,13 @@ extension SageMakerClientTypes { public init( baseModelName: Swift.String? = nil, completionCriteria: SageMakerClientTypes.AutoMLJobCompletionCriteria? = nil, + modelAccessConfig: SageMakerClientTypes.ModelAccessConfig? = nil, textGenerationHyperParameters: [Swift.String:Swift.String]? = nil ) { self.baseModelName = baseModelName self.completionCriteria = completionCriteria + self.modelAccessConfig = modelAccessConfig self.textGenerationHyperParameters = textGenerationHyperParameters } } @@ -97569,6 +97833,14 @@ extension SageMakerClientTypes { case mlC54xlarge case mlC59xlarge case mlC5Xlarge + case mlC6i12xlarge + case mlC6i16xlarge + case mlC6i24xlarge + case mlC6i2xlarge + case mlC6i32xlarge + case mlC6i4xlarge + case mlC6i8xlarge + case mlC6iXlarge case mlG4dn12xlarge case mlG4dn16xlarge case mlG4dn2xlarge @@ -97594,6 +97866,15 @@ extension SageMakerClientTypes { case mlM54xlarge case mlM5Large case mlM5Xlarge + case mlM6i12xlarge + case mlM6i16xlarge + case mlM6i24xlarge + case mlM6i2xlarge + case mlM6i32xlarge + case mlM6i4xlarge + case mlM6i8xlarge + case mlM6iLarge + case mlM6iXlarge case mlP216xlarge case mlP28xlarge case mlP2Xlarge @@ -97601,6 +97882,7 @@ extension SageMakerClientTypes { case mlP316xlarge case mlP32xlarge case mlP38xlarge + case mlP4de24xlarge case mlP4d24xlarge case mlP548xlarge case mlTrn1n32xlarge @@ -97624,6 +97906,14 @@ extension SageMakerClientTypes { .mlC54xlarge, .mlC59xlarge, .mlC5Xlarge, + .mlC6i12xlarge, + .mlC6i16xlarge, + .mlC6i24xlarge, + .mlC6i2xlarge, + .mlC6i32xlarge, + .mlC6i4xlarge, + .mlC6i8xlarge, + .mlC6iXlarge, .mlG4dn12xlarge, .mlG4dn16xlarge, .mlG4dn2xlarge, @@ -97649,6 +97939,15 @@ extension SageMakerClientTypes { .mlM54xlarge, .mlM5Large, .mlM5Xlarge, + .mlM6i12xlarge, + .mlM6i16xlarge, + .mlM6i24xlarge, + .mlM6i2xlarge, + .mlM6i32xlarge, + .mlM6i4xlarge, + .mlM6i8xlarge, + .mlM6iLarge, + .mlM6iXlarge, .mlP216xlarge, .mlP28xlarge, .mlP2Xlarge, @@ -97656,6 +97955,7 @@ extension SageMakerClientTypes { .mlP316xlarge, .mlP32xlarge, .mlP38xlarge, + .mlP4de24xlarge, .mlP4d24xlarge, .mlP548xlarge, .mlTrn1n32xlarge, @@ -97684,6 +97984,14 @@ extension SageMakerClientTypes { case .mlC54xlarge: return "ml.c5.4xlarge" case .mlC59xlarge: return "ml.c5.9xlarge" case .mlC5Xlarge: return "ml.c5.xlarge" + case .mlC6i12xlarge: return "ml.c6i.12xlarge" + case .mlC6i16xlarge: return "ml.c6i.16xlarge" + case .mlC6i24xlarge: return "ml.c6i.24xlarge" + case .mlC6i2xlarge: return "ml.c6i.2xlarge" + case .mlC6i32xlarge: return "ml.c6i.32xlarge" + case .mlC6i4xlarge: return "ml.c6i.4xlarge" + case .mlC6i8xlarge: return "ml.c6i.8xlarge" + case .mlC6iXlarge: return "ml.c6i.xlarge" case .mlG4dn12xlarge: return "ml.g4dn.12xlarge" case .mlG4dn16xlarge: return "ml.g4dn.16xlarge" case .mlG4dn2xlarge: return "ml.g4dn.2xlarge" @@ -97709,6 +98017,15 @@ extension SageMakerClientTypes { case .mlM54xlarge: return "ml.m5.4xlarge" case .mlM5Large: return "ml.m5.large" case .mlM5Xlarge: return "ml.m5.xlarge" + case .mlM6i12xlarge: return "ml.m6i.12xlarge" + case .mlM6i16xlarge: return "ml.m6i.16xlarge" + case .mlM6i24xlarge: return "ml.m6i.24xlarge" + case .mlM6i2xlarge: return "ml.m6i.2xlarge" + case .mlM6i32xlarge: return "ml.m6i.32xlarge" + case .mlM6i4xlarge: return "ml.m6i.4xlarge" + case .mlM6i8xlarge: return "ml.m6i.8xlarge" + case .mlM6iLarge: return "ml.m6i.large" + case .mlM6iXlarge: return "ml.m6i.xlarge" case .mlP216xlarge: return "ml.p2.16xlarge" case .mlP28xlarge: return "ml.p2.8xlarge" case .mlP2Xlarge: return "ml.p2.xlarge" @@ -97716,6 +98033,7 @@ extension SageMakerClientTypes { case .mlP316xlarge: return "ml.p3.16xlarge" case .mlP32xlarge: return "ml.p3.2xlarge" case .mlP38xlarge: return "ml.p3.8xlarge" + case .mlP4de24xlarge: return "ml.p4de.24xlarge" case .mlP4d24xlarge: return "ml.p4d.24xlarge" case .mlP548xlarge: return "ml.p5.48xlarge" case .mlTrn1n32xlarge: return "ml.trn1n.32xlarge" @@ -99339,6 +99657,8 @@ extension SageMakerClientTypes.TransformJob: Swift.Codable { transformInput = transformInputDecoded let transformOutputDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.TransformOutput.self, forKey: .transformOutput) transformOutput = transformOutputDecoded + let dataCaptureConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.BatchDataCaptureConfig.self, forKey: .dataCaptureConfig) + dataCaptureConfig = dataCaptureConfigDecoded let transformResourcesDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.TransformResources.self, forKey: .transformResources) transformResources = transformResourcesDecoded let creationTimeDecoded = try containerValues.decodeTimestampIfPresent(.epochSeconds, forKey: .creationTime) @@ -99366,8 +99686,6 @@ extension SageMakerClientTypes.TransformJob: Swift.Codable { } } tags = tagsDecoded0 - let dataCaptureConfigDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.BatchDataCaptureConfig.self, forKey: .dataCaptureConfig) - dataCaptureConfig = dataCaptureConfigDecoded } } @@ -101885,8 +102203,8 @@ extension UpdateArtifactInput: Swift.Encodable { } if let properties = properties { var propertiesContainer = encodeContainer.nestedContainer(keyedBy: ClientRuntime.Key.self, forKey: .properties) - for (dictKey0, lineageEntityParameters0) in properties { - try propertiesContainer.encode(lineageEntityParameters0, forKey: ClientRuntime.Key(stringValue: dictKey0)) + for (dictKey0, artifactProperties0) in properties { + try propertiesContainer.encode(artifactProperties0, forKey: ClientRuntime.Key(stringValue: dictKey0)) } } if let propertiesToRemove = propertiesToRemove { @@ -101954,9 +102272,9 @@ extension UpdateArtifactInputBody: Swift.Decodable { var propertiesDecoded0: [Swift.String:Swift.String]? = nil if let propertiesContainer = propertiesContainer { propertiesDecoded0 = [Swift.String:Swift.String]() - for (key0, stringparametervalue0) in propertiesContainer { - if let stringparametervalue0 = stringparametervalue0 { - propertiesDecoded0?[key0] = stringparametervalue0 + for (key0, artifactpropertyvalue0) in propertiesContainer { + if let artifactpropertyvalue0 = artifactpropertyvalue0 { + propertiesDecoded0?[key0] = artifactpropertyvalue0 } } } @@ -102260,6 +102578,7 @@ enum UpdateCodeRepositoryOutputError: ClientRuntime.HttpResponseErrorBinding { 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) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) } } @@ -102730,8 +103049,8 @@ struct UpdateDomainInputBody: Swift.Equatable { let domainId: Swift.String? let defaultUserSettings: SageMakerClientTypes.UserSettings? let domainSettingsForUpdate: SageMakerClientTypes.DomainSettingsForUpdate? - let defaultSpaceSettings: SageMakerClientTypes.DefaultSpaceSettings? let appSecurityGroupManagement: SageMakerClientTypes.AppSecurityGroupManagement? + let defaultSpaceSettings: SageMakerClientTypes.DefaultSpaceSettings? let subnetIds: [Swift.String]? let appNetworkAccessType: SageMakerClientTypes.AppNetworkAccessType? } @@ -102755,10 +103074,10 @@ extension UpdateDomainInputBody: Swift.Decodable { defaultUserSettings = defaultUserSettingsDecoded let domainSettingsForUpdateDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.DomainSettingsForUpdate.self, forKey: .domainSettingsForUpdate) domainSettingsForUpdate = domainSettingsForUpdateDecoded - let defaultSpaceSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.DefaultSpaceSettings.self, forKey: .defaultSpaceSettings) - defaultSpaceSettings = defaultSpaceSettingsDecoded let appSecurityGroupManagementDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.AppSecurityGroupManagement.self, forKey: .appSecurityGroupManagement) appSecurityGroupManagement = appSecurityGroupManagementDecoded + let defaultSpaceSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.DefaultSpaceSettings.self, forKey: .defaultSpaceSettings) + defaultSpaceSettings = defaultSpaceSettingsDecoded let subnetIdsContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .subnetIds) var subnetIdsDecoded0:[Swift.String]? = nil if let subnetIdsContainer = subnetIdsContainer { @@ -103380,6 +103699,7 @@ enum UpdateFeatureGroupOutputError: ClientRuntime.HttpResponseErrorBinding { let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) let requestID = httpResponse.requestId switch restJSONError.errorType { + case "ResourceLimitExceeded": return try await ResourceLimitExceeded(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ResourceNotFound": return try await ResourceNotFound(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) } @@ -104849,6 +105169,7 @@ enum UpdateModelPackageOutputError: ClientRuntime.HttpResponseErrorBinding { 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) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) } } @@ -105613,6 +105934,7 @@ enum UpdatePipelineExecutionOutputError: ClientRuntime.HttpResponseErrorBinding 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 "ResourceNotFound": return try await ResourceNotFound(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) } @@ -105784,6 +106106,7 @@ enum UpdatePipelineOutputError: ClientRuntime.HttpResponseErrorBinding { 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 "ResourceNotFound": return try await ResourceNotFound(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) } @@ -105932,6 +106255,7 @@ enum UpdateProjectOutputError: ClientRuntime.HttpResponseErrorBinding { 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) default: return try await AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(httpResponse: httpResponse, message: restJSONError.errorMessage, requestID: requestID, typeName: restJSONError.errorType) } } @@ -106217,6 +106541,7 @@ enum UpdateTrainingJobOutputError: ClientRuntime.HttpResponseErrorBinding { let restJSONError = try await AWSClientRuntime.RestJSONError(httpResponse: httpResponse) let requestID = httpResponse.requestId switch restJSONError.errorType { + case "ResourceLimitExceeded": return try await ResourceLimitExceeded(httpResponse: httpResponse, decoder: decoder, message: restJSONError.errorMessage, requestID: requestID) case "ResourceNotFound": return try await ResourceNotFound(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) } @@ -107363,10 +107688,10 @@ extension SageMakerClientTypes.UserSettings: Swift.Codable { rSessionAppSettings = rSessionAppSettingsDecoded let canvasAppSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.CanvasAppSettings.self, forKey: .canvasAppSettings) canvasAppSettings = canvasAppSettingsDecoded - let jupyterLabAppSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.JupyterLabAppSettings.self, forKey: .jupyterLabAppSettings) - jupyterLabAppSettings = jupyterLabAppSettingsDecoded let codeEditorAppSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.CodeEditorAppSettings.self, forKey: .codeEditorAppSettings) codeEditorAppSettings = codeEditorAppSettingsDecoded + let jupyterLabAppSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.JupyterLabAppSettings.self, forKey: .jupyterLabAppSettings) + jupyterLabAppSettings = jupyterLabAppSettingsDecoded let spaceStorageSettingsDecoded = try containerValues.decodeIfPresent(SageMakerClientTypes.DefaultSpaceStorageSettings.self, forKey: .spaceStorageSettings) spaceStorageSettings = spaceStorageSettingsDecoded let defaultLandingUriDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .defaultLandingUri) diff --git a/Sources/Services/AWSSecurityHub/models/Models.swift b/Sources/Services/AWSSecurityHub/models/Models.swift index 10c8a1b4461..23fb8ff3d4c 100644 --- a/Sources/Services/AWSSecurityHub/models/Models.swift +++ b/Sources/Services/AWSSecurityHub/models/Models.swift @@ -10849,6 +10849,7 @@ extension SecurityHubClientTypes.AwsDynamoDbTableDetails: Swift.Codable { case attributeDefinitions = "AttributeDefinitions" case billingModeSummary = "BillingModeSummary" case creationDateTime = "CreationDateTime" + case deletionProtectionEnabled = "DeletionProtectionEnabled" case globalSecondaryIndexes = "GlobalSecondaryIndexes" case globalTableVersion = "GlobalTableVersion" case itemCount = "ItemCount" @@ -10881,6 +10882,9 @@ extension SecurityHubClientTypes.AwsDynamoDbTableDetails: Swift.Codable { if let creationDateTime = self.creationDateTime { try encodeContainer.encode(creationDateTime, forKey: .creationDateTime) } + if let deletionProtectionEnabled = self.deletionProtectionEnabled { + try encodeContainer.encode(deletionProtectionEnabled, forKey: .deletionProtectionEnabled) + } if let globalSecondaryIndexes = globalSecondaryIndexes { var globalSecondaryIndexesContainer = encodeContainer.nestedUnkeyedContainer(forKey: .globalSecondaryIndexes) for awsdynamodbtableglobalsecondaryindex0 in globalSecondaryIndexes { @@ -11028,6 +11032,8 @@ extension SecurityHubClientTypes.AwsDynamoDbTableDetails: Swift.Codable { tableSizeBytes = tableSizeBytesDecoded let tableStatusDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .tableStatus) tableStatus = tableStatusDecoded + let deletionProtectionEnabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .deletionProtectionEnabled) + deletionProtectionEnabled = deletionProtectionEnabledDecoded } } @@ -11040,6 +11046,8 @@ extension SecurityHubClientTypes { public var billingModeSummary: SecurityHubClientTypes.AwsDynamoDbTableBillingModeSummary? /// Indicates when the table was created. Uses the date-time format specified in [RFC 3339 section 5.6, Internet Date/Time Format](https://tools.ietf.org/html/rfc3339#section-5.6). The value cannot contain spaces, and date and time should be separated by T. For example, 2020-03-22T13:22:13.933Z. public var creationDateTime: Swift.String? + /// Indicates whether deletion protection is to be enabled (true) or disabled (false) on the table. + public var deletionProtectionEnabled: Swift.Bool? /// List of global secondary indexes for the table. public var globalSecondaryIndexes: [SecurityHubClientTypes.AwsDynamoDbTableGlobalSecondaryIndex]? /// The version of global tables being used. @@ -11091,6 +11099,7 @@ extension SecurityHubClientTypes { attributeDefinitions: [SecurityHubClientTypes.AwsDynamoDbTableAttributeDefinition]? = nil, billingModeSummary: SecurityHubClientTypes.AwsDynamoDbTableBillingModeSummary? = nil, creationDateTime: Swift.String? = nil, + deletionProtectionEnabled: Swift.Bool? = nil, globalSecondaryIndexes: [SecurityHubClientTypes.AwsDynamoDbTableGlobalSecondaryIndex]? = nil, globalTableVersion: Swift.String? = nil, itemCount: Swift.Int? = nil, @@ -11112,6 +11121,7 @@ extension SecurityHubClientTypes { self.attributeDefinitions = attributeDefinitions self.billingModeSummary = billingModeSummary self.creationDateTime = creationDateTime + self.deletionProtectionEnabled = deletionProtectionEnabled self.globalSecondaryIndexes = globalSecondaryIndexes self.globalTableVersion = globalTableVersion self.itemCount = itemCount @@ -11890,6 +11900,607 @@ extension SecurityHubClientTypes { } +extension SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsActiveDirectoryDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case directoryId = "DirectoryId" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let directoryId = self.directoryId { + try encodeContainer.encode(directoryId, forKey: .directoryId) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let directoryIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .directoryId) + directoryId = directoryIdDecoded + } +} + +extension SecurityHubClientTypes { + /// Provides details about an Active Directory that’s used to authenticate an Client VPN endpoint. + public struct AwsEc2ClientVpnEndpointAuthenticationOptionsActiveDirectoryDetails: Swift.Equatable { + /// The ID of the Active Directory used for authentication. + public var directoryId: Swift.String? + + public init( + directoryId: Swift.String? = nil + ) + { + self.directoryId = directoryId + } + } + +} + +extension SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case activeDirectory = "ActiveDirectory" + case federatedAuthentication = "FederatedAuthentication" + case mutualAuthentication = "MutualAuthentication" + case type = "Type" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let activeDirectory = self.activeDirectory { + try encodeContainer.encode(activeDirectory, forKey: .activeDirectory) + } + if let federatedAuthentication = self.federatedAuthentication { + try encodeContainer.encode(federatedAuthentication, forKey: .federatedAuthentication) + } + if let mutualAuthentication = self.mutualAuthentication { + try encodeContainer.encode(mutualAuthentication, forKey: .mutualAuthentication) + } + if let type = self.type { + try encodeContainer.encode(type, forKey: .type) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let typeDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .type) + type = typeDecoded + let activeDirectoryDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsActiveDirectoryDetails.self, forKey: .activeDirectory) + activeDirectory = activeDirectoryDecoded + let mutualAuthenticationDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsMutualAuthenticationDetails.self, forKey: .mutualAuthentication) + mutualAuthentication = mutualAuthenticationDecoded + let federatedAuthenticationDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsFederatedAuthenticationDetails.self, forKey: .federatedAuthentication) + federatedAuthentication = federatedAuthenticationDecoded + } +} + +extension SecurityHubClientTypes { + /// Information about the authentication method used by the Client VPN endpoint. + public struct AwsEc2ClientVpnEndpointAuthenticationOptionsDetails: Swift.Equatable { + /// Information about the Active Directory, if applicable. With Active Directory authentication, clients are authenticated against existing Active Directory groups. + public var activeDirectory: SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsActiveDirectoryDetails? + /// Information about the IAM SAML identity provider, if applicable. + public var federatedAuthentication: SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsFederatedAuthenticationDetails? + /// Information about the authentication certificates, if applicable. + public var mutualAuthentication: SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsMutualAuthenticationDetails? + /// The authentication type used. + public var type: Swift.String? + + public init( + activeDirectory: SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsActiveDirectoryDetails? = nil, + federatedAuthentication: SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsFederatedAuthenticationDetails? = nil, + mutualAuthentication: SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsMutualAuthenticationDetails? = nil, + type: Swift.String? = nil + ) + { + self.activeDirectory = activeDirectory + self.federatedAuthentication = federatedAuthentication + self.mutualAuthentication = mutualAuthentication + self.type = type + } + } + +} + +extension SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsFederatedAuthenticationDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case samlProviderArn = "SamlProviderArn" + case selfServiceSamlProviderArn = "SelfServiceSamlProviderArn" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let samlProviderArn = self.samlProviderArn { + try encodeContainer.encode(samlProviderArn, forKey: .samlProviderArn) + } + if let selfServiceSamlProviderArn = self.selfServiceSamlProviderArn { + try encodeContainer.encode(selfServiceSamlProviderArn, forKey: .selfServiceSamlProviderArn) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let samlProviderArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .samlProviderArn) + samlProviderArn = samlProviderArnDecoded + let selfServiceSamlProviderArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .selfServiceSamlProviderArn) + selfServiceSamlProviderArn = selfServiceSamlProviderArnDecoded + } +} + +extension SecurityHubClientTypes { + /// Describes the IAM SAML identity providers used for federated authentication. + public struct AwsEc2ClientVpnEndpointAuthenticationOptionsFederatedAuthenticationDetails: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the IAM SAML identity provider. + public var samlProviderArn: Swift.String? + /// The Amazon Resource Name (ARN) of the IAM SAML identity provider for the self-service portal. + public var selfServiceSamlProviderArn: Swift.String? + + public init( + samlProviderArn: Swift.String? = nil, + selfServiceSamlProviderArn: Swift.String? = nil + ) + { + self.samlProviderArn = samlProviderArn + self.selfServiceSamlProviderArn = selfServiceSamlProviderArn + } + } + +} + +extension SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsMutualAuthenticationDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case clientRootCertificateChain = "ClientRootCertificateChain" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let clientRootCertificateChain = self.clientRootCertificateChain { + try encodeContainer.encode(clientRootCertificateChain, forKey: .clientRootCertificateChain) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let clientRootCertificateChainDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientRootCertificateChain) + clientRootCertificateChain = clientRootCertificateChainDecoded + } +} + +extension SecurityHubClientTypes { + /// Information about the client certificate used for authentication. + public struct AwsEc2ClientVpnEndpointAuthenticationOptionsMutualAuthenticationDetails: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the client certificate. + public var clientRootCertificateChain: Swift.String? + + public init( + clientRootCertificateChain: Swift.String? = nil + ) + { + self.clientRootCertificateChain = clientRootCertificateChain + } + } + +} + +extension SecurityHubClientTypes.AwsEc2ClientVpnEndpointClientConnectOptionsDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case enabled = "Enabled" + case lambdaFunctionArn = "LambdaFunctionArn" + case status = "Status" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let enabled = self.enabled { + try encodeContainer.encode(enabled, forKey: .enabled) + } + if let lambdaFunctionArn = self.lambdaFunctionArn { + try encodeContainer.encode(lambdaFunctionArn, forKey: .lambdaFunctionArn) + } + 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 enabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .enabled) + enabled = enabledDecoded + let lambdaFunctionArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .lambdaFunctionArn) + lambdaFunctionArn = lambdaFunctionArnDecoded + let statusDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsEc2ClientVpnEndpointClientConnectOptionsStatusDetails.self, forKey: .status) + status = statusDecoded + } +} + +extension SecurityHubClientTypes { + /// The options for managing connection authorization for new client connections. + public struct AwsEc2ClientVpnEndpointClientConnectOptionsDetails: Swift.Equatable { + /// Indicates whether client connect options are enabled. + public var enabled: Swift.Bool? + /// The Amazon Resource Name (ARN) of the Lambda function used for connection authorization. + public var lambdaFunctionArn: Swift.String? + /// The status of any updates to the client connect options. + public var status: SecurityHubClientTypes.AwsEc2ClientVpnEndpointClientConnectOptionsStatusDetails? + + public init( + enabled: Swift.Bool? = nil, + lambdaFunctionArn: Swift.String? = nil, + status: SecurityHubClientTypes.AwsEc2ClientVpnEndpointClientConnectOptionsStatusDetails? = nil + ) + { + self.enabled = enabled + self.lambdaFunctionArn = lambdaFunctionArn + self.status = status + } + } + +} + +extension SecurityHubClientTypes.AwsEc2ClientVpnEndpointClientConnectOptionsStatusDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case code = "Code" + case message = "Message" + } + + 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) + } + if let message = self.message { + try encodeContainer.encode(message, forKey: .message) + } + } + + 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 + let messageDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .message) + message = messageDecoded + } +} + +extension SecurityHubClientTypes { + /// Describes the status of the Client VPN endpoint attribute. + public struct AwsEc2ClientVpnEndpointClientConnectOptionsStatusDetails: Swift.Equatable { + /// The status code. + public var code: Swift.String? + /// The status message. + public var message: Swift.String? + + public init( + code: Swift.String? = nil, + message: Swift.String? = nil + ) + { + self.code = code + self.message = message + } + } + +} + +extension SecurityHubClientTypes.AwsEc2ClientVpnEndpointClientLoginBannerOptionsDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case bannerText = "BannerText" + case enabled = "Enabled" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let bannerText = self.bannerText { + try encodeContainer.encode(bannerText, forKey: .bannerText) + } + if let enabled = self.enabled { + try encodeContainer.encode(enabled, forKey: .enabled) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let enabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .enabled) + enabled = enabledDecoded + let bannerTextDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .bannerText) + bannerText = bannerTextDecoded + } +} + +extension SecurityHubClientTypes { + /// Options for enabling a customizable text banner that will be displayed on Amazon Web Services provided clients when a VPN session is established. + public struct AwsEc2ClientVpnEndpointClientLoginBannerOptionsDetails: Swift.Equatable { + /// Customizable text that will be displayed in a banner on Amazon Web Services provided clients when a VPN session is established. + public var bannerText: Swift.String? + /// Current state of text banner feature. + public var enabled: Swift.Bool? + + public init( + bannerText: Swift.String? = nil, + enabled: Swift.Bool? = nil + ) + { + self.bannerText = bannerText + self.enabled = enabled + } + } + +} + +extension SecurityHubClientTypes.AwsEc2ClientVpnEndpointConnectionLogOptionsDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case cloudwatchLogGroup = "CloudwatchLogGroup" + case cloudwatchLogStream = "CloudwatchLogStream" + case enabled = "Enabled" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let cloudwatchLogGroup = self.cloudwatchLogGroup { + try encodeContainer.encode(cloudwatchLogGroup, forKey: .cloudwatchLogGroup) + } + if let cloudwatchLogStream = self.cloudwatchLogStream { + try encodeContainer.encode(cloudwatchLogStream, forKey: .cloudwatchLogStream) + } + if let enabled = self.enabled { + try encodeContainer.encode(enabled, forKey: .enabled) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let enabledDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .enabled) + enabled = enabledDecoded + let cloudwatchLogGroupDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .cloudwatchLogGroup) + cloudwatchLogGroup = cloudwatchLogGroupDecoded + let cloudwatchLogStreamDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .cloudwatchLogStream) + cloudwatchLogStream = cloudwatchLogStreamDecoded + } +} + +extension SecurityHubClientTypes { + /// Information about the client connection logging options for the Client VPN endpoint. + public struct AwsEc2ClientVpnEndpointConnectionLogOptionsDetails: Swift.Equatable { + /// The name of the Amazon CloudWatch Logs log group to which connection logging data is published. + public var cloudwatchLogGroup: Swift.String? + /// The name of the Amazon CloudWatch Logs log stream to which connection logging data is published. + public var cloudwatchLogStream: Swift.String? + /// Indicates whether client connection logging is enabled for the Client VPN endpoint. + public var enabled: Swift.Bool? + + public init( + cloudwatchLogGroup: Swift.String? = nil, + cloudwatchLogStream: Swift.String? = nil, + enabled: Swift.Bool? = nil + ) + { + self.cloudwatchLogGroup = cloudwatchLogGroup + self.cloudwatchLogStream = cloudwatchLogStream + self.enabled = enabled + } + } + +} + +extension SecurityHubClientTypes.AwsEc2ClientVpnEndpointDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case authenticationOptions = "AuthenticationOptions" + case clientCidrBlock = "ClientCidrBlock" + case clientConnectOptions = "ClientConnectOptions" + case clientLoginBannerOptions = "ClientLoginBannerOptions" + case clientVpnEndpointId = "ClientVpnEndpointId" + case connectionLogOptions = "ConnectionLogOptions" + case description = "Description" + case dnsServer = "DnsServer" + case securityGroupIdSet = "SecurityGroupIdSet" + case selfServicePortalUrl = "SelfServicePortalUrl" + case serverCertificateArn = "ServerCertificateArn" + case sessionTimeoutHours = "SessionTimeoutHours" + case splitTunnel = "SplitTunnel" + case transportProtocol = "TransportProtocol" + case vpcId = "VpcId" + case vpnPort = "VpnPort" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let authenticationOptions = authenticationOptions { + var authenticationOptionsContainer = encodeContainer.nestedUnkeyedContainer(forKey: .authenticationOptions) + for awsec2clientvpnendpointauthenticationoptionsdetails0 in authenticationOptions { + try authenticationOptionsContainer.encode(awsec2clientvpnendpointauthenticationoptionsdetails0) + } + } + if let clientCidrBlock = self.clientCidrBlock { + try encodeContainer.encode(clientCidrBlock, forKey: .clientCidrBlock) + } + if let clientConnectOptions = self.clientConnectOptions { + try encodeContainer.encode(clientConnectOptions, forKey: .clientConnectOptions) + } + if let clientLoginBannerOptions = self.clientLoginBannerOptions { + try encodeContainer.encode(clientLoginBannerOptions, forKey: .clientLoginBannerOptions) + } + if let clientVpnEndpointId = self.clientVpnEndpointId { + try encodeContainer.encode(clientVpnEndpointId, forKey: .clientVpnEndpointId) + } + if let connectionLogOptions = self.connectionLogOptions { + try encodeContainer.encode(connectionLogOptions, forKey: .connectionLogOptions) + } + if let description = self.description { + try encodeContainer.encode(description, forKey: .description) + } + if let dnsServer = dnsServer { + var dnsServerContainer = encodeContainer.nestedUnkeyedContainer(forKey: .dnsServer) + for nonemptystring0 in dnsServer { + try dnsServerContainer.encode(nonemptystring0) + } + } + if let securityGroupIdSet = securityGroupIdSet { + var securityGroupIdSetContainer = encodeContainer.nestedUnkeyedContainer(forKey: .securityGroupIdSet) + for nonemptystring0 in securityGroupIdSet { + try securityGroupIdSetContainer.encode(nonemptystring0) + } + } + if let selfServicePortalUrl = self.selfServicePortalUrl { + try encodeContainer.encode(selfServicePortalUrl, forKey: .selfServicePortalUrl) + } + if let serverCertificateArn = self.serverCertificateArn { + try encodeContainer.encode(serverCertificateArn, forKey: .serverCertificateArn) + } + if let sessionTimeoutHours = self.sessionTimeoutHours { + try encodeContainer.encode(sessionTimeoutHours, forKey: .sessionTimeoutHours) + } + if let splitTunnel = self.splitTunnel { + try encodeContainer.encode(splitTunnel, forKey: .splitTunnel) + } + if let transportProtocol = self.transportProtocol { + try encodeContainer.encode(transportProtocol, forKey: .transportProtocol) + } + if let vpcId = self.vpcId { + try encodeContainer.encode(vpcId, forKey: .vpcId) + } + if let vpnPort = self.vpnPort { + try encodeContainer.encode(vpnPort, forKey: .vpnPort) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let clientVpnEndpointIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientVpnEndpointId) + clientVpnEndpointId = clientVpnEndpointIdDecoded + let descriptionDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .description) + description = descriptionDecoded + let clientCidrBlockDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .clientCidrBlock) + clientCidrBlock = clientCidrBlockDecoded + let dnsServerContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .dnsServer) + var dnsServerDecoded0:[Swift.String]? = nil + if let dnsServerContainer = dnsServerContainer { + dnsServerDecoded0 = [Swift.String]() + for string0 in dnsServerContainer { + if let string0 = string0 { + dnsServerDecoded0?.append(string0) + } + } + } + dnsServer = dnsServerDecoded0 + let splitTunnelDecoded = try containerValues.decodeIfPresent(Swift.Bool.self, forKey: .splitTunnel) + splitTunnel = splitTunnelDecoded + let transportProtocolDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .transportProtocol) + transportProtocol = transportProtocolDecoded + let vpnPortDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .vpnPort) + vpnPort = vpnPortDecoded + let serverCertificateArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .serverCertificateArn) + serverCertificateArn = serverCertificateArnDecoded + let authenticationOptionsContainer = try containerValues.decodeIfPresent([SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsDetails?].self, forKey: .authenticationOptions) + var authenticationOptionsDecoded0:[SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsDetails]? = nil + if let authenticationOptionsContainer = authenticationOptionsContainer { + authenticationOptionsDecoded0 = [SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsDetails]() + for structure0 in authenticationOptionsContainer { + if let structure0 = structure0 { + authenticationOptionsDecoded0?.append(structure0) + } + } + } + authenticationOptions = authenticationOptionsDecoded0 + let connectionLogOptionsDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsEc2ClientVpnEndpointConnectionLogOptionsDetails.self, forKey: .connectionLogOptions) + connectionLogOptions = connectionLogOptionsDecoded + let securityGroupIdSetContainer = try containerValues.decodeIfPresent([Swift.String?].self, forKey: .securityGroupIdSet) + var securityGroupIdSetDecoded0:[Swift.String]? = nil + if let securityGroupIdSetContainer = securityGroupIdSetContainer { + securityGroupIdSetDecoded0 = [Swift.String]() + for string0 in securityGroupIdSetContainer { + if let string0 = string0 { + securityGroupIdSetDecoded0?.append(string0) + } + } + } + securityGroupIdSet = securityGroupIdSetDecoded0 + let vpcIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .vpcId) + vpcId = vpcIdDecoded + let selfServicePortalUrlDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .selfServicePortalUrl) + selfServicePortalUrl = selfServicePortalUrlDecoded + let clientConnectOptionsDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsEc2ClientVpnEndpointClientConnectOptionsDetails.self, forKey: .clientConnectOptions) + clientConnectOptions = clientConnectOptionsDecoded + let sessionTimeoutHoursDecoded = try containerValues.decodeIfPresent(Swift.Int.self, forKey: .sessionTimeoutHours) + sessionTimeoutHours = sessionTimeoutHoursDecoded + let clientLoginBannerOptionsDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsEc2ClientVpnEndpointClientLoginBannerOptionsDetails.self, forKey: .clientLoginBannerOptions) + clientLoginBannerOptions = clientLoginBannerOptionsDecoded + } +} + +extension SecurityHubClientTypes { + /// Describes an Client VPN endpoint. A Client VPN endpoint is the resource that you create and configure to enable and manage client VPN sessions. It's the termination point for all client VPN sessions. + public struct AwsEc2ClientVpnEndpointDetails: Swift.Equatable { + /// Information about the authentication method used by the Client VPN endpoint. + public var authenticationOptions: [SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsDetails]? + /// The IPv4 address range, in CIDR notation, from which client IP addresses are assigned. + public var clientCidrBlock: Swift.String? + /// The options for managing connection authorization for new client connections. + public var clientConnectOptions: SecurityHubClientTypes.AwsEc2ClientVpnEndpointClientConnectOptionsDetails? + /// Options for enabling a customizable text banner that will be displayed on Amazon Web Services provided clients when a VPN session is established. + public var clientLoginBannerOptions: SecurityHubClientTypes.AwsEc2ClientVpnEndpointClientLoginBannerOptionsDetails? + /// The ID of the Client VPN endpoint. + public var clientVpnEndpointId: Swift.String? + /// Information about the client connection logging options for the Client VPN endpoint. + public var connectionLogOptions: SecurityHubClientTypes.AwsEc2ClientVpnEndpointConnectionLogOptionsDetails? + /// A brief description of the endpoint. + public var description: Swift.String? + /// Information about the DNS servers to be used for DNS resolution. + public var dnsServer: [Swift.String]? + /// The IDs of the security groups for the target network. + public var securityGroupIdSet: [Swift.String]? + /// The URL of the self-service portal. + public var selfServicePortalUrl: Swift.String? + /// The Amazon Resource Name (ARN) of the server certificate. + public var serverCertificateArn: Swift.String? + /// The maximum VPN session duration time in hours. + public var sessionTimeoutHours: Swift.Int? + /// Indicates whether split-tunnel is enabled in the Client VPN endpoint. + public var splitTunnel: Swift.Bool? + /// The transport protocol used by the Client VPN endpoint. + public var transportProtocol: Swift.String? + /// The ID of the VPC. + public var vpcId: Swift.String? + /// The port number for the Client VPN endpoint. + public var vpnPort: Swift.Int? + + public init( + authenticationOptions: [SecurityHubClientTypes.AwsEc2ClientVpnEndpointAuthenticationOptionsDetails]? = nil, + clientCidrBlock: Swift.String? = nil, + clientConnectOptions: SecurityHubClientTypes.AwsEc2ClientVpnEndpointClientConnectOptionsDetails? = nil, + clientLoginBannerOptions: SecurityHubClientTypes.AwsEc2ClientVpnEndpointClientLoginBannerOptionsDetails? = nil, + clientVpnEndpointId: Swift.String? = nil, + connectionLogOptions: SecurityHubClientTypes.AwsEc2ClientVpnEndpointConnectionLogOptionsDetails? = nil, + description: Swift.String? = nil, + dnsServer: [Swift.String]? = nil, + securityGroupIdSet: [Swift.String]? = nil, + selfServicePortalUrl: Swift.String? = nil, + serverCertificateArn: Swift.String? = nil, + sessionTimeoutHours: Swift.Int? = nil, + splitTunnel: Swift.Bool? = nil, + transportProtocol: Swift.String? = nil, + vpcId: Swift.String? = nil, + vpnPort: Swift.Int? = nil + ) + { + self.authenticationOptions = authenticationOptions + self.clientCidrBlock = clientCidrBlock + self.clientConnectOptions = clientConnectOptions + self.clientLoginBannerOptions = clientLoginBannerOptions + self.clientVpnEndpointId = clientVpnEndpointId + self.connectionLogOptions = connectionLogOptions + self.description = description + self.dnsServer = dnsServer + self.securityGroupIdSet = securityGroupIdSet + self.selfServicePortalUrl = selfServicePortalUrl + self.serverCertificateArn = serverCertificateArn + self.sessionTimeoutHours = sessionTimeoutHours + self.splitTunnel = splitTunnel + self.transportProtocol = transportProtocol + self.vpcId = vpcId + self.vpnPort = vpnPort + } + } + +} + extension SecurityHubClientTypes.AwsEc2EipDetails: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case allocationId = "AllocationId" @@ -28910,6 +29521,7 @@ extension SecurityHubClientTypes.AwsMskClusterClusterInfoDetails: Swift.Codable case clusterName = "ClusterName" case currentVersion = "CurrentVersion" case encryptionInfo = "EncryptionInfo" + case enhancedMonitoring = "EnhancedMonitoring" case numberOfBrokerNodes = "NumberOfBrokerNodes" } @@ -28927,6 +29539,9 @@ extension SecurityHubClientTypes.AwsMskClusterClusterInfoDetails: Swift.Codable if let encryptionInfo = self.encryptionInfo { try encodeContainer.encode(encryptionInfo, forKey: .encryptionInfo) } + if let enhancedMonitoring = self.enhancedMonitoring { + try encodeContainer.encode(enhancedMonitoring, forKey: .enhancedMonitoring) + } if let numberOfBrokerNodes = self.numberOfBrokerNodes { try encodeContainer.encode(numberOfBrokerNodes, forKey: .numberOfBrokerNodes) } @@ -28944,20 +29559,24 @@ extension SecurityHubClientTypes.AwsMskClusterClusterInfoDetails: Swift.Codable clusterName = clusterNameDecoded let clientAuthenticationDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsMskClusterClusterInfoClientAuthenticationDetails.self, forKey: .clientAuthentication) clientAuthentication = clientAuthenticationDecoded + let enhancedMonitoringDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .enhancedMonitoring) + enhancedMonitoring = enhancedMonitoringDecoded } } extension SecurityHubClientTypes { - /// Provide details about an Amazon MSK cluster. + /// Provide details about an Amazon Managed Streaming for Apache Kafka (Amazon MSK) cluster. public struct AwsMskClusterClusterInfoDetails: Swift.Equatable { /// Provides information for different modes of client authentication. public var clientAuthentication: SecurityHubClientTypes.AwsMskClusterClusterInfoClientAuthenticationDetails? /// The name of the cluster. public var clusterName: Swift.String? - /// The current version of the MSK cluster. + /// The current version of the cluster. public var currentVersion: Swift.String? /// Includes encryption-related information, such as the KMS key used for encrypting data at rest and whether you want Amazon MSK to encrypt your data in transit. public var encryptionInfo: SecurityHubClientTypes.AwsMskClusterClusterInfoEncryptionInfoDetails? + /// Specifies the level of monitoring for the cluster. + public var enhancedMonitoring: Swift.String? /// The number of broker nodes in the cluster. public var numberOfBrokerNodes: Swift.Int? @@ -28966,6 +29585,7 @@ extension SecurityHubClientTypes { clusterName: Swift.String? = nil, currentVersion: Swift.String? = nil, encryptionInfo: SecurityHubClientTypes.AwsMskClusterClusterInfoEncryptionInfoDetails? = nil, + enhancedMonitoring: Swift.String? = nil, numberOfBrokerNodes: Swift.Int? = nil ) { @@ -28973,6 +29593,7 @@ extension SecurityHubClientTypes { self.clusterName = clusterName self.currentVersion = currentVersion self.encryptionInfo = encryptionInfo + self.enhancedMonitoring = enhancedMonitoring self.numberOfBrokerNodes = numberOfBrokerNodes } } @@ -35437,6 +36058,146 @@ extension SecurityHubClientTypes { } +extension SecurityHubClientTypes.AwsS3AccessPointDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case accessPointArn = "AccessPointArn" + case alias = "Alias" + case bucket = "Bucket" + case bucketAccountId = "BucketAccountId" + case name = "Name" + case networkOrigin = "NetworkOrigin" + case publicAccessBlockConfiguration = "PublicAccessBlockConfiguration" + case vpcConfiguration = "VpcConfiguration" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let accessPointArn = self.accessPointArn { + try encodeContainer.encode(accessPointArn, forKey: .accessPointArn) + } + if let alias = self.alias { + try encodeContainer.encode(alias, forKey: .alias) + } + if let bucket = self.bucket { + try encodeContainer.encode(bucket, forKey: .bucket) + } + if let bucketAccountId = self.bucketAccountId { + try encodeContainer.encode(bucketAccountId, forKey: .bucketAccountId) + } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } + if let networkOrigin = self.networkOrigin { + try encodeContainer.encode(networkOrigin, forKey: .networkOrigin) + } + if let publicAccessBlockConfiguration = self.publicAccessBlockConfiguration { + try encodeContainer.encode(publicAccessBlockConfiguration, forKey: .publicAccessBlockConfiguration) + } + if let vpcConfiguration = self.vpcConfiguration { + try encodeContainer.encode(vpcConfiguration, forKey: .vpcConfiguration) + } + } + + public init(from decoder: Swift.Decoder) throws { + let containerValues = try decoder.container(keyedBy: CodingKeys.self) + let accessPointArnDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .accessPointArn) + accessPointArn = accessPointArnDecoded + let aliasDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .alias) + alias = aliasDecoded + let bucketDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .bucket) + bucket = bucketDecoded + let bucketAccountIdDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .bucketAccountId) + bucketAccountId = bucketAccountIdDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded + let networkOriginDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .networkOrigin) + networkOrigin = networkOriginDecoded + let publicAccessBlockConfigurationDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsS3AccountPublicAccessBlockDetails.self, forKey: .publicAccessBlockConfiguration) + publicAccessBlockConfiguration = publicAccessBlockConfigurationDecoded + let vpcConfigurationDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsS3AccessPointVpcConfigurationDetails.self, forKey: .vpcConfiguration) + vpcConfiguration = vpcConfigurationDecoded + } +} + +extension SecurityHubClientTypes { + /// Returns configuration information about the specified Amazon S3 access point. S3 access points are named network endpoints that are attached to buckets that you can use to perform S3 object operations. + public struct AwsS3AccessPointDetails: Swift.Equatable { + /// The Amazon Resource Name (ARN) of the access point. + public var accessPointArn: Swift.String? + /// The name or alias of the access point. + public var alias: Swift.String? + /// The name of the S3 bucket associated with the specified access point. + public var bucket: Swift.String? + /// The Amazon Web Services account ID associated with the S3 bucket associated with this access point. + public var bucketAccountId: Swift.String? + /// The name of the specified access point. + public var name: Swift.String? + /// Indicates whether this access point allows access from the public internet. + public var networkOrigin: Swift.String? + /// provides information about the Amazon S3 Public Access Block configuration for accounts. + public var publicAccessBlockConfiguration: SecurityHubClientTypes.AwsS3AccountPublicAccessBlockDetails? + /// Contains the virtual private cloud (VPC) configuration for the specified access point. + public var vpcConfiguration: SecurityHubClientTypes.AwsS3AccessPointVpcConfigurationDetails? + + public init( + accessPointArn: Swift.String? = nil, + alias: Swift.String? = nil, + bucket: Swift.String? = nil, + bucketAccountId: Swift.String? = nil, + name: Swift.String? = nil, + networkOrigin: Swift.String? = nil, + publicAccessBlockConfiguration: SecurityHubClientTypes.AwsS3AccountPublicAccessBlockDetails? = nil, + vpcConfiguration: SecurityHubClientTypes.AwsS3AccessPointVpcConfigurationDetails? = nil + ) + { + self.accessPointArn = accessPointArn + self.alias = alias + self.bucket = bucket + self.bucketAccountId = bucketAccountId + self.name = name + self.networkOrigin = networkOrigin + self.publicAccessBlockConfiguration = publicAccessBlockConfiguration + self.vpcConfiguration = vpcConfiguration + } + } + +} + +extension SecurityHubClientTypes.AwsS3AccessPointVpcConfigurationDetails: Swift.Codable { + enum CodingKeys: Swift.String, Swift.CodingKey { + case vpcId = "VpcId" + } + + public func encode(to encoder: Swift.Encoder) throws { + var encodeContainer = encoder.container(keyedBy: CodingKeys.self) + if let vpcId = self.vpcId { + try encodeContainer.encode(vpcId, forKey: .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 + } +} + +extension SecurityHubClientTypes { + /// The virtual private cloud (VPC) configuration for an Amazon S3 access point. + public struct AwsS3AccessPointVpcConfigurationDetails: Swift.Equatable { + /// If this field is specified, this access point will only allow connections from the specified VPC ID. + public var vpcId: Swift.String? + + public init( + vpcId: Swift.String? = nil + ) + { + self.vpcId = vpcId + } + } + +} + extension SecurityHubClientTypes.AwsS3AccountPublicAccessBlockDetails: Swift.Codable { enum CodingKeys: Swift.String, Swift.CodingKey { case blockPublicAcls = "BlockPublicAcls" @@ -36164,6 +36925,7 @@ extension SecurityHubClientTypes.AwsS3BucketDetails: Swift.Codable { case bucketVersioningConfiguration = "BucketVersioningConfiguration" case bucketWebsiteConfiguration = "BucketWebsiteConfiguration" case createdAt = "CreatedAt" + case name = "Name" case objectLockConfiguration = "ObjectLockConfiguration" case ownerAccountId = "OwnerAccountId" case ownerId = "OwnerId" @@ -36195,6 +36957,9 @@ extension SecurityHubClientTypes.AwsS3BucketDetails: Swift.Codable { if let createdAt = self.createdAt { try encodeContainer.encode(createdAt, forKey: .createdAt) } + if let name = self.name { + try encodeContainer.encode(name, forKey: .name) + } if let objectLockConfiguration = self.objectLockConfiguration { try encodeContainer.encode(objectLockConfiguration, forKey: .objectLockConfiguration) } @@ -36243,15 +37008,17 @@ extension SecurityHubClientTypes.AwsS3BucketDetails: Swift.Codable { bucketVersioningConfiguration = bucketVersioningConfigurationDecoded let objectLockConfigurationDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsS3BucketObjectLockConfiguration.self, forKey: .objectLockConfiguration) objectLockConfiguration = objectLockConfigurationDecoded + let nameDecoded = try containerValues.decodeIfPresent(Swift.String.self, forKey: .name) + name = nameDecoded } } extension SecurityHubClientTypes { - /// The details of an Amazon S3 bucket. + /// The details of an Amazon Simple Storage Service (Amazon S3) bucket. public struct AwsS3BucketDetails: Swift.Equatable { /// The access control list for the S3 bucket. public var accessControlList: Swift.String? - /// The lifecycle configuration for objects in the S3 bucket. + /// The lifecycle configuration for objects in the specified bucket. public var bucketLifecycleConfiguration: SecurityHubClientTypes.AwsS3BucketBucketLifecycleConfigurationDetails? /// The logging configuration for the S3 bucket. public var bucketLoggingConfiguration: SecurityHubClientTypes.AwsS3BucketLoggingConfiguration? @@ -36263,7 +37030,9 @@ extension SecurityHubClientTypes { public var bucketWebsiteConfiguration: SecurityHubClientTypes.AwsS3BucketWebsiteConfiguration? /// Indicates when the S3 bucket was created. Uses the date-time format specified in [RFC 3339 section 5.6, Internet Date/Time Format](https://tools.ietf.org/html/rfc3339#section-5.6). The value cannot contain spaces, and date and time should be separated by T. For example, 2020-03-22T13:22:13.933Z. public var createdAt: Swift.String? - /// Specifies which rule Amazon S3 applies by default to every new object placed in the specified bucket. + /// The name of the bucket. + public var name: Swift.String? + /// Specifies which rule Amazon S3 applies by default to every new object placed in the bucket. public var objectLockConfiguration: SecurityHubClientTypes.AwsS3BucketObjectLockConfiguration? /// The Amazon Web Services account identifier of the account that owns the S3 bucket. public var ownerAccountId: Swift.String? @@ -36284,6 +37053,7 @@ extension SecurityHubClientTypes { bucketVersioningConfiguration: SecurityHubClientTypes.AwsS3BucketBucketVersioningConfiguration? = nil, bucketWebsiteConfiguration: SecurityHubClientTypes.AwsS3BucketWebsiteConfiguration? = nil, createdAt: Swift.String? = nil, + name: Swift.String? = nil, objectLockConfiguration: SecurityHubClientTypes.AwsS3BucketObjectLockConfiguration? = nil, ownerAccountId: Swift.String? = nil, ownerId: Swift.String? = nil, @@ -36299,6 +37069,7 @@ extension SecurityHubClientTypes { self.bucketVersioningConfiguration = bucketVersioningConfiguration self.bucketWebsiteConfiguration = bucketWebsiteConfiguration self.createdAt = createdAt + self.name = name self.objectLockConfiguration = objectLockConfiguration self.ownerAccountId = ownerAccountId self.ownerId = ownerId @@ -46566,7 +47337,7 @@ extension SecurityHubClientTypes { public var description: Swift.String? /// The universally unique identifier (UUID) of the configuration policy. public var id: Swift.String? - /// The name of the configuration policy. + /// The name of the configuration policy. Alphanumeric characters and the following ASCII characters are permitted: -, ., !, *, /. public var name: Swift.String? /// Indicates whether the service that the configuration policy applies to is enabled in the policy. public var serviceEnabled: Swift.Bool? @@ -47194,7 +47965,7 @@ public struct CreateConfigurationPolicyInput: Swift.Equatable { public var configurationPolicy: SecurityHubClientTypes.Policy? /// The description of the configuration policy. public var description: Swift.String? - /// The name of the configuration policy. + /// The name of the configuration policy. Alphanumeric characters and the following ASCII characters are permitted: -, ., !, *, /. /// This member is required. public var name: Swift.String? /// User-defined tags associated with a configuration policy. For more information, see [Tagging Security Hub resources](https://docs.aws.amazon.com/securityhub/latest/userguide/tagging-resources.html) in the Security Hub user guide. @@ -56836,7 +57607,7 @@ extension SecurityHubClientTypes { public struct ParameterConfiguration: Swift.Equatable { /// The current value of a control parameter. public var value: SecurityHubClientTypes.ParameterValue? - /// Identifies whether a control parameter uses a custom user-defined value or the Security Hub default value. + /// Identifies whether a control parameter uses a custom user-defined value or subscribes to the default Security Hub behavior. When ValueType is set equal to DEFAULT, the default behavior can be a specific Security Hub default value, or the default behavior can be to ignore a specific parameter. When ValueType is set equal to DEFAULT, Security Hub ignores user-provided input for the Value field. When ValueType is set equal to CUSTOM, the Value field can't be empty. /// This member is required. public var valueType: SecurityHubClientTypes.ParameterValueType? @@ -58268,6 +59039,7 @@ extension SecurityHubClientTypes.ResourceDetails: Swift.Codable { case awsDmsReplicationInstance = "AwsDmsReplicationInstance" case awsDmsReplicationTask = "AwsDmsReplicationTask" case awsDynamoDbTable = "AwsDynamoDbTable" + case awsEc2ClientVpnEndpoint = "AwsEc2ClientVpnEndpoint" case awsEc2Eip = "AwsEc2Eip" case awsEc2Instance = "AwsEc2Instance" case awsEc2LaunchTemplate = "AwsEc2LaunchTemplate" @@ -58321,6 +59093,7 @@ extension SecurityHubClientTypes.ResourceDetails: Swift.Codable { case awsRdsEventSubscription = "AwsRdsEventSubscription" case awsRedshiftCluster = "AwsRedshiftCluster" case awsRoute53HostedZone = "AwsRoute53HostedZone" + case awsS3AccessPoint = "AwsS3AccessPoint" case awsS3AccountPublicAccessBlock = "AwsS3AccountPublicAccessBlock" case awsS3Bucket = "AwsS3Bucket" case awsS3Object = "AwsS3Object" @@ -58413,6 +59186,9 @@ extension SecurityHubClientTypes.ResourceDetails: Swift.Codable { if let awsDynamoDbTable = self.awsDynamoDbTable { try encodeContainer.encode(awsDynamoDbTable, forKey: .awsDynamoDbTable) } + if let awsEc2ClientVpnEndpoint = self.awsEc2ClientVpnEndpoint { + try encodeContainer.encode(awsEc2ClientVpnEndpoint, forKey: .awsEc2ClientVpnEndpoint) + } if let awsEc2Eip = self.awsEc2Eip { try encodeContainer.encode(awsEc2Eip, forKey: .awsEc2Eip) } @@ -58572,6 +59348,9 @@ extension SecurityHubClientTypes.ResourceDetails: Swift.Codable { if let awsRoute53HostedZone = self.awsRoute53HostedZone { try encodeContainer.encode(awsRoute53HostedZone, forKey: .awsRoute53HostedZone) } + if let awsS3AccessPoint = self.awsS3AccessPoint { + try encodeContainer.encode(awsS3AccessPoint, forKey: .awsS3AccessPoint) + } if let awsS3AccountPublicAccessBlock = self.awsS3AccountPublicAccessBlock { try encodeContainer.encode(awsS3AccountPublicAccessBlock, forKey: .awsS3AccountPublicAccessBlock) } @@ -58848,6 +59627,10 @@ extension SecurityHubClientTypes.ResourceDetails: Swift.Codable { awsRoute53HostedZone = awsRoute53HostedZoneDecoded let awsMskClusterDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsMskClusterDetails.self, forKey: .awsMskCluster) awsMskCluster = awsMskClusterDecoded + let awsS3AccessPointDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsS3AccessPointDetails.self, forKey: .awsS3AccessPoint) + awsS3AccessPoint = awsS3AccessPointDecoded + let awsEc2ClientVpnEndpointDecoded = try containerValues.decodeIfPresent(SecurityHubClientTypes.AwsEc2ClientVpnEndpointDetails.self, forKey: .awsEc2ClientVpnEndpoint) + awsEc2ClientVpnEndpoint = awsEc2ClientVpnEndpointDecoded } } @@ -58898,6 +59681,8 @@ extension SecurityHubClientTypes { public var awsDmsReplicationTask: SecurityHubClientTypes.AwsDmsReplicationTaskDetails? /// Details about a DynamoDB table. public var awsDynamoDbTable: SecurityHubClientTypes.AwsDynamoDbTableDetails? + /// Provides details about an Client VPN endpoint. A Client VPN endpoint is the resource that you create and configure to enable and manage client VPN sessions. It's the termination point for all client VPN sessions. + public var awsEc2ClientVpnEndpoint: SecurityHubClientTypes.AwsEc2ClientVpnEndpointDetails? /// Details about an Elastic IP address. public var awsEc2Eip: SecurityHubClientTypes.AwsEc2EipDetails? /// Details about an EC2 instance related to a finding. @@ -59004,6 +59789,8 @@ extension SecurityHubClientTypes { public var awsRedshiftCluster: SecurityHubClientTypes.AwsRedshiftClusterDetails? /// Provides details about an Amazon Route 53 hosted zone, including the four name servers assigned to the hosted zone. A hosted zone represents a collection of records that can be managed together, belonging to a single parent domain name. public var awsRoute53HostedZone: SecurityHubClientTypes.AwsRoute53HostedZoneDetails? + /// Provides details about an Amazon Simple Storage Service (Amazon S3) access point. S3 access points are named network endpoints that are attached to S3 buckets that you can use to perform S3 object operations. + public var awsS3AccessPoint: SecurityHubClientTypes.AwsS3AccessPointDetails? /// Details about the Amazon S3 Public Access Block configuration for an account. public var awsS3AccountPublicAccessBlock: SecurityHubClientTypes.AwsS3AccountPublicAccessBlockDetails? /// Details about an S3 bucket related to a finding. @@ -59076,6 +59863,7 @@ extension SecurityHubClientTypes { awsDmsReplicationInstance: SecurityHubClientTypes.AwsDmsReplicationInstanceDetails? = nil, awsDmsReplicationTask: SecurityHubClientTypes.AwsDmsReplicationTaskDetails? = nil, awsDynamoDbTable: SecurityHubClientTypes.AwsDynamoDbTableDetails? = nil, + awsEc2ClientVpnEndpoint: SecurityHubClientTypes.AwsEc2ClientVpnEndpointDetails? = nil, awsEc2Eip: SecurityHubClientTypes.AwsEc2EipDetails? = nil, awsEc2Instance: SecurityHubClientTypes.AwsEc2InstanceDetails? = nil, awsEc2LaunchTemplate: SecurityHubClientTypes.AwsEc2LaunchTemplateDetails? = nil, @@ -59129,6 +59917,7 @@ extension SecurityHubClientTypes { awsRdsEventSubscription: SecurityHubClientTypes.AwsRdsEventSubscriptionDetails? = nil, awsRedshiftCluster: SecurityHubClientTypes.AwsRedshiftClusterDetails? = nil, awsRoute53HostedZone: SecurityHubClientTypes.AwsRoute53HostedZoneDetails? = nil, + awsS3AccessPoint: SecurityHubClientTypes.AwsS3AccessPointDetails? = nil, awsS3AccountPublicAccessBlock: SecurityHubClientTypes.AwsS3AccountPublicAccessBlockDetails? = nil, awsS3Bucket: SecurityHubClientTypes.AwsS3BucketDetails? = nil, awsS3Object: SecurityHubClientTypes.AwsS3ObjectDetails? = nil, @@ -59175,6 +59964,7 @@ extension SecurityHubClientTypes { self.awsDmsReplicationInstance = awsDmsReplicationInstance self.awsDmsReplicationTask = awsDmsReplicationTask self.awsDynamoDbTable = awsDynamoDbTable + self.awsEc2ClientVpnEndpoint = awsEc2ClientVpnEndpoint self.awsEc2Eip = awsEc2Eip self.awsEc2Instance = awsEc2Instance self.awsEc2LaunchTemplate = awsEc2LaunchTemplate @@ -59228,6 +60018,7 @@ extension SecurityHubClientTypes { self.awsRdsEventSubscription = awsRdsEventSubscription self.awsRedshiftCluster = awsRedshiftCluster self.awsRoute53HostedZone = awsRoute53HostedZone + self.awsS3AccessPoint = awsS3AccessPoint self.awsS3AccountPublicAccessBlock = awsS3AccountPublicAccessBlock self.awsS3Bucket = awsS3Bucket self.awsS3Object = awsS3Object @@ -64653,7 +65444,7 @@ public struct UpdateConfigurationPolicyInput: Swift.Equatable { /// The Amazon Resource Name (ARN) or universally unique identifier (UUID) of the configuration policy. /// This member is required. public var identifier: Swift.String? - /// The name of the configuration policy. + /// The name of the configuration policy. Alphanumeric characters and the following ASCII characters are permitted: -, ., !, *, /. public var name: Swift.String? /// The reason for updating the configuration policy. public var updatedReason: Swift.String? diff --git a/Sources/Services/AWSWorkSpaces/WorkSpacesClient.swift b/Sources/Services/AWSWorkSpaces/WorkSpacesClient.swift index e72aa54905d..746dda038e0 100644 --- a/Sources/Services/AWSWorkSpaces/WorkSpacesClient.swift +++ b/Sources/Services/AWSWorkSpaces/WorkSpacesClient.swift @@ -757,6 +757,8 @@ extension WorkSpacesClient: WorkSpacesClientProtocol { /// /// * You don't need to specify the PCOIP protocol for Linux bundles because WSP is the default protocol for those bundles. /// + /// * Ensure you review your running mode to ensure you are using a running mode that is optimal for your needs and budget. For more information on switching running modes, see [ Can I switch between hourly and monthly billing?](https://aws.amazon.com/workspaces/faqs/#:~:text=Q%3A%20Can%20I%20switch%20between%20hourly%20and%20monthly%20billing%3F) + /// /// - Parameter CreateWorkspacesInput : [no documentation found] /// /// - Returns: `CreateWorkspacesOutput` : [no documentation found] diff --git a/Sources/Services/AWSWorkSpaces/WorkSpacesClientProtocol.swift b/Sources/Services/AWSWorkSpaces/WorkSpacesClientProtocol.swift index 24247eea46e..ceaf0e1ace8 100644 --- a/Sources/Services/AWSWorkSpaces/WorkSpacesClientProtocol.swift +++ b/Sources/Services/AWSWorkSpaces/WorkSpacesClientProtocol.swift @@ -252,6 +252,8 @@ public protocol WorkSpacesClientProtocol { /// /// * You don't need to specify the PCOIP protocol for Linux bundles because WSP is the default protocol for those bundles. /// + /// * Ensure you review your running mode to ensure you are using a running mode that is optimal for your needs and budget. For more information on switching running modes, see [ Can I switch between hourly and monthly billing?](https://aws.amazon.com/workspaces/faqs/#:~:text=Q%3A%20Can%20I%20switch%20between%20hourly%20and%20monthly%20billing%3F) + /// /// - Parameter CreateWorkspacesInput : [no documentation found] /// /// - Returns: `CreateWorkspacesOutput` : [no documentation found] diff --git a/Sources/Services/AWSWorkSpaces/models/Models.swift b/Sources/Services/AWSWorkSpaces/models/Models.swift index 4a78931672a..7e578ad8c8a 100644 --- a/Sources/Services/AWSWorkSpaces/models/Models.swift +++ b/Sources/Services/AWSWorkSpaces/models/Models.swift @@ -15395,7 +15395,11 @@ extension WorkSpacesClientTypes { public var protocols: [WorkSpacesClientTypes.ModelProtocol]? /// The size of the root volume. For important information about how to modify the size of the root and user volumes, see [Modify a WorkSpace](https://docs.aws.amazon.com/workspaces/latest/adminguide/modify-workspaces.html). public var rootVolumeSizeGib: Swift.Int? - /// The running mode. For more information, see [Manage the WorkSpace Running Mode](https://docs.aws.amazon.com/workspaces/latest/adminguide/running-mode.html). The MANUAL value is only supported by Amazon WorkSpaces Core. Contact your account team to be allow-listed to use this value. For more information, see [Amazon WorkSpaces Core](http://aws.amazon.com/workspaces/core/). + /// The running mode. For more information, see [Manage the WorkSpace Running Mode](https://docs.aws.amazon.com/workspaces/latest/adminguide/running-mode.html). + /// + /// * The MANUAL value is only supported by Amazon WorkSpaces Core. Contact your account team to be allow-listed to use this value. For more information, see [Amazon WorkSpaces Core](http://aws.amazon.com/workspaces/core/). + /// + /// * Ensure you review your running mode to ensure you are using a running mode that is optimal for your needs and budget. For more information on switching running modes, see [ Can I switch between hourly and monthly billing?](https://aws.amazon.com/workspaces/faqs/#:~:text=Q%3A%20Can%20I%20switch%20between%20hourly%20and%20monthly%20billing%3F) public var runningMode: WorkSpacesClientTypes.RunningMode? /// The time after a user logs off when WorkSpaces are automatically stopped. Configured in 60-minute intervals. public var runningModeAutoStopTimeoutInMinutes: Swift.Int? diff --git a/Tests/Services/AWSNeptuneGraphTests/EndpointResolverTest.swift b/Tests/Services/AWSNeptuneGraphTests/EndpointResolverTest.swift new file mode 100644 index 00000000000..cec503ca767 --- /dev/null +++ b/Tests/Services/AWSNeptuneGraphTests/EndpointResolverTest.swift @@ -0,0 +1,1521 @@ +// Code generated by smithy-swift-codegen. DO NOT EDIT! + +import AWSClientRuntime +@testable import AWSNeptuneGraph +import AwsCommonRuntimeKit +import ClientRuntime +import SmithyTestUtil +import XCTest + +class EndpointResolverTest: XCTestCase { + + override class func setUp() { + AwsCommonRuntimeKit.CommonRuntimeKit.initialize() + } + + /// Region and CP ApiType are provided + func testResolve1() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + endpoint: "https://mycustomDomain.com", + region: "us-east-1" + ) + 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://mycustomDomain.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Region and DP ApiType are provided + func testResolve2() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + endpoint: "https://mycustomDomain.com", + region: "us-east-1" + ) + 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://mycustomDomain.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Region and invalid ApiType are provided + func testResolve3() throws { + let endpointParams = EndpointParams( + apiType: "someInvalidApiType", + endpoint: "https://mycustomDomain.com", + region: "us-east-1" + ) + 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://mycustomDomain.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Only invalid ApiType is provided + func testResolve4() throws { + let endpointParams = EndpointParams( + apiType: "someInvalidApiType", + endpoint: "https://mycustomDomain.com" + ) + 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://mycustomDomain.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: us-east-1, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve5() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + 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://neptune-graph-fips.us-east-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: us-east-1, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve6() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "us-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("Invalid Configuration: fips endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: us-east-1, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve7() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + 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://neptune-graph-fips.us-east-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: us-east-1, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve8() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + 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 endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: us-east-1, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve9() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + 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://neptune-graph.us-east-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: us-east-1, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve10() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + 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://neptune-graph.us-east-1.on.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: us-east-1, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve11() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + 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://neptune-graph.us-east-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: us-east-1, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve12() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + 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://us-east-1.neptune-graph.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: us-east-2, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve13() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "us-east-2", + 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://neptune-graph-fips.us-east-2.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: us-east-2, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve14() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "us-east-2", + useDualStack: true, + 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 endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: us-east-2, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve15() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "us-east-2", + 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://neptune-graph-fips.us-east-2.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: us-east-2, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve16() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "us-east-2", + 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 endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: us-east-2, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve17() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "us-east-2", + 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://neptune-graph.us-east-2.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: us-east-2, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve18() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "us-east-2", + 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://neptune-graph.us-east-2.on.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: us-east-2, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve19() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "us-east-2", + 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://neptune-graph.us-east-2.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: us-east-2, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve20() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "us-east-2", + 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://us-east-2.neptune-graph.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: us-west-2, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve21() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "us-west-2", + 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://neptune-graph-fips.us-west-2.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: us-west-2, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve22() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "us-west-2", + useDualStack: true, + 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 endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: us-west-2, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve23() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "us-west-2", + 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://neptune-graph-fips.us-west-2.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: us-west-2, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve24() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "us-west-2", + 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 endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: us-west-2, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve25() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "us-west-2", + 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://neptune-graph.us-west-2.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: us-west-2, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve26() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "us-west-2", + 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://neptune-graph.us-west-2.on.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: us-west-2, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve27() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "us-west-2", + 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://neptune-graph.us-west-2.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: us-west-2, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve28() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "us-west-2", + 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://us-west-2.neptune-graph.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: eu-west-1, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve29() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "eu-west-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://neptune-graph-fips.eu-west-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: eu-west-1, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve30() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "eu-west-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("Invalid Configuration: fips endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: eu-west-1, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve31() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "eu-west-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://neptune-graph-fips.eu-west-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: eu-west-1, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve32() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "eu-west-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 endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: eu-west-1, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve33() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "eu-west-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://neptune-graph.eu-west-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: eu-west-1, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve34() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "eu-west-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://neptune-graph.eu-west-1.on.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: eu-west-1, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve35() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "eu-west-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://neptune-graph.eu-west-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: eu-west-1, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve36() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "eu-west-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://eu-west-1.neptune-graph.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: eu-west-2, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve37() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "eu-west-2", + 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://neptune-graph-fips.eu-west-2.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: eu-west-2, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve38() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "eu-west-2", + useDualStack: true, + 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 endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: eu-west-2, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve39() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "eu-west-2", + 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://neptune-graph-fips.eu-west-2.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: eu-west-2, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve40() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "eu-west-2", + 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 endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: eu-west-2, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve41() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "eu-west-2", + 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://neptune-graph.eu-west-2.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: eu-west-2, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve42() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "eu-west-2", + 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://neptune-graph.eu-west-2.on.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: eu-west-2, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve43() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "eu-west-2", + 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://neptune-graph.eu-west-2.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: eu-west-2, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve44() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "eu-west-2", + 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://eu-west-2.neptune-graph.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: eu-central-1, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve45() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "eu-central-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://neptune-graph-fips.eu-central-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: eu-central-1, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve46() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "eu-central-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("Invalid Configuration: fips endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: eu-central-1, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve47() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "eu-central-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://neptune-graph-fips.eu-central-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: eu-central-1, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve48() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "eu-central-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 endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: eu-central-1, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve49() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "eu-central-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://neptune-graph.eu-central-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: eu-central-1, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve50() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "eu-central-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://neptune-graph.eu-central-1.on.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: eu-central-1, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve51() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "eu-central-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://neptune-graph.eu-central-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: eu-central-1, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve52() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "eu-central-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://eu-central-1.neptune-graph.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: ap-southeast-1, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve53() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "ap-southeast-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://neptune-graph-fips.ap-southeast-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: ap-southeast-1, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve54() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "ap-southeast-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("Invalid Configuration: fips endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: ap-southeast-1, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve55() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "ap-southeast-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://neptune-graph-fips.ap-southeast-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: ap-southeast-1, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve56() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "ap-southeast-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 endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: ap-southeast-1, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve57() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "ap-southeast-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://neptune-graph.ap-southeast-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: ap-southeast-1, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve58() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "ap-southeast-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://neptune-graph.ap-southeast-1.on.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: ap-southeast-1, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve59() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "ap-southeast-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://neptune-graph.ap-southeast-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: ap-southeast-1, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve60() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "ap-southeast-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://ap-southeast-1.neptune-graph.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: ap-northeast-1, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve61() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "ap-northeast-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://neptune-graph-fips.ap-northeast-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: ap-northeast-1, useFipsEndpoint: true, useDualStackEndpoint: true + func testResolve62() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "ap-northeast-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("Invalid Configuration: fips endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: ap-northeast-1, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve63() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "ap-northeast-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://neptune-graph-fips.ap-northeast-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: ap-northeast-1, useFipsEndpoint: true, useDualStackEndpoint: false + func testResolve64() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "ap-northeast-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 endpoint is not supported for this API", message) + default: + XCTFail() + } + } + } + + /// Validate CP endpoint in region: ap-northeast-1, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve65() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "ap-northeast-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://neptune-graph.ap-northeast-1.api.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: ap-northeast-1, useFipsEndpoint: false, useDualStackEndpoint: true + func testResolve66() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "ap-northeast-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://neptune-graph.ap-northeast-1.on.aws", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate CP endpoint in region: ap-northeast-1, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve67() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + region: "ap-northeast-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://neptune-graph.ap-northeast-1.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate DP endpoint in region: ap-northeast-1, useFipsEndpoint: false, useDualStackEndpoint: false + func testResolve68() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane", + region: "ap-northeast-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://ap-northeast-1.neptune-graph.amazonaws.com", headers: headers, properties: properties) + + XCTAssertEqual(expected, actual) + } + + /// Validate When no region is provided + func testResolve69() throws { + let endpointParams = EndpointParams( + apiType: "DataPlane" + ) + 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() + } + } + } + + /// Validate When invalid/unknown ApiType provided + func testResolve70() throws { + let endpointParams = EndpointParams( + apiType: "someUnknownValue", + region: "us-east-1" + ) + let resolver = try DefaultEndpointResolver() + + XCTAssertThrowsError(try resolver.resolve(params: endpointParams)) { error in + switch error { + case EndpointError.unresolved(let message): + XCTAssertEqual("Invalid Configuration: Unknown ApiType", message) + default: + XCTFail() + } + } + } + + /// Both Fips and dualstack enabled + func testResolve71() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + endpoint: "https://mycustomDomain.com", + region: "us-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("Invalid Configuration: FIPS and custom endpoint are not supported", message) + default: + XCTFail() + } + } + } + + /// Fips enabled and dualstack disabled + func testResolve72() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + endpoint: "https://mycustomDomain.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() + } + } + } + + /// Fips disabled and dualstack enabled + func testResolve73() throws { + let endpointParams = EndpointParams( + apiType: "ControlPlane", + endpoint: "https://mycustomDomain.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() + } + } + } + +} diff --git a/Tests/Services/AWSNeptuneTests/EndpointResolverTest.swift b/Tests/Services/AWSNeptuneTests/EndpointResolverTest.swift index 2b60e2ad9e7..b1956f54f6e 100644 --- a/Tests/Services/AWSNeptuneTests/EndpointResolverTest.swift +++ b/Tests/Services/AWSNeptuneTests/EndpointResolverTest.swift @@ -1086,4 +1086,23 @@ class EndpointResolverTest: XCTestCase { } } + /// Partition doesn't support DualStack + func testResolve55() 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/packageDependencies.plist b/packageDependencies.plist index 9eb1809ebaa..027f192fbc6 100644 --- a/packageDependencies.plist +++ b/packageDependencies.plist @@ -9,6 +9,6 @@ clientRuntimeBranch main clientRuntimeVersion - 0.36.0 + 0.37.0