From e918f8b12fe06e64b964e1bf06d226f8fda95580 Mon Sep 17 00:00:00 2001 From: AWS SDK Swift Automation Date: Thu, 8 Aug 2024 18:51:12 +0000 Subject: [PATCH] chore: Updates version to 0.54.0 --- Package.version | 2 +- .../AWSCognitoIdentityProvider/Models.swift | 68 +- .../Sources/AWSConnect/ConnectClient.swift | 144 +++ .../Sources/AWSConnect/Models.swift | 893 ++++++++++++++++-- .../Sources/AWSConnect/Paginators.swift | 66 ++ .../AWSEC2/Sources/AWSEC2/EC2Client.swift | 196 +++- .../AWSEC2/Sources/AWSEC2/Models.swift | 703 +++++++++++++- .../AWSGlue/Sources/AWSGlue/Models.swift | 763 ++++++++++----- .../AWSGlue/Sources/AWSGlue/Paginators.swift | 2 + 9 files changed, 2465 insertions(+), 372 deletions(-) diff --git a/Package.version b/Package.version index 328047e4e31..806cc5fb8ed 100644 --- a/Package.version +++ b/Package.version @@ -1 +1 @@ -0.53.0 \ No newline at end of file +0.54.0 \ No newline at end of file diff --git a/Sources/Services/AWSCognitoIdentityProvider/Sources/AWSCognitoIdentityProvider/Models.swift b/Sources/Services/AWSCognitoIdentityProvider/Sources/AWSCognitoIdentityProvider/Models.swift index c69f429f5f6..27f51fedebd 100644 --- a/Sources/Services/AWSCognitoIdentityProvider/Sources/AWSCognitoIdentityProvider/Models.swift +++ b/Sources/Services/AWSCognitoIdentityProvider/Sources/AWSCognitoIdentityProvider/Models.swift @@ -3429,6 +3429,51 @@ public struct AdminUserGlobalSignOutOutput { public init() { } } +extension CognitoIdentityProviderClientTypes { + + public enum AdvancedSecurityEnabledModeType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case audit + case enforced + case sdkUnknown(Swift.String) + + public static var allCases: [AdvancedSecurityEnabledModeType] { + return [ + .audit, + .enforced + ] + } + + 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 .audit: return "AUDIT" + case .enforced: return "ENFORCED" + case let .sdkUnknown(s): return s + } + } + } +} + +extension CognitoIdentityProviderClientTypes { + /// Advanced security configuration options for additional authentication types in your user pool, including custom authentication and refresh-token authentication. + public struct AdvancedSecurityAdditionalFlowsType { + /// The operating mode of advanced security features in custom authentication with [ Custom authentication challenge Lambda triggers](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-challenge.html). + public var customAuthMode: CognitoIdentityProviderClientTypes.AdvancedSecurityEnabledModeType? + + public init( + customAuthMode: CognitoIdentityProviderClientTypes.AdvancedSecurityEnabledModeType? = nil + ) + { + self.customAuthMode = customAuthMode + } + } + +} + extension CognitoIdentityProviderClientTypes { public enum AdvancedSecurityModeType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { @@ -4907,14 +4952,18 @@ extension CognitoIdentityProviderClientTypes { extension CognitoIdentityProviderClientTypes { /// User pool add-ons. Contains settings for activation of advanced security features. To log user security information but take no action, set to AUDIT. To configure automatic security responses to risky traffic to your user pool, set to ENFORCED. For more information, see [Adding advanced security to a user pool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-settings-advanced-security.html). public struct UserPoolAddOnsType { - /// The operating mode of advanced security features in your user pool. + /// Advanced security configuration options for additional authentication types in your user pool, including custom authentication and refresh-token authentication. + public var advancedSecurityAdditionalFlows: CognitoIdentityProviderClientTypes.AdvancedSecurityAdditionalFlowsType? + /// The operating mode of advanced security features for standard authentication types in your user pool, including username-password and secure remote password (SRP) authentication. /// This member is required. public var advancedSecurityMode: CognitoIdentityProviderClientTypes.AdvancedSecurityModeType? public init( + advancedSecurityAdditionalFlows: CognitoIdentityProviderClientTypes.AdvancedSecurityAdditionalFlowsType? = nil, advancedSecurityMode: CognitoIdentityProviderClientTypes.AdvancedSecurityModeType? = nil ) { + self.advancedSecurityAdditionalFlows = advancedSecurityAdditionalFlows self.advancedSecurityMode = advancedSecurityMode } } @@ -15232,6 +15281,7 @@ extension CognitoIdentityProviderClientTypes.UserPoolAddOnsType { static func write(value: CognitoIdentityProviderClientTypes.UserPoolAddOnsType?, to writer: SmithyJSON.Writer) throws { guard let value else { return } + try writer["AdvancedSecurityAdditionalFlows"].write(value.advancedSecurityAdditionalFlows, with: CognitoIdentityProviderClientTypes.AdvancedSecurityAdditionalFlowsType.write(value:to:)) try writer["AdvancedSecurityMode"].write(value.advancedSecurityMode) } @@ -15239,6 +15289,22 @@ extension CognitoIdentityProviderClientTypes.UserPoolAddOnsType { guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } var value = CognitoIdentityProviderClientTypes.UserPoolAddOnsType() value.advancedSecurityMode = try reader["AdvancedSecurityMode"].readIfPresent() + value.advancedSecurityAdditionalFlows = try reader["AdvancedSecurityAdditionalFlows"].readIfPresent(with: CognitoIdentityProviderClientTypes.AdvancedSecurityAdditionalFlowsType.read(from:)) + return value + } +} + +extension CognitoIdentityProviderClientTypes.AdvancedSecurityAdditionalFlowsType { + + static func write(value: CognitoIdentityProviderClientTypes.AdvancedSecurityAdditionalFlowsType?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["CustomAuthMode"].write(value.customAuthMode) + } + + static func read(from reader: SmithyJSON.Reader) throws -> CognitoIdentityProviderClientTypes.AdvancedSecurityAdditionalFlowsType { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = CognitoIdentityProviderClientTypes.AdvancedSecurityAdditionalFlowsType() + value.customAuthMode = try reader["CustomAuthMode"].readIfPresent() return value } } diff --git a/Sources/Services/AWSConnect/Sources/AWSConnect/ConnectClient.swift b/Sources/Services/AWSConnect/Sources/AWSConnect/ConnectClient.swift index b38c43ea51c..fc46b15cb25 100644 --- a/Sources/Services/AWSConnect/Sources/AWSConnect/ConnectClient.swift +++ b/Sources/Services/AWSConnect/Sources/AWSConnect/ConnectClient.swift @@ -12504,6 +12504,78 @@ extension ConnectClient { return try await op.execute(input: input) } + /// Performs the `SearchAgentStatuses` operation on the `AmazonConnectService` service. + /// + /// Searches AgentStatuses in an Amazon Connect instance, with optional filtering. + /// + /// - Parameter SearchAgentStatusesInput : [no documentation found] + /// + /// - Returns: `SearchAgentStatusesOutput` : [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 searchAgentStatuses(input: SearchAgentStatusesInput) async throws -> SearchAgentStatusesOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "searchAgentStatuses") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "connect") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + let i: any ClientRuntime.HttpInterceptor = provider.create() + builder.interceptors.add(i) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(SearchAgentStatusesInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/json")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: SearchAgentStatusesInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(SearchAgentStatusesOutput.httpOutput(from:), SearchAgentStatusesOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "Connect") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "SearchAgentStatuses") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `SearchAvailablePhoneNumbers` operation on the `AmazonConnectService` service. /// /// Searches for available phone numbers that you can claim to your Amazon Connect instance or traffic distribution group. If the provided TargetArn is a traffic distribution group, you can call this API in both Amazon Web Services Regions associated with the traffic distribution group. @@ -13368,6 +13440,78 @@ extension ConnectClient { return try await op.execute(input: input) } + /// Performs the `SearchUserHierarchyGroups` operation on the `AmazonConnectService` service. + /// + /// Searches UserHierarchyGroups in an Amazon Connect instance, with optional filtering. The UserHierarchyGroup with "LevelId": "0" is the foundation for building levels on top of an instance. It is not user-definable, nor is it visible in the UI. + /// + /// - Parameter SearchUserHierarchyGroupsInput : [no documentation found] + /// + /// - Returns: `SearchUserHierarchyGroupsOutput` : [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 searchUserHierarchyGroups(input: SearchUserHierarchyGroupsInput) async throws -> SearchUserHierarchyGroupsOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "searchUserHierarchyGroups") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "connect") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + let i: any ClientRuntime.HttpInterceptor = provider.create() + builder.interceptors.add(i) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(SearchUserHierarchyGroupsInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/json")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: SearchUserHierarchyGroupsInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(SearchUserHierarchyGroupsOutput.httpOutput(from:), SearchUserHierarchyGroupsOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "Connect") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "SearchUserHierarchyGroups") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `SearchUsers` operation on the `AmazonConnectService` service. /// /// Searches users in an Amazon Connect instance, with optional filtering. AfterContactWorkTimeLimit is returned in milliseconds. diff --git a/Sources/Services/AWSConnect/Sources/AWSConnect/Models.swift b/Sources/Services/AWSConnect/Sources/AWSConnect/Models.swift index 35eafb98ba7..6810b5ff06b 100644 --- a/Sources/Services/AWSConnect/Sources/AWSConnect/Models.swift +++ b/Sources/Services/AWSConnect/Sources/AWSConnect/Models.swift @@ -1248,6 +1248,146 @@ extension ConnectClientTypes { } +extension ConnectClientTypes { + + public enum StringComparisonType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case contains + case exact + case startsWith + case sdkUnknown(Swift.String) + + public static var allCases: [StringComparisonType] { + return [ + .contains, + .exact, + .startsWith + ] + } + + 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 .contains: return "CONTAINS" + case .exact: return "EXACT" + case .startsWith: return "STARTS_WITH" + case let .sdkUnknown(s): return s + } + } + } +} + +extension ConnectClientTypes { + /// A leaf node condition which can be used to specify a string condition. + public struct StringCondition { + /// The type of comparison to be made when evaluating the string condition. + public var comparisonType: ConnectClientTypes.StringComparisonType? + /// The name of the field in the string condition. + public var fieldName: Swift.String? + /// The value of the string. + public var value: Swift.String? + + public init( + comparisonType: ConnectClientTypes.StringComparisonType? = nil, + fieldName: Swift.String? = nil, + value: Swift.String? = nil + ) + { + self.comparisonType = comparisonType + self.fieldName = fieldName + self.value = value + } + } + +} + +extension ConnectClientTypes { + /// A leaf node condition which can be used to specify a tag condition, for example, HAVE BPO = 123. + public struct TagCondition { + /// The tag key in the tag condition. + public var tagKey: Swift.String? + /// The tag value in the tag condition. + public var tagValue: Swift.String? + + public init( + tagKey: Swift.String? = nil, + tagValue: Swift.String? = nil + ) + { + self.tagKey = tagKey + self.tagValue = tagValue + } + } + +} + +extension ConnectClientTypes { + /// A list of conditions which would be applied together with an AND condition. + public struct CommonAttributeAndCondition { + /// A leaf node condition which can be used to specify a tag condition. + public var tagConditions: [ConnectClientTypes.TagCondition]? + + public init( + tagConditions: [ConnectClientTypes.TagCondition]? = nil + ) + { + self.tagConditions = tagConditions + } + } + +} + +extension ConnectClientTypes { + /// An object that can be used to specify Tag conditions inside the SearchFilter. This accepts an OR or AND (List of List) input where: + /// + /// * The top level list specifies conditions that need to be applied with OR operator. + /// + /// * The inner list specifies conditions that need to be applied with AND operator. + public struct ControlPlaneAttributeFilter { + /// A list of conditions which would be applied together with an AND condition. + public var andCondition: ConnectClientTypes.CommonAttributeAndCondition? + /// A list of conditions which would be applied together with an OR condition. + public var orConditions: [ConnectClientTypes.CommonAttributeAndCondition]? + /// A leaf node condition which can be used to specify a tag condition, for example, HAVE BPO = 123. + public var tagCondition: ConnectClientTypes.TagCondition? + + public init( + andCondition: ConnectClientTypes.CommonAttributeAndCondition? = nil, + orConditions: [ConnectClientTypes.CommonAttributeAndCondition]? = nil, + tagCondition: ConnectClientTypes.TagCondition? = nil + ) + { + self.andCondition = andCondition + self.orConditions = orConditions + self.tagCondition = tagCondition + } + } + +} + +extension ConnectClientTypes { + /// Filters to be applied to search results. + public struct AgentStatusSearchFilter { + /// An object that can be used to specify Tag conditions inside the SearchFilter. This accepts an OR of AND (List of List) input where: + /// + /// * The top level list specifies conditions that need to be applied with OR operator. + /// + /// * The inner list specifies conditions that need to be applied with AND operator. + public var attributeFilter: ConnectClientTypes.ControlPlaneAttributeFilter? + + public init( + attributeFilter: ConnectClientTypes.ControlPlaneAttributeFilter? = nil + ) + { + self.attributeFilter = attributeFilter + } + } + +} + extension ConnectClientTypes { /// Summary information for an agent status. public struct AgentStatusSummary { @@ -12464,7 +12604,7 @@ extension ConnectClientTypes { extension ConnectClientTypes { /// Contains information about the threshold for service level metrics. public struct ThresholdV2 { - /// The type of comparison. Only "less than" (LT) comparisons are supported. + /// The type of comparison. Only "less than" (LT) and "greater than" (GT) comparisons are supported. public var comparison: Swift.String? /// The threshold value to compare. public var thresholdValue: Swift.Double? @@ -12513,6 +12653,8 @@ public struct GetMetricDataV2Input { /// /// * Agents /// + /// * Campaigns + /// /// * Channels /// /// * Feature @@ -12526,9 +12668,9 @@ public struct GetMetricDataV2Input { /// * User hierarchy groups /// /// - /// At least one filter must be passed from queues, routing profiles, agents, or user hierarchy groups. To filter by phone number, see [Create a historical metrics report](https://docs.aws.amazon.com/connect/latest/adminguide/create-historical-metrics-report.html) in the Amazon Connect Administrator Guide. Note the following limits: + /// At least one filter must be passed from queues, routing profiles, agents, or user hierarchy groups. For metrics for outbound campaigns analytics, you can also use campaigns to satisfy at least one filter requirement. To filter by phone number, see [Create a historical metrics report](https://docs.aws.amazon.com/connect/latest/adminguide/create-historical-metrics-report.html) in the Amazon Connect Administrator Guide. Note the following limits: /// - /// * Filter keys: A maximum of 5 filter keys are supported in a single request. Valid filter keys: AGENT | AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE | CASE_TEMPLATE_ARN | CASE_STATUS | CHANNEL | contact/segmentAttributes/connect:Subtype | FEATURE | FLOW_TYPE | FLOWS_NEXT_RESOURCE_ID | FLOWS_NEXT_RESOURCE_QUEUE_ID | FLOWS_OUTCOME_TYPE | FLOWS_RESOURCE_ID | INITIATION_METHOD | RESOURCE_PUBLISHED_TIMESTAMP | ROUTING_PROFILE | ROUTING_STEP_EXPRESSION | QUEUE | Q_CONNECT_ENABLED | + /// * Filter keys: A maximum of 5 filter keys are supported in a single request. Valid filter keys: AGENT | AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE | ANSWERING_MACHINE_DETECTION_STATUS | CAMPAIGN | CASE_TEMPLATE_ARN | CASE_STATUS | CHANNEL | contact/segmentAttributes/connect:Subtype | DISCONNECT_REASON | FEATURE | FLOW_TYPE | FLOWS_NEXT_RESOURCE_ID | FLOWS_NEXT_RESOURCE_QUEUE_ID | FLOWS_OUTCOME_TYPE | FLOWS_RESOURCE_ID | INITIATION_METHOD | RESOURCE_PUBLISHED_TIMESTAMP | ROUTING_PROFILE | ROUTING_STEP_EXPRESSION | QUEUE | Q_CONNECT_ENABLED | /// /// * Filter values: A maximum of 100 filter values are supported in a single request. VOICE, CHAT, and TASK are valid filterValue for the CHANNEL filter key. They do not count towards limitation of 100 filter values. For example, a GetMetricDataV2 request can filter by 50 queues, 35 agents, and 15 routing profiles for a total of 100 filter values, along with 3 channel filters. contact_lens_conversational_analytics is a valid filterValue for the FEATURE filter key. It is available only to contacts analyzed by Contact Lens conversational analytics. connect:Chat, connect:SMS, connect:Telephony, and connect:WebRTC are valid filterValue examples (not exhaustive) for the contact/segmentAttributes/connect:Subtype filter key. ROUTING_STEP_EXPRESSION is a valid filter key with a filter value up to 3000 length. This filter is case and order sensitive. JSON string fields must be sorted in ascending order and JSON array order should be kept as is. Q_CONNECT_ENABLED. TRUE and FALSE are the only valid filterValues for the Q_CONNECT_ENABLED filter key. /// @@ -12537,10 +12679,10 @@ public struct GetMetricDataV2Input { /// * FALSE includes all contacts that did not have Amazon Q in Connect enabled as part of the flow /// /// - /// This filter is available only for contact record-driven metrics. + /// This filter is available only for contact record-driven metrics. [Campaign](https://docs.aws.amazon.com/connect/latest/APIReference/API_connect-outbound-campaigns_Campaign.html) ARNs are valid filterValues for the CAMPAIGN filter key. /// This member is required. public var filters: [ConnectClientTypes.FilterV2]? - /// The grouping applied to the metrics that are returned. For example, when results are grouped by queue, the metrics returned are grouped by queue. The values that are returned apply to the metrics for each queue. They are not aggregated for all queues. If no grouping is specified, a summary of all metrics is returned. Valid grouping keys: AGENT | AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE | CASE_TEMPLATE_ARN | CASE_STATUS | CHANNEL | contact/segmentAttributes/connect:Subtype | FLOWS_RESOURCE_ID | FLOWS_MODULE_RESOURCE_ID | FLOW_TYPE | FLOWS_OUTCOME_TYPE | INITIATION_METHOD | Q_CONNECT_ENABLED | QUEUE | RESOURCE_PUBLISHED_TIMESTAMP | ROUTING_PROFILE | ROUTING_STEP_EXPRESSION + /// The grouping applied to the metrics that are returned. For example, when results are grouped by queue, the metrics returned are grouped by queue. The values that are returned apply to the metrics for each queue. They are not aggregated for all queues. If no grouping is specified, a summary of all metrics is returned. Valid grouping keys: AGENT | AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE | ANSWERING_MACHINE_DETECTION_STATUS | CAMPAIGN | CASE_TEMPLATE_ARN | CASE_STATUS | CHANNEL | contact/segmentAttributes/connect:Subtype | DISCONNECT_REASON | FLOWS_RESOURCE_ID | FLOWS_MODULE_RESOURCE_ID | FLOW_TYPE | FLOWS_OUTCOME_TYPE | INITIATION_METHOD | Q_CONNECT_ENABLED | QUEUE | RESOURCE_PUBLISHED_TIMESTAMP | ROUTING_PROFILE | ROUTING_STEP_EXPRESSION public var groupings: [Swift.String]? /// The interval period and timezone to apply to returned metrics. /// @@ -12565,7 +12707,7 @@ public struct GetMetricDataV2Input { 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 Guide. ABANDONMENT_RATE Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Abandonment rate](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#abandonment-rate-historical) 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 UI name: [Adherent time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#adherent-time-historical) AGENT_ANSWER_RATE Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy UI name: [Agent answer rate](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#agent-answer-rate-historical) AGENT_NON_ADHERENT_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy UI name: [Non-adherent time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#non-adherent-time) AGENT_NON_RESPONSE Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy UI name: [Agent non-response](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#agent-non-response) 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. UI name: [Agent non-response without customer abandons](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#agent-nonresponse-no-abandon-historical) AGENT_OCCUPANCY Unit: Percentage Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy UI name: [Occupancy](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#occupancy-historical) 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 UI name: [Adherence](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#adherence-historical) 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 UI name: [Scheduled time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#scheduled-time-historical) AVG_ABANDON_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Average queue abandon time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-queue-abandon-time-historical) AVG_ACTIVE_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [Average active time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-active-time-historical) 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, Q in Connect UI name: [Average after contact work time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-acw-time-historical) 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 UI name: [Average agent API connecting time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#htm-avg-agent-api-connecting-time) 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, Q in Connect UI name: [Average agent pause time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-agent-pause-time-historical) AVG_CASE_RELATED_CONTACTS Unit: Count Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Average contacts per case](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-contacts-case-historical) AVG_CASE_RESOLUTION_TIME Unit: Seconds Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Average case resolution time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-case-resolution-time-historical) AVG_CONTACT_DURATION Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Average contact duration](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-contact-duration-historical) 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, Q in Connect UI name: [Average conversation duration](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-conversation-duration-historical) AVG_FLOW_TIME Unit: Seconds Valid groupings and filters: Channel, contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows resource ID, Initiation method, Resource published timestamp UI name: [Average flow time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-flow-time-historical) 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, Q in Connect UI name: [Average agent greeting time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-greeting-time-agent-historical) AVG_HANDLE_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, RoutingStepExpression UI name: [Average handle time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-handle-time-historical) 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, Q in Connect UI name: [Average customer hold time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-customer-hold-time-historical) 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, Q in Connect UI name: [Average customer hold time all contacts](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#avg-customer-hold-time-all-contacts-historical) AVG_HOLDS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Average holds](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-holds-historical) 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, Q in Connect UI name: [Average agent interaction and customer hold time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-agent-interaction-customer-hold-time-historical) AVG_INTERACTION_TIME Unit: Seconds Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Average agent interaction time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-agent-interaction-time-historical) 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, Q in Connect UI name: [Average agent interruptions](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-interruptions-agent-historical) 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, Q in Connect UI name: [Average agent interruption time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-interruptions-time-agent-historical) 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, Q in Connect UI name: [Average non-talk time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html##average-non-talk-time-historical) AVG_QUEUE_ANSWER_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Average queue answer time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-queue-answer-time-historical) 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, Q in Connect UI name: [Average resolution time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-resolution-time-historical) 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, Q in Connect UI name: [Average talk time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-talk-time-historical) 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, Q in Connect UI name: [Average agent talk time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-talk-time-agent-historical) 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, Q in Connect UI name: [Average customer talk time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-talk-time-customer-historical) CASES_CREATED Unit: Count Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Cases created](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html##cases-created-historical) CONTACTS_CREATED Unit: Count Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Contacts created](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-created-historical) 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, RoutingStepExpression, Q in Connect UI name: [API contacts handled](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#api-contacts-handled-historical) Feature is a valid filter but not a valid grouping. CONTACTS_HANDLED_BY_CONNECTED_TO_AGENT Unit: Count Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Contacts handled (connected to agent timestamp)](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-handled-by-connected-to-agent-historical) CONTACTS_HOLD_ABANDONS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Contacts hold disconnect](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-handled-by-connected-to-agent-historical) CONTACTS_ON_HOLD_AGENT_DISCONNECT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [Contacts hold agent disconnect](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-hold-agent-disconnect-historical) CONTACTS_ON_HOLD_CUSTOMER_DISCONNECT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [Contacts hold customer disconnect](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-hold-customer-disconnect-historical) CONTACTS_PUT_ON_HOLD Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [Contacts put on hold](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-hold-customer-disconnect-historical) CONTACTS_TRANSFERRED_OUT_EXTERNAL Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [Contacts transferred out external](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-transferred-out-external-historical) CONTACTS_TRANSFERRED_OUT_INTERNAL Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [Contacts transferred out internal](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-transferred-out-internal-historical) CONTACTS_QUEUED Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Contacts queued](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-queued-historical) CONTACTS_QUEUED_BY_ENQUEUE Unit: Count Valid groupings and filters: Queue, Channel, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype UI name: [Contacts queued (enqueue timestamp)](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-queued-by-enqueue-historical) CONTACTS_REMOVED_FROM_QUEUE_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Q in Connect Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). UI name: This metric is not available in Amazon Connect admin website. CONTACTS_RESOLVED_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype, Q in Connect Threshold: For ThresholdValue enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). UI name: [Contacts resolved in X](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-resolved-historical) CONTACTS_TRANSFERRED_OUT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Contacts transferred out](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-transferred-out-historical) 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, Q in Connect UI name: [Contacts transferred out by agent](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-transferred-out-by-agent-historical) CONTACTS_TRANSFERRED_OUT_FROM_QUEUE Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Contacts transferred out queue](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-transferred-out-by-agent-historical) CURRENT_CASES Unit: Count Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Current cases](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#current-cases-historical) FLOWS_OUTCOME Unit: Count Valid groupings and filters: Channel, contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows resource ID, Initiation method, Resource published timestamp UI name: [Flows outcome](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#flows-outcome-historical) FLOWS_STARTED Unit: Count Valid groupings and filters: Channel, contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, Flows resource ID, Initiation method, Resource published timestamp UI name: [Flows started](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#flows-started-historical) MAX_FLOW_TIME Unit: Seconds Valid groupings and filters: Channel, contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows resource ID, Initiation method, Resource published timestamp UI name: [Maximum flow time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#maximum-flow-time-historical) MAX_QUEUED_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Maximum queued time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#maximum-queued-time-historical) MIN_FLOW_TIME Unit: Seconds Valid groupings and filters: Channel, contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows resource ID, Initiation method, Resource published timestamp UI name: [Minimum flow time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#minimum-flow-time-historical) PERCENT_CASES_FIRST_CONTACT_RESOLVED Unit: Percent Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Cases resolved on first contact](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#cases-resolved-first-contact-historical) PERCENT_CONTACTS_STEP_EXPIRED Unit: Percent Valid groupings and filters: Queue, RoutingStepExpression UI name: This metric is available in Real-time Metrics UI but not on the Historical Metrics UI. PERCENT_CONTACTS_STEP_JOINED Unit: Percent Valid groupings and filters: Queue, RoutingStepExpression UI name: This metric is available in Real-time Metrics UI but not on the Historical Metrics UI. PERCENT_FLOWS_OUTCOME Unit: Percent Valid metric filter key: FLOWS_OUTCOME_TYPE Valid groupings and filters: Channel, contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows resource ID, Initiation method, Resource published timestamp UI name: [Flows outcome percentage](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#flows-outcome-percentage-historical). The FLOWS_OUTCOME_TYPE is not a valid grouping. 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, Q in Connect UI name: [Non-talk time percent](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#ntt-historical) 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, Q in Connect UI name: [Talk time percent](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#tt-historical) 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, Q in Connect UI name: [Agent talk time percent](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#ttagent-historical) 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, Q in Connect UI name: [Customer talk time percent](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#ttcustomer-historical) REOPENED_CASE_ACTIONS Unit: Count Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Cases reopened](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#cases-reopened-historical) RESOLVED_CASE_ACTIONS Unit: Count Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Cases resolved](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#cases-resolved-historical) SERVICE_LEVEL You can include up to 20 SERVICE_LEVEL metrics in a request. Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Q in Connect Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). UI name: [Service level X](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#service-level-historical) STEP_CONTACTS_QUEUED Unit: Count Valid groupings and filters: Queue, RoutingStepExpression UI name: This metric is available in Real-time Metrics UI but not on the Historical Metrics UI. SUM_AFTER_CONTACT_WORK_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [After contact work time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#acw-historical) 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 UI name: [Agent API connecting time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#htm-agent-api-connecting-time) The Negate key in Metric Level Filters is not applicable for this metric. SUM_CONTACTS_ABANDONED Unit: Count Metric filter: + /// 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 Guide. ABANDONMENT_RATE Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Abandonment rate](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#abandonment-rate-historical) 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 UI name: [Adherent time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#adherent-time-historical) AGENT_ANSWER_RATE Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy UI name: [Agent answer rate](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#agent-answer-rate-historical) AGENT_NON_ADHERENT_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy UI name: [Non-adherent time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#non-adherent-time) AGENT_NON_RESPONSE Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy UI name: [Agent non-response](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#agent-non-response) 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. UI name: [Agent non-response without customer abandons](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#agent-nonresponse-no-abandon-historical) AGENT_OCCUPANCY Unit: Percentage Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy UI name: [Occupancy](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#occupancy-historical) 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 UI name: [Adherence](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#adherence-historical) 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 UI name: [Scheduled time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#scheduled-time-historical) AVG_ABANDON_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Average queue abandon time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-queue-abandon-time-historical) AVG_ACTIVE_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [Average active time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-active-time-historical) 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, Q in Connect UI name: [Average after contact work time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-acw-time-historical) 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 UI name: [Average agent API connecting time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#htm-avg-agent-api-connecting-time) 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, Q in Connect UI name: [Average agent pause time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-agent-pause-time-historical) AVG_CASE_RELATED_CONTACTS Unit: Count Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Average contacts per case](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-contacts-case-historical) AVG_CASE_RESOLUTION_TIME Unit: Seconds Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Average case resolution time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-case-resolution-time-historical) AVG_CONTACT_DURATION Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Average contact duration](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-contact-duration-historical) 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, Q in Connect UI name: [Average conversation duration](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-conversation-duration-historical) AVG_DIALS_PER_MINUTE This metric is available only for contacts analyzed by outbound campaigns analytics. Unit: Count Valid groupings and filters: Campaign, Agent, Queue, Routing Profile UI name: [Average dials per minute](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-dials-historical) AVG_FLOW_TIME Unit: Seconds Valid groupings and filters: Channel, contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows resource ID, Initiation method, Resource published timestamp UI name: [Average flow time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-flow-time-historical) 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, Q in Connect UI name: [Average agent greeting time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-greeting-time-agent-historical) AVG_HANDLE_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, RoutingStepExpression UI name: [Average handle time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-handle-time-historical) 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, Q in Connect UI name: [Average customer hold time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-customer-hold-time-historical) 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, Q in Connect UI name: [Average customer hold time all contacts](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#avg-customer-hold-time-all-contacts-historical) AVG_HOLDS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Average holds](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-holds-historical) 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, Q in Connect UI name: [Average agent interaction and customer hold time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-agent-interaction-customer-hold-time-historical) AVG_INTERACTION_TIME Unit: Seconds Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Average agent interaction time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-agent-interaction-time-historical) 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, Q in Connect UI name: [Average agent interruptions](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-interruptions-agent-historical) 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, Q in Connect UI name: [Average agent interruption time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-interruptions-time-agent-historical) 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, Q in Connect UI name: [Average non-talk time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html##average-non-talk-time-historical) AVG_QUEUE_ANSWER_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Average queue answer time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-queue-answer-time-historical) 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, Q in Connect UI name: [Average resolution time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-resolution-time-historical) 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, Q in Connect UI name: [Average talk time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-talk-time-historical) 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, Q in Connect UI name: [Average agent talk time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-talk-time-agent-historical) 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, Q in Connect UI name: [Average customer talk time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-talk-time-customer-historical) AVG_WAIT_TIME_AFTER_CUSTOMER_CONNECTION This metric is available only for contacts analyzed by outbound campaigns analytics. Unit: Seconds Valid groupings and filters: Campaign UI name: [Average wait time after customer connection](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#average-wait-time-historical) CAMPAIGN_CONTACTS_ABANDONED_AFTER_X This metric is available only for contacts analyzed by outbound campaigns analytics. Unit: Count Valid groupings and filters: Campaign, Agent Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter GT (for Greater than). UI name: [Campaign contacts abandoned after X](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#campaign-contacts-abandoned-historical) CAMPAIGN_CONTACTS_ABANDONED_AFTER_X_RATE This metric is available only for contacts analyzed by outbound campaigns analytics. Unit: Percent Valid groupings and filters: Campaign, Agent Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter GT (for Greater than). UI name: [Campaign contacts abandoned after X rate](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#campaign-contacts-abandoned-rate-historical) CASES_CREATED Unit: Count Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Cases created](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#cases-created-historical) CONTACTS_CREATED Unit: Count Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Contacts created](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-created-historical) 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, RoutingStepExpression, Q in Connect UI name: [API contacts handled](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#api-contacts-handled-historical) Feature is a valid filter but not a valid grouping. CONTACTS_HANDLED_BY_CONNECTED_TO_AGENT Unit: Count Valid metric filter key: INITIATION_METHOD Valid groupings and filters: Queue, Channel, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Contacts handled (connected to agent timestamp)](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-handled-by-connected-to-agent-historical) CONTACTS_HOLD_ABANDONS Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Contacts hold disconnect](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-handled-by-connected-to-agent-historical) CONTACTS_ON_HOLD_AGENT_DISCONNECT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [Contacts hold agent disconnect](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-hold-agent-disconnect-historical) CONTACTS_ON_HOLD_CUSTOMER_DISCONNECT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [Contacts hold customer disconnect](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-hold-customer-disconnect-historical) CONTACTS_PUT_ON_HOLD Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [Contacts put on hold](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-hold-customer-disconnect-historical) CONTACTS_TRANSFERRED_OUT_EXTERNAL Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [Contacts transferred out external](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-transferred-out-external-historical) CONTACTS_TRANSFERRED_OUT_INTERNAL Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [Contacts transferred out internal](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-transferred-out-internal-historical) CONTACTS_QUEUED Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Contacts queued](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-queued-historical) CONTACTS_QUEUED_BY_ENQUEUE Unit: Count Valid groupings and filters: Queue, Channel, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype UI name: [Contacts queued (enqueue timestamp)](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-queued-by-enqueue-historical) CONTACTS_REMOVED_FROM_QUEUE_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Q in Connect Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). UI name: [Contacts removed from queue in X seconds](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-removed-historical) CONTACTS_RESOLVED_IN_X Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype, Q in Connect Threshold: For ThresholdValue enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). UI name: [Contacts resolved in X](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-resolved-historical) CONTACTS_TRANSFERRED_OUT Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Contacts transferred out](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-transferred-out-historical) 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, Q in Connect UI name: [Contacts transferred out by agent](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-transferred-out-by-agent-historical) CONTACTS_TRANSFERRED_OUT_FROM_QUEUE Unit: Count Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Contacts transferred out queue](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#contacts-transferred-out-by-agent-historical) CURRENT_CASES Unit: Count Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Current cases](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#current-cases-historical) DELIVERY_ATTEMPTS This metric is available only for contacts analyzed by outbound campaigns analytics. Unit: Count Valid metric filter key: ANSWERING_MACHINE_DETECTION_STATUS, DISCONNECT_REASON Valid groupings and filters: Campaign, Agent, Queue, Routing Profile, Answering Machine Detection Status, Disconnect Reason UI name: [Delivery attempts](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#delivery-attempts-historical) DELIVERY_ATTEMPT_DISPOSITION_RATE This metric is available only for contacts analyzed by outbound campaigns analytics, and with the answering machine detection enabled. Unit: Percent Valid metric filter key: ANSWERING_MACHINE_DETECTION_STATUS, DISCONNECT_REASON Valid groupings and filters: Campaign, Agent, Answering Machine Detection Status, Disconnect Reason Answering Machine Detection Status and Disconnect Reason are valid filters but not valid groupings. UI name: [Delivery attempt disposition rate](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#delivery-attempt-disposition-rate-historical) FLOWS_OUTCOME Unit: Count Valid groupings and filters: Channel, contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows resource ID, Initiation method, Resource published timestamp UI name: [Flows outcome](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#flows-outcome-historical) FLOWS_STARTED Unit: Count Valid groupings and filters: Channel, contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, Flows resource ID, Initiation method, Resource published timestamp UI name: [Flows started](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#flows-started-historical) HUMAN_ANSWERED_CALLS This metric is available only for contacts analyzed by outbound campaigns analytics, and with the answering machine detection enabled. Unit: Count Valid groupings and filters: Campaign, Agent UI name: [Human answered](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#human-answered-historical) MAX_FLOW_TIME Unit: Seconds Valid groupings and filters: Channel, contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows resource ID, Initiation method, Resource published timestamp UI name: [Maximum flow time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#maximum-flow-time-historical) MAX_QUEUED_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype, Q in Connect UI name: [Maximum queued time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#maximum-queued-time-historical) MIN_FLOW_TIME Unit: Seconds Valid groupings and filters: Channel, contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows resource ID, Initiation method, Resource published timestamp UI name: [Minimum flow time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#minimum-flow-time-historical) PERCENT_CASES_FIRST_CONTACT_RESOLVED Unit: Percent Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Cases resolved on first contact](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#cases-resolved-first-contact-historical) PERCENT_CONTACTS_STEP_EXPIRED Unit: Percent Valid groupings and filters: Queue, RoutingStepExpression UI name: This metric is available in Real-time Metrics UI but not on the Historical Metrics UI. PERCENT_CONTACTS_STEP_JOINED Unit: Percent Valid groupings and filters: Queue, RoutingStepExpression UI name: This metric is available in Real-time Metrics UI but not on the Historical Metrics UI. PERCENT_FLOWS_OUTCOME Unit: Percent Valid metric filter key: FLOWS_OUTCOME_TYPE Valid groupings and filters: Channel, contact/segmentAttributes/connect:Subtype, Flow type, Flows module resource ID, Flows next resource ID, Flows next resource queue ID, Flows outcome type, Flows resource ID, Initiation method, Resource published timestamp UI name: [Flows outcome percentage](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#flows-outcome-percentage-historical). The FLOWS_OUTCOME_TYPE is not a valid grouping. 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, Q in Connect UI name: [Non-talk time percent](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#ntt-historical) 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, Q in Connect UI name: [Talk time percent](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#tt-historical) 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, Q in Connect UI name: [Agent talk time percent](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#ttagent-historical) 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, Q in Connect UI name: [Customer talk time percent](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#ttcustomer-historical) REOPENED_CASE_ACTIONS Unit: Count Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Cases reopened](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#cases-reopened-historical) RESOLVED_CASE_ACTIONS Unit: Count Required filter key: CASE_TEMPLATE_ARN Valid groupings and filters: CASE_TEMPLATE_ARN, CASE_STATUS UI name: [Cases resolved](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#cases-resolved-historical) SERVICE_LEVEL You can include up to 20 SERVICE_LEVEL metrics in a request. Unit: Percent Valid groupings and filters: Queue, Channel, Routing Profile, Q in Connect Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than"). UI name: [Service level X](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#service-level-historical) STEP_CONTACTS_QUEUED Unit: Count Valid groupings and filters: Queue, RoutingStepExpression UI name: This metric is available in Real-time Metrics UI but not on the Historical Metrics UI. SUM_AFTER_CONTACT_WORK_TIME Unit: Seconds Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Q in Connect UI name: [After contact work time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#acw-historical) 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 UI name: [Agent API connecting time](https://docs.aws.amazon.com/connect/latest/adminguide/historical-metrics-definitions.html#htm-agent-api-connecting-time) The Negate key in Metric Level Filters is not applicable for this metric. SUM_CONTACTS_ABANDONED Unit: Count Metric filter: /// /// * Valid values: API| Incoming | Outbound | Transfer | Callback | Queue_Transfer| Disconnect /// @@ -15013,6 +15155,7 @@ extension ConnectClientTypes { case categories case event case issues + case postcontactsummary case transcript case sdkUnknown(Swift.String) @@ -15022,6 +15165,7 @@ extension ConnectClientTypes { .categories, .event, .issues, + .postcontactsummary, .transcript ] } @@ -15037,6 +15181,7 @@ extension ConnectClientTypes { case .categories: return "Categories" case .event: return "Event" case .issues: return "Issues" + case .postcontactsummary: return "PostContactSummary" case .transcript: return "Transcript" case let .sdkUnknown(s): return s } @@ -15413,6 +15558,108 @@ extension ConnectClientTypes { } +extension ConnectClientTypes { + + public enum RealTimeContactAnalysisPostContactSummaryFailureCode: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case failedSafetyGuidelines + case insufficientConversationContent + case internalError + case invalidAnalysisConfiguration + case quotaExceeded + case sdkUnknown(Swift.String) + + public static var allCases: [RealTimeContactAnalysisPostContactSummaryFailureCode] { + return [ + .failedSafetyGuidelines, + .insufficientConversationContent, + .internalError, + .invalidAnalysisConfiguration, + .quotaExceeded + ] + } + + 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 .failedSafetyGuidelines: return "FAILED_SAFETY_GUIDELINES" + case .insufficientConversationContent: return "INSUFFICIENT_CONVERSATION_CONTENT" + case .internalError: return "INTERNAL_ERROR" + case .invalidAnalysisConfiguration: return "INVALID_ANALYSIS_CONFIGURATION" + case .quotaExceeded: return "QUOTA_EXCEEDED" + case let .sdkUnknown(s): return s + } + } + } +} + +extension ConnectClientTypes { + + public enum RealTimeContactAnalysisPostContactSummaryStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case completed + case failed + case sdkUnknown(Swift.String) + + public static var allCases: [RealTimeContactAnalysisPostContactSummaryStatus] { + return [ + .completed, + .failed + ] + } + + 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 let .sdkUnknown(s): return s + } + } + } +} + +extension ConnectClientTypes { + /// Information about the post-contact summary for a real-time contact segment. + public struct RealTimeContactAnalysisSegmentPostContactSummary { + /// The content of the summary. + public var content: Swift.String? + /// If the summary failed to be generated, one of the following failure codes occurs: + /// + /// * QUOTA_EXCEEDED: The number of concurrent analytics jobs reached your service quota. + /// + /// * INSUFFICIENT_CONVERSATION_CONTENT: The conversation needs to have at least one turn from both the participants in order to generate the summary. + /// + /// * FAILED_SAFETY_GUIDELINES: The generated summary cannot be provided because it failed to meet system safety guidelines. + /// + /// * INVALID_ANALYSIS_CONFIGURATION: This code occurs when, for example, you're using a [language](https://docs.aws.amazon.com/connect/latest/adminguide/supported-languages.html#supported-languages-contact-lens) that isn't supported by generative AI-powered post-contact summaries. + /// + /// * INTERNAL_ERROR: Internal system error. + public var failureCode: ConnectClientTypes.RealTimeContactAnalysisPostContactSummaryFailureCode? + /// Whether the summary was successfully COMPLETED or FAILED to be generated. + /// This member is required. + public var status: ConnectClientTypes.RealTimeContactAnalysisPostContactSummaryStatus? + + public init( + content: Swift.String? = nil, + failureCode: ConnectClientTypes.RealTimeContactAnalysisPostContactSummaryFailureCode? = nil, + status: ConnectClientTypes.RealTimeContactAnalysisPostContactSummaryStatus? = nil + ) + { + self.content = content + self.failureCode = failureCode + self.status = status + } + } + +} + extension ConnectClientTypes { /// Object describing redaction applied to the segment. public struct RealTimeContactAnalysisTranscriptItemRedaction { @@ -15527,6 +15774,8 @@ extension ConnectClientTypes { case event(ConnectClientTypes.RealTimeContactAnalysisSegmentEvent) /// The analyzed attachments. case attachments(ConnectClientTypes.RealTimeContactAnalysisSegmentAttachments) + /// Information about the post-contact summary. + case postcontactsummary(ConnectClientTypes.RealTimeContactAnalysisSegmentPostContactSummary) case sdkUnknown(Swift.String) } @@ -16965,6 +17214,26 @@ public struct ResumeContactRecordingOutput { public init() { } } +public struct SearchAgentStatusesOutput { + /// The search criteria to be used to return agent statuses. + public var agentStatuses: [ConnectClientTypes.AgentStatus]? + /// The total number of agent statuses which matched your search query. + public var approximateTotalCount: Swift.Int? + /// If there are additional results, this is the token for the next set of results. + public var nextToken: Swift.String? + + public init( + agentStatuses: [ConnectClientTypes.AgentStatus]? = nil, + approximateTotalCount: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.agentStatuses = agentStatuses + self.approximateTotalCount = approximateTotalCount + self.nextToken = nextToken + } +} + public struct SearchAvailablePhoneNumbersInput { /// The identifier of the Amazon Connect instance that phone numbers are claimed to. You can [find the instance ID](https://docs.aws.amazon.com/connect/latest/adminguide/find-instance-arn.html) in the Amazon Resource Name (ARN) of the instance. You must enter InstanceId or TargetArn. public var instanceId: Swift.String? @@ -17043,82 +17312,6 @@ public struct SearchAvailablePhoneNumbersOutput { } } -extension ConnectClientTypes { - - public enum StringComparisonType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { - case contains - case exact - case startsWith - case sdkUnknown(Swift.String) - - public static var allCases: [StringComparisonType] { - return [ - .contains, - .exact, - .startsWith - ] - } - - 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 .contains: return "CONTAINS" - case .exact: return "EXACT" - case .startsWith: return "STARTS_WITH" - case let .sdkUnknown(s): return s - } - } - } -} - -extension ConnectClientTypes { - /// A leaf node condition which can be used to specify a string condition. The currently supported values for FieldName are name and description. - public struct StringCondition { - /// The type of comparison to be made when evaluating the string condition. - public var comparisonType: ConnectClientTypes.StringComparisonType? - /// The name of the field in the string condition. - public var fieldName: Swift.String? - /// The value of the string. - public var value: Swift.String? - - public init( - comparisonType: ConnectClientTypes.StringComparisonType? = nil, - fieldName: Swift.String? = nil, - value: Swift.String? = nil - ) - { - self.comparisonType = comparisonType - self.fieldName = fieldName - self.value = value - } - } - -} - -extension ConnectClientTypes { - /// A leaf node condition which can be used to specify a tag condition, for example, HAVE BPO = 123. - public struct TagCondition { - /// The tag key in the tag condition. - public var tagKey: Swift.String? - /// The tag value in the tag condition. - public var tagValue: Swift.String? - - public init( - tagKey: Swift.String? = nil, - tagValue: Swift.String? = nil - ) - { - self.tagKey = tagKey - self.tagValue = tagValue - } - } - -} - extension ConnectClientTypes { /// An object that can be used to specify Tag conditions inside the SearchFilter. This accepts an OR of AND (List of List) input where: /// @@ -17971,7 +18164,23 @@ public struct SearchResourceTagsInput { public var maxResults: Swift.Int? /// The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. public var nextToken: Swift.String? - /// The list of resource types to be used to search tags from. If not provided or if any empty list is provided, this API will search from all supported resource types. + /// The list of resource types to be used to search tags from. If not provided or if any empty list is provided, this API will search from all supported resource types. Supported resource types + /// + /// * AGENT + /// + /// * ROUTING_PROFILE + /// + /// * STANDARD_QUEUE + /// + /// * SECURITY_PROFILE + /// + /// * OPERATING_HOURS + /// + /// * PROMPT + /// + /// * CONTACT_FLOW + /// + /// * FLOW_MODULE public var resourceTypes: [Swift.String]? /// The search criteria to be used to return tags. public var searchCriteria: ConnectClientTypes.ResourceTagsSearchCriteria? @@ -18144,6 +18353,46 @@ public struct SearchSecurityProfilesOutput { } } +extension ConnectClientTypes { + /// Filters to be applied to search results. + public struct UserHierarchyGroupSearchFilter { + /// An object that can be used to specify Tag conditions inside the SearchFilter. This accepts an OR or AND (List of List) input where: + /// + /// * The top level list specifies conditions that need to be applied with OR operator. + /// + /// * The inner list specifies conditions that need to be applied with AND operator. + public var attributeFilter: ConnectClientTypes.ControlPlaneAttributeFilter? + + public init( + attributeFilter: ConnectClientTypes.ControlPlaneAttributeFilter? = nil + ) + { + self.attributeFilter = attributeFilter + } + } + +} + +public struct SearchUserHierarchyGroupsOutput { + /// The total number of userHierarchyGroups which matched your search query. + public var approximateTotalCount: Swift.Int? + /// If there are additional results, this is the token for the next set of results. + public var nextToken: Swift.String? + /// Information about the userHierarchyGroups. + public var userHierarchyGroups: [ConnectClientTypes.HierarchyGroup]? + + public init( + approximateTotalCount: Swift.Int? = nil, + nextToken: Swift.String? = nil, + userHierarchyGroups: [ConnectClientTypes.HierarchyGroup]? = nil + ) + { + self.approximateTotalCount = approximateTotalCount + self.nextToken = nextToken + self.userHierarchyGroups = userHierarchyGroups + } +} + extension ConnectClientTypes { public enum HierarchyGroupMatchType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { @@ -18193,6 +18442,144 @@ extension ConnectClientTypes { } +extension ConnectClientTypes { + + public enum NumberComparisonType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case equal + case greater + case greaterOrEqual + case lesser + case lesserOrEqual + case notEqual + case range + case sdkUnknown(Swift.String) + + public static var allCases: [NumberComparisonType] { + return [ + .equal, + .greater, + .greaterOrEqual, + .lesser, + .lesserOrEqual, + .notEqual, + .range + ] + } + + 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 .equal: return "EQUAL" + case .greater: return "GREATER" + case .greaterOrEqual: return "GREATER_OR_EQUAL" + case .lesser: return "LESSER" + case .lesserOrEqual: return "LESSER_OR_EQUAL" + case .notEqual: return "NOT_EQUAL" + case .range: return "RANGE" + case let .sdkUnknown(s): return s + } + } + } +} + +extension ConnectClientTypes { + /// A leaf node condition which can be used to specify a numeric condition. The currently supported value for FieldName is limit. + public struct NumberCondition { + /// The type of comparison to be made when evaluating the number condition. + public var comparisonType: ConnectClientTypes.NumberComparisonType? + /// The name of the field in the number condition. + public var fieldName: Swift.String? + /// The maxValue to be used while evaluating the number condition. + public var maxValue: Swift.Int? + /// The minValue to be used while evaluating the number condition. + public var minValue: Swift.Int? + + public init( + comparisonType: ConnectClientTypes.NumberComparisonType? = nil, + fieldName: Swift.String? = nil, + maxValue: Swift.Int? = nil, + minValue: Swift.Int? = nil + ) + { + self.comparisonType = comparisonType + self.fieldName = fieldName + self.maxValue = maxValue + self.minValue = minValue + } + } + +} + +extension ConnectClientTypes { + /// A leaf node condition which can be used to specify a ProficiencyName, ProficiencyValue and ProficiencyLimit. + public struct Condition { + /// A leaf node condition which can be used to specify a numeric condition. + public var numberCondition: ConnectClientTypes.NumberCondition? + /// A leaf node condition which can be used to specify a string condition. The currently supported values for FieldName are name and
 value. + public var stringCondition: ConnectClientTypes.StringCondition? + + public init( + numberCondition: ConnectClientTypes.NumberCondition? = nil, + stringCondition: ConnectClientTypes.StringCondition? = nil + ) + { + self.numberCondition = numberCondition + self.stringCondition = stringCondition + } + } + +} + +extension ConnectClientTypes { + + public enum TargetListType: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case proficiencies + case sdkUnknown(Swift.String) + + public static var allCases: [TargetListType] { + return [ + .proficiencies + ] + } + + 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 .proficiencies: return "PROFICIENCIES" + case let .sdkUnknown(s): return s + } + } + } +} + +extension ConnectClientTypes { + /// A leaf node condition which can be used to specify a List condition to search users with attributes included in Lists like Proficiencies. + public struct ListCondition { + /// A list of Condition objects which would be applied together with an AND condition. + public var conditions: [ConnectClientTypes.Condition]? + /// The type of target list that will be used to filter the users. + public var targetListType: ConnectClientTypes.TargetListType? + + public init( + conditions: [ConnectClientTypes.Condition]? = nil, + targetListType: ConnectClientTypes.TargetListType? = nil + ) + { + self.conditions = conditions + self.targetListType = targetListType + } + } + +} + extension ConnectClientTypes { /// A list of conditions which would be applied together with an AND condition. public struct AttributeAndCondition { @@ -21587,6 +21974,30 @@ extension ConnectClientTypes { } +extension ConnectClientTypes { + /// The search criteria to be used to return agent statuses. + public struct AgentStatusSearchCriteria { + /// A leaf node condition which can be used to specify a string condition. The currently supported values for FieldName are name,

 description, state, type, displayOrder,
 and resourceID. + public var andConditions: [ConnectClientTypes.AgentStatusSearchCriteria]? + /// A list of conditions which would be applied together with an OR condition. + public var orConditions: [ConnectClientTypes.AgentStatusSearchCriteria]? + /// A leaf node condition which can be used to specify a string condition. The currently supported values for FieldName are name,

 description, state, type, displayOrder,
 and resourceID. + public var stringCondition: ConnectClientTypes.StringCondition? + + public init( + andConditions: [ConnectClientTypes.AgentStatusSearchCriteria]? = nil, + orConditions: [ConnectClientTypes.AgentStatusSearchCriteria]? = nil, + stringCondition: ConnectClientTypes.StringCondition? = nil + ) + { + self.andConditions = andConditions + self.orConditions = orConditions + self.stringCondition = stringCondition + } + } + +} + extension ConnectClientTypes { /// The search criteria to be used to return flow modules. public struct ContactFlowModuleSearchCriteria { @@ -21594,7 +22005,7 @@ extension ConnectClientTypes { public var andConditions: [ConnectClientTypes.ContactFlowModuleSearchCriteria]? /// A list of conditions which would be applied together with an OR condition. public var orConditions: [ConnectClientTypes.ContactFlowModuleSearchCriteria]? - /// A leaf node condition which can be used to specify a string condition. The currently supported values for FieldName are name and description. + /// A leaf node condition which can be used to specify a string condition. public var stringCondition: ConnectClientTypes.StringCondition? public init( @@ -21622,7 +22033,7 @@ extension ConnectClientTypes { public var stateCondition: ConnectClientTypes.ContactFlowState? /// The status of the flow. public var statusCondition: ConnectClientTypes.ContactFlowStatus? - /// A leaf node condition which can be used to specify a string condition. The currently supported values for FieldName are name and description. + /// A leaf node condition which can be used to specify a string condition. public var stringCondition: ConnectClientTypes.StringCondition? /// The type of flow. public var typeCondition: ConnectClientTypes.ContactFlowType? @@ -21826,7 +22237,7 @@ extension ConnectClientTypes { public var andConditions: [ConnectClientTypes.PredefinedAttributeSearchCriteria]? /// A list of conditions which would be applied together with an OR condition. public var orConditions: [ConnectClientTypes.PredefinedAttributeSearchCriteria]? - /// A leaf node condition which can be used to specify a string condition. The currently supported values for FieldName are name and description. + /// A leaf node condition which can be used to specify a string condition. public var stringCondition: ConnectClientTypes.StringCondition? public init( @@ -21950,7 +22361,7 @@ extension ConnectClientTypes { public var andConditions: [ConnectClientTypes.SecurityProfileSearchCriteria]? /// A list of conditions which would be applied together with an OR condition. public var orConditions: [ConnectClientTypes.SecurityProfileSearchCriteria]? - /// A leaf node condition which can be used to specify a string condition. The currently supported values for FieldName are name and description. + /// A leaf node condition which can be used to specify a string condition. public var stringCondition: ConnectClientTypes.StringCondition? public init( @@ -21967,6 +22378,30 @@ extension ConnectClientTypes { } +extension ConnectClientTypes { + /// The search criteria to be used to return userHierarchyGroup. + public struct UserHierarchyGroupSearchCriteria { + /// A list of conditions which would be applied together with an AND condition. + public var andConditions: [ConnectClientTypes.UserHierarchyGroupSearchCriteria]? + /// A list of conditions which would be applied together with an OR condition. + public var orConditions: [ConnectClientTypes.UserHierarchyGroupSearchCriteria]? + /// A leaf node condition which can be used to specify a string condition. The currently supported values for FieldName are name,

 parentId, levelId, and resourceID. + public var stringCondition: ConnectClientTypes.StringCondition? + + public init( + andConditions: [ConnectClientTypes.UserHierarchyGroupSearchCriteria]? = nil, + orConditions: [ConnectClientTypes.UserHierarchyGroupSearchCriteria]? = nil, + stringCondition: ConnectClientTypes.StringCondition? = nil + ) + { + self.andConditions = andConditions + self.orConditions = orConditions + self.stringCondition = stringCondition + } + } + +} + extension ConnectClientTypes { /// The search criteria to be used to return users. The name and description fields support "contains" queries with a minimum of 2 characters and a maximum of 25 characters. Any queries with character lengths outside of this range will throw invalid results. public struct UserSearchCriteria { @@ -21974,6 +22409,8 @@ extension ConnectClientTypes { public var andConditions: [ConnectClientTypes.UserSearchCriteria]? /// A leaf node condition which can be used to specify a hierarchy group condition. public var hierarchyGroupCondition: ConnectClientTypes.HierarchyGroupCondition? + /// A leaf node condition which can be used to specify a List condition to search users with attributes included in Lists like Proficiencies. + public var listCondition: ConnectClientTypes.ListCondition? /// A list of conditions which would be applied together with an OR condition. public var orConditions: [ConnectClientTypes.UserSearchCriteria]? /// A leaf node condition which can be used to specify a string condition. The currently supported values for FieldName are Username, FirstName, LastName, RoutingProfileId, SecurityProfileId, ResourceId. @@ -21982,12 +22419,14 @@ extension ConnectClientTypes { public init( andConditions: [ConnectClientTypes.UserSearchCriteria]? = nil, hierarchyGroupCondition: ConnectClientTypes.HierarchyGroupCondition? = nil, + listCondition: ConnectClientTypes.ListCondition? = nil, orConditions: [ConnectClientTypes.UserSearchCriteria]? = nil, stringCondition: ConnectClientTypes.StringCondition? = nil ) { self.andConditions = andConditions self.hierarchyGroupCondition = hierarchyGroupCondition + self.listCondition = listCondition self.orConditions = orConditions self.stringCondition = stringCondition } @@ -22134,6 +22573,35 @@ extension ConnectClientTypes { } +public struct SearchAgentStatusesInput { + /// 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? + /// The maximum number of results to return per page. + public var maxResults: Swift.Int? + /// The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. + public var nextToken: Swift.String? + /// The search criteria to be used to return agent statuses. + public var searchCriteria: ConnectClientTypes.AgentStatusSearchCriteria? + /// Filters to be applied to search results. + public var searchFilter: ConnectClientTypes.AgentStatusSearchFilter? + + public init( + instanceId: Swift.String? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil, + searchCriteria: ConnectClientTypes.AgentStatusSearchCriteria? = nil, + searchFilter: ConnectClientTypes.AgentStatusSearchFilter? = nil + ) + { + self.instanceId = instanceId + self.maxResults = maxResults + self.nextToken = nextToken + self.searchCriteria = searchCriteria + self.searchFilter = searchFilter + } +} + public struct SearchContactFlowModulesInput { /// The identifier of the Amazon Connect instance. You can find the instance ID in the Amazon Resource Name (ARN) of the instance. /// This member is required. @@ -22391,6 +22859,35 @@ public struct SearchSecurityProfilesInput { } } +public struct SearchUserHierarchyGroupsInput { + /// 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? + /// The maximum number of results to return per page. + public var maxResults: Swift.Int? + /// The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. + public var nextToken: Swift.String? + /// The search criteria to be used to return UserHierarchyGroups. + public var searchCriteria: ConnectClientTypes.UserHierarchyGroupSearchCriteria? + /// Filters to be applied to search results. + public var searchFilter: ConnectClientTypes.UserHierarchyGroupSearchFilter? + + public init( + instanceId: Swift.String? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil, + searchCriteria: ConnectClientTypes.UserHierarchyGroupSearchCriteria? = nil, + searchFilter: ConnectClientTypes.UserHierarchyGroupSearchFilter? = nil + ) + { + self.instanceId = instanceId + self.maxResults = maxResults + self.nextToken = nextToken + self.searchCriteria = searchCriteria + self.searchFilter = searchFilter + } +} + public struct SearchUsersInput { /// 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. InstanceID is a required field. The "Required: No" below is incorrect. /// This member is required. @@ -25501,6 +25998,13 @@ extension ResumeContactRecordingInput { } } +extension SearchAgentStatusesInput { + + static func urlPathProvider(_ value: SearchAgentStatusesInput) -> Swift.String? { + return "/search-agent-statuses" + } +} + extension SearchAvailablePhoneNumbersInput { static func urlPathProvider(_ value: SearchAvailablePhoneNumbersInput) -> Swift.String? { @@ -25585,6 +26089,13 @@ extension SearchSecurityProfilesInput { } } +extension SearchUserHierarchyGroupsInput { + + static func urlPathProvider(_ value: SearchUserHierarchyGroupsInput) -> Swift.String? { + return "/search-user-hierarchy-groups" + } +} + extension SearchUsersInput { static func urlPathProvider(_ value: SearchUsersInput) -> Swift.String? { @@ -27101,6 +27612,18 @@ extension ResumeContactRecordingInput { } } +extension SearchAgentStatusesInput { + + static func write(value: SearchAgentStatusesInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["InstanceId"].write(value.instanceId) + try writer["MaxResults"].write(value.maxResults) + try writer["NextToken"].write(value.nextToken) + try writer["SearchCriteria"].write(value.searchCriteria, with: ConnectClientTypes.AgentStatusSearchCriteria.write(value:to:)) + try writer["SearchFilter"].write(value.searchFilter, with: ConnectClientTypes.AgentStatusSearchFilter.write(value:to:)) + } +} + extension SearchAvailablePhoneNumbersInput { static func write(value: SearchAvailablePhoneNumbersInput?, to writer: SmithyJSON.Writer) throws { @@ -27247,6 +27770,18 @@ extension SearchSecurityProfilesInput { } } +extension SearchUserHierarchyGroupsInput { + + static func write(value: SearchUserHierarchyGroupsInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["InstanceId"].write(value.instanceId) + try writer["MaxResults"].write(value.maxResults) + try writer["NextToken"].write(value.nextToken) + try writer["SearchCriteria"].write(value.searchCriteria, with: ConnectClientTypes.UserHierarchyGroupSearchCriteria.write(value:to:)) + try writer["SearchFilter"].write(value.searchFilter, with: ConnectClientTypes.UserHierarchyGroupSearchFilter.write(value:to:)) + } +} + extension SearchUsersInput { static func write(value: SearchUsersInput?, to writer: SmithyJSON.Writer) throws { @@ -29857,6 +30392,20 @@ extension ResumeContactRecordingOutput { } } +extension SearchAgentStatusesOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> SearchAgentStatusesOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = SearchAgentStatusesOutput() + value.agentStatuses = try reader["AgentStatuses"].readListIfPresent(memberReadingClosure: ConnectClientTypes.AgentStatus.read(from:), memberNodeInfo: "member", isFlattened: false) + value.approximateTotalCount = try reader["ApproximateTotalCount"].readIfPresent() + value.nextToken = try reader["NextToken"].readIfPresent() + return value + } +} + extension SearchAvailablePhoneNumbersOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> SearchAvailablePhoneNumbersOutput { @@ -30023,6 +30572,20 @@ extension SearchSecurityProfilesOutput { } } +extension SearchUserHierarchyGroupsOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> SearchUserHierarchyGroupsOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = SearchUserHierarchyGroupsOutput() + value.approximateTotalCount = try reader["ApproximateTotalCount"].readIfPresent() + value.nextToken = try reader["NextToken"].readIfPresent() + value.userHierarchyGroups = try reader["UserHierarchyGroups"].readListIfPresent(memberReadingClosure: ConnectClientTypes.HierarchyGroup.read(from:), memberNodeInfo: "member", isFlattened: false) + return value + } +} + extension SearchUsersOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> SearchUsersOutput { @@ -33814,6 +34377,24 @@ enum ResumeContactRecordingOutputError { } } +enum SearchAgentStatusesOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.RestJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "InternalServiceException": return try InternalServiceException.makeError(baseError: baseError) + case "InvalidParameterException": return try InvalidParameterException.makeError(baseError: baseError) + case "InvalidRequestException": return try InvalidRequestException.makeError(baseError: baseError) + case "ResourceNotFoundException": return try ResourceNotFoundException.makeError(baseError: baseError) + case "ThrottlingException": return try ThrottlingException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum SearchAvailablePhoneNumbersOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -34030,6 +34611,24 @@ enum SearchSecurityProfilesOutputError { } } +enum SearchUserHierarchyGroupsOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let baseError = try AWSClientRuntime.RestJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "InternalServiceException": return try InternalServiceException.makeError(baseError: baseError) + case "InvalidParameterException": return try InvalidParameterException.makeError(baseError: baseError) + case "InvalidRequestException": return try InvalidRequestException.makeError(baseError: baseError) + case "ResourceNotFoundException": return try ResourceNotFoundException.makeError(baseError: baseError) + case "ThrottlingException": return try ThrottlingException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum SearchUsersOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -38517,12 +39116,26 @@ extension ConnectClientTypes.RealtimeContactAnalysisSegment { return .event(try reader["Event"].read(with: ConnectClientTypes.RealTimeContactAnalysisSegmentEvent.read(from:))) case "Attachments": return .attachments(try reader["Attachments"].read(with: ConnectClientTypes.RealTimeContactAnalysisSegmentAttachments.read(from:))) + case "PostContactSummary": + return .postcontactsummary(try reader["PostContactSummary"].read(with: ConnectClientTypes.RealTimeContactAnalysisSegmentPostContactSummary.read(from:))) default: return .sdkUnknown(name ?? "") } } } +extension ConnectClientTypes.RealTimeContactAnalysisSegmentPostContactSummary { + + static func read(from reader: SmithyJSON.Reader) throws -> ConnectClientTypes.RealTimeContactAnalysisSegmentPostContactSummary { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = ConnectClientTypes.RealTimeContactAnalysisSegmentPostContactSummary() + value.content = try reader["Content"].readIfPresent() + value.status = try reader["Status"].readIfPresent() + value.failureCode = try reader["FailureCode"].readIfPresent() + return value + } +} + extension ConnectClientTypes.RealTimeContactAnalysisSegmentAttachments { static func read(from reader: SmithyJSON.Reader) throws -> ConnectClientTypes.RealTimeContactAnalysisSegmentAttachments { @@ -39277,20 +39890,20 @@ extension ConnectClientTypes.FilterV2 { } } -extension ConnectClientTypes.ContactFlowModuleSearchFilter { +extension ConnectClientTypes.AgentStatusSearchFilter { - static func write(value: ConnectClientTypes.ContactFlowModuleSearchFilter?, to writer: SmithyJSON.Writer) throws { + static func write(value: ConnectClientTypes.AgentStatusSearchFilter?, to writer: SmithyJSON.Writer) throws { guard let value else { return } - try writer["TagFilter"].write(value.tagFilter, with: ConnectClientTypes.ControlPlaneTagFilter.write(value:to:)) + try writer["AttributeFilter"].write(value.attributeFilter, with: ConnectClientTypes.ControlPlaneAttributeFilter.write(value:to:)) } } -extension ConnectClientTypes.ControlPlaneTagFilter { +extension ConnectClientTypes.ControlPlaneAttributeFilter { - static func write(value: ConnectClientTypes.ControlPlaneTagFilter?, to writer: SmithyJSON.Writer) throws { + static func write(value: ConnectClientTypes.ControlPlaneAttributeFilter?, to writer: SmithyJSON.Writer) throws { guard let value else { return } - try writer["AndConditions"].writeList(value.andConditions, memberWritingClosure: ConnectClientTypes.TagCondition.write(value:to:), memberNodeInfo: "member", isFlattened: false) - try writer["OrConditions"].writeList(value.orConditions, memberWritingClosure: SmithyReadWrite.listWritingClosure(memberWritingClosure: ConnectClientTypes.TagCondition.write(value:to:), memberNodeInfo: "member", isFlattened: false), memberNodeInfo: "member", isFlattened: false) + try writer["AndCondition"].write(value.andCondition, with: ConnectClientTypes.CommonAttributeAndCondition.write(value:to:)) + try writer["OrConditions"].writeList(value.orConditions, memberWritingClosure: ConnectClientTypes.CommonAttributeAndCondition.write(value:to:), memberNodeInfo: "member", isFlattened: false) try writer["TagCondition"].write(value.tagCondition, with: ConnectClientTypes.TagCondition.write(value:to:)) } } @@ -39304,12 +39917,20 @@ extension ConnectClientTypes.TagCondition { } } -extension ConnectClientTypes.ContactFlowModuleSearchCriteria { +extension ConnectClientTypes.CommonAttributeAndCondition { - static func write(value: ConnectClientTypes.ContactFlowModuleSearchCriteria?, to writer: SmithyJSON.Writer) throws { + static func write(value: ConnectClientTypes.CommonAttributeAndCondition?, to writer: SmithyJSON.Writer) throws { guard let value else { return } - try writer["AndConditions"].writeList(value.andConditions, memberWritingClosure: ConnectClientTypes.ContactFlowModuleSearchCriteria.write(value:to:), memberNodeInfo: "member", isFlattened: false) - try writer["OrConditions"].writeList(value.orConditions, memberWritingClosure: ConnectClientTypes.ContactFlowModuleSearchCriteria.write(value:to:), memberNodeInfo: "member", isFlattened: false) + try writer["TagConditions"].writeList(value.tagConditions, memberWritingClosure: ConnectClientTypes.TagCondition.write(value:to:), memberNodeInfo: "member", isFlattened: false) + } +} + +extension ConnectClientTypes.AgentStatusSearchCriteria { + + static func write(value: ConnectClientTypes.AgentStatusSearchCriteria?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["AndConditions"].writeList(value.andConditions, memberWritingClosure: ConnectClientTypes.AgentStatusSearchCriteria.write(value:to:), memberNodeInfo: "member", isFlattened: false) + try writer["OrConditions"].writeList(value.orConditions, memberWritingClosure: ConnectClientTypes.AgentStatusSearchCriteria.write(value:to:), memberNodeInfo: "member", isFlattened: false) try writer["StringCondition"].write(value.stringCondition, with: ConnectClientTypes.StringCondition.write(value:to:)) } } @@ -39324,6 +39945,34 @@ extension ConnectClientTypes.StringCondition { } } +extension ConnectClientTypes.ContactFlowModuleSearchFilter { + + static func write(value: ConnectClientTypes.ContactFlowModuleSearchFilter?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["TagFilter"].write(value.tagFilter, with: ConnectClientTypes.ControlPlaneTagFilter.write(value:to:)) + } +} + +extension ConnectClientTypes.ControlPlaneTagFilter { + + static func write(value: ConnectClientTypes.ControlPlaneTagFilter?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["AndConditions"].writeList(value.andConditions, memberWritingClosure: ConnectClientTypes.TagCondition.write(value:to:), memberNodeInfo: "member", isFlattened: false) + try writer["OrConditions"].writeList(value.orConditions, memberWritingClosure: SmithyReadWrite.listWritingClosure(memberWritingClosure: ConnectClientTypes.TagCondition.write(value:to:), memberNodeInfo: "member", isFlattened: false), memberNodeInfo: "member", isFlattened: false) + try writer["TagCondition"].write(value.tagCondition, with: ConnectClientTypes.TagCondition.write(value:to:)) + } +} + +extension ConnectClientTypes.ContactFlowModuleSearchCriteria { + + static func write(value: ConnectClientTypes.ContactFlowModuleSearchCriteria?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["AndConditions"].writeList(value.andConditions, memberWritingClosure: ConnectClientTypes.ContactFlowModuleSearchCriteria.write(value:to:), memberNodeInfo: "member", isFlattened: false) + try writer["OrConditions"].writeList(value.orConditions, memberWritingClosure: ConnectClientTypes.ContactFlowModuleSearchCriteria.write(value:to:), memberNodeInfo: "member", isFlattened: false) + try writer["StringCondition"].write(value.stringCondition, with: ConnectClientTypes.StringCondition.write(value:to:)) + } +} + extension ConnectClientTypes.ContactFlowSearchFilter { static func write(value: ConnectClientTypes.ContactFlowSearchFilter?, to writer: SmithyJSON.Writer) throws { @@ -39573,6 +40222,24 @@ extension ConnectClientTypes.SecurityProfilesSearchFilter { } } +extension ConnectClientTypes.UserHierarchyGroupSearchFilter { + + static func write(value: ConnectClientTypes.UserHierarchyGroupSearchFilter?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["AttributeFilter"].write(value.attributeFilter, with: ConnectClientTypes.ControlPlaneAttributeFilter.write(value:to:)) + } +} + +extension ConnectClientTypes.UserHierarchyGroupSearchCriteria { + + static func write(value: ConnectClientTypes.UserHierarchyGroupSearchCriteria?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["AndConditions"].writeList(value.andConditions, memberWritingClosure: ConnectClientTypes.UserHierarchyGroupSearchCriteria.write(value:to:), memberNodeInfo: "member", isFlattened: false) + try writer["OrConditions"].writeList(value.orConditions, memberWritingClosure: ConnectClientTypes.UserHierarchyGroupSearchCriteria.write(value:to:), memberNodeInfo: "member", isFlattened: false) + try writer["StringCondition"].write(value.stringCondition, with: ConnectClientTypes.StringCondition.write(value:to:)) + } +} + extension ConnectClientTypes.UserSearchFilter { static func write(value: ConnectClientTypes.UserSearchFilter?, to writer: SmithyJSON.Writer) throws { @@ -39617,11 +40284,41 @@ extension ConnectClientTypes.UserSearchCriteria { guard let value else { return } try writer["AndConditions"].writeList(value.andConditions, memberWritingClosure: ConnectClientTypes.UserSearchCriteria.write(value:to:), memberNodeInfo: "member", isFlattened: false) try writer["HierarchyGroupCondition"].write(value.hierarchyGroupCondition, with: ConnectClientTypes.HierarchyGroupCondition.write(value:to:)) + try writer["ListCondition"].write(value.listCondition, with: ConnectClientTypes.ListCondition.write(value:to:)) try writer["OrConditions"].writeList(value.orConditions, memberWritingClosure: ConnectClientTypes.UserSearchCriteria.write(value:to:), memberNodeInfo: "member", isFlattened: false) try writer["StringCondition"].write(value.stringCondition, with: ConnectClientTypes.StringCondition.write(value:to:)) } } +extension ConnectClientTypes.ListCondition { + + static func write(value: ConnectClientTypes.ListCondition?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["Conditions"].writeList(value.conditions, memberWritingClosure: ConnectClientTypes.Condition.write(value:to:), memberNodeInfo: "member", isFlattened: false) + try writer["TargetListType"].write(value.targetListType) + } +} + +extension ConnectClientTypes.Condition { + + static func write(value: ConnectClientTypes.Condition?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["NumberCondition"].write(value.numberCondition, with: ConnectClientTypes.NumberCondition.write(value:to:)) + try writer["StringCondition"].write(value.stringCondition, with: ConnectClientTypes.StringCondition.write(value:to:)) + } +} + +extension ConnectClientTypes.NumberCondition { + + static func write(value: ConnectClientTypes.NumberCondition?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ComparisonType"].write(value.comparisonType) + try writer["FieldName"].write(value.fieldName) + try writer["MaxValue"].write(value.maxValue) + try writer["MinValue"].write(value.minValue) + } +} + extension ConnectClientTypes.ChatEvent { static func write(value: ConnectClientTypes.ChatEvent?, to writer: SmithyJSON.Writer) throws { diff --git a/Sources/Services/AWSConnect/Sources/AWSConnect/Paginators.swift b/Sources/Services/AWSConnect/Sources/AWSConnect/Paginators.swift index 1accd3a4fed..a49a5cb7fe5 100644 --- a/Sources/Services/AWSConnect/Sources/AWSConnect/Paginators.swift +++ b/Sources/Services/AWSConnect/Sources/AWSConnect/Paginators.swift @@ -1472,6 +1472,39 @@ extension PaginatorSequence where OperationStackInput == ListViewVersionsInput, return try await self.asyncCompactMap { item in item.viewVersionSummaryList } } } +extension ConnectClient { + /// Paginate over `[SearchAgentStatusesOutput]` 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 `[SearchAgentStatusesInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `SearchAgentStatusesOutput` + public func searchAgentStatusesPaginated(input: SearchAgentStatusesInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.searchAgentStatuses(input:)) + } +} + +extension SearchAgentStatusesInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> SearchAgentStatusesInput { + return SearchAgentStatusesInput( + instanceId: self.instanceId, + maxResults: self.maxResults, + nextToken: token, + searchCriteria: self.searchCriteria, + searchFilter: self.searchFilter + )} +} + +extension PaginatorSequence where OperationStackInput == SearchAgentStatusesInput, OperationStackOutput == SearchAgentStatusesOutput { + /// This paginator transforms the `AsyncSequence` returned by `searchAgentStatusesPaginated` + /// to access the nested member `[ConnectClientTypes.AgentStatus]` + /// - Returns: `[ConnectClientTypes.AgentStatus]` + public func agentStatuses() async throws -> [ConnectClientTypes.AgentStatus] { + return try await self.asyncCompactMap { item in item.agentStatuses } + } +} extension ConnectClient { /// Paginate over `[SearchAvailablePhoneNumbersOutput]` results. /// @@ -1870,6 +1903,39 @@ extension PaginatorSequence where OperationStackInput == SearchSecurityProfilesI return try await self.asyncCompactMap { item in item.securityProfiles } } } +extension ConnectClient { + /// Paginate over `[SearchUserHierarchyGroupsOutput]` 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 `[SearchUserHierarchyGroupsInput]` to start pagination + /// - Returns: An `AsyncSequence` that can iterate over `SearchUserHierarchyGroupsOutput` + public func searchUserHierarchyGroupsPaginated(input: SearchUserHierarchyGroupsInput) -> ClientRuntime.PaginatorSequence { + return ClientRuntime.PaginatorSequence(input: input, inputKey: \.nextToken, outputKey: \.nextToken, paginationFunction: self.searchUserHierarchyGroups(input:)) + } +} + +extension SearchUserHierarchyGroupsInput: ClientRuntime.PaginateToken { + public func usingPaginationToken(_ token: Swift.String) -> SearchUserHierarchyGroupsInput { + return SearchUserHierarchyGroupsInput( + instanceId: self.instanceId, + maxResults: self.maxResults, + nextToken: token, + searchCriteria: self.searchCriteria, + searchFilter: self.searchFilter + )} +} + +extension PaginatorSequence where OperationStackInput == SearchUserHierarchyGroupsInput, OperationStackOutput == SearchUserHierarchyGroupsOutput { + /// This paginator transforms the `AsyncSequence` returned by `searchUserHierarchyGroupsPaginated` + /// to access the nested member `[ConnectClientTypes.HierarchyGroup]` + /// - Returns: `[ConnectClientTypes.HierarchyGroup]` + public func userHierarchyGroups() async throws -> [ConnectClientTypes.HierarchyGroup] { + return try await self.asyncCompactMap { item in item.userHierarchyGroups } + } +} extension ConnectClient { /// Paginate over `[SearchUsersOutput]` results. /// diff --git a/Sources/Services/AWSEC2/Sources/AWSEC2/EC2Client.swift b/Sources/Services/AWSEC2/Sources/AWSEC2/EC2Client.swift index fda915fdcfb..da740289b02 100644 --- a/Sources/Services/AWSEC2/Sources/AWSEC2/EC2Client.swift +++ b/Sources/Services/AWSEC2/Sources/AWSEC2/EC2Client.swift @@ -5030,6 +5030,70 @@ extension EC2Client { return try await op.execute(input: input) } + /// Performs the `CreateIpamExternalResourceVerificationToken` operation on the `AmazonEC2` service. + /// + /// Create a verification token. A verification token is an Amazon Web Services-generated random value that you can use to prove ownership of an external resource. For example, you can use a verification token to validate that you control a public IP address range when you bring an IP address range to Amazon Web Services (BYOIP). + /// + /// - Parameter CreateIpamExternalResourceVerificationTokenInput : [no documentation found] + /// + /// - Returns: `CreateIpamExternalResourceVerificationTokenOutput` : [no documentation found] + public func createIpamExternalResourceVerificationToken(input: CreateIpamExternalResourceVerificationTokenInput) async throws -> CreateIpamExternalResourceVerificationTokenOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createIpamExternalResourceVerificationToken") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "ec2") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + let i: any ClientRuntime.HttpInterceptor = provider.create() + builder.interceptors.add(i) + } + builder.interceptors.add(ClientRuntime.IdempotencyTokenMiddleware(keyPath: \.clientToken)) + builder.interceptors.add(ClientRuntime.URLPathMiddleware(CreateIpamExternalResourceVerificationTokenInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(CreateIpamExternalResourceVerificationTokenOutput.httpOutput(from:), CreateIpamExternalResourceVerificationTokenOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: CreateIpamExternalResourceVerificationTokenInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "EC2") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "CreateIpamExternalResourceVerificationToken") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `CreateIpamPool` operation on the `AmazonEC2` service. /// /// Create an IP address pool for Amazon VPC IP Address Manager (IPAM). In IPAM, a pool is a collection of contiguous IP addresses CIDRs. Pools enable you to organize your IP addresses according to your routing and security needs. For example, if you have separate routing and security needs for development and production applications, you can create a pool for each. For more information, see [Create a top-level pool](https://docs.aws.amazon.com/vpc/latest/ipam/create-top-ipam.html) in the Amazon VPC IPAM User Guide. @@ -9867,6 +9931,69 @@ extension EC2Client { return try await op.execute(input: input) } + /// Performs the `DeleteIpamExternalResourceVerificationToken` operation on the `AmazonEC2` service. + /// + /// Delete a verification token. A verification token is an Amazon Web Services-generated random value that you can use to prove ownership of an external resource. For example, you can use a verification token to validate that you control a public IP address range when you bring an IP address range to Amazon Web Services (BYOIP). + /// + /// - Parameter DeleteIpamExternalResourceVerificationTokenInput : [no documentation found] + /// + /// - Returns: `DeleteIpamExternalResourceVerificationTokenOutput` : [no documentation found] + public func deleteIpamExternalResourceVerificationToken(input: DeleteIpamExternalResourceVerificationTokenInput) async throws -> DeleteIpamExternalResourceVerificationTokenOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "deleteIpamExternalResourceVerificationToken") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "ec2") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + let i: any ClientRuntime.HttpInterceptor = provider.create() + builder.interceptors.add(i) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(DeleteIpamExternalResourceVerificationTokenInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(DeleteIpamExternalResourceVerificationTokenOutput.httpOutput(from:), DeleteIpamExternalResourceVerificationTokenOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: DeleteIpamExternalResourceVerificationTokenInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "EC2") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "DeleteIpamExternalResourceVerificationToken") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `DeleteIpamPool` operation on the `AmazonEC2` service. /// /// Delete an IPAM pool. You cannot delete an IPAM pool if there are allocations in it or CIDRs provisioned to it. To release allocations, see [ReleaseIpamPoolAllocation](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ReleaseIpamPoolAllocation.html). To deprovision pool CIDRs, see [DeprovisionIpamPoolCidr](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DeprovisionIpamPoolCidr.html). For more information, see [Delete a pool](https://docs.aws.amazon.com/vpc/latest/ipam/delete-pool-ipam.html) in the Amazon VPC IPAM User Guide. @@ -17730,6 +17857,69 @@ extension EC2Client { return try await op.execute(input: input) } + /// Performs the `DescribeIpamExternalResourceVerificationTokens` operation on the `AmazonEC2` service. + /// + /// Describe verification tokens. A verification token is an Amazon Web Services-generated random value that you can use to prove ownership of an external resource. For example, you can use a verification token to validate that you control a public IP address range when you bring an IP address range to Amazon Web Services (BYOIP). + /// + /// - Parameter DescribeIpamExternalResourceVerificationTokensInput : [no documentation found] + /// + /// - Returns: `DescribeIpamExternalResourceVerificationTokensOutput` : [no documentation found] + public func describeIpamExternalResourceVerificationTokens(input: DescribeIpamExternalResourceVerificationTokensInput) async throws -> DescribeIpamExternalResourceVerificationTokensOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "describeIpamExternalResourceVerificationTokens") + .withIdempotencyTokenGenerator(value: config.idempotencyTokenGenerator) + .withLogger(value: config.logger) + .withPartitionID(value: config.partitionID) + .withAuthSchemes(value: config.authSchemes ?? []) + .withAuthSchemeResolver(value: config.authSchemeResolver) + .withUnsignedPayloadTrait(value: false) + .withSocketTimeout(value: config.httpClientConfiguration.socketTimeout) + .withIdentityResolver(value: config.bearerTokenIdentityResolver, schemeID: "smithy.api#httpBearerAuth") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4") + .withIdentityResolver(value: config.awsCredentialIdentityResolver, schemeID: "aws.auth#sigv4a") + .withRegion(value: config.region) + .withSigningName(value: "ec2") + .withSigningRegion(value: config.signingRegion) + .build() + let builder = ClientRuntime.OrchestratorBuilder() + config.interceptorProviders.forEach { provider in + builder.interceptors.add(provider.create()) + } + config.httpInterceptorProviders.forEach { provider in + let i: any ClientRuntime.HttpInterceptor = provider.create() + builder.interceptors.add(i) + } + builder.interceptors.add(ClientRuntime.URLPathMiddleware(DescribeIpamExternalResourceVerificationTokensInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(DescribeIpamExternalResourceVerificationTokensOutput.httpOutput(from:), DescribeIpamExternalResourceVerificationTokensOutputError.httpError(from:))) + builder.interceptors.add(ClientRuntime.LoggerMiddleware(clientLogMode: config.clientLogMode)) + builder.retryStrategy(SmithyRetries.DefaultRetryStrategy(options: config.retryStrategyOptions)) + builder.retryErrorInfoProvider(AWSClientRuntime.AWSRetryErrorInfoProvider.errorInfo(for:)) + builder.applySigner(ClientRuntime.SignerMiddleware()) + let endpointParams = EndpointParams(endpoint: config.endpoint, region: config.region, useDualStack: config.useDualStack ?? false, useFIPS: config.useFIPS ?? false) + builder.applyEndpoint(AWSClientRuntime.EndpointResolverMiddleware(endpointResolverBlock: { [config] in try config.endpointResolver.resolve(params: $0) }, endpointParams: endpointParams)) + builder.interceptors.add(AWSClientRuntime.UserAgentMiddleware(metadata: AWSClientRuntime.AWSUserAgentMetadata.fromConfig(serviceID: serviceName, version: "1.0", config: config))) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: DescribeIpamExternalResourceVerificationTokensInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-www-form-urlencoded")) + builder.selectAuthScheme(ClientRuntime.AuthSchemeMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkInvocationIdMiddleware()) + builder.interceptors.add(AWSClientRuntime.AmzSdkRequestMiddleware(maxRetries: config.retryStrategyOptions.maxRetriesBase)) + var metricsAttributes = Smithy.Attributes() + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.service, value: "EC2") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "DescribeIpamExternalResourceVerificationTokens") + let op = builder.attributes(context) + .telemetry(ClientRuntime.OrchestratorTelemetry( + telemetryProvider: config.telemetryProvider, + metricsAttributes: metricsAttributes + )) + .executeRequest(client) + .build() + return try await op.execute(input: input) + } + /// Performs the `DescribeIpamPools` operation on the `AmazonEC2` service. /// /// Get information about your IPAM pools. @@ -19496,7 +19686,7 @@ extension EC2Client { /// Performs the `DescribePlacementGroups` operation on the `AmazonEC2` service. /// - /// Describes the specified placement groups or all of your placement groups. For more information, see [Placement groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) in the Amazon EC2 User Guide. + /// Describes the specified placement groups or all of your placement groups. To describe a specific placement group that is shared with your account, you must specify the ID of the placement group using the GroupId parameter. Specifying the name of a shared placement group using the GroupNames parameter will result in an error. For more information, see [Placement groups](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) in the Amazon EC2 User Guide. /// /// - Parameter DescribePlacementGroupsInput : [no documentation found] /// @@ -22781,7 +22971,7 @@ extension EC2Client { /// Performs the `DescribeVolumesModifications` operation on the `AmazonEC2` service. /// - /// Describes the most recent volume modification request for the specified EBS volumes. If a volume has never been modified, some information in the output will be null. If a volume has been modified more than once, the output includes only the most recent modification request. For more information, see [ Monitor the progress of volume modifications](https://docs.aws.amazon.com/ebs/latest/userguide/monitoring-volume-modifications.html) in the Amazon EBS User Guide. + /// Describes the most recent volume modification request for the specified EBS volumes. For more information, see [ Monitor the progress of volume modifications](https://docs.aws.amazon.com/ebs/latest/userguide/monitoring-volume-modifications.html) in the Amazon EBS User Guide. /// /// - Parameter DescribeVolumesModificationsInput : [no documentation found] /// @@ -27706,7 +27896,7 @@ extension EC2Client { /// Performs the `GetConsoleOutput` operation on the `AmazonEC2` service. /// - /// Gets the console output for the specified instance. For Linux instances, the instance console output displays the exact console output that would normally be displayed on a physical monitor attached to a computer. For Windows instances, the instance console output includes the last three system event log errors. By default, the console output returns buffered information that was posted shortly after an instance transition state (start, stop, reboot, or terminate). This information is available for at least one hour after the most recent post. Only the most recent 64 KB of console output is available. You can optionally retrieve the latest serial console output at any time during the instance lifecycle. This option is supported on instance types that use the Nitro hypervisor. For more information, see [Instance console output](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html#instance-console-console-output) in the Amazon EC2 User Guide. + /// Gets the console output for the specified instance. For Linux instances, the instance console output displays the exact console output that would normally be displayed on a physical monitor attached to a computer. For Windows instances, the instance console output includes the last three system event log errors. For more information, see [Instance console output](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html#instance-console-console-output) in the Amazon EC2 User Guide. /// /// - Parameter GetConsoleOutputInput : [no documentation found] /// diff --git a/Sources/Services/AWSEC2/Sources/AWSEC2/Models.swift b/Sources/Services/AWSEC2/Sources/AWSEC2/Models.swift index 8ecfe002bef..d399ea647ad 100644 --- a/Sources/Services/AWSEC2/Sources/AWSEC2/Models.swift +++ b/Sources/Services/AWSEC2/Sources/AWSEC2/Models.swift @@ -530,6 +530,7 @@ extension EC2ClientTypes { case instanceEventWindow case internetGateway case ipam + case ipamExternalResourceVerificationToken case ipamPool case ipamResourceDiscovery case ipamResourceDiscoveryAssociation @@ -582,7 +583,6 @@ extension EC2ClientTypes { case volume case vpc case vpcBlockPublicAccessExclusion - case vpcEncryptionControl case vpcEndpoint case vpcEndpointConnection case vpcEndpointConnectionDeviceType @@ -621,6 +621,7 @@ extension EC2ClientTypes { .instanceEventWindow, .internetGateway, .ipam, + .ipamExternalResourceVerificationToken, .ipamPool, .ipamResourceDiscovery, .ipamResourceDiscoveryAssociation, @@ -673,7 +674,6 @@ extension EC2ClientTypes { .volume, .vpc, .vpcBlockPublicAccessExclusion, - .vpcEncryptionControl, .vpcEndpoint, .vpcEndpointConnection, .vpcEndpointConnectionDeviceType, @@ -718,6 +718,7 @@ extension EC2ClientTypes { case .instanceEventWindow: return "instance-event-window" case .internetGateway: return "internet-gateway" case .ipam: return "ipam" + case .ipamExternalResourceVerificationToken: return "ipam-external-resource-verification-token" case .ipamPool: return "ipam-pool" case .ipamResourceDiscovery: return "ipam-resource-discovery" case .ipamResourceDiscoveryAssociation: return "ipam-resource-discovery-association" @@ -770,7 +771,6 @@ extension EC2ClientTypes { case .volume: return "volume" case .vpc: return "vpc" case .vpcBlockPublicAccessExclusion: return "vpc-block-public-access-exclusion" - case .vpcEncryptionControl: return "vpc-encryption-control" case .vpcEndpoint: return "vpc-endpoint" case .vpcEndpointConnection: return "vpc-endpoint-connection" case .vpcEndpointConnectionDeviceType: return "vpc-endpoint-connection-device-type" @@ -5614,6 +5614,67 @@ public struct AssociateSubnetCidrBlockInput { } } +extension EC2ClientTypes { + + public enum IpSource: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case amazon + case byoip + case `none` + case sdkUnknown(Swift.String) + + public static var allCases: [IpSource] { + return [ + .amazon, + .byoip, + .none + ] + } + + 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 .byoip: return "byoip" + case .none: return "none" + case let .sdkUnknown(s): return s + } + } + } +} + +extension EC2ClientTypes { + + public enum Ipv6AddressAttribute: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case `private` + case `public` + case sdkUnknown(Swift.String) + + public static var allCases: [Ipv6AddressAttribute] { + return [ + .private, + .public + ] + } + + 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 .private: return "private" + case .public: return "public" + case let .sdkUnknown(s): return s + } + } + } +} + extension EC2ClientTypes { public enum SubnetCidrBlockStateCode: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { @@ -5680,6 +5741,10 @@ extension EC2ClientTypes { public struct SubnetIpv6CidrBlockAssociation { /// The ID of the association. public var associationId: Swift.String? + /// The source that allocated the IP address space. byoip or amazon indicates public IP address space allocated by Amazon or space that you have allocated with Bring your own IP (BYOIP). none indicates private space. + public var ipSource: EC2ClientTypes.IpSource? + /// Public IPv6 addresses are those advertised on the internet from Amazon Web Services. Private IP addresses are not and cannot be advertised on the internet from Amazon Web Services. + public var ipv6AddressAttribute: EC2ClientTypes.Ipv6AddressAttribute? /// The IPv6 CIDR block. public var ipv6CidrBlock: Swift.String? /// The state of the CIDR block. @@ -5687,11 +5752,15 @@ extension EC2ClientTypes { public init( associationId: Swift.String? = nil, + ipSource: EC2ClientTypes.IpSource? = nil, + ipv6AddressAttribute: EC2ClientTypes.Ipv6AddressAttribute? = nil, ipv6CidrBlock: Swift.String? = nil, ipv6CidrBlockState: EC2ClientTypes.SubnetCidrBlockState? = nil ) { self.associationId = associationId + self.ipSource = ipSource + self.ipv6AddressAttribute = ipv6AddressAttribute self.ipv6CidrBlock = ipv6CidrBlock self.ipv6CidrBlockState = ipv6CidrBlockState } @@ -6179,6 +6248,10 @@ extension EC2ClientTypes { public struct VpcIpv6CidrBlockAssociation { /// The association ID for the IPv6 CIDR block. public var associationId: Swift.String? + /// The source that allocated the IP address space. byoip or amazon indicates public IP address space allocated by Amazon or space that you have allocated with Bring your own IP (BYOIP). none indicates private space. + public var ipSource: EC2ClientTypes.IpSource? + /// Public IPv6 addresses are those advertised on the internet from Amazon Web Services. Private IP addresses are not and cannot be advertised on the internet from Amazon Web Services. + public var ipv6AddressAttribute: EC2ClientTypes.Ipv6AddressAttribute? /// The IPv6 CIDR block. public var ipv6CidrBlock: Swift.String? /// Information about the state of the CIDR block. @@ -6190,6 +6263,8 @@ extension EC2ClientTypes { public init( associationId: Swift.String? = nil, + ipSource: EC2ClientTypes.IpSource? = nil, + ipv6AddressAttribute: EC2ClientTypes.Ipv6AddressAttribute? = nil, ipv6CidrBlock: Swift.String? = nil, ipv6CidrBlockState: EC2ClientTypes.VpcCidrBlockState? = nil, ipv6Pool: Swift.String? = nil, @@ -6197,6 +6272,8 @@ extension EC2ClientTypes { ) { self.associationId = associationId + self.ipSource = ipSource + self.ipv6AddressAttribute = ipv6AddressAttribute self.ipv6CidrBlock = ipv6CidrBlock self.ipv6CidrBlockState = ipv6CidrBlockState self.ipv6Pool = ipv6Pool @@ -13958,7 +14035,30 @@ extension EC2ClientTypes { public struct FleetLaunchTemplateOverridesRequest { /// The Availability Zone in which to launch the instances. public var availabilityZone: Swift.String? - /// The ID of the AMI. An AMI is required to launch an instance. This parameter is only available for fleets of type instant. For fleets of type maintain and request, you must specify the AMI ID in the launch template. + /// The ID of the AMI in the format ami-17characters00000. Alternatively, you can specify a Systems Manager parameter, using one of the following formats. The Systems Manager parameter will resolve to an AMI ID on launch. To reference a public parameter: + /// + /// * resolve:ssm:public-parameter + /// + /// + /// To reference a parameter stored in the same account: + /// + /// * resolve:ssm:parameter-name + /// + /// * resolve:ssm:parameter-name:version-number + /// + /// * resolve:ssm:parameter-name:label + /// + /// + /// To reference a parameter shared from another Amazon Web Services account: + /// + /// * resolve:ssm:parameter-ARN + /// + /// * resolve:ssm:parameter-ARN:version-number + /// + /// * resolve:ssm:parameter-ARN:label + /// + /// + /// For more information, see [Use a Systems Manager parameter instead of an AMI ID](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#use-an-ssm-parameter-instead-of-an-ami-id) in the Amazon EC2 User Guide. This parameter is only available for fleets of type instant. For fleets of type maintain and request, you must specify the AMI ID in the launch template. public var imageId: Swift.String? /// The attributes for the instance types. When you specify instance attributes, Amazon EC2 will identify instance types with those attributes. If you specify InstanceRequirements, you can't specify InstanceType. public var instanceRequirements: EC2ClientTypes.InstanceRequirementsRequest? @@ -13972,7 +14072,7 @@ extension EC2ClientTypes { public var priority: Swift.Double? /// The IDs of the subnets in which to launch the instances. Separate multiple subnet IDs using commas (for example, subnet-1234abcdeexample1, subnet-0987cdef6example2). A request of type instant can have only one subnet ID. public var subnetId: Swift.String? - /// The number of units provided by the specified instance type. When specifying weights, the price used in the lowest-price and price-capacity-optimized allocation strategies is per unit hour (where the instance price is divided by the specified weight). However, if all the specified weights are above the requested TargetCapacity, resulting in only 1 instance being launched, the price used is per instance hour. + /// The number of units provided by the specified instance type. These are the same units that you chose to set the target capacity in terms of instances, or a performance characteristic such as vCPUs, memory, or I/O. If the target capacity divided by this value is not a whole number, Amazon EC2 rounds the number of instances to the next whole number. If this value is not specified, the default is 1. When specifying weights, the price used in the lowest-price and price-capacity-optimized allocation strategies is per unit hour (where the instance price is divided by the specified weight). However, if all the specified weights are above the requested TargetCapacity, resulting in only 1 instance being launched, the price used is per instance hour. public var weightedCapacity: Swift.Double? public init( @@ -14903,7 +15003,30 @@ extension EC2ClientTypes { public struct FleetLaunchTemplateOverrides { /// The Availability Zone in which to launch the instances. public var availabilityZone: Swift.String? - /// The ID of the AMI. An AMI is required to launch an instance. This parameter is only available for fleets of type instant. For fleets of type maintain and request, you must specify the AMI ID in the launch template. + /// The ID of the AMI in the format ami-17characters00000. Alternatively, you can specify a Systems Manager parameter, using one of the following formats. The Systems Manager parameter will resolve to an AMI ID on launch. To reference a public parameter: + /// + /// * resolve:ssm:public-parameter + /// + /// + /// To reference a parameter stored in the same account: + /// + /// * resolve:ssm:parameter-name + /// + /// * resolve:ssm:parameter-name:version-number + /// + /// * resolve:ssm:parameter-name:label + /// + /// + /// To reference a parameter shared from another Amazon Web Services account: + /// + /// * resolve:ssm:parameter-ARN + /// + /// * resolve:ssm:parameter-ARN:version-number + /// + /// * resolve:ssm:parameter-ARN:label + /// + /// + /// For more information, see [Use a Systems Manager parameter instead of an AMI ID](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#use-an-ssm-parameter-instead-of-an-ami-id) in the Amazon EC2 User Guide. This parameter is only available for fleets of type instant. For fleets of type maintain and request, you must specify the AMI ID in the launch template. public var imageId: Swift.String? /// The attributes for the instance types. When you specify instance attributes, Amazon EC2 will identify instance types with those attributes. If you specify InstanceRequirements, you can't specify InstanceType. public var instanceRequirements: EC2ClientTypes.InstanceRequirements? @@ -14917,7 +15040,7 @@ extension EC2ClientTypes { public var priority: Swift.Double? /// The ID of the subnet in which to launch the instances. public var subnetId: Swift.String? - /// The number of units provided by the specified instance type. When specifying weights, the price used in the lowest-price and price-capacity-optimized allocation strategies is per unit hour (where the instance price is divided by the specified weight). However, if all the specified weights are above the requested TargetCapacity, resulting in only 1 instance being launched, the price used is per instance hour. + /// The number of units provided by the specified instance type. These are the same units that you chose to set the target capacity in terms of instances, or a performance characteristic such as vCPUs, memory, or I/O. If the target capacity divided by this value is not a whole number, Amazon EC2 rounds the number of instances to the next whole number. If this value is not specified, the default is 1. When specifying weights, the price used in the lowest-price and price-capacity-optimized allocation strategies is per unit hour (where the instance price is divided by the specified weight). However, if all the specified weights are above the requested TargetCapacity, resulting in only 1 instance being launched, the price used is per instance hour. public var weightedCapacity: Swift.Double? public init( @@ -16273,6 +16396,8 @@ public struct CreateIpamInput { public var description: Swift.String? /// A check for 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? + /// Enable this option to use your own GUA ranges as private IPv6 addresses. This option is disabled by default. + public var enablePrivateGua: Swift.Bool? /// The operating Regions for the IPAM. Operating Regions are Amazon Web Services Regions where the IPAM is allowed to manage IP address CIDRs. IPAM only discovers and monitors resources in the Amazon Web Services Regions you select as operating Regions. For more information about operating Regions, see [Create an IPAM](https://docs.aws.amazon.com/vpc/latest/ipam/create-ipam.html) in the Amazon VPC IPAM User Guide. public var operatingRegions: [EC2ClientTypes.AddIpamOperatingRegion]? /// The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key Owner and the value TeamA, specify tag:Owner for the filter name and TeamA for the filter value. @@ -16284,6 +16409,7 @@ public struct CreateIpamInput { clientToken: Swift.String? = nil, description: Swift.String? = nil, dryRun: Swift.Bool? = nil, + enablePrivateGua: Swift.Bool? = nil, operatingRegions: [EC2ClientTypes.AddIpamOperatingRegion]? = nil, tagSpecifications: [EC2ClientTypes.TagSpecification]? = nil, tier: EC2ClientTypes.IpamTier? = nil @@ -16292,6 +16418,7 @@ public struct CreateIpamInput { self.clientToken = clientToken self.description = description self.dryRun = dryRun + self.enablePrivateGua = enablePrivateGua self.operatingRegions = operatingRegions self.tagSpecifications = tagSpecifications self.tier = tier @@ -16382,6 +16509,8 @@ extension EC2ClientTypes { public var defaultResourceDiscoveryId: Swift.String? /// The description for the IPAM. public var description: Swift.String? + /// Enable this option to use your own GUA ranges as private IPv6 addresses. This option is disabled by default. + public var enablePrivateGua: Swift.Bool? /// The Amazon Resource Name (ARN) of the IPAM. public var ipamArn: Swift.String? /// The ID of the IPAM. @@ -16413,6 +16542,7 @@ extension EC2ClientTypes { defaultResourceDiscoveryAssociationId: Swift.String? = nil, defaultResourceDiscoveryId: Swift.String? = nil, description: Swift.String? = nil, + enablePrivateGua: Swift.Bool? = nil, ipamArn: Swift.String? = nil, ipamId: Swift.String? = nil, ipamRegion: Swift.String? = nil, @@ -16431,6 +16561,7 @@ extension EC2ClientTypes { self.defaultResourceDiscoveryAssociationId = defaultResourceDiscoveryAssociationId self.defaultResourceDiscoveryId = defaultResourceDiscoveryId self.description = description + self.enablePrivateGua = enablePrivateGua self.ipamArn = ipamArn self.ipamId = ipamId self.ipamRegion = ipamRegion @@ -16461,6 +16592,169 @@ public struct CreateIpamOutput { } } +public struct CreateIpamExternalResourceVerificationTokenInput { + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html). + public var clientToken: Swift.String? + /// A check for 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 ID of the IPAM that will create the token. + /// This member is required. + public var ipamId: Swift.String? + /// Token tags. + public var tagSpecifications: [EC2ClientTypes.TagSpecification]? + + public init( + clientToken: Swift.String? = nil, + dryRun: Swift.Bool? = nil, + ipamId: Swift.String? = nil, + tagSpecifications: [EC2ClientTypes.TagSpecification]? = nil + ) + { + self.clientToken = clientToken + self.dryRun = dryRun + self.ipamId = ipamId + self.tagSpecifications = tagSpecifications + } +} + +extension EC2ClientTypes { + + public enum IpamExternalResourceVerificationTokenState: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case createComplete + case createFailed + case createInProgress + case deleteComplete + case deleteFailed + case deleteInProgress + case sdkUnknown(Swift.String) + + public static var allCases: [IpamExternalResourceVerificationTokenState] { + return [ + .createComplete, + .createFailed, + .createInProgress, + .deleteComplete, + .deleteFailed, + .deleteInProgress + ] + } + + 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 .createComplete: return "create-complete" + case .createFailed: return "create-failed" + case .createInProgress: return "create-in-progress" + case .deleteComplete: return "delete-complete" + case .deleteFailed: return "delete-failed" + case .deleteInProgress: return "delete-in-progress" + case let .sdkUnknown(s): return s + } + } + } +} + +extension EC2ClientTypes { + + public enum TokenState: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case expired + case valid + case sdkUnknown(Swift.String) + + public static var allCases: [TokenState] { + return [ + .expired, + .valid + ] + } + + 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 .expired: return "expired" + case .valid: return "valid" + case let .sdkUnknown(s): return s + } + } + } +} + +extension EC2ClientTypes { + /// A verification token is an Amazon Web Services-generated random value that you can use to prove ownership of an external resource. For example, you can use a verification token to validate that you control a public IP address range when you bring an IP address range to Amazon Web Services (BYOIP). + public struct IpamExternalResourceVerificationToken { + /// ARN of the IPAM that created the token. + public var ipamArn: Swift.String? + /// Token ARN. + public var ipamExternalResourceVerificationTokenArn: Swift.String? + /// The ID of the token. + public var ipamExternalResourceVerificationTokenId: Swift.String? + /// The ID of the IPAM that created the token. + public var ipamId: Swift.String? + /// Region of the IPAM that created the token. + public var ipamRegion: Swift.String? + /// Token expiration. + public var notAfter: Foundation.Date? + /// Token state. + public var state: EC2ClientTypes.IpamExternalResourceVerificationTokenState? + /// Token status. + public var status: EC2ClientTypes.TokenState? + /// Token tags. + public var tags: [EC2ClientTypes.Tag]? + /// Token name. + public var tokenName: Swift.String? + /// Token value. + public var tokenValue: Swift.String? + + public init( + ipamArn: Swift.String? = nil, + ipamExternalResourceVerificationTokenArn: Swift.String? = nil, + ipamExternalResourceVerificationTokenId: Swift.String? = nil, + ipamId: Swift.String? = nil, + ipamRegion: Swift.String? = nil, + notAfter: Foundation.Date? = nil, + state: EC2ClientTypes.IpamExternalResourceVerificationTokenState? = nil, + status: EC2ClientTypes.TokenState? = nil, + tags: [EC2ClientTypes.Tag]? = nil, + tokenName: Swift.String? = nil, + tokenValue: Swift.String? = nil + ) + { + self.ipamArn = ipamArn + self.ipamExternalResourceVerificationTokenArn = ipamExternalResourceVerificationTokenArn + self.ipamExternalResourceVerificationTokenId = ipamExternalResourceVerificationTokenId + self.ipamId = ipamId + self.ipamRegion = ipamRegion + self.notAfter = notAfter + self.state = state + self.status = status + self.tags = tags + self.tokenName = tokenName + self.tokenValue = tokenValue + } + } + +} + +public struct CreateIpamExternalResourceVerificationTokenOutput { + /// The verification token. + public var ipamExternalResourceVerificationToken: EC2ClientTypes.IpamExternalResourceVerificationToken? + + public init( + ipamExternalResourceVerificationToken: EC2ClientTypes.IpamExternalResourceVerificationToken? = nil + ) + { + self.ipamExternalResourceVerificationToken = ipamExternalResourceVerificationToken + } +} + extension EC2ClientTypes { /// A tag on an IPAM resource. public struct RequestIpamResourceTag { @@ -16615,7 +16909,14 @@ public struct CreateIpamPoolInput { /// The ID of the scope in which you would like to create the IPAM pool. /// This member is required. public var ipamScopeId: Swift.String? - /// In IPAM, the locale is the Amazon Web Services Region or, for IPAM IPv4 pools in the public scope, the network border group for an Amazon Web Services Local Zone where you want to make an IPAM pool available for allocations ([supported Local Zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-zone-avail)). If you do not choose a locale, resources in Regions others than the IPAM's home region cannot use CIDRs from this pool. Possible values: Any Amazon Web Services Region, such as us-east-1. + /// The locale for the pool should be one of the following: + /// + /// * An Amazon Web Services Region where you want this IPAM pool to be available for allocations. + /// + /// * The network border group for an Amazon Web Services Local Zone where you want this IPAM pool to be available for allocations ([supported Local Zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-zone-avail)). This option is only available for IPAM IPv4 pools in the public scope. + /// + /// + /// If you do not choose a locale, resources in Regions others than the IPAM's home region cannot use CIDRs from this pool. Possible values: Any Amazon Web Services Region or supported Amazon Web Services Local Zone. public var locale: Swift.String? /// The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Default is byoip. For more information, see [Create IPv6 pools](https://docs.aws.amazon.com/vpc/latest/ipam/intro-create-ipv6-pools.html) in the Amazon VPC IPAM User Guide. By default, you can add only one Amazon-provided IPv6 CIDR block to a top-level IPv6 pool if PublicIpSource is amazon. For information on increasing the default limit, see [ Quotas for your IPAM](https://docs.aws.amazon.com/vpc/latest/ipam/quotas-ipam.html) in the Amazon VPC IPAM User Guide. public var publicIpSource: EC2ClientTypes.IpamPoolPublicIpSource? @@ -16835,7 +17136,14 @@ extension EC2ClientTypes { public var ipamScopeArn: Swift.String? /// In IPAM, a scope is the highest-level container within IPAM. An IPAM contains two default scopes. Each scope represents the IP space for a single network. The private scope is intended for all private IP address space. The public scope is intended for all public IP address space. Scopes enable you to reuse IP addresses across multiple unconnected networks without causing IP address overlap or conflict. public var ipamScopeType: EC2ClientTypes.IpamScopeType? - /// The locale of the IPAM pool. In IPAM, the locale is the Amazon Web Services Region or, for IPAM IPv4 pools in the public scope, the network border group for an Amazon Web Services Local Zone where you want to make an IPAM pool available for allocations ([supported Local Zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-zone-avail)). If you choose an Amazon Web Services Region for locale that has not been configured as an operating Region for the IPAM, you'll get an error. + /// The locale of the IPAM pool. The locale for the pool should be one of the following: + /// + /// * An Amazon Web Services Region where you want this IPAM pool to be available for allocations. + /// + /// * The network border group for an Amazon Web Services Local Zone where you want this IPAM pool to be available for allocations ([supported Local Zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-zone-avail)). This option is only available for IPAM IPv4 pools in the public scope. + /// + /// + /// If you choose an Amazon Web Services Region for locale that has not been configured as an operating Region for the IPAM, you'll get an error. public var locale: Swift.String? /// The Amazon Web Services account ID of the owner of the IPAM pool. public var ownerId: Swift.String? @@ -18455,9 +18763,12 @@ extension EC2ClientTypes { public var hibernationOptions: EC2ClientTypes.LaunchTemplateHibernationOptionsRequest? /// The name or Amazon Resource Name (ARN) of an IAM instance profile. public var iamInstanceProfile: EC2ClientTypes.LaunchTemplateIamInstanceProfileSpecificationRequest? - /// The ID of the AMI. Alternatively, you can specify a Systems Manager parameter, which will resolve to an AMI ID on launch. Valid formats: + /// The ID of the AMI in the format ami-17characters00000. Alternatively, you can specify a Systems Manager parameter, using one of the following formats. The Systems Manager parameter will resolve to an AMI ID on launch. To reference a public parameter: /// - /// * ami-17characters00000 + /// * resolve:ssm:public-parameter + /// + /// + /// To reference a parameter stored in the same account: /// /// * resolve:ssm:parameter-name /// @@ -18465,10 +18776,21 @@ extension EC2ClientTypes { /// /// * resolve:ssm:parameter-name:label /// - /// * resolve:ssm:public-parameter /// + /// To reference a parameter shared from another Amazon Web Services account: /// - /// Currently, EC2 Fleet and Spot Fleet do not support specifying a Systems Manager parameter. If the launch template will be used by an EC2 Fleet or Spot Fleet, you must specify the AMI ID. For more information, see [Use a Systems Manager parameter instead of an AMI ID](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#use-an-ssm-parameter-instead-of-an-ami-id) in the Amazon EC2 User Guide. + /// * resolve:ssm:parameter-ARN + /// + /// * resolve:ssm:parameter-ARN:version-number + /// + /// * resolve:ssm:parameter-ARN:label + /// + /// + /// For more information, see [Use a Systems Manager parameter instead of an AMI ID](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#use-an-ssm-parameter-instead-of-an-ami-id) in the Amazon EC2 User Guide. If the launch template will be used for an EC2 Fleet or Spot Fleet, note the following: + /// + /// * Only EC2 Fleets of type instant support specifying a Systems Manager parameter. + /// + /// * For EC2 Fleets of type maintain or request, or for Spot Fleets, you must specify the AMI ID. public var imageId: Swift.String? /// Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown). Default: stop public var instanceInitiatedShutdownBehavior: EC2ClientTypes.ShutdownBehavior? @@ -29655,6 +29977,35 @@ public struct DeleteIpamOutput { } } +public struct DeleteIpamExternalResourceVerificationTokenInput { + /// A check for 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 token ID. + /// This member is required. + public var ipamExternalResourceVerificationTokenId: Swift.String? + + public init( + dryRun: Swift.Bool? = nil, + ipamExternalResourceVerificationTokenId: Swift.String? = nil + ) + { + self.dryRun = dryRun + self.ipamExternalResourceVerificationTokenId = ipamExternalResourceVerificationTokenId + } +} + +public struct DeleteIpamExternalResourceVerificationTokenOutput { + /// The verification token. + public var ipamExternalResourceVerificationToken: EC2ClientTypes.IpamExternalResourceVerificationToken? + + public init( + ipamExternalResourceVerificationToken: EC2ClientTypes.IpamExternalResourceVerificationToken? = nil + ) + { + self.ipamExternalResourceVerificationToken = ipamExternalResourceVerificationToken + } +} + public struct DeleteIpamPoolInput { /// Enables you to quickly delete an IPAM pool and all resources within that pool, including provisioned CIDRs, allocations, and other pools. You can only use this option to delete pools in the private scope or pools in the public scope with a source resource. A source resource is a resource used to provision CIDRs to a resource planning pool. public var cascade: Swift.Bool? @@ -42151,6 +42502,68 @@ public struct DescribeIpamByoasnOutput { } } +public struct DescribeIpamExternalResourceVerificationTokensInput { + /// A check for 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? + /// One or more filters for the request. For more information about filtering, see [Filtering CLI output](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-filter.html). Available filters: + /// + /// * ipam-arn + /// + /// * ipam-external-resource-verification-token-arn + /// + /// * ipam-external-resource-verification-token-id + /// + /// * ipam-id + /// + /// * ipam-region + /// + /// * state + /// + /// * status + /// + /// * token-name + /// + /// * token-value + public var filters: [EC2ClientTypes.Filter]? + /// Verification token IDs. + public var ipamExternalResourceVerificationTokenIds: [Swift.String]? + /// The maximum number of tokens to return in one page of results. + public var maxResults: Swift.Int? + /// The token for the next page of results. + public var nextToken: Swift.String? + + public init( + dryRun: Swift.Bool? = nil, + filters: [EC2ClientTypes.Filter]? = nil, + ipamExternalResourceVerificationTokenIds: [Swift.String]? = nil, + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil + ) + { + self.dryRun = dryRun + self.filters = filters + self.ipamExternalResourceVerificationTokenIds = ipamExternalResourceVerificationTokenIds + self.maxResults = maxResults + self.nextToken = nextToken + } +} + +public struct DescribeIpamExternalResourceVerificationTokensOutput { + /// Verification tokens. + public var ipamExternalResourceVerificationTokens: [EC2ClientTypes.IpamExternalResourceVerificationToken]? + /// The token to use to retrieve the next page of results. This value is null when there are no more results to return. + public var nextToken: Swift.String? + + public init( + ipamExternalResourceVerificationTokens: [EC2ClientTypes.IpamExternalResourceVerificationToken]? = nil, + nextToken: Swift.String? = nil + ) + { + self.ipamExternalResourceVerificationTokens = ipamExternalResourceVerificationTokens + self.nextToken = nextToken + } +} + public struct DescribeIpamPoolsInput { /// A check for 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? @@ -44345,7 +44758,11 @@ public struct DescribePlacementGroupsInput { public var filters: [EC2ClientTypes.Filter]? /// The IDs of the placement groups. public var groupIds: [Swift.String]? - /// The names of the placement groups. Default: Describes all your placement groups, or only those otherwise specified. + /// The names of the placement groups. Constraints: + /// + /// * You can specify a name only if the placement group is owned by your account. + /// + /// * If a placement group is shared with your account, specifying the name results in an error. You must use the GroupId parameter instead. public var groupNames: [Swift.String]? public init( @@ -47085,7 +47502,7 @@ extension EC2ClientTypes { public var tagSpecifications: [EC2ClientTypes.SpotFleetTagSpecification]? /// The base64-encoded user data that instances use when starting up. User data is limited to 16 KB. public var userData: Swift.String? - /// The number of units provided by the specified instance type. These are the same units that you chose to set the target capacity in terms of instances, or a performance characteristic such as vCPUs, memory, or I/O. If the target capacity divided by this value is not a whole number, Amazon EC2 rounds the number of instances to the next whole number. If this value is not specified, the default is 1. + /// The number of units provided by the specified instance type. These are the same units that you chose to set the target capacity in terms of instances, or a performance characteristic such as vCPUs, memory, or I/O. If the target capacity divided by this value is not a whole number, Amazon EC2 rounds the number of instances to the next whole number. If this value is not specified, the default is 1. When specifying weights, the price used in the lowestPrice and priceCapacityOptimized allocation strategies is per unit hour (where the instance price is divided by the specified weight). However, if all the specified weights are above the requested TargetCapacity, resulting in only 1 instance being launched, the price used is per instance hour. public var weightedCapacity: Swift.Double? public init( @@ -47154,7 +47571,7 @@ extension EC2ClientTypes { public var spotPrice: Swift.String? /// The ID of the subnet in which to launch the instances. public var subnetId: Swift.String? - /// The number of units provided by the specified instance type. When specifying weights, the price used in the lowest-price and price-capacity-optimized allocation strategies is per unit hour (where the instance price is divided by the specified weight). However, if all the specified weights are above the requested TargetCapacity, resulting in only 1 instance being launched, the price used is per instance hour. + /// The number of units provided by the specified instance type. These are the same units that you chose to set the target capacity in terms of instances, or a performance characteristic such as vCPUs, memory, or I/O. If the target capacity divided by this value is not a whole number, Amazon EC2 rounds the number of instances to the next whole number. If this value is not specified, the default is 1. When specifying weights, the price used in the lowestPrice and priceCapacityOptimized allocation strategies is per unit hour (where the instance price is divided by the specified weight). However, if all the specified weights are above the requested TargetCapacity, resulting in only 1 instance being launched, the price used is per instance hour. public var weightedCapacity: Swift.Double? public init( @@ -50017,11 +50434,11 @@ extension EC2ClientTypes { } extension EC2ClientTypes { - /// Describes the modification status of an EBS volume. If the volume has never been modified, some element values will be null. + /// Describes the modification status of an EBS volume. public struct VolumeModification { /// The modification completion or failure time. public var endTime: Foundation.Date? - /// The current modification state. The modification state is null for unmodified volumes. + /// The current modification state. public var modificationState: EC2ClientTypes.VolumeModificationState? /// The original IOPS rate of the volume. public var originalIops: Swift.Int? @@ -55784,6 +56201,38 @@ public struct GetIpamDiscoveredResourceCidrsInput { } } +extension EC2ClientTypes { + + public enum IpamResourceCidrIpSource: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case amazon + case byoip + case `none` + case sdkUnknown(Swift.String) + + public static var allCases: [IpamResourceCidrIpSource] { + return [ + .amazon, + .byoip, + .none + ] + } + + 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 .byoip: return "byoip" + case .none: return "none" + case let .sdkUnknown(s): return s + } + } + } +} + extension EC2ClientTypes { public enum IpamNetworkInterfaceAttachmentStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { @@ -55859,6 +56308,8 @@ extension EC2ClientTypes { public struct IpamDiscoveredResourceCidr { /// The Availability Zone ID. public var availabilityZoneId: Swift.String? + /// The source that allocated the IP address space. byoip or amazon indicates public IP address space allocated by Amazon or space that you have allocated with Bring your own IP (BYOIP). none indicates private space. + public var ipSource: EC2ClientTypes.IpamResourceCidrIpSource? /// The percentage of IP address space in use. To convert the decimal to a percentage, multiply the decimal by 100. Note the following: /// /// * For resources that are VPCs, this is the percentage of IP address space in the VPC that's taken up by subnet CIDRs. @@ -55869,7 +56320,7 @@ extension EC2ClientTypes { public var ipUsage: Swift.Double? /// The resource discovery ID. public var ipamResourceDiscoveryId: Swift.String? - /// For elastic IP addresses, this is the status of an attached network interface. + /// For elastic network interfaces, this is the status of whether or not the elastic network interface is attached. public var networkInterfaceAttachmentStatus: EC2ClientTypes.IpamNetworkInterfaceAttachmentStatus? /// The resource CIDR. public var resourceCidr: Swift.String? @@ -55890,6 +56341,7 @@ extension EC2ClientTypes { public init( availabilityZoneId: Swift.String? = nil, + ipSource: EC2ClientTypes.IpamResourceCidrIpSource? = nil, ipUsage: Swift.Double? = nil, ipamResourceDiscoveryId: Swift.String? = nil, networkInterfaceAttachmentStatus: EC2ClientTypes.IpamNetworkInterfaceAttachmentStatus? = nil, @@ -55904,6 +56356,7 @@ extension EC2ClientTypes { ) { self.availabilityZoneId = availabilityZoneId + self.ipSource = ipSource self.ipUsage = ipUsage self.ipamResourceDiscoveryId = ipamResourceDiscoveryId self.networkInterfaceAttachmentStatus = networkInterfaceAttachmentStatus @@ -60211,6 +60664,8 @@ public struct ModifyIpamInput { public var description: Swift.String? /// A check for 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? + /// Enable this option to use your own GUA ranges as private IPv6 addresses. This option is disabled by default. + public var enablePrivateGua: Swift.Bool? /// The ID of the IPAM you want to modify. /// This member is required. public var ipamId: Swift.String? @@ -60223,6 +60678,7 @@ public struct ModifyIpamInput { addOperatingRegions: [EC2ClientTypes.AddIpamOperatingRegion]? = nil, description: Swift.String? = nil, dryRun: Swift.Bool? = nil, + enablePrivateGua: Swift.Bool? = nil, ipamId: Swift.String? = nil, removeOperatingRegions: [EC2ClientTypes.RemoveIpamOperatingRegion]? = nil, tier: EC2ClientTypes.IpamTier? = nil @@ -60231,6 +60687,7 @@ public struct ModifyIpamInput { self.addOperatingRegions = addOperatingRegions self.description = description self.dryRun = dryRun + self.enablePrivateGua = enablePrivateGua self.ipamId = ipamId self.removeOperatingRegions = removeOperatingRegions self.tier = tier @@ -63145,36 +63602,73 @@ extension EC2ClientTypes { } +extension EC2ClientTypes { + + public enum VerificationMethod: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case dnsToken + case remarksX509 + case sdkUnknown(Swift.String) + + public static var allCases: [VerificationMethod] { + return [ + .dnsToken, + .remarksX509 + ] + } + + 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 .dnsToken: return "dns-token" + case .remarksX509: return "remarks-x509" + case let .sdkUnknown(s): return s + } + } + } +} + public struct ProvisionIpamPoolCidrInput { /// The CIDR you want to assign to the IPAM pool. Either "NetmaskLength" or "Cidr" is required. This value will be null if you specify "NetmaskLength" and will be filled in during the provisioning process. public var cidr: Swift.String? - /// A signed document that proves that you are authorized to bring a specified IP address range to Amazon using BYOIP. This option applies to public pools only. + /// A signed document that proves that you are authorized to bring a specified IP address range to Amazon using BYOIP. This option only applies to IPv4 and IPv6 pools in the public scope. public var cidrAuthorizationContext: EC2ClientTypes.IpamCidrAuthorizationContext? /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html). public var clientToken: Swift.String? /// A check for 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? + /// Verification token ID. This option only applies to IPv4 and IPv6 pools in the public scope. + public var ipamExternalResourceVerificationTokenId: Swift.String? /// The ID of the IPAM pool to which you want to assign a CIDR. /// This member is required. public var ipamPoolId: Swift.String? /// The netmask length of the CIDR you'd like to provision to a pool. Can be used for provisioning Amazon-provided IPv6 CIDRs to top-level pools and for provisioning CIDRs to pools with source pools. Cannot be used to provision BYOIP CIDRs to top-level pools. Either "NetmaskLength" or "Cidr" is required. public var netmaskLength: Swift.Int? + /// The method for verifying control of a public IP address range. Defaults to remarks-x509 if not specified. This option only applies to IPv4 and IPv6 pools in the public scope. + public var verificationMethod: EC2ClientTypes.VerificationMethod? public init( cidr: Swift.String? = nil, cidrAuthorizationContext: EC2ClientTypes.IpamCidrAuthorizationContext? = nil, clientToken: Swift.String? = nil, dryRun: Swift.Bool? = nil, + ipamExternalResourceVerificationTokenId: Swift.String? = nil, ipamPoolId: Swift.String? = nil, - netmaskLength: Swift.Int? = nil + netmaskLength: Swift.Int? = nil, + verificationMethod: EC2ClientTypes.VerificationMethod? = nil ) { self.cidr = cidr self.cidrAuthorizationContext = cidrAuthorizationContext self.clientToken = clientToken self.dryRun = dryRun + self.ipamExternalResourceVerificationTokenId = ipamExternalResourceVerificationTokenId self.ipamPoolId = ipamPoolId self.netmaskLength = netmaskLength + self.verificationMethod = verificationMethod } } @@ -63196,7 +63690,7 @@ public struct ProvisionPublicIpv4PoolCidrInput { /// The ID of the IPAM pool you would like to use to allocate this CIDR. /// This member is required. public var ipamPoolId: Swift.String? - /// The netmask length of the CIDR you would like to allocate to the public IPv4 pool. + /// The netmask length of the CIDR you would like to allocate to the public IPv4 pool. The least specific netmask length you can define is 24. /// This member is required. public var netmaskLength: Swift.Int? /// The Availability Zone (AZ) or Local Zone (LZ) network border group that the resource that the IP address is assigned to is in. Defaults to an AZ network border group. For more information on available Local Zones, see [Local Zone availability](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-zone-avail) in the Amazon EC2 User Guide. @@ -67496,6 +67990,13 @@ extension CreateIpamInput { } } +extension CreateIpamExternalResourceVerificationTokenInput { + + static func urlPathProvider(_ value: CreateIpamExternalResourceVerificationTokenInput) -> Swift.String? { + return "/" + } +} + extension CreateIpamPoolInput { static func urlPathProvider(_ value: CreateIpamPoolInput) -> Swift.String? { @@ -68028,6 +68529,13 @@ extension DeleteIpamInput { } } +extension DeleteIpamExternalResourceVerificationTokenInput { + + static func urlPathProvider(_ value: DeleteIpamExternalResourceVerificationTokenInput) -> Swift.String? { + return "/" + } +} + extension DeleteIpamPoolInput { static func urlPathProvider(_ value: DeleteIpamPoolInput) -> Swift.String? { @@ -68896,6 +69404,13 @@ extension DescribeIpamByoasnInput { } } +extension DescribeIpamExternalResourceVerificationTokensInput { + + static func urlPathProvider(_ value: DescribeIpamExternalResourceVerificationTokensInput) -> Swift.String? { + return "/" + } +} + extension DescribeIpamPoolsInput { static func urlPathProvider(_ value: DescribeIpamPoolsInput) -> Swift.String? { @@ -72382,6 +72897,7 @@ extension CreateIpamInput { try writer["ClientToken"].write(value.clientToken) try writer["Description"].write(value.description) try writer["DryRun"].write(value.dryRun) + try writer["EnablePrivateGua"].write(value.enablePrivateGua) try writer["OperatingRegion"].writeList(value.operatingRegions, memberWritingClosure: EC2ClientTypes.AddIpamOperatingRegion.write(value:to:), memberNodeInfo: "Member", isFlattened: true) try writer["TagSpecification"].writeList(value.tagSpecifications, memberWritingClosure: EC2ClientTypes.TagSpecification.write(value:to:), memberNodeInfo: "Item", isFlattened: true) try writer["Tier"].write(value.tier) @@ -72390,6 +72906,19 @@ extension CreateIpamInput { } } +extension CreateIpamExternalResourceVerificationTokenInput { + + static func write(value: CreateIpamExternalResourceVerificationTokenInput?, to writer: SmithyFormURL.Writer) throws { + guard let value else { return } + try writer["ClientToken"].write(value.clientToken) + try writer["DryRun"].write(value.dryRun) + try writer["IpamId"].write(value.ipamId) + try writer["TagSpecification"].writeList(value.tagSpecifications, memberWritingClosure: EC2ClientTypes.TagSpecification.write(value:to:), memberNodeInfo: "Item", isFlattened: true) + try writer["Action"].write("CreateIpamExternalResourceVerificationToken") + try writer["Version"].write("2016-11-15") + } +} + extension CreateIpamPoolInput { static func write(value: CreateIpamPoolInput?, to writer: SmithyFormURL.Writer) throws { @@ -73531,6 +74060,17 @@ extension DeleteIpamInput { } } +extension DeleteIpamExternalResourceVerificationTokenInput { + + static func write(value: DeleteIpamExternalResourceVerificationTokenInput?, to writer: SmithyFormURL.Writer) throws { + guard let value else { return } + try writer["DryRun"].write(value.dryRun) + try writer["IpamExternalResourceVerificationTokenId"].write(value.ipamExternalResourceVerificationTokenId) + try writer["Action"].write("DeleteIpamExternalResourceVerificationToken") + try writer["Version"].write("2016-11-15") + } +} + extension DeleteIpamPoolInput { static func write(value: DeleteIpamPoolInput?, to writer: SmithyFormURL.Writer) throws { @@ -75062,6 +75602,20 @@ extension DescribeIpamByoasnInput { } } +extension DescribeIpamExternalResourceVerificationTokensInput { + + static func write(value: DescribeIpamExternalResourceVerificationTokensInput?, to writer: SmithyFormURL.Writer) throws { + guard let value else { return } + try writer["DryRun"].write(value.dryRun) + try writer["Filter"].writeList(value.filters, memberWritingClosure: EC2ClientTypes.Filter.write(value:to:), memberNodeInfo: "Filter", isFlattened: true) + try writer["IpamExternalResourceVerificationTokenId"].writeList(value.ipamExternalResourceVerificationTokenIds, memberWritingClosure: SmithyReadWrite.WritingClosures.writeString(value:to:), memberNodeInfo: "Item", isFlattened: true) + try writer["MaxResults"].write(value.maxResults) + try writer["NextToken"].write(value.nextToken) + try writer["Action"].write("DescribeIpamExternalResourceVerificationTokens") + try writer["Version"].write("2016-11-15") + } +} + extension DescribeIpamPoolsInput { static func write(value: DescribeIpamPoolsInput?, to writer: SmithyFormURL.Writer) throws { @@ -78174,6 +78728,7 @@ extension ModifyIpamInput { try writer["AddOperatingRegion"].writeList(value.addOperatingRegions, memberWritingClosure: EC2ClientTypes.AddIpamOperatingRegion.write(value:to:), memberNodeInfo: "Member", isFlattened: true) try writer["Description"].write(value.description) try writer["DryRun"].write(value.dryRun) + try writer["EnablePrivateGua"].write(value.enablePrivateGua) try writer["IpamId"].write(value.ipamId) try writer["RemoveOperatingRegion"].writeList(value.removeOperatingRegions, memberWritingClosure: EC2ClientTypes.RemoveIpamOperatingRegion.write(value:to:), memberNodeInfo: "Member", isFlattened: true) try writer["Tier"].write(value.tier) @@ -78878,8 +79433,10 @@ extension ProvisionIpamPoolCidrInput { try writer["CidrAuthorizationContext"].write(value.cidrAuthorizationContext, with: EC2ClientTypes.IpamCidrAuthorizationContext.write(value:to:)) try writer["ClientToken"].write(value.clientToken) try writer["DryRun"].write(value.dryRun) + try writer["IpamExternalResourceVerificationTokenId"].write(value.ipamExternalResourceVerificationTokenId) try writer["IpamPoolId"].write(value.ipamPoolId) try writer["NetmaskLength"].write(value.netmaskLength) + try writer["VerificationMethod"].write(value.verificationMethod) try writer["Action"].write("ProvisionIpamPoolCidr") try writer["Version"].write("2016-11-15") } @@ -80723,6 +81280,18 @@ extension CreateIpamOutput { } } +extension CreateIpamExternalResourceVerificationTokenOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> CreateIpamExternalResourceVerificationTokenOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyXML.Reader.from(data: data) + let reader = responseReader + var value = CreateIpamExternalResourceVerificationTokenOutput() + value.ipamExternalResourceVerificationToken = try reader["ipamExternalResourceVerificationToken"].readIfPresent(with: EC2ClientTypes.IpamExternalResourceVerificationToken.read(from:)) + return value + } +} + extension CreateIpamPoolOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> CreateIpamPoolOutput { @@ -81658,6 +82227,18 @@ extension DeleteIpamOutput { } } +extension DeleteIpamExternalResourceVerificationTokenOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> DeleteIpamExternalResourceVerificationTokenOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyXML.Reader.from(data: data) + let reader = responseReader + var value = DeleteIpamExternalResourceVerificationTokenOutput() + value.ipamExternalResourceVerificationToken = try reader["ipamExternalResourceVerificationToken"].readIfPresent(with: EC2ClientTypes.IpamExternalResourceVerificationToken.read(from:)) + return value + } +} + extension DeleteIpamPoolOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> DeleteIpamPoolOutput { @@ -83143,6 +83724,19 @@ extension DescribeIpamByoasnOutput { } } +extension DescribeIpamExternalResourceVerificationTokensOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> DescribeIpamExternalResourceVerificationTokensOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyXML.Reader.from(data: data) + let reader = responseReader + var value = DescribeIpamExternalResourceVerificationTokensOutput() + value.ipamExternalResourceVerificationTokens = try reader["ipamExternalResourceVerificationTokenSet"].readListIfPresent(memberReadingClosure: EC2ClientTypes.IpamExternalResourceVerificationToken.read(from:), memberNodeInfo: "item", isFlattened: false) + value.nextToken = try reader["nextToken"].readIfPresent() + return value + } +} + extension DescribeIpamPoolsOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> DescribeIpamPoolsOutput { @@ -88424,6 +89018,19 @@ enum CreateIpamOutputError { } } +enum CreateIpamExternalResourceVerificationTokenOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyXML.Reader.from(data: data) + let baseError = try AWSClientRuntime.EC2QueryError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum CreateIpamPoolOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -89412,6 +90019,19 @@ enum DeleteIpamOutputError { } } +enum DeleteIpamExternalResourceVerificationTokenOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyXML.Reader.from(data: data) + let baseError = try AWSClientRuntime.EC2QueryError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum DeleteIpamPoolOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -91024,6 +91644,19 @@ enum DescribeIpamByoasnOutputError { } } +enum DescribeIpamExternalResourceVerificationTokensOutputError { + + static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { + let data = try await httpResponse.data() + let responseReader = try SmithyXML.Reader.from(data: data) + let baseError = try AWSClientRuntime.EC2QueryError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum DescribeIpamPoolsOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -95956,6 +96589,8 @@ extension EC2ClientTypes.SubnetIpv6CidrBlockAssociation { value.associationId = try reader["associationId"].readIfPresent() value.ipv6CidrBlock = try reader["ipv6CidrBlock"].readIfPresent() value.ipv6CidrBlockState = try reader["ipv6CidrBlockState"].readIfPresent(with: EC2ClientTypes.SubnetCidrBlockState.read(from:)) + value.ipv6AddressAttribute = try reader["ipv6AddressAttribute"].readIfPresent() + value.ipSource = try reader["ipSource"].readIfPresent() return value } } @@ -96025,6 +96660,8 @@ extension EC2ClientTypes.VpcIpv6CidrBlockAssociation { value.ipv6CidrBlockState = try reader["ipv6CidrBlockState"].readIfPresent(with: EC2ClientTypes.VpcCidrBlockState.read(from:)) value.networkBorderGroup = try reader["networkBorderGroup"].readIfPresent() value.ipv6Pool = try reader["ipv6Pool"].readIfPresent() + value.ipv6AddressAttribute = try reader["ipv6AddressAttribute"].readIfPresent() + value.ipSource = try reader["ipSource"].readIfPresent() return value } } @@ -97051,6 +97688,7 @@ extension EC2ClientTypes.Ipam { value.resourceDiscoveryAssociationCount = try reader["resourceDiscoveryAssociationCount"].readIfPresent() value.stateMessage = try reader["stateMessage"].readIfPresent() value.tier = try reader["tier"].readIfPresent() + value.enablePrivateGua = try reader["enablePrivateGua"].readIfPresent() return value } } @@ -97065,6 +97703,26 @@ extension EC2ClientTypes.IpamOperatingRegion { } } +extension EC2ClientTypes.IpamExternalResourceVerificationToken { + + static func read(from reader: SmithyXML.Reader) throws -> EC2ClientTypes.IpamExternalResourceVerificationToken { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = EC2ClientTypes.IpamExternalResourceVerificationToken() + value.ipamExternalResourceVerificationTokenId = try reader["ipamExternalResourceVerificationTokenId"].readIfPresent() + value.ipamExternalResourceVerificationTokenArn = try reader["ipamExternalResourceVerificationTokenArn"].readIfPresent() + value.ipamId = try reader["ipamId"].readIfPresent() + value.ipamArn = try reader["ipamArn"].readIfPresent() + value.ipamRegion = try reader["ipamRegion"].readIfPresent() + value.tokenValue = try reader["tokenValue"].readIfPresent() + value.tokenName = try reader["tokenName"].readIfPresent() + value.notAfter = try reader["notAfter"].readTimestampIfPresent(format: .dateTime) + value.status = try reader["status"].readIfPresent() + value.tags = try reader["tagSet"].readListIfPresent(memberReadingClosure: EC2ClientTypes.Tag.read(from:), memberNodeInfo: "item", isFlattened: false) + value.state = try reader["state"].readIfPresent() + return value + } +} + extension EC2ClientTypes.IpamPool { static func read(from reader: SmithyXML.Reader) throws -> EC2ClientTypes.IpamPool { @@ -103670,6 +104328,7 @@ extension EC2ClientTypes.IpamDiscoveredResourceCidr { value.resourceId = try reader["resourceId"].readIfPresent() value.resourceOwnerId = try reader["resourceOwnerId"].readIfPresent() value.resourceCidr = try reader["resourceCidr"].readIfPresent() + value.ipSource = try reader["ipSource"].readIfPresent() value.resourceType = try reader["resourceType"].readIfPresent() value.resourceTags = try reader["resourceTagSet"].readListIfPresent(memberReadingClosure: EC2ClientTypes.IpamResourceTag.read(from:), memberNodeInfo: "item", isFlattened: false) value.ipUsage = try reader["ipUsage"].readIfPresent() diff --git a/Sources/Services/AWSGlue/Sources/AWSGlue/Models.swift b/Sources/Services/AWSGlue/Sources/AWSGlue/Models.swift index 1df26d367e7..3c73146d8f5 100644 --- a/Sources/Services/AWSGlue/Sources/AWSGlue/Models.swift +++ b/Sources/Services/AWSGlue/Sources/AWSGlue/Models.swift @@ -8,6 +8,7 @@ // Code generated by smithy-swift-codegen. DO NOT EDIT! import Foundation +import class ClientRuntime.Indirect import class SmithyHTTPAPI.HTTPResponse import class SmithyJSON.Reader import class SmithyJSON.Writer @@ -3599,6 +3600,8 @@ extension GlueClientTypes { /// The name of your data target. /// This member is required. public var name: Swift.String? + /// The partition keys used to distribute data across multiple partitions or shards based on a specific key or set of key. + public var partitionKeys: [[Swift.String]]? /// The table that defines the schema of your output data. This table must already exist in the Data Catalog. /// This member is required. public var table: Swift.String? @@ -3607,12 +3610,14 @@ extension GlueClientTypes { database: Swift.String? = nil, inputs: [Swift.String]? = nil, name: Swift.String? = nil, + partitionKeys: [[Swift.String]]? = nil, table: Swift.String? = nil ) { self.database = database self.inputs = inputs self.name = name + self.partitionKeys = partitionKeys self.table = table } } @@ -9724,6 +9729,7 @@ public struct CreateClassifierOutput { extension GlueClientTypes { public enum ConnectionPropertyKey: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case clusterIdentifier case configFiles case connectionUrl case connectorClassName @@ -9731,6 +9737,7 @@ extension GlueClientTypes { case connectorUrl case customJdbcCert case customJdbcCertString + case database case encryptedKafkaClientKeystorePassword case encryptedKafkaClientKeyPassword case encryptedKafkaSaslPlainPassword @@ -9763,14 +9770,17 @@ extension GlueClientTypes { case kafkaSslEnabled case password case port + case region case roleArn case secretId case skipCustomJdbcCertValidation case userName + case workgroupName case sdkUnknown(Swift.String) public static var allCases: [ConnectionPropertyKey] { return [ + .clusterIdentifier, .configFiles, .connectionUrl, .connectorClassName, @@ -9778,6 +9788,7 @@ extension GlueClientTypes { .connectorUrl, .customJdbcCert, .customJdbcCertString, + .database, .encryptedKafkaClientKeystorePassword, .encryptedKafkaClientKeyPassword, .encryptedKafkaSaslPlainPassword, @@ -9810,10 +9821,12 @@ extension GlueClientTypes { .kafkaSslEnabled, .password, .port, + .region, .roleArn, .secretId, .skipCustomJdbcCertValidation, - .userName + .userName, + .workgroupName ] } @@ -9824,6 +9837,7 @@ extension GlueClientTypes { public var rawValue: Swift.String { switch self { + case .clusterIdentifier: return "CLUSTER_IDENTIFIER" case .configFiles: return "CONFIG_FILES" case .connectionUrl: return "CONNECTION_URL" case .connectorClassName: return "CONNECTOR_CLASS_NAME" @@ -9831,6 +9845,7 @@ extension GlueClientTypes { case .connectorUrl: return "CONNECTOR_URL" case .customJdbcCert: return "CUSTOM_JDBC_CERT" case .customJdbcCertString: return "CUSTOM_JDBC_CERT_STRING" + case .database: return "DATABASE" case .encryptedKafkaClientKeystorePassword: return "ENCRYPTED_KAFKA_CLIENT_KEYSTORE_PASSWORD" case .encryptedKafkaClientKeyPassword: return "ENCRYPTED_KAFKA_CLIENT_KEY_PASSWORD" case .encryptedKafkaSaslPlainPassword: return "ENCRYPTED_KAFKA_SASL_PLAIN_PASSWORD" @@ -9863,10 +9878,12 @@ extension GlueClientTypes { case .kafkaSslEnabled: return "KAFKA_SSL_ENABLED" case .password: return "PASSWORD" case .port: return "PORT" + case .region: return "REGION" case .roleArn: return "ROLE_ARN" case .secretId: return "SECRET_ID" case .skipCustomJdbcCertValidation: return "SKIP_CUSTOM_JDBC_CERT_VALIDATION" case .userName: return "USERNAME" + case .workgroupName: return "WORKGROUP_NAME" case let .sdkUnknown(s): return s } } @@ -9884,6 +9901,8 @@ extension GlueClientTypes { case network case salesforce case sftp + case viewValidationAthena + case viewValidationRedshift case sdkUnknown(Swift.String) public static var allCases: [ConnectionType] { @@ -9895,7 +9914,9 @@ extension GlueClientTypes { .mongodb, .network, .salesforce, - .sftp + .sftp, + .viewValidationAthena, + .viewValidationRedshift ] } @@ -9914,6 +9935,8 @@ extension GlueClientTypes { case .network: return "NETWORK" case .salesforce: return "SALESFORCE" case .sftp: return "SFTP" + case .viewValidationAthena: return "VIEW_VALIDATION_ATHENA" + case .viewValidationRedshift: return "VIEW_VALIDATION_REDSHIFT" case let .sdkUnknown(s): return s } } @@ -9998,6 +10021,10 @@ extension GlueClientTypes { /// /// /// + /// * VIEW_VALIDATION_REDSHIFT - Designates a connection used for view validation by Amazon Redshift. + /// + /// * VIEW_VALIDATION_ATHENA - Designates a connection used for view validation by Amazon Athena. + /// /// * NETWORK - Designates a network connection to a data source within an Amazon Virtual Private Cloud environment (Amazon VPC). NETWORK Connections do not require ConnectionParameters. Instead, provide a PhysicalConnectionRequirements. /// /// * MARKETPLACE - Uses configuration settings contained in a connector purchased from Amazon Web Services Marketplace to read from and write to data stores that are not natively supported by Glue. MARKETPLACE Connections use the following ConnectionParameters. @@ -14862,6 +14889,16 @@ extension GlueClientTypes { /// * KAFKA_SASL_GSSAPI_SERVICE - The Kerberos service name, as set with sasl.kerberos.service.name in your [Kafka Configuration](https://kafka.apache.org/documentation/#brokerconfigs_sasl.kerberos.service.name). /// /// * KAFKA_SASL_GSSAPI_PRINCIPAL - The name of the Kerberos princial used by Glue. For more information, see [Kafka Documentation: Configuring Kafka Brokers](https://kafka.apache.org/documentation/#security_sasl_kerberos_clientconfig). + /// + /// * ROLE_ARN - The role to be used for running queries. + /// + /// * REGION - The Amazon Web Services Region where queries will be run. + /// + /// * WORKGROUP_NAME - The name of an Amazon Redshift serverless workgroup or Amazon Athena workgroup in which queries will run. + /// + /// * CLUSTER_IDENTIFIER - The cluster identifier of an Amazon Redshift cluster in which queries will run. + /// + /// * DATABASE - The Amazon Redshift database that you are connecting to. public var connectionProperties: [Swift.String: Swift.String]? /// The type of the connection. Currently, SFTP is not supported. public var connectionType: GlueClientTypes.ConnectionType? @@ -18385,6 +18422,8 @@ public struct GetTableInput { /// The name of the database in the catalog in which the table resides. For Hive compatibility, this name is entirely lowercase. /// This member is required. public var databaseName: Swift.String? + /// Specifies whether to include status details related to a request to create or update an Glue Data Catalog view. + public var includeStatusDetails: Swift.Bool? /// The name of the table for which to retrieve the definition. For Hive compatibility, this name is entirely lowercase. /// This member is required. public var name: Swift.String? @@ -18396,6 +18435,7 @@ public struct GetTableInput { public init( catalogId: Swift.String? = nil, databaseName: Swift.String? = nil, + includeStatusDetails: Swift.Bool? = nil, name: Swift.String? = nil, queryAsOfTime: Foundation.Date? = nil, transactionId: Swift.String? = nil @@ -18403,6 +18443,7 @@ public struct GetTableInput { { self.catalogId = catalogId self.databaseName = databaseName + self.includeStatusDetails = includeStatusDetails self.name = name self.queryAsOfTime = queryAsOfTime self.transactionId = transactionId @@ -18433,6 +18474,109 @@ extension GlueClientTypes { } +extension GlueClientTypes { + + public enum ResourceAction: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case create + case update + case sdkUnknown(Swift.String) + + public static var allCases: [ResourceAction] { + return [ + .create, + .update + ] + } + + 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 .create: return "CREATE" + case .update: return "UPDATE" + case let .sdkUnknown(s): return s + } + } + } +} + +extension GlueClientTypes { + + public enum ResourceState: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case failed + case inProgress + case queued + case stopped + case success + case sdkUnknown(Swift.String) + + public static var allCases: [ResourceState] { + return [ + .failed, + .inProgress, + .queued, + .stopped, + .success + ] + } + + 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 .failed: return "FAILED" + case .inProgress: return "IN_PROGRESS" + case .queued: return "QUEUED" + case .stopped: return "STOPPED" + case .success: return "SUCCESS" + case let .sdkUnknown(s): return s + } + } + } +} + +extension GlueClientTypes { + /// A structure that contains information for an analytical engine to validate a view, prior to persisting the view metadata. Used in the case of direct UpdateTable or CreateTable API calls. + public struct ViewValidation { + /// The dialect of the query engine. + public var dialect: GlueClientTypes.ViewDialect? + /// The version of the dialect of the query engine. For example, 3.0.0. + public var dialectVersion: Swift.String? + /// An error associated with the validation. + public var error: GlueClientTypes.ErrorDetail? + /// The state of the validation. + public var state: GlueClientTypes.ResourceState? + /// The time of the last update. + public var updateTime: Foundation.Date? + /// The SELECT query that defines the view, as provided by the customer. + public var viewValidationText: Swift.String? + + public init( + dialect: GlueClientTypes.ViewDialect? = nil, + dialectVersion: Swift.String? = nil, + error: GlueClientTypes.ErrorDetail? = nil, + state: GlueClientTypes.ResourceState? = nil, + updateTime: Foundation.Date? = nil, + viewValidationText: Swift.String? = nil + ) + { + self.dialect = dialect + self.dialectVersion = dialectVersion + self.error = error + self.state = state + self.updateTime = updateTime + self.viewValidationText = viewValidationText + } + } + +} + extension GlueClientTypes { /// A structure that contains the dialect of the view, and the query that defines the view. public struct ViewRepresentation { @@ -18499,123 +18643,6 @@ extension GlueClientTypes { } -extension GlueClientTypes { - /// Represents a collection of related data organized in columns and rows. - public struct Table { - /// The ID of the Data Catalog in which the table resides. - public var catalogId: Swift.String? - /// The time when the table definition was created in the Data Catalog. - public var createTime: Foundation.Date? - /// The person or entity who created the table. - public var createdBy: Swift.String? - /// The name of the database where the table metadata resides. For Hive compatibility, this must be all lowercase. - public var databaseName: Swift.String? - /// A description of the table. - public var description: Swift.String? - /// A FederatedTable structure that references an entity outside the Glue Data Catalog. - public var federatedTable: GlueClientTypes.FederatedTable? - /// Specifies whether the view supports the SQL dialects of one or more different query engines and can therefore be read by those engines. - public var isMultiDialectView: Swift.Bool? - /// Indicates whether the table has been registered with Lake Formation. - public var isRegisteredWithLakeFormation: Swift.Bool - /// The last time that the table was accessed. This is usually taken from HDFS, and might not be reliable. - public var lastAccessTime: Foundation.Date? - /// The last time that column statistics were computed for this table. - public var lastAnalyzedTime: Foundation.Date? - /// The table name. For Hive compatibility, this must be entirely lowercase. - /// This member is required. - public var name: Swift.String? - /// The owner of the table. - public var owner: Swift.String? - /// These key-value pairs define properties associated with the table. - public var parameters: [Swift.String: Swift.String]? - /// A list of columns by which the table is partitioned. Only primitive types are supported as partition keys. When you create a table used by Amazon Athena, and you do not specify any partitionKeys, you must at least set the value of partitionKeys to an empty list. For example: "PartitionKeys": [] - public var partitionKeys: [GlueClientTypes.Column]? - /// The retention time for this table. - public var retention: Swift.Int - /// A storage descriptor containing information about the physical storage of this table. - public var storageDescriptor: GlueClientTypes.StorageDescriptor? - /// The type of this table. Glue will create tables with the EXTERNAL_TABLE type. Other services, such as Athena, may create tables with additional table types. Glue related table types: EXTERNAL_TABLE Hive compatible attribute - indicates a non-Hive managed table. GOVERNED Used by Lake Formation. The Glue Data Catalog understands GOVERNED. - public var tableType: Swift.String? - /// A TableIdentifier structure that describes a target table for resource linking. - public var targetTable: GlueClientTypes.TableIdentifier? - /// The last time that the table was updated. - public var updateTime: Foundation.Date? - /// The ID of the table version. - public var versionId: Swift.String? - /// A structure that contains all the information that defines the view, including the dialect or dialects for the view, and the query. - public var viewDefinition: GlueClientTypes.ViewDefinition? - /// Included for Apache Hive compatibility. Not used in the normal course of Glue operations. - public var viewExpandedText: Swift.String? - /// Included for Apache Hive compatibility. Not used in the normal course of Glue operations. If the table is a VIRTUAL_VIEW, certain Athena configuration encoded in base64. - public var viewOriginalText: Swift.String? - - public init( - catalogId: Swift.String? = nil, - createTime: Foundation.Date? = nil, - createdBy: Swift.String? = nil, - databaseName: Swift.String? = nil, - description: Swift.String? = nil, - federatedTable: GlueClientTypes.FederatedTable? = nil, - isMultiDialectView: Swift.Bool? = nil, - isRegisteredWithLakeFormation: Swift.Bool = false, - lastAccessTime: Foundation.Date? = nil, - lastAnalyzedTime: Foundation.Date? = nil, - name: Swift.String? = nil, - owner: Swift.String? = nil, - parameters: [Swift.String: Swift.String]? = nil, - partitionKeys: [GlueClientTypes.Column]? = nil, - retention: Swift.Int = 0, - storageDescriptor: GlueClientTypes.StorageDescriptor? = nil, - tableType: Swift.String? = nil, - targetTable: GlueClientTypes.TableIdentifier? = nil, - updateTime: Foundation.Date? = nil, - versionId: Swift.String? = nil, - viewDefinition: GlueClientTypes.ViewDefinition? = nil, - viewExpandedText: Swift.String? = nil, - viewOriginalText: Swift.String? = nil - ) - { - self.catalogId = catalogId - self.createTime = createTime - self.createdBy = createdBy - self.databaseName = databaseName - self.description = description - self.federatedTable = federatedTable - self.isMultiDialectView = isMultiDialectView - self.isRegisteredWithLakeFormation = isRegisteredWithLakeFormation - self.lastAccessTime = lastAccessTime - self.lastAnalyzedTime = lastAnalyzedTime - self.name = name - self.owner = owner - self.parameters = parameters - self.partitionKeys = partitionKeys - self.retention = retention - self.storageDescriptor = storageDescriptor - self.tableType = tableType - self.targetTable = targetTable - self.updateTime = updateTime - self.versionId = versionId - self.viewDefinition = viewDefinition - self.viewExpandedText = viewExpandedText - self.viewOriginalText = viewOriginalText - } - } - -} - -public struct GetTableOutput { - /// The Table object that defines the specified table. - public var table: GlueClientTypes.Table? - - public init( - table: GlueClientTypes.Table? = nil - ) - { - self.table = table - } -} - public struct GetTableOptimizerInput { /// The Catalog ID of the table. /// This member is required. @@ -18676,6 +18703,8 @@ public struct GetTablesInput { public var databaseName: Swift.String? /// A regular expression pattern. If present, only those tables whose names match the pattern are returned. public var expression: Swift.String? + /// Specifies whether to include status details related to a request to create or update an Glue Data Catalog view. + public var includeStatusDetails: Swift.Bool? /// The maximum number of tables to return in a single response. public var maxResults: Swift.Int? /// A continuation token, included if this is a continuation call. @@ -18689,6 +18718,7 @@ public struct GetTablesInput { catalogId: Swift.String? = nil, databaseName: Swift.String? = nil, expression: Swift.String? = nil, + includeStatusDetails: Swift.Bool? = nil, maxResults: Swift.Int? = nil, nextToken: Swift.String? = nil, queryAsOfTime: Foundation.Date? = nil, @@ -18698,6 +18728,7 @@ public struct GetTablesInput { self.catalogId = catalogId self.databaseName = databaseName self.expression = expression + self.includeStatusDetails = includeStatusDetails self.maxResults = maxResults self.nextToken = nextToken self.queryAsOfTime = queryAsOfTime @@ -18705,22 +18736,6 @@ public struct GetTablesInput { } } -public struct GetTablesOutput { - /// A continuation token, present if the current list segment is not the last. - public var nextToken: Swift.String? - /// A list of the requested Table objects. - public var tableList: [GlueClientTypes.Table]? - - public init( - nextToken: Swift.String? = nil, - tableList: [GlueClientTypes.Table]? = nil - ) - { - self.nextToken = nextToken - self.tableList = tableList - } -} - public struct GetTableVersionInput { /// The ID of the Data Catalog where the tables reside. If none is provided, the Amazon Web Services account ID is used by default. public var catalogId: Swift.String? @@ -18747,38 +18762,6 @@ public struct GetTableVersionInput { } } -extension GlueClientTypes { - /// Specifies a version of a table. - public struct TableVersion { - /// The table in question. - public var table: GlueClientTypes.Table? - /// The ID value that identifies this table version. A VersionId is a string representation of an integer. Each version is incremented by 1. - public var versionId: Swift.String? - - public init( - table: GlueClientTypes.Table? = nil, - versionId: Swift.String? = nil - ) - { - self.table = table - self.versionId = versionId - } - } - -} - -public struct GetTableVersionOutput { - /// The requested table version. - public var tableVersion: GlueClientTypes.TableVersion? - - public init( - tableVersion: GlueClientTypes.TableVersion? = nil - ) - { - self.tableVersion = tableVersion - } -} - public struct GetTableVersionsInput { /// The ID of the Data Catalog where the tables reside. If none is provided, the Amazon Web Services account ID is used by default. public var catalogId: Swift.String? @@ -18809,22 +18792,6 @@ public struct GetTableVersionsInput { } } -public struct GetTableVersionsOutput { - /// A continuation token, if the list of available versions does not include the last one. - public var nextToken: Swift.String? - /// A list of strings identifying available versions of the specified table. - public var tableVersions: [GlueClientTypes.TableVersion]? - - public init( - nextToken: Swift.String? = nil, - tableVersions: [GlueClientTypes.TableVersion]? = nil - ) - { - self.nextToken = nextToken - self.tableVersions = tableVersions - } -} - public struct GetTagsInput { /// The Amazon Resource Name (ARN) of the resource for which to retrieve tags. /// This member is required. @@ -19292,54 +19259,6 @@ extension GlueClientTypes { } -public struct GetUnfilteredTableMetadataOutput { - /// A list of column names that the user has been granted access to. - public var authorizedColumns: [Swift.String]? - /// A list of column row filters. - public var cellFilters: [GlueClientTypes.ColumnRowFilter]? - /// Specifies whether the view supports the SQL dialects of one or more different query engines and can therefore be read by those engines. - public var isMultiDialectView: Swift.Bool - /// A flag that instructs the engine not to push user-provided operations into the logical plan of the view during query planning. However, if set this flag does not guarantee that the engine will comply. Refer to the engine's documentation to understand the guarantees provided, if any. - public var isProtected: Swift.Bool - /// A Boolean value that indicates whether the partition location is registered with Lake Formation. - public var isRegisteredWithLakeFormation: Swift.Bool - /// The Lake Formation data permissions of the caller on the table. Used to authorize the call when no view context is found. - public var permissions: [GlueClientTypes.Permission]? - /// A cryptographically generated query identifier generated by Glue or Lake Formation. - public var queryAuthorizationId: Swift.String? - /// The resource ARN of the parent resource extracted from the request. - public var resourceArn: Swift.String? - /// The filter that applies to the table. For example when applying the filter in SQL, it would go in the WHERE clause and can be evaluated by using an AND operator with any other predicates applied by the user querying the table. - public var rowFilter: Swift.String? - /// A Table object containing the table metadata. - public var table: GlueClientTypes.Table? - - public init( - authorizedColumns: [Swift.String]? = nil, - cellFilters: [GlueClientTypes.ColumnRowFilter]? = nil, - isMultiDialectView: Swift.Bool = false, - isProtected: Swift.Bool = false, - isRegisteredWithLakeFormation: Swift.Bool = false, - permissions: [GlueClientTypes.Permission]? = nil, - queryAuthorizationId: Swift.String? = nil, - resourceArn: Swift.String? = nil, - rowFilter: Swift.String? = nil, - table: GlueClientTypes.Table? = nil - ) - { - self.authorizedColumns = authorizedColumns - self.cellFilters = cellFilters - self.isMultiDialectView = isMultiDialectView - self.isProtected = isProtected - self.isRegisteredWithLakeFormation = isRegisteredWithLakeFormation - self.permissions = permissions - self.queryAuthorizationId = queryAuthorizationId - self.resourceArn = resourceArn - self.rowFilter = rowFilter - self.table = table - } -} - public struct GetUsageProfileInput { /// The name of the usage profile to retrieve. /// This member is required. @@ -22016,6 +21935,8 @@ public struct SearchTablesInput { public var catalogId: Swift.String? /// A list of key-value pairs, and a comparator used to filter the search results. Returns all entities matching the predicate. The Comparator member of the PropertyPredicate struct is used only for time fields, and can be omitted for other field types. Also, when comparing string values, such as when Key=Name, a fuzzy match algorithm is used. The Key field (for example, the value of the Name field) is split on certain punctuation characters, for example, -, :, #, etc. into tokens. Then each token is exact-match compared with the Value member of PropertyPredicate. For example, if Key=Name and Value=link, tables named customer-link and xx-link-yy are returned, but xxlinkyy is not returned. public var filters: [GlueClientTypes.PropertyPredicate]? + /// Specifies whether to include status details related to a request to create or update an Glue Data Catalog view. + public var includeStatusDetails: Swift.Bool? /// The maximum number of tables to return in a single response. public var maxResults: Swift.Int? /// A continuation token, included if this is a continuation call. @@ -22034,6 +21955,7 @@ public struct SearchTablesInput { public init( catalogId: Swift.String? = nil, filters: [GlueClientTypes.PropertyPredicate]? = nil, + includeStatusDetails: Swift.Bool? = nil, maxResults: Swift.Int? = nil, nextToken: Swift.String? = nil, resourceShareType: GlueClientTypes.ResourceShareType? = nil, @@ -22043,6 +21965,7 @@ public struct SearchTablesInput { { self.catalogId = catalogId self.filters = filters + self.includeStatusDetails = includeStatusDetails self.maxResults = maxResults self.nextToken = nextToken self.resourceShareType = resourceShareType @@ -22051,22 +21974,6 @@ public struct SearchTablesInput { } } -public struct SearchTablesOutput { - /// A continuation token, present if the current list segment is not the last. - public var nextToken: Swift.String? - /// A list of the requested Table objects. The SearchTables response returns only the tables that you have access to. - public var tableList: [GlueClientTypes.Table]? - - public init( - nextToken: Swift.String? = nil, - tableList: [GlueClientTypes.Table]? = nil - ) - { - self.nextToken = nextToken - self.tableList = tableList - } -} - /// The blueprint is in an invalid state to perform a requested operation. public struct IllegalBlueprintStateException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { @@ -24224,6 +24131,179 @@ extension GlueClientTypes { } +extension GlueClientTypes { + /// A structure containing information about an asynchronous change to a table. + public struct StatusDetails { + /// A Table object representing the requested changes. + @Indirect public var requestedChange: GlueClientTypes.Table? + /// A list of ViewValidation objects that contain information for an analytical engine to validate a view. + public var viewValidations: [GlueClientTypes.ViewValidation]? + + public init( + requestedChange: GlueClientTypes.Table? = nil, + viewValidations: [GlueClientTypes.ViewValidation]? = nil + ) + { + self.requestedChange = requestedChange + self.viewValidations = viewValidations + } + } + +} + +extension GlueClientTypes { + /// Represents a collection of related data organized in columns and rows. + public struct Table { + /// The ID of the Data Catalog in which the table resides. + public var catalogId: Swift.String? + /// The time when the table definition was created in the Data Catalog. + public var createTime: Foundation.Date? + /// The person or entity who created the table. + public var createdBy: Swift.String? + /// The name of the database where the table metadata resides. For Hive compatibility, this must be all lowercase. + public var databaseName: Swift.String? + /// A description of the table. + public var description: Swift.String? + /// A FederatedTable structure that references an entity outside the Glue Data Catalog. + public var federatedTable: GlueClientTypes.FederatedTable? + /// Specifies whether the view supports the SQL dialects of one or more different query engines and can therefore be read by those engines. + public var isMultiDialectView: Swift.Bool? + /// Indicates whether the table has been registered with Lake Formation. + public var isRegisteredWithLakeFormation: Swift.Bool + /// The last time that the table was accessed. This is usually taken from HDFS, and might not be reliable. + public var lastAccessTime: Foundation.Date? + /// The last time that column statistics were computed for this table. + public var lastAnalyzedTime: Foundation.Date? + /// The table name. For Hive compatibility, this must be entirely lowercase. + /// This member is required. + public var name: Swift.String? + /// The owner of the table. + public var owner: Swift.String? + /// These key-value pairs define properties associated with the table. + public var parameters: [Swift.String: Swift.String]? + /// A list of columns by which the table is partitioned. Only primitive types are supported as partition keys. When you create a table used by Amazon Athena, and you do not specify any partitionKeys, you must at least set the value of partitionKeys to an empty list. For example: "PartitionKeys": [] + public var partitionKeys: [GlueClientTypes.Column]? + /// The retention time for this table. + public var retention: Swift.Int + /// A structure containing information about the state of an asynchronous change to a table. + public var status: GlueClientTypes.TableStatus? + /// A storage descriptor containing information about the physical storage of this table. + public var storageDescriptor: GlueClientTypes.StorageDescriptor? + /// The type of this table. Glue will create tables with the EXTERNAL_TABLE type. Other services, such as Athena, may create tables with additional table types. Glue related table types: EXTERNAL_TABLE Hive compatible attribute - indicates a non-Hive managed table. GOVERNED Used by Lake Formation. The Glue Data Catalog understands GOVERNED. + public var tableType: Swift.String? + /// A TableIdentifier structure that describes a target table for resource linking. + public var targetTable: GlueClientTypes.TableIdentifier? + /// The last time that the table was updated. + public var updateTime: Foundation.Date? + /// The ID of the table version. + public var versionId: Swift.String? + /// A structure that contains all the information that defines the view, including the dialect or dialects for the view, and the query. + public var viewDefinition: GlueClientTypes.ViewDefinition? + /// Included for Apache Hive compatibility. Not used in the normal course of Glue operations. + public var viewExpandedText: Swift.String? + /// Included for Apache Hive compatibility. Not used in the normal course of Glue operations. If the table is a VIRTUAL_VIEW, certain Athena configuration encoded in base64. + public var viewOriginalText: Swift.String? + + public init( + catalogId: Swift.String? = nil, + createTime: Foundation.Date? = nil, + createdBy: Swift.String? = nil, + databaseName: Swift.String? = nil, + description: Swift.String? = nil, + federatedTable: GlueClientTypes.FederatedTable? = nil, + isMultiDialectView: Swift.Bool? = nil, + isRegisteredWithLakeFormation: Swift.Bool = false, + lastAccessTime: Foundation.Date? = nil, + lastAnalyzedTime: Foundation.Date? = nil, + name: Swift.String? = nil, + owner: Swift.String? = nil, + parameters: [Swift.String: Swift.String]? = nil, + partitionKeys: [GlueClientTypes.Column]? = nil, + retention: Swift.Int = 0, + status: GlueClientTypes.TableStatus? = nil, + storageDescriptor: GlueClientTypes.StorageDescriptor? = nil, + tableType: Swift.String? = nil, + targetTable: GlueClientTypes.TableIdentifier? = nil, + updateTime: Foundation.Date? = nil, + versionId: Swift.String? = nil, + viewDefinition: GlueClientTypes.ViewDefinition? = nil, + viewExpandedText: Swift.String? = nil, + viewOriginalText: Swift.String? = nil + ) + { + self.catalogId = catalogId + self.createTime = createTime + self.createdBy = createdBy + self.databaseName = databaseName + self.description = description + self.federatedTable = federatedTable + self.isMultiDialectView = isMultiDialectView + self.isRegisteredWithLakeFormation = isRegisteredWithLakeFormation + self.lastAccessTime = lastAccessTime + self.lastAnalyzedTime = lastAnalyzedTime + self.name = name + self.owner = owner + self.parameters = parameters + self.partitionKeys = partitionKeys + self.retention = retention + self.status = status + self.storageDescriptor = storageDescriptor + self.tableType = tableType + self.targetTable = targetTable + self.updateTime = updateTime + self.versionId = versionId + self.viewDefinition = viewDefinition + self.viewExpandedText = viewExpandedText + self.viewOriginalText = viewOriginalText + } + } + +} + +extension GlueClientTypes { + /// A structure containing information about the state of an asynchronous change to a table. + public struct TableStatus { + /// Indicates which action was called on the table, currently only CREATE or UPDATE. + public var action: GlueClientTypes.ResourceAction? + /// A StatusDetails object with information about the requested change. + public var details: GlueClientTypes.StatusDetails? + /// An error that will only appear when the state is "FAILED". This is a parent level exception message, there may be different Errors for each dialect. + public var error: GlueClientTypes.ErrorDetail? + /// An ISO 8601 formatted date string indicating the time that the change was initiated. + public var requestTime: Foundation.Date? + /// The ARN of the user who requested the asynchronous change. + public var requestedBy: Swift.String? + /// A generic status for the change in progress, such as QUEUED, IN_PROGRESS, SUCCESS, or FAILED. + public var state: GlueClientTypes.ResourceState? + /// An ISO 8601 formatted date string indicating the time that the state was last updated. + public var updateTime: Foundation.Date? + /// The ARN of the user to last manually alter the asynchronous change (requesting cancellation, etc). + public var updatedBy: Swift.String? + + public init( + action: GlueClientTypes.ResourceAction? = nil, + details: GlueClientTypes.StatusDetails? = nil, + error: GlueClientTypes.ErrorDetail? = nil, + requestTime: Foundation.Date? = nil, + requestedBy: Swift.String? = nil, + state: GlueClientTypes.ResourceState? = nil, + updateTime: Foundation.Date? = nil, + updatedBy: Swift.String? = nil + ) + { + self.action = action + self.details = details + self.error = error + self.requestTime = requestTime + self.requestedBy = requestedBy + self.state = state + self.updateTime = updateTime + self.updatedBy = updatedBy + } + } + +} + extension GlueClientTypes { /// CodeGenConfigurationNode enumerates all valid Node types. One and only one of its member variables can be populated. public struct CodeGenConfigurationNode { @@ -24520,6 +24600,130 @@ extension GlueClientTypes { } +extension GlueClientTypes { + /// Specifies a version of a table. + public struct TableVersion { + /// The table in question. + public var table: GlueClientTypes.Table? + /// The ID value that identifies this table version. A VersionId is a string representation of an integer. Each version is incremented by 1. + public var versionId: Swift.String? + + public init( + table: GlueClientTypes.Table? = nil, + versionId: Swift.String? = nil + ) + { + self.table = table + self.versionId = versionId + } + } + +} + +public struct GetTableOutput { + /// The Table object that defines the specified table. + public var table: GlueClientTypes.Table? + + public init( + table: GlueClientTypes.Table? = nil + ) + { + self.table = table + } +} + +public struct GetUnfilteredTableMetadataOutput { + /// A list of column names that the user has been granted access to. + public var authorizedColumns: [Swift.String]? + /// A list of column row filters. + public var cellFilters: [GlueClientTypes.ColumnRowFilter]? + /// Specifies whether the view supports the SQL dialects of one or more different query engines and can therefore be read by those engines. + public var isMultiDialectView: Swift.Bool + /// A flag that instructs the engine not to push user-provided operations into the logical plan of the view during query planning. However, if set this flag does not guarantee that the engine will comply. Refer to the engine's documentation to understand the guarantees provided, if any. + public var isProtected: Swift.Bool + /// A Boolean value that indicates whether the partition location is registered with Lake Formation. + public var isRegisteredWithLakeFormation: Swift.Bool + /// The Lake Formation data permissions of the caller on the table. Used to authorize the call when no view context is found. + public var permissions: [GlueClientTypes.Permission]? + /// A cryptographically generated query identifier generated by Glue or Lake Formation. + public var queryAuthorizationId: Swift.String? + /// The resource ARN of the parent resource extracted from the request. + public var resourceArn: Swift.String? + /// The filter that applies to the table. For example when applying the filter in SQL, it would go in the WHERE clause and can be evaluated by using an AND operator with any other predicates applied by the user querying the table. + public var rowFilter: Swift.String? + /// A Table object containing the table metadata. + public var table: GlueClientTypes.Table? + + public init( + authorizedColumns: [Swift.String]? = nil, + cellFilters: [GlueClientTypes.ColumnRowFilter]? = nil, + isMultiDialectView: Swift.Bool = false, + isProtected: Swift.Bool = false, + isRegisteredWithLakeFormation: Swift.Bool = false, + permissions: [GlueClientTypes.Permission]? = nil, + queryAuthorizationId: Swift.String? = nil, + resourceArn: Swift.String? = nil, + rowFilter: Swift.String? = nil, + table: GlueClientTypes.Table? = nil + ) + { + self.authorizedColumns = authorizedColumns + self.cellFilters = cellFilters + self.isMultiDialectView = isMultiDialectView + self.isProtected = isProtected + self.isRegisteredWithLakeFormation = isRegisteredWithLakeFormation + self.permissions = permissions + self.queryAuthorizationId = queryAuthorizationId + self.resourceArn = resourceArn + self.rowFilter = rowFilter + self.table = table + } +} + +public struct GetTablesOutput { + /// A continuation token, present if the current list segment is not the last. + public var nextToken: Swift.String? + /// A list of the requested Table objects. + public var tableList: [GlueClientTypes.Table]? + + public init( + nextToken: Swift.String? = nil, + tableList: [GlueClientTypes.Table]? = nil + ) + { + self.nextToken = nextToken + self.tableList = tableList + } +} + +public struct GetTableVersionOutput { + /// The requested table version. + public var tableVersion: GlueClientTypes.TableVersion? + + public init( + tableVersion: GlueClientTypes.TableVersion? = nil + ) + { + self.tableVersion = tableVersion + } +} + +public struct SearchTablesOutput { + /// A continuation token, present if the current list segment is not the last. + public var nextToken: Swift.String? + /// A list of the requested Table objects. The SearchTables response returns only the tables that you have access to. + public var tableList: [GlueClientTypes.Table]? + + public init( + nextToken: Swift.String? = nil, + tableList: [GlueClientTypes.Table]? = nil + ) + { + self.nextToken = nextToken + self.tableList = tableList + } +} + extension GlueClientTypes { /// Specifies a job definition. public struct Job { @@ -24936,6 +25140,22 @@ extension CreateJobInput: Swift.CustomDebugStringConvertible { "CreateJobInput(allocatedCapacity: \(Swift.String(describing: allocatedCapacity)), command: \(Swift.String(describing: command)), connections: \(Swift.String(describing: connections)), defaultArguments: \(Swift.String(describing: defaultArguments)), description: \(Swift.String(describing: description)), executionClass: \(Swift.String(describing: executionClass)), executionProperty: \(Swift.String(describing: executionProperty)), glueVersion: \(Swift.String(describing: glueVersion)), jobMode: \(Swift.String(describing: jobMode)), logUri: \(Swift.String(describing: logUri)), maintenanceWindow: \(Swift.String(describing: maintenanceWindow)), maxCapacity: \(Swift.String(describing: maxCapacity)), maxRetries: \(Swift.String(describing: maxRetries)), name: \(Swift.String(describing: name)), nonOverridableArguments: \(Swift.String(describing: nonOverridableArguments)), notificationProperty: \(Swift.String(describing: notificationProperty)), numberOfWorkers: \(Swift.String(describing: numberOfWorkers)), role: \(Swift.String(describing: role)), securityConfiguration: \(Swift.String(describing: securityConfiguration)), sourceControlDetails: \(Swift.String(describing: sourceControlDetails)), tags: \(Swift.String(describing: tags)), timeout: \(Swift.String(describing: timeout)), workerType: \(Swift.String(describing: workerType)), codeGenConfigurationNodes: \"CONTENT_REDACTED\")"} } +public struct GetTableVersionsOutput { + /// A continuation token, if the list of available versions does not include the last one. + public var nextToken: Swift.String? + /// A list of strings identifying available versions of the specified table. + public var tableVersions: [GlueClientTypes.TableVersion]? + + public init( + nextToken: Swift.String? = nil, + tableVersions: [GlueClientTypes.TableVersion]? = nil + ) + { + self.nextToken = nextToken + self.tableVersions = tableVersions + } +} + public struct GetJobOutput { /// The requested job definition. public var job: GlueClientTypes.Job? @@ -27857,6 +28077,7 @@ extension GetTableInput { guard let value else { return } try writer["CatalogId"].write(value.catalogId) try writer["DatabaseName"].write(value.databaseName) + try writer["IncludeStatusDetails"].write(value.includeStatusDetails) try writer["Name"].write(value.name) try writer["QueryAsOfTime"].writeTimestamp(value.queryAsOfTime, format: .epochSeconds) try writer["TransactionId"].write(value.transactionId) @@ -27881,6 +28102,7 @@ extension GetTablesInput { try writer["CatalogId"].write(value.catalogId) try writer["DatabaseName"].write(value.databaseName) try writer["Expression"].write(value.expression) + try writer["IncludeStatusDetails"].write(value.includeStatusDetails) try writer["MaxResults"].write(value.maxResults) try writer["NextToken"].write(value.nextToken) try writer["QueryAsOfTime"].writeTimestamp(value.queryAsOfTime, format: .epochSeconds) @@ -28423,6 +28645,7 @@ extension SearchTablesInput { guard let value else { return } try writer["CatalogId"].write(value.catalogId) try writer["Filters"].writeList(value.filters, memberWritingClosure: GlueClientTypes.PropertyPredicate.write(value:to:), memberNodeInfo: "member", isFlattened: false) + try writer["IncludeStatusDetails"].write(value.includeStatusDetails) try writer["MaxResults"].write(value.maxResults) try writer["NextToken"].write(value.nextToken) try writer["ResourceShareType"].write(value.resourceShareType) @@ -38792,6 +39015,7 @@ extension GlueClientTypes.BasicCatalogTarget { try writer["Database"].write(value.database) try writer["Inputs"].writeList(value.inputs, memberWritingClosure: SmithyReadWrite.WritingClosures.writeString(value:to:), memberNodeInfo: "member", isFlattened: false) try writer["Name"].write(value.name) + try writer["PartitionKeys"].writeList(value.partitionKeys, memberWritingClosure: SmithyReadWrite.listWritingClosure(memberWritingClosure: SmithyReadWrite.WritingClosures.writeString(value:to:), memberNodeInfo: "member", isFlattened: false), memberNodeInfo: "member", isFlattened: false) try writer["Table"].write(value.table) } @@ -38800,6 +39024,7 @@ extension GlueClientTypes.BasicCatalogTarget { var value = GlueClientTypes.BasicCatalogTarget() value.name = try reader["Name"].readIfPresent() value.inputs = try reader["Inputs"].readListIfPresent(memberReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), memberNodeInfo: "member", isFlattened: false) + value.partitionKeys = try reader["PartitionKeys"].readListIfPresent(memberReadingClosure: SmithyReadWrite.listReadingClosure(memberReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), memberNodeInfo: "member", isFlattened: false), memberNodeInfo: "member", isFlattened: false) value.database = try reader["Database"].readIfPresent() value.table = try reader["Table"].readIfPresent() return value @@ -41151,6 +41376,50 @@ extension GlueClientTypes.Table { value.federatedTable = try reader["FederatedTable"].readIfPresent(with: GlueClientTypes.FederatedTable.read(from:)) value.viewDefinition = try reader["ViewDefinition"].readIfPresent(with: GlueClientTypes.ViewDefinition.read(from:)) value.isMultiDialectView = try reader["IsMultiDialectView"].readIfPresent() + value.status = try reader["Status"].readIfPresent(with: GlueClientTypes.TableStatus.read(from:)) + return value + } +} + +extension GlueClientTypes.TableStatus { + + static func read(from reader: SmithyJSON.Reader) throws -> GlueClientTypes.TableStatus { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = GlueClientTypes.TableStatus() + value.requestedBy = try reader["RequestedBy"].readIfPresent() + value.updatedBy = try reader["UpdatedBy"].readIfPresent() + value.requestTime = try reader["RequestTime"].readTimestampIfPresent(format: .epochSeconds) + value.updateTime = try reader["UpdateTime"].readTimestampIfPresent(format: .epochSeconds) + value.action = try reader["Action"].readIfPresent() + value.state = try reader["State"].readIfPresent() + value.error = try reader["Error"].readIfPresent(with: GlueClientTypes.ErrorDetail.read(from:)) + value.details = try reader["Details"].readIfPresent(with: GlueClientTypes.StatusDetails.read(from:)) + return value + } +} + +extension GlueClientTypes.StatusDetails { + + static func read(from reader: SmithyJSON.Reader) throws -> GlueClientTypes.StatusDetails { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = GlueClientTypes.StatusDetails() + value.requestedChange = try reader["RequestedChange"].readIfPresent(with: GlueClientTypes.Table.read(from:)) + value.viewValidations = try reader["ViewValidations"].readListIfPresent(memberReadingClosure: GlueClientTypes.ViewValidation.read(from:), memberNodeInfo: "member", isFlattened: false) + return value + } +} + +extension GlueClientTypes.ViewValidation { + + static func read(from reader: SmithyJSON.Reader) throws -> GlueClientTypes.ViewValidation { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = GlueClientTypes.ViewValidation() + value.dialect = try reader["Dialect"].readIfPresent() + value.dialectVersion = try reader["DialectVersion"].readIfPresent() + value.viewValidationText = try reader["ViewValidationText"].readIfPresent() + value.updateTime = try reader["UpdateTime"].readTimestampIfPresent(format: .epochSeconds) + value.state = try reader["State"].readIfPresent() + value.error = try reader["Error"].readIfPresent(with: GlueClientTypes.ErrorDetail.read(from:)) return value } } diff --git a/Sources/Services/AWSGlue/Sources/AWSGlue/Paginators.swift b/Sources/Services/AWSGlue/Sources/AWSGlue/Paginators.swift index cdb84afe085..9ae079d7119 100644 --- a/Sources/Services/AWSGlue/Sources/AWSGlue/Paginators.swift +++ b/Sources/Services/AWSGlue/Sources/AWSGlue/Paginators.swift @@ -438,6 +438,7 @@ extension GetTablesInput: ClientRuntime.PaginateToken { catalogId: self.catalogId, databaseName: self.databaseName, expression: self.expression, + includeStatusDetails: self.includeStatusDetails, maxResults: self.maxResults, nextToken: token, queryAsOfTime: self.queryAsOfTime, @@ -1098,6 +1099,7 @@ extension SearchTablesInput: ClientRuntime.PaginateToken { return SearchTablesInput( catalogId: self.catalogId, filters: self.filters, + includeStatusDetails: self.includeStatusDetails, maxResults: self.maxResults, nextToken: token, resourceShareType: self.resourceShareType,