diff --git a/Package.version b/Package.version index 655b90034ac..328047e4e31 100644 --- a/Package.version +++ b/Package.version @@ -1 +1 @@ -0.52.0 \ No newline at end of file +0.53.0 \ No newline at end of file diff --git a/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md b/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md index 5ccacbf9264..b4ee3f53c4b 100644 --- a/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md +++ b/Sources/Core/AWSSDKForSwift/Documentation.docc/AWSSDKForSwift.md @@ -9,6 +9,55 @@ A pure-Swift SDK for accessing all published AWS services. This SDK is open-source. Code is available on Github [here](https://github.com/awslabs/aws-sdk-swift). +## Smithy Runtime Module Documentation + +[ClientRuntime](../../../../../swift/api/clientruntime/latest) + +[Smithy](../../../../../swift/api/smithy/latest) + +[SmithyChecksums](../../../../../swift/api/smithychecksums/latest) + +[SmithyChecksumsAPI](../../../../../swift/api/smithychecksumsapi/latest) + +[SmithyEventStreams](../../../../../swift/api/smithyeventstreams/latest) + +[SmithyEventStreamsAPI](../../../../../swift/api/smithyeventstreamsapi/latest) + +[SmithyEventStreamsAuthAPI](../../../../../swift/api/smithyeventstreamsauthapi/latest) + +[SmithyFormURL](../../../../../swift/api/smithyformurl/latest) + +[SmithyHTTPAPI](../../../../../swift/api/smithyhttpapi/latest) + +[SmithyHTTPAuth](../../../../../swift/api/smithyhttpauth/latest) + +[SmithyHTTPAuthAPI](../../../../../swift/api/smithyhttpauthapi/latest) + +[SmithyHTTPClient](../../../../../swift/api/smithyhttpclient/latest) + +[SmithyIdentity](../../../../../swift/api/smithyidentity/latest) + +[SmithyIdentityAPI](../../../../../swift/api/smithyidentityapi/latest) + +[SmithyJSON](../../../../../swift/api/smithyjson/latest) + +[SmithyReadWrite](../../../../../swift/api/smithyreadwrite/latest) + +[SmithyRetries](../../../../../swift/api/smithyretries/latest) + +[SmithyRetriesAPI](../../../../../swift/api/smithyretriesapi/latest) + +[SmithyStreams](../../../../../swift/api/smithystreams/latest) + +[SmithyTestUtil](../../../../../swift/api/smithytestutil/latest) + +[SmithyTimestamps](../../../../../swift/api/smithytimestamps/latest) + +[SmithyWaitersAPI](../../../../../swift/api/smithywaitersapi/latest) + +[SmithyXML](../../../../../swift/api/smithyxml/latest) + + ## AWS Runtime Module Documentation [AWSClientRuntime](../../../../../swift/api/awsclientruntime/latest) diff --git a/Sources/Services/AWSAppIntegrations/Sources/AWSAppIntegrations/AppIntegrationsClient.swift b/Sources/Services/AWSAppIntegrations/Sources/AWSAppIntegrations/AppIntegrationsClient.swift index 82b2ad14e0a..d0372cdbed3 100644 --- a/Sources/Services/AWSAppIntegrations/Sources/AWSAppIntegrations/AppIntegrationsClient.swift +++ b/Sources/Services/AWSAppIntegrations/Sources/AWSAppIntegrations/AppIntegrationsClient.swift @@ -195,7 +195,7 @@ extension AppIntegrationsClient { extension AppIntegrationsClient { /// Performs the `CreateApplication` operation on the `AmazonAppIntegrationService` service. /// - /// This API is in preview release and subject to change. Creates and persists an Application resource. + /// Creates and persists an Application resource. /// /// - Parameter CreateApplicationInput : [no documentation found] /// @@ -342,6 +342,80 @@ extension AppIntegrationsClient { return try await op.execute(input: input) } + /// Performs the `CreateDataIntegrationAssociation` operation on the `AmazonAppIntegrationService` service. + /// + /// Creates and persists a DataIntegrationAssociation resource. + /// + /// - Parameter CreateDataIntegrationAssociationInput : [no documentation found] + /// + /// - Returns: `CreateDataIntegrationAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `InternalServiceError` : Request processing failed due to an error or failure with the service. + /// - `InvalidRequestException` : The request is not valid. + /// - `ResourceNotFoundException` : The specified resource was not found. + /// - `ResourceQuotaExceededException` : The allowed quota for the resource has been exceeded. + /// - `ThrottlingException` : The throttling limit has been exceeded. + public func createDataIntegrationAssociation(input: CreateDataIntegrationAssociationInput) async throws -> CreateDataIntegrationAssociationOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "createDataIntegrationAssociation") + .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: "app-integrations") + .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(CreateDataIntegrationAssociationInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/json")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: CreateDataIntegrationAssociationInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(CreateDataIntegrationAssociationOutput.httpOutput(from:), CreateDataIntegrationAssociationOutputError.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: "AppIntegrations") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "CreateDataIntegrationAssociation") + 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 `CreateEventIntegration` operation on the `AmazonAppIntegrationService` service. /// /// Creates an EventIntegration, given a specified name, description, and a reference to an Amazon EventBridge bus in your account and a partner event source that pushes events to that bus. No objects are created in the your account, only metadata that is persisted on the EventIntegration control plane. @@ -625,7 +699,7 @@ extension AppIntegrationsClient { /// Performs the `GetApplication` operation on the `AmazonAppIntegrationService` service. /// - /// This API is in preview release and subject to change. Get an Application resource. + /// Get an Application resource. /// /// - Parameter GetApplicationInput : [no documentation found] /// @@ -902,7 +976,7 @@ extension AppIntegrationsClient { /// Performs the `ListApplications` operation on the `AmazonAppIntegrationService` service. /// - /// This API is in preview release and subject to change. Lists applications in the account. + /// Lists applications in the account. /// /// - Parameter ListApplicationsInput : [no documentation found] /// @@ -1457,7 +1531,7 @@ extension AppIntegrationsClient { /// Performs the `UpdateApplication` operation on the `AmazonAppIntegrationService` service. /// - /// This API is in preview release and subject to change. Updates and persists an Application resource. + /// Updates and persists an Application resource. /// /// - Parameter UpdateApplicationInput : [no documentation found] /// @@ -1600,6 +1674,78 @@ extension AppIntegrationsClient { return try await op.execute(input: input) } + /// Performs the `UpdateDataIntegrationAssociation` operation on the `AmazonAppIntegrationService` service. + /// + /// Updates and persists a DataIntegrationAssociation resource. Updating a DataIntegrationAssociation with ExecutionConfiguration will rerun the on-demand job. + /// + /// - Parameter UpdateDataIntegrationAssociationInput : [no documentation found] + /// + /// - Returns: `UpdateDataIntegrationAssociationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `AccessDeniedException` : You do not have sufficient access to perform this action. + /// - `InternalServiceError` : Request processing failed due to an error or failure with the service. + /// - `InvalidRequestException` : The request is not valid. + /// - `ResourceNotFoundException` : The specified resource was not found. + /// - `ThrottlingException` : The throttling limit has been exceeded. + public func updateDataIntegrationAssociation(input: UpdateDataIntegrationAssociationInput) async throws -> UpdateDataIntegrationAssociationOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .patch) + .withServiceName(value: serviceName) + .withOperation(value: "updateDataIntegrationAssociation") + .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: "app-integrations") + .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(UpdateDataIntegrationAssociationInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/json")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: UpdateDataIntegrationAssociationInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(UpdateDataIntegrationAssociationOutput.httpOutput(from:), UpdateDataIntegrationAssociationOutputError.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: "AppIntegrations") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "UpdateDataIntegrationAssociation") + 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 `UpdateEventIntegration` operation on the `AmazonAppIntegrationService` service. /// /// Updates the description of an event integration. diff --git a/Sources/Services/AWSAppIntegrations/Sources/AWSAppIntegrations/Models.swift b/Sources/Services/AWSAppIntegrations/Sources/AWSAppIntegrations/Models.swift index 65460943142..d46b52bf1ad 100644 --- a/Sources/Services/AWSAppIntegrations/Sources/AWSAppIntegrations/Models.swift +++ b/Sources/Services/AWSAppIntegrations/Sources/AWSAppIntegrations/Models.swift @@ -397,7 +397,7 @@ public struct CreateDataIntegrationInput { public var description: Swift.String? /// The configuration for what files should be pulled from the source. public var fileConfiguration: AppIntegrationsClientTypes.FileConfiguration? - /// The KMS key for the DataIntegration. + /// The KMS key ARN for the DataIntegration. /// This member is required. public var kmsKey: Swift.String? /// The name of the DataIntegration. @@ -408,7 +408,6 @@ public struct CreateDataIntegrationInput { /// The name of the data and how often it should be pulled from the source. public var scheduleConfig: AppIntegrationsClientTypes.ScheduleConfiguration? /// The URI of the data source. - /// This member is required. public var sourceURI: Swift.String? /// The tags used to organize, track, or control access for this resource. For example, { "tags": {"key1":"value1", "key2":"value2"} }. public var tags: [Swift.String: Swift.String]? @@ -448,7 +447,7 @@ public struct CreateDataIntegrationOutput { public var fileConfiguration: AppIntegrationsClientTypes.FileConfiguration? /// A unique identifier. public var id: Swift.String? - /// The KMS key for the DataIntegration. + /// The KMS key ARN for the DataIntegration. public var kmsKey: Swift.String? /// The name of the DataIntegration. public var name: Swift.String? @@ -489,6 +488,158 @@ public struct CreateDataIntegrationOutput { } } +/// The specified resource was not found. +public struct ResourceNotFoundException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { + + public struct Properties { + public internal(set) var message: Swift.String? = nil + } + + public internal(set) var properties = Properties() + public static var typeName: Swift.String { "ResourceNotFoundException" } + public static var fault: ClientRuntime.ErrorFault { .client } + public static var isRetryable: Swift.Bool { false } + public static var isThrottling: Swift.Bool { false } + public internal(set) var httpResponse = SmithyHTTPAPI.HTTPResponse() + public internal(set) var message: Swift.String? + public internal(set) var requestID: Swift.String? + + public init( + message: Swift.String? = nil + ) + { + self.properties.message = message + } +} + +extension AppIntegrationsClientTypes { + + public enum ExecutionMode: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case onDemand + case scheduled + case sdkUnknown(Swift.String) + + public static var allCases: [ExecutionMode] { + return [ + .onDemand, + .scheduled + ] + } + + 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 .onDemand: return "ON_DEMAND" + case .scheduled: return "SCHEDULED" + case let .sdkUnknown(s): return s + } + } + } +} + +extension AppIntegrationsClientTypes { + /// The start and end time for data pull from the source. + public struct OnDemandConfiguration { + /// The end time for data pull from the source as an Unix/epoch string in milliseconds + public var endTime: Swift.String? + /// The start time for data pull from the source as an Unix/epoch string in milliseconds + /// This member is required. + public var startTime: Swift.String? + + public init( + endTime: Swift.String? = nil, + startTime: Swift.String? = nil + ) + { + self.endTime = endTime + self.startTime = startTime + } + } + +} + +extension AppIntegrationsClientTypes { + /// The configuration for how the files should be pulled from the source. + public struct ExecutionConfiguration { + /// The mode for data import/export execution. + /// This member is required. + public var executionMode: AppIntegrationsClientTypes.ExecutionMode? + /// The start and end time for data pull from the source. + public var onDemandConfiguration: AppIntegrationsClientTypes.OnDemandConfiguration? + /// The name of the data and how often it should be pulled from the source. + public var scheduleConfiguration: AppIntegrationsClientTypes.ScheduleConfiguration? + + public init( + executionMode: AppIntegrationsClientTypes.ExecutionMode? = nil, + onDemandConfiguration: AppIntegrationsClientTypes.OnDemandConfiguration? = nil, + scheduleConfiguration: AppIntegrationsClientTypes.ScheduleConfiguration? = nil + ) + { + self.executionMode = executionMode + self.onDemandConfiguration = onDemandConfiguration + self.scheduleConfiguration = scheduleConfiguration + } + } + +} + +public struct CreateDataIntegrationAssociationInput { + /// The mapping of metadata to be extracted from the data. + public var clientAssociationMetadata: [Swift.String: Swift.String]? + /// The identifier for the client that is associated with the DataIntegration association. + public var clientId: Swift.String? + /// A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. If not provided, the Amazon Web Services SDK populates this field. For more information about idempotency, see [Making retries safe with idempotent APIs](https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/). + public var clientToken: Swift.String? + /// A unique identifier for the DataIntegration. + /// This member is required. + public var dataIntegrationIdentifier: Swift.String? + /// The URI of the data destination. + public var destinationURI: Swift.String? + /// The configuration for how the files should be pulled from the source. + public var executionConfiguration: AppIntegrationsClientTypes.ExecutionConfiguration? + /// The configuration for what data should be pulled from the source. + public var objectConfiguration: [Swift.String: [Swift.String: [Swift.String]]]? + + public init( + clientAssociationMetadata: [Swift.String: Swift.String]? = nil, + clientId: Swift.String? = nil, + clientToken: Swift.String? = nil, + dataIntegrationIdentifier: Swift.String? = nil, + destinationURI: Swift.String? = nil, + executionConfiguration: AppIntegrationsClientTypes.ExecutionConfiguration? = nil, + objectConfiguration: [Swift.String: [Swift.String: [Swift.String]]]? = nil + ) + { + self.clientAssociationMetadata = clientAssociationMetadata + self.clientId = clientId + self.clientToken = clientToken + self.dataIntegrationIdentifier = dataIntegrationIdentifier + self.destinationURI = destinationURI + self.executionConfiguration = executionConfiguration + self.objectConfiguration = objectConfiguration + } +} + +public struct CreateDataIntegrationAssociationOutput { + /// The Amazon Resource Name (ARN) for the DataIntegration. + public var dataIntegrationArn: Swift.String? + /// A unique identifier. for the DataIntegrationAssociation. + public var dataIntegrationAssociationId: Swift.String? + + public init( + dataIntegrationArn: Swift.String? = nil, + dataIntegrationAssociationId: Swift.String? = nil + ) + { + self.dataIntegrationArn = dataIntegrationArn + self.dataIntegrationAssociationId = dataIntegrationAssociationId + } +} + extension AppIntegrationsClientTypes { /// The event filter. public struct EventFilter { @@ -553,30 +704,6 @@ public struct CreateEventIntegrationOutput { } } -/// The specified resource was not found. -public struct ResourceNotFoundException: ClientRuntime.ModeledError, AWSClientRuntime.AWSServiceError, ClientRuntime.HTTPError, Swift.Error { - - public struct Properties { - public internal(set) var message: Swift.String? = nil - } - - public internal(set) var properties = Properties() - public static var typeName: Swift.String { "ResourceNotFoundException" } - public static var fault: ClientRuntime.ErrorFault { .client } - public static var isRetryable: Swift.Bool { false } - public static var isThrottling: Swift.Bool { false } - public internal(set) var httpResponse = SmithyHTTPAPI.HTTPResponse() - public internal(set) var message: Swift.String? - public internal(set) var requestID: Swift.String? - - public init( - message: Swift.String? = nil - ) - { - self.properties.message = message - } -} - public struct DeleteApplicationInput { /// The Amazon Resource Name (ARN) of the Application. /// This member is required. @@ -718,13 +845,13 @@ public struct GetDataIntegrationInput { public struct GetDataIntegrationOutput { /// The Amazon Resource Name (ARN) for the DataIntegration. public var arn: Swift.String? - /// The KMS key for the DataIntegration. + /// The KMS key ARN for the DataIntegration. public var description: Swift.String? /// The configuration for what files should be pulled from the source. public var fileConfiguration: AppIntegrationsClientTypes.FileConfiguration? /// A unique identifier. public var id: Swift.String? - /// The KMS key for the DataIntegration. + /// The KMS key ARN for the DataIntegration. public var kmsKey: Swift.String? /// The name of the DataIntegration. public var name: Swift.String? @@ -958,6 +1085,58 @@ public struct ListDataIntegrationAssociationsInput { } } +extension AppIntegrationsClientTypes { + + public enum ExecutionStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case completed + case failed + case inProgress + case sdkUnknown(Swift.String) + + public static var allCases: [ExecutionStatus] { + return [ + .completed, + .failed, + .inProgress + ] + } + + 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 .inProgress: return "IN_PROGRESS" + case let .sdkUnknown(s): return s + } + } + } +} + +extension AppIntegrationsClientTypes { + /// The execution status of the last job. + public struct LastExecutionStatus { + /// The job status enum string. + public var executionStatus: AppIntegrationsClientTypes.ExecutionStatus? + /// The status message of a job. + public var statusMessage: Swift.String? + + public init( + executionStatus: AppIntegrationsClientTypes.ExecutionStatus? = nil, + statusMessage: Swift.String? = nil + ) + { + self.executionStatus = executionStatus + self.statusMessage = statusMessage + } + } + +} + extension AppIntegrationsClientTypes { /// Summary information about the DataIntegration association. public struct DataIntegrationAssociationSummary { @@ -967,16 +1146,28 @@ extension AppIntegrationsClientTypes { public var dataIntegrationArn: Swift.String? /// The Amazon Resource Name (ARN) of the DataIntegration association. public var dataIntegrationAssociationArn: Swift.String? + /// The URI of the data destination. + public var destinationURI: Swift.String? + /// The configuration for how the files should be pulled from the source. + public var executionConfiguration: AppIntegrationsClientTypes.ExecutionConfiguration? + /// The execution status of the last job. + public var lastExecutionStatus: AppIntegrationsClientTypes.LastExecutionStatus? public init( clientId: Swift.String? = nil, dataIntegrationArn: Swift.String? = nil, - dataIntegrationAssociationArn: Swift.String? = nil + dataIntegrationAssociationArn: Swift.String? = nil, + destinationURI: Swift.String? = nil, + executionConfiguration: AppIntegrationsClientTypes.ExecutionConfiguration? = nil, + lastExecutionStatus: AppIntegrationsClientTypes.LastExecutionStatus? = nil ) { self.clientId = clientId self.dataIntegrationArn = dataIntegrationArn self.dataIntegrationAssociationArn = dataIntegrationAssociationArn + self.destinationURI = destinationURI + self.executionConfiguration = executionConfiguration + self.lastExecutionStatus = lastExecutionStatus } } @@ -1336,6 +1527,34 @@ public struct UpdateDataIntegrationOutput { public init() { } } +public struct UpdateDataIntegrationAssociationInput { + /// A unique identifier. of the DataIntegrationAssociation resource + /// This member is required. + public var dataIntegrationAssociationIdentifier: Swift.String? + /// A unique identifier for the DataIntegration. + /// This member is required. + public var dataIntegrationIdentifier: Swift.String? + /// The configuration for how the files should be pulled from the source. + /// This member is required. + public var executionConfiguration: AppIntegrationsClientTypes.ExecutionConfiguration? + + public init( + dataIntegrationAssociationIdentifier: Swift.String? = nil, + dataIntegrationIdentifier: Swift.String? = nil, + executionConfiguration: AppIntegrationsClientTypes.ExecutionConfiguration? = nil + ) + { + self.dataIntegrationAssociationIdentifier = dataIntegrationAssociationIdentifier + self.dataIntegrationIdentifier = dataIntegrationIdentifier + self.executionConfiguration = executionConfiguration + } +} + +public struct UpdateDataIntegrationAssociationOutput { + + public init() { } +} + public struct UpdateEventIntegrationInput { /// The description of the event integration. public var description: Swift.String? @@ -1372,6 +1591,16 @@ extension CreateDataIntegrationInput { } } +extension CreateDataIntegrationAssociationInput { + + static func urlPathProvider(_ value: CreateDataIntegrationAssociationInput) -> Swift.String? { + guard let dataIntegrationIdentifier = value.dataIntegrationIdentifier else { + return nil + } + return "/dataIntegrations/\(dataIntegrationIdentifier.urlPercentEncoding())/associations" + } +} + extension CreateEventIntegrationInput { static func urlPathProvider(_ value: CreateEventIntegrationInput) -> Swift.String? { @@ -1652,6 +1881,19 @@ extension UpdateDataIntegrationInput { } } +extension UpdateDataIntegrationAssociationInput { + + static func urlPathProvider(_ value: UpdateDataIntegrationAssociationInput) -> Swift.String? { + guard let dataIntegrationIdentifier = value.dataIntegrationIdentifier else { + return nil + } + guard let dataIntegrationAssociationIdentifier = value.dataIntegrationAssociationIdentifier else { + return nil + } + return "/dataIntegrations/\(dataIntegrationIdentifier.urlPercentEncoding())/associations/\(dataIntegrationAssociationIdentifier.urlPercentEncoding())" + } +} + extension UpdateEventIntegrationInput { static func urlPathProvider(_ value: UpdateEventIntegrationInput) -> Swift.String? { @@ -1694,6 +1936,19 @@ extension CreateDataIntegrationInput { } } +extension CreateDataIntegrationAssociationInput { + + static func write(value: CreateDataIntegrationAssociationInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ClientAssociationMetadata"].writeMap(value.clientAssociationMetadata, valueWritingClosure: SmithyReadWrite.WritingClosures.writeString(value:to:), keyNodeInfo: "key", valueNodeInfo: "value", isFlattened: false) + try writer["ClientId"].write(value.clientId) + try writer["ClientToken"].write(value.clientToken) + try writer["DestinationURI"].write(value.destinationURI) + try writer["ExecutionConfiguration"].write(value.executionConfiguration, with: AppIntegrationsClientTypes.ExecutionConfiguration.write(value:to:)) + try writer["ObjectConfiguration"].writeMap(value.objectConfiguration, valueWritingClosure: SmithyReadWrite.mapWritingClosure(valueWritingClosure: SmithyReadWrite.listWritingClosure(memberWritingClosure: SmithyReadWrite.WritingClosures.writeString(value:to:), memberNodeInfo: "member", isFlattened: false), keyNodeInfo: "key", valueNodeInfo: "value", isFlattened: false), keyNodeInfo: "key", valueNodeInfo: "value", isFlattened: false) + } +} + extension CreateEventIntegrationInput { static func write(value: CreateEventIntegrationInput?, to writer: SmithyJSON.Writer) throws { @@ -1737,6 +1992,14 @@ extension UpdateDataIntegrationInput { } } +extension UpdateDataIntegrationAssociationInput { + + static func write(value: UpdateDataIntegrationAssociationInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ExecutionConfiguration"].write(value.executionConfiguration, with: AppIntegrationsClientTypes.ExecutionConfiguration.write(value:to:)) + } +} + extension UpdateEventIntegrationInput { static func write(value: UpdateEventIntegrationInput?, to writer: SmithyJSON.Writer) throws { @@ -1780,6 +2043,19 @@ extension CreateDataIntegrationOutput { } } +extension CreateDataIntegrationAssociationOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> CreateDataIntegrationAssociationOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = CreateDataIntegrationAssociationOutput() + value.dataIntegrationArn = try reader["DataIntegrationArn"].readIfPresent() + value.dataIntegrationAssociationId = try reader["DataIntegrationAssociationId"].readIfPresent() + return value + } +} + extension CreateEventIntegrationOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> CreateEventIntegrationOutput { @@ -1992,6 +2268,13 @@ extension UpdateDataIntegrationOutput { } } +extension UpdateDataIntegrationAssociationOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> UpdateDataIntegrationAssociationOutput { + return UpdateDataIntegrationAssociationOutput() + } +} + extension UpdateEventIntegrationOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> UpdateEventIntegrationOutput { @@ -2038,6 +2321,25 @@ enum CreateDataIntegrationOutputError { } } +enum CreateDataIntegrationAssociationOutputError { + + 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 "AccessDeniedException": return try AccessDeniedException.makeError(baseError: baseError) + case "InternalServiceError": return try InternalServiceError.makeError(baseError: baseError) + case "InvalidRequestException": return try InvalidRequestException.makeError(baseError: baseError) + case "ResourceNotFoundException": return try ResourceNotFoundException.makeError(baseError: baseError) + case "ResourceQuotaExceededException": return try ResourceQuotaExceededException.makeError(baseError: baseError) + case "ThrottlingException": return try ThrottlingException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum CreateEventIntegrationOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -2358,6 +2660,24 @@ enum UpdateDataIntegrationOutputError { } } +enum UpdateDataIntegrationAssociationOutputError { + + 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 "AccessDeniedException": return try AccessDeniedException.makeError(baseError: baseError) + case "InternalServiceError": return try InternalServiceError.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 UpdateEventIntegrationOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -2634,6 +2954,56 @@ extension AppIntegrationsClientTypes.DataIntegrationAssociationSummary { value.dataIntegrationAssociationArn = try reader["DataIntegrationAssociationArn"].readIfPresent() value.dataIntegrationArn = try reader["DataIntegrationArn"].readIfPresent() value.clientId = try reader["ClientId"].readIfPresent() + value.destinationURI = try reader["DestinationURI"].readIfPresent() + value.lastExecutionStatus = try reader["LastExecutionStatus"].readIfPresent(with: AppIntegrationsClientTypes.LastExecutionStatus.read(from:)) + value.executionConfiguration = try reader["ExecutionConfiguration"].readIfPresent(with: AppIntegrationsClientTypes.ExecutionConfiguration.read(from:)) + return value + } +} + +extension AppIntegrationsClientTypes.ExecutionConfiguration { + + static func write(value: AppIntegrationsClientTypes.ExecutionConfiguration?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ExecutionMode"].write(value.executionMode) + try writer["OnDemandConfiguration"].write(value.onDemandConfiguration, with: AppIntegrationsClientTypes.OnDemandConfiguration.write(value:to:)) + try writer["ScheduleConfiguration"].write(value.scheduleConfiguration, with: AppIntegrationsClientTypes.ScheduleConfiguration.write(value:to:)) + } + + static func read(from reader: SmithyJSON.Reader) throws -> AppIntegrationsClientTypes.ExecutionConfiguration { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = AppIntegrationsClientTypes.ExecutionConfiguration() + value.executionMode = try reader["ExecutionMode"].readIfPresent() + value.onDemandConfiguration = try reader["OnDemandConfiguration"].readIfPresent(with: AppIntegrationsClientTypes.OnDemandConfiguration.read(from:)) + value.scheduleConfiguration = try reader["ScheduleConfiguration"].readIfPresent(with: AppIntegrationsClientTypes.ScheduleConfiguration.read(from:)) + return value + } +} + +extension AppIntegrationsClientTypes.OnDemandConfiguration { + + static func write(value: AppIntegrationsClientTypes.OnDemandConfiguration?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["EndTime"].write(value.endTime) + try writer["StartTime"].write(value.startTime) + } + + static func read(from reader: SmithyJSON.Reader) throws -> AppIntegrationsClientTypes.OnDemandConfiguration { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = AppIntegrationsClientTypes.OnDemandConfiguration() + value.startTime = try reader["StartTime"].readIfPresent() + value.endTime = try reader["EndTime"].readIfPresent() + return value + } +} + +extension AppIntegrationsClientTypes.LastExecutionStatus { + + static func read(from reader: SmithyJSON.Reader) throws -> AppIntegrationsClientTypes.LastExecutionStatus { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = AppIntegrationsClientTypes.LastExecutionStatus() + value.executionStatus = try reader["ExecutionStatus"].readIfPresent() + value.statusMessage = try reader["StatusMessage"].readIfPresent() return value } } diff --git a/Sources/Services/AWSGlue/Sources/AWSGlue/GlueClient.swift b/Sources/Services/AWSGlue/Sources/AWSGlue/GlueClient.swift index 333f04cb5d5..4cbbeffb753 100644 --- a/Sources/Services/AWSGlue/Sources/AWSGlue/GlueClient.swift +++ b/Sources/Services/AWSGlue/Sources/AWSGlue/GlueClient.swift @@ -1268,6 +1268,78 @@ extension GlueClient { return try await op.execute(input: input) } + /// Performs the `BatchPutDataQualityStatisticAnnotation` operation on the `AWSGlue` service. + /// + /// Annotate datapoints over time for a specific data quality statistic. + /// + /// - Parameter BatchPutDataQualityStatisticAnnotationInput : [no documentation found] + /// + /// - Returns: `BatchPutDataQualityStatisticAnnotationOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `EntityNotFoundException` : A specified entity does not exist + /// - `InternalServiceException` : An internal service error occurred. + /// - `InvalidInputException` : The input provided was not valid. + /// - `ResourceNumberLimitExceededException` : A resource numerical limit was exceeded. + public func batchPutDataQualityStatisticAnnotation(input: BatchPutDataQualityStatisticAnnotationInput) async throws -> BatchPutDataQualityStatisticAnnotationOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "batchPutDataQualityStatisticAnnotation") + .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: "glue") + .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(BatchPutDataQualityStatisticAnnotationInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(BatchPutDataQualityStatisticAnnotationOutput.httpOutput(from:), BatchPutDataQualityStatisticAnnotationOutputError.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.interceptors.add(AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "AWSGlue.BatchPutDataQualityStatisticAnnotation")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: BatchPutDataQualityStatisticAnnotationInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + 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: "Glue") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "BatchPutDataQualityStatisticAnnotation") + 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 `BatchStopJobRun` operation on the `AWSGlue` service. /// /// Stops one or more job runs for a specified job definition. @@ -6635,6 +6707,150 @@ extension GlueClient { return try await op.execute(input: input) } + /// Performs the `GetDataQualityModel` operation on the `AWSGlue` service. + /// + /// Retrieve the training status of the model along with more information (CompletedOn, StartedOn, FailureReason). + /// + /// - Parameter GetDataQualityModelInput : [no documentation found] + /// + /// - Returns: `GetDataQualityModelOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `EntityNotFoundException` : A specified entity does not exist + /// - `InternalServiceException` : An internal service error occurred. + /// - `InvalidInputException` : The input provided was not valid. + /// - `OperationTimeoutException` : The operation timed out. + public func getDataQualityModel(input: GetDataQualityModelInput) async throws -> GetDataQualityModelOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "getDataQualityModel") + .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: "glue") + .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(GetDataQualityModelInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(GetDataQualityModelOutput.httpOutput(from:), GetDataQualityModelOutputError.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.interceptors.add(AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "AWSGlue.GetDataQualityModel")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: GetDataQualityModelInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + 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: "Glue") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "GetDataQualityModel") + 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 `GetDataQualityModelResult` operation on the `AWSGlue` service. + /// + /// Retrieve a statistic's predictions for a given Profile ID. + /// + /// - Parameter GetDataQualityModelResultInput : [no documentation found] + /// + /// - Returns: `GetDataQualityModelResultOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `EntityNotFoundException` : A specified entity does not exist + /// - `InternalServiceException` : An internal service error occurred. + /// - `InvalidInputException` : The input provided was not valid. + /// - `OperationTimeoutException` : The operation timed out. + public func getDataQualityModelResult(input: GetDataQualityModelResultInput) async throws -> GetDataQualityModelResultOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "getDataQualityModelResult") + .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: "glue") + .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(GetDataQualityModelResultInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(GetDataQualityModelResultOutput.httpOutput(from:), GetDataQualityModelResultOutputError.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.interceptors.add(AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "AWSGlue.GetDataQualityModelResult")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: GetDataQualityModelResultInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + 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: "Glue") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "GetDataQualityModelResult") + 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 `GetDataQualityResult` operation on the `AWSGlue` service. /// /// Retrieves the result of a data quality rule evaluation. @@ -11136,6 +11352,147 @@ extension GlueClient { return try await op.execute(input: input) } + /// Performs the `ListDataQualityStatisticAnnotations` operation on the `AWSGlue` service. + /// + /// Retrieve annotations for a data quality statistic. + /// + /// - Parameter ListDataQualityStatisticAnnotationsInput : [no documentation found] + /// + /// - Returns: `ListDataQualityStatisticAnnotationsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `InternalServiceException` : An internal service error occurred. + /// - `InvalidInputException` : The input provided was not valid. + public func listDataQualityStatisticAnnotations(input: ListDataQualityStatisticAnnotationsInput) async throws -> ListDataQualityStatisticAnnotationsOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listDataQualityStatisticAnnotations") + .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: "glue") + .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(ListDataQualityStatisticAnnotationsInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(ListDataQualityStatisticAnnotationsOutput.httpOutput(from:), ListDataQualityStatisticAnnotationsOutputError.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.interceptors.add(AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "AWSGlue.ListDataQualityStatisticAnnotations")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: ListDataQualityStatisticAnnotationsInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + 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: "Glue") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "ListDataQualityStatisticAnnotations") + 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 `ListDataQualityStatistics` operation on the `AWSGlue` service. + /// + /// Retrieves a list of data quality statistics. + /// + /// - Parameter ListDataQualityStatisticsInput : [no documentation found] + /// + /// - Returns: `ListDataQualityStatisticsOutput` : [no documentation found] + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `EntityNotFoundException` : A specified entity does not exist + /// - `InternalServiceException` : An internal service error occurred. + /// - `InvalidInputException` : The input provided was not valid. + public func listDataQualityStatistics(input: ListDataQualityStatisticsInput) async throws -> ListDataQualityStatisticsOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "listDataQualityStatistics") + .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: "glue") + .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(ListDataQualityStatisticsInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(ListDataQualityStatisticsOutput.httpOutput(from:), ListDataQualityStatisticsOutputError.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.interceptors.add(AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "AWSGlue.ListDataQualityStatistics")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: ListDataQualityStatisticsInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + 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: "Glue") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "ListDataQualityStatistics") + 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 `ListDevEndpoints` operation on the `AWSGlue` service. /// /// Retrieves the names of all DevEndpoint resources in this Amazon Web Services account, or the resources with the specified tag. This operation allows you to see which resources are available in your account, and their names. This operation takes the optional Tags field, which you can use as a filter on the response so that tagged resources can be retrieved as a group. If you choose to use tags filtering, only resources with the tag are retrieved. @@ -12071,6 +12428,77 @@ extension GlueClient { return try await op.execute(input: input) } + /// Performs the `PutDataQualityProfileAnnotation` operation on the `AWSGlue` service. + /// + /// Annotate all datapoints for a Profile. + /// + /// - Parameter PutDataQualityProfileAnnotationInput : [no documentation found] + /// + /// - Returns: `PutDataQualityProfileAnnotationOutput` : Left blank. + /// + /// - Throws: One of the exceptions listed below __Possible Exceptions__. + /// + /// __Possible Exceptions:__ + /// - `EntityNotFoundException` : A specified entity does not exist + /// - `InternalServiceException` : An internal service error occurred. + /// - `InvalidInputException` : The input provided was not valid. + public func putDataQualityProfileAnnotation(input: PutDataQualityProfileAnnotationInput) async throws -> PutDataQualityProfileAnnotationOutput { + let context = Smithy.ContextBuilder() + .withMethod(value: .post) + .withServiceName(value: serviceName) + .withOperation(value: "putDataQualityProfileAnnotation") + .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: "glue") + .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(PutDataQualityProfileAnnotationInput.urlPathProvider(_:))) + builder.interceptors.add(ClientRuntime.URLHostMiddleware()) + builder.interceptors.add(ClientRuntime.ContentLengthMiddleware()) + builder.deserialize(ClientRuntime.DeserializeMiddleware(PutDataQualityProfileAnnotationOutput.httpOutput(from:), PutDataQualityProfileAnnotationOutputError.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.interceptors.add(AWSClientRuntime.XAmzTargetMiddleware(xAmzTarget: "AWSGlue.PutDataQualityProfileAnnotation")) + builder.serialize(ClientRuntime.BodyMiddleware(rootNodeInfo: "", inputWritingClosure: PutDataQualityProfileAnnotationInput.write(value:to:))) + builder.interceptors.add(ClientRuntime.ContentTypeMiddleware(contentType: "application/x-amz-json-1.1")) + 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: "Glue") + metricsAttributes.set(key: ClientRuntime.OrchestratorMetricsAttributesKeys.method, value: "PutDataQualityProfileAnnotation") + 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 `PutResourcePolicy` operation on the `AWSGlue` service. /// /// Sets the Data Catalog resource policy for access control. diff --git a/Sources/Services/AWSGlue/Sources/AWSGlue/Models.swift b/Sources/Services/AWSGlue/Sources/AWSGlue/Models.swift index 2157aeb00dd..1df26d367e7 100644 --- a/Sources/Services/AWSGlue/Sources/AWSGlue/Models.swift +++ b/Sources/Services/AWSGlue/Sources/AWSGlue/Models.swift @@ -482,6 +482,107 @@ extension GlueClientTypes { } +extension GlueClientTypes { + /// A failed annotation. + public struct AnnotationError { + /// The reason why the annotation failed. + public var failureReason: Swift.String? + /// The Profile ID for the failed annotation. + public var profileId: Swift.String? + /// The Statistic ID for the failed annotation. + public var statisticId: Swift.String? + + public init( + failureReason: Swift.String? = nil, + profileId: Swift.String? = nil, + statisticId: Swift.String? = nil + ) + { + self.failureReason = failureReason + self.profileId = profileId + self.statisticId = statisticId + } + } + +} + +extension GlueClientTypes { + + public enum InclusionAnnotationValue: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case exclude + case include + case sdkUnknown(Swift.String) + + public static var allCases: [InclusionAnnotationValue] { + return [ + .exclude, + .include + ] + } + + 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 .exclude: return "EXCLUDE" + case .include: return "INCLUDE" + case let .sdkUnknown(s): return s + } + } + } +} + +extension GlueClientTypes { + /// A timestamped inclusion annotation. + public struct TimestampedInclusionAnnotation { + /// The timestamp when the inclusion annotation was last modified. + public var lastModifiedOn: Foundation.Date? + /// The inclusion annotation value. + public var value: GlueClientTypes.InclusionAnnotationValue? + + public init( + lastModifiedOn: Foundation.Date? = nil, + value: GlueClientTypes.InclusionAnnotationValue? = nil + ) + { + self.lastModifiedOn = lastModifiedOn + self.value = value + } + } + +} + +extension GlueClientTypes { + /// A Statistic Annotation. + public struct StatisticAnnotation { + /// The inclusion annotation applied to the statistic. + public var inclusionAnnotation: GlueClientTypes.TimestampedInclusionAnnotation? + /// The Profile ID. + public var profileId: Swift.String? + /// The Statistic ID. + public var statisticId: Swift.String? + /// The timestamp when the annotated statistic was recorded. + public var statisticRecordedOn: Foundation.Date? + + public init( + inclusionAnnotation: GlueClientTypes.TimestampedInclusionAnnotation? = nil, + profileId: Swift.String? = nil, + statisticId: Swift.String? = nil, + statisticRecordedOn: Foundation.Date? = nil + ) + { + self.inclusionAnnotation = inclusionAnnotation + self.profileId = profileId + self.statisticId = statisticId + self.statisticRecordedOn = statisticRecordedOn + } + } + +} + extension GlueClientTypes { /// Specifies a single column in a Glue schema definition. public struct GlueStudioSchemaColumn { @@ -2553,6 +2654,11 @@ extension GlueClientTypes { } +extension GlueClientTypes.DataQualityAnalyzerResult: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "DataQualityAnalyzerResult(name: \(Swift.String(describing: name)), description: \"CONTENT_REDACTED\", evaluatedMetrics: \"CONTENT_REDACTED\", evaluationMessage: \"CONTENT_REDACTED\")"} +} + extension GlueClientTypes { /// The database and table in the Glue Data Catalog that is used for input or output data. public struct GlueTable { @@ -2645,16 +2751,20 @@ extension GlueClientTypes { public var metricValues: GlueClientTypes.DataQualityMetricValues? /// A list of new data quality rules generated as part of the observation based on the data quality metric value. public var newRules: [Swift.String]? + /// The Statistic ID. + public var statisticId: Swift.String? public init( metricName: Swift.String? = nil, metricValues: GlueClientTypes.DataQualityMetricValues? = nil, - newRules: [Swift.String]? = nil + newRules: [Swift.String]? = nil, + statisticId: Swift.String? = nil ) { self.metricName = metricName self.metricValues = metricValues self.newRules = newRules + self.statisticId = statisticId } } @@ -2680,6 +2790,11 @@ extension GlueClientTypes { } +extension GlueClientTypes.DataQualityObservation: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "DataQualityObservation(metricBasedObservation: \(Swift.String(describing: metricBasedObservation)), description: \"CONTENT_REDACTED\")"} +} + extension GlueClientTypes { public enum DataQualityRuleResultStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { @@ -2719,6 +2834,8 @@ extension GlueClientTypes { public var description: Swift.String? /// A map of metrics associated with the evaluation of the rule. public var evaluatedMetrics: [Swift.String: Swift.Double]? + /// The evaluated rule. + public var evaluatedRule: Swift.String? /// An evaluation message. public var evaluationMessage: Swift.String? /// The name of the data quality rule. @@ -2729,6 +2846,7 @@ extension GlueClientTypes { public init( description: Swift.String? = nil, evaluatedMetrics: [Swift.String: Swift.Double]? = nil, + evaluatedRule: Swift.String? = nil, evaluationMessage: Swift.String? = nil, name: Swift.String? = nil, result: GlueClientTypes.DataQualityRuleResultStatus? = nil @@ -2736,6 +2854,7 @@ extension GlueClientTypes { { self.description = description self.evaluatedMetrics = evaluatedMetrics + self.evaluatedRule = evaluatedRule self.evaluationMessage = evaluationMessage self.name = name self.result = result @@ -2744,6 +2863,11 @@ extension GlueClientTypes { } +extension GlueClientTypes.DataQualityRuleResult: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "DataQualityRuleResult(name: \(Swift.String(describing: name)), result: \(Swift.String(describing: result)), description: \"CONTENT_REDACTED\", evaluatedMetrics: \"CONTENT_REDACTED\", evaluatedRule: \"CONTENT_REDACTED\", evaluationMessage: \"CONTENT_REDACTED\")"} +} + extension GlueClientTypes { /// Describes a data quality result. public struct DataQualityResult { @@ -2761,6 +2885,8 @@ extension GlueClientTypes { public var jobRunId: Swift.String? /// A list of DataQualityObservation objects representing the observations generated after evaluating the rules and analyzers. public var observations: [GlueClientTypes.DataQualityObservation]? + /// The Profile ID for the data quality result. + public var profileId: Swift.String? /// A unique result ID for the data quality result. public var resultId: Swift.String? /// A list of DataQualityRuleResult objects representing the results for each rule. @@ -2782,6 +2908,7 @@ extension GlueClientTypes { jobName: Swift.String? = nil, jobRunId: Swift.String? = nil, observations: [GlueClientTypes.DataQualityObservation]? = nil, + profileId: Swift.String? = nil, resultId: Swift.String? = nil, ruleResults: [GlueClientTypes.DataQualityRuleResult]? = nil, rulesetEvaluationRunId: Swift.String? = nil, @@ -2797,6 +2924,7 @@ extension GlueClientTypes { self.jobName = jobName self.jobRunId = jobRunId self.observations = observations + self.profileId = profileId self.resultId = resultId self.ruleResults = ruleResults self.rulesetEvaluationRunId = rulesetEvaluationRunId @@ -8882,6 +9010,59 @@ public struct BatchGetWorkflowsOutput { } } +extension GlueClientTypes { + /// An Inclusion Annotation. + public struct DatapointInclusionAnnotation { + /// The inclusion annotation value to apply to the statistic. + public var inclusionAnnotation: GlueClientTypes.InclusionAnnotationValue? + /// The ID of the data quality profile the statistic belongs to. + public var profileId: Swift.String? + /// The Statistic ID. + public var statisticId: Swift.String? + + public init( + inclusionAnnotation: GlueClientTypes.InclusionAnnotationValue? = nil, + profileId: Swift.String? = nil, + statisticId: Swift.String? = nil + ) + { + self.inclusionAnnotation = inclusionAnnotation + self.profileId = profileId + self.statisticId = statisticId + } + } + +} + +public struct BatchPutDataQualityStatisticAnnotationInput { + /// Client Token. + public var clientToken: Swift.String? + /// A list of DatapointInclusionAnnotation's. + /// This member is required. + public var inclusionAnnotations: [GlueClientTypes.DatapointInclusionAnnotation]? + + public init( + clientToken: Swift.String? = nil, + inclusionAnnotations: [GlueClientTypes.DatapointInclusionAnnotation]? = nil + ) + { + self.clientToken = clientToken + self.inclusionAnnotations = inclusionAnnotations + } +} + +public struct BatchPutDataQualityStatisticAnnotationOutput { + /// A list of AnnotationError's. + public var failedInclusionAnnotations: [GlueClientTypes.AnnotationError]? + + public init( + failedInclusionAnnotations: [GlueClientTypes.AnnotationError]? = nil + ) + { + self.failedInclusionAnnotations = failedInclusionAnnotations + } +} + public struct BatchStopJobRunInput { /// The name of the job definition for which to stop job runs. /// This member is required. @@ -10354,6 +10535,8 @@ extension GlueClientTypes { public struct CreateDataQualityRulesetInput { /// Used for idempotency and is recommended to be set to a random ID (such as a UUID) to avoid creating or starting multiple instances of the same resource. public var clientToken: Swift.String? + /// The name of the security configuration created with the data quality encryption option. + public var dataQualitySecurityConfiguration: Swift.String? /// A description of the data quality ruleset. public var description: Swift.String? /// A unique name for the data quality ruleset. @@ -10369,6 +10552,7 @@ public struct CreateDataQualityRulesetInput { public init( clientToken: Swift.String? = nil, + dataQualitySecurityConfiguration: Swift.String? = nil, description: Swift.String? = nil, name: Swift.String? = nil, ruleset: Swift.String? = nil, @@ -10377,6 +10561,7 @@ public struct CreateDataQualityRulesetInput { ) { self.clientToken = clientToken + self.dataQualitySecurityConfiguration = dataQualitySecurityConfiguration self.description = description self.name = name self.ruleset = ruleset @@ -15318,6 +15503,149 @@ public struct GetDataflowGraphOutput { } } +public struct GetDataQualityModelInput { + /// The Profile ID. + /// This member is required. + public var profileId: Swift.String? + /// The Statistic ID. + public var statisticId: Swift.String? + + public init( + profileId: Swift.String? = nil, + statisticId: Swift.String? = nil + ) + { + self.profileId = profileId + self.statisticId = statisticId + } +} + +extension GlueClientTypes { + + public enum DataQualityModelStatus: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case failed + case running + case succeeded + case sdkUnknown(Swift.String) + + public static var allCases: [DataQualityModelStatus] { + return [ + .failed, + .running, + .succeeded + ] + } + + 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 .running: return "RUNNING" + case .succeeded: return "SUCCEEDED" + case let .sdkUnknown(s): return s + } + } + } +} + +public struct GetDataQualityModelOutput { + /// The timestamp when the data quality model training completed. + public var completedOn: Foundation.Date? + /// The training failure reason. + public var failureReason: Swift.String? + /// The timestamp when the data quality model training started. + public var startedOn: Foundation.Date? + /// The training status of the data quality model. + public var status: GlueClientTypes.DataQualityModelStatus? + + public init( + completedOn: Foundation.Date? = nil, + failureReason: Swift.String? = nil, + startedOn: Foundation.Date? = nil, + status: GlueClientTypes.DataQualityModelStatus? = nil + ) + { + self.completedOn = completedOn + self.failureReason = failureReason + self.startedOn = startedOn + self.status = status + } +} + +public struct GetDataQualityModelResultInput { + /// The Profile ID. + /// This member is required. + public var profileId: Swift.String? + /// The Statistic ID. + /// This member is required. + public var statisticId: Swift.String? + + public init( + profileId: Swift.String? = nil, + statisticId: Swift.String? = nil + ) + { + self.profileId = profileId + self.statisticId = statisticId + } +} + +extension GlueClientTypes { + /// The statistic model result. + public struct StatisticModelResult { + /// The actual value. + public var actualValue: Swift.Double? + /// The date. + public var date: Foundation.Date? + /// The inclusion annotation. + public var inclusionAnnotation: GlueClientTypes.InclusionAnnotationValue? + /// The lower bound. + public var lowerBound: Swift.Double? + /// The predicted value. + public var predictedValue: Swift.Double? + /// The upper bound. + public var upperBound: Swift.Double? + + public init( + actualValue: Swift.Double? = nil, + date: Foundation.Date? = nil, + inclusionAnnotation: GlueClientTypes.InclusionAnnotationValue? = nil, + lowerBound: Swift.Double? = nil, + predictedValue: Swift.Double? = nil, + upperBound: Swift.Double? = nil + ) + { + self.actualValue = actualValue + self.date = date + self.inclusionAnnotation = inclusionAnnotation + self.lowerBound = lowerBound + self.predictedValue = predictedValue + self.upperBound = upperBound + } + } + +} + +public struct GetDataQualityModelResultOutput { + /// The timestamp when the data quality model training completed. + public var completedOn: Foundation.Date? + /// A list of StatisticModelResult + public var model: [GlueClientTypes.StatisticModelResult]? + + public init( + completedOn: Foundation.Date? = nil, + model: [GlueClientTypes.StatisticModelResult]? = nil + ) + { + self.completedOn = completedOn + self.model = model + } +} + public struct GetDataQualityResultInput { /// A unique result ID for the data quality result. /// This member is required. @@ -15346,6 +15674,8 @@ public struct GetDataQualityResultOutput { public var jobRunId: Swift.String? /// A list of DataQualityObservation objects representing the observations generated after evaluating the rules and analyzers. public var observations: [GlueClientTypes.DataQualityObservation]? + /// The Profile ID for the data quality result. + public var profileId: Swift.String? /// A unique result ID for the data quality result. public var resultId: Swift.String? /// A list of DataQualityRuleResult objects representing the results for each rule. @@ -15367,6 +15697,7 @@ public struct GetDataQualityResultOutput { jobName: Swift.String? = nil, jobRunId: Swift.String? = nil, observations: [GlueClientTypes.DataQualityObservation]? = nil, + profileId: Swift.String? = nil, resultId: Swift.String? = nil, ruleResults: [GlueClientTypes.DataQualityRuleResult]? = nil, rulesetEvaluationRunId: Swift.String? = nil, @@ -15382,6 +15713,7 @@ public struct GetDataQualityResultOutput { self.jobName = jobName self.jobRunId = jobRunId self.observations = observations + self.profileId = profileId self.resultId = resultId self.ruleResults = ruleResults self.rulesetEvaluationRunId = rulesetEvaluationRunId @@ -15409,6 +15741,8 @@ public struct GetDataQualityRuleRecommendationRunOutput { public var completedOn: Foundation.Date? /// The name of the ruleset that was created by the run. public var createdRulesetName: Swift.String? + /// The name of the security configuration created with the data quality encryption option. + public var dataQualitySecurityConfiguration: Swift.String? /// The data source (an Glue table) associated with this run. public var dataSource: GlueClientTypes.DataSource? /// The error strings that are associated with the run. @@ -15435,6 +15769,7 @@ public struct GetDataQualityRuleRecommendationRunOutput { public init( completedOn: Foundation.Date? = nil, createdRulesetName: Swift.String? = nil, + dataQualitySecurityConfiguration: Swift.String? = nil, dataSource: GlueClientTypes.DataSource? = nil, errorString: Swift.String? = nil, executionTime: Swift.Int = 0, @@ -15450,6 +15785,7 @@ public struct GetDataQualityRuleRecommendationRunOutput { { self.completedOn = completedOn self.createdRulesetName = createdRulesetName + self.dataQualitySecurityConfiguration = dataQualitySecurityConfiguration self.dataSource = dataSource self.errorString = errorString self.executionTime = executionTime @@ -15480,6 +15816,8 @@ public struct GetDataQualityRulesetInput { public struct GetDataQualityRulesetOutput { /// A timestamp. The time and date that this data quality ruleset was created. public var createdOn: Foundation.Date? + /// The name of the security configuration created with the data quality encryption option. + public var dataQualitySecurityConfiguration: Swift.String? /// A description of the ruleset. public var description: Swift.String? /// A timestamp. The last point in time when this data quality ruleset was modified. @@ -15495,6 +15833,7 @@ public struct GetDataQualityRulesetOutput { public init( createdOn: Foundation.Date? = nil, + dataQualitySecurityConfiguration: Swift.String? = nil, description: Swift.String? = nil, lastModifiedOn: Foundation.Date? = nil, name: Swift.String? = nil, @@ -15504,6 +15843,7 @@ public struct GetDataQualityRulesetOutput { ) { self.createdOn = createdOn + self.dataQualitySecurityConfiguration = dataQualitySecurityConfiguration self.description = description self.lastModifiedOn = lastModifiedOn self.name = name @@ -20105,6 +20445,227 @@ public struct ListDataQualityRulesetsOutput { } } +extension GlueClientTypes { + /// A timestamp filter. + public struct TimestampFilter { + /// The timestamp after which statistics should be included in the results. + public var recordedAfter: Foundation.Date? + /// The timestamp before which statistics should be included in the results. + public var recordedBefore: Foundation.Date? + + public init( + recordedAfter: Foundation.Date? = nil, + recordedBefore: Foundation.Date? = nil + ) + { + self.recordedAfter = recordedAfter + self.recordedBefore = recordedBefore + } + } + +} + +public struct ListDataQualityStatisticAnnotationsInput { + /// The maximum number of results to return in this request. + public var maxResults: Swift.Int? + /// A pagination token to retrieve the next set of results. + public var nextToken: Swift.String? + /// The Profile ID. + public var profileId: Swift.String? + /// The Statistic ID. + public var statisticId: Swift.String? + /// A timestamp filter. + public var timestampFilter: GlueClientTypes.TimestampFilter? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil, + profileId: Swift.String? = nil, + statisticId: Swift.String? = nil, + timestampFilter: GlueClientTypes.TimestampFilter? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + self.profileId = profileId + self.statisticId = statisticId + self.timestampFilter = timestampFilter + } +} + +public struct ListDataQualityStatisticAnnotationsOutput { + /// A list of StatisticAnnotation applied to the Statistic + public var annotations: [GlueClientTypes.StatisticAnnotation]? + /// A pagination token to retrieve the next set of results. + public var nextToken: Swift.String? + + public init( + annotations: [GlueClientTypes.StatisticAnnotation]? = nil, + nextToken: Swift.String? = nil + ) + { + self.annotations = annotations + self.nextToken = nextToken + } +} + +public struct ListDataQualityStatisticsInput { + /// The maximum number of results to return in this request. + public var maxResults: Swift.Int? + /// A pagination token to request the next page of results. + public var nextToken: Swift.String? + /// The Profile ID. + public var profileId: Swift.String? + /// The Statistic ID. + public var statisticId: Swift.String? + /// A timestamp filter. + public var timestampFilter: GlueClientTypes.TimestampFilter? + + public init( + maxResults: Swift.Int? = nil, + nextToken: Swift.String? = nil, + profileId: Swift.String? = nil, + statisticId: Swift.String? = nil, + timestampFilter: GlueClientTypes.TimestampFilter? = nil + ) + { + self.maxResults = maxResults + self.nextToken = nextToken + self.profileId = profileId + self.statisticId = statisticId + self.timestampFilter = timestampFilter + } +} + +extension GlueClientTypes { + + public enum StatisticEvaluationLevel: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { + case column + case dataset + case multicolumn + case sdkUnknown(Swift.String) + + public static var allCases: [StatisticEvaluationLevel] { + return [ + .column, + .dataset, + .multicolumn + ] + } + + 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 .column: return "Column" + case .dataset: return "Dataset" + case .multicolumn: return "Multicolumn" + case let .sdkUnknown(s): return s + } + } + } +} + +extension GlueClientTypes { + /// A run identifier. + public struct RunIdentifier { + /// The Job Run ID. + public var jobRunId: Swift.String? + /// The Run ID. + public var runId: Swift.String? + + public init( + jobRunId: Swift.String? = nil, + runId: Swift.String? = nil + ) + { + self.jobRunId = jobRunId + self.runId = runId + } + } + +} + +extension GlueClientTypes { + /// Summary information about a statistic. + public struct StatisticSummary { + /// The list of columns referenced by the statistic. + public var columnsReferenced: [Swift.String]? + /// The value of the statistic. + public var doubleValue: Swift.Double + /// The evaluation level of the statistic. Possible values: Dataset, Column, Multicolumn. + public var evaluationLevel: GlueClientTypes.StatisticEvaluationLevel? + /// The inclusion annotation for the statistic. + public var inclusionAnnotation: GlueClientTypes.TimestampedInclusionAnnotation? + /// The Profile ID. + public var profileId: Swift.String? + /// The timestamp when the statistic was recorded. + public var recordedOn: Foundation.Date? + /// The list of datasets referenced by the statistic. + public var referencedDatasets: [Swift.String]? + /// The Run Identifier + public var runIdentifier: GlueClientTypes.RunIdentifier? + /// The Statistic ID. + public var statisticId: Swift.String? + /// The name of the statistic. + public var statisticName: Swift.String? + /// A StatisticPropertiesMap, which contains a NameString and DescriptionString + public var statisticProperties: [Swift.String: Swift.String]? + + public init( + columnsReferenced: [Swift.String]? = nil, + doubleValue: Swift.Double = 0.0, + evaluationLevel: GlueClientTypes.StatisticEvaluationLevel? = nil, + inclusionAnnotation: GlueClientTypes.TimestampedInclusionAnnotation? = nil, + profileId: Swift.String? = nil, + recordedOn: Foundation.Date? = nil, + referencedDatasets: [Swift.String]? = nil, + runIdentifier: GlueClientTypes.RunIdentifier? = nil, + statisticId: Swift.String? = nil, + statisticName: Swift.String? = nil, + statisticProperties: [Swift.String: Swift.String]? = nil + ) + { + self.columnsReferenced = columnsReferenced + self.doubleValue = doubleValue + self.evaluationLevel = evaluationLevel + self.inclusionAnnotation = inclusionAnnotation + self.profileId = profileId + self.recordedOn = recordedOn + self.referencedDatasets = referencedDatasets + self.runIdentifier = runIdentifier + self.statisticId = statisticId + self.statisticName = statisticName + self.statisticProperties = statisticProperties + } + } + +} + +extension GlueClientTypes.StatisticSummary: Swift.CustomDebugStringConvertible { + public var debugDescription: Swift.String { + "StatisticSummary(columnsReferenced: \(Swift.String(describing: columnsReferenced)), doubleValue: \(Swift.String(describing: doubleValue)), evaluationLevel: \(Swift.String(describing: evaluationLevel)), inclusionAnnotation: \(Swift.String(describing: inclusionAnnotation)), profileId: \(Swift.String(describing: profileId)), recordedOn: \(Swift.String(describing: recordedOn)), referencedDatasets: \(Swift.String(describing: referencedDatasets)), runIdentifier: \(Swift.String(describing: runIdentifier)), statisticId: \(Swift.String(describing: statisticId)), statisticName: \(Swift.String(describing: statisticName)), statisticProperties: \"CONTENT_REDACTED\")"} +} + +public struct ListDataQualityStatisticsOutput { + /// A pagination token to request the next page of results. + public var nextToken: Swift.String? + /// A StatisticSummaryList. + public var statistics: [GlueClientTypes.StatisticSummary]? + + public init( + nextToken: Swift.String? = nil, + statistics: [GlueClientTypes.StatisticSummary]? = nil + ) + { + self.nextToken = nextToken + self.statistics = statistics + } +} + public struct ListDevEndpointsInput { /// The maximum size of a list to return. public var maxResults: Swift.Int? @@ -20738,6 +21299,30 @@ public struct PutDataCatalogEncryptionSettingsOutput { public init() { } } +public struct PutDataQualityProfileAnnotationInput { + /// The inclusion annotation value to apply to the profile. + /// This member is required. + public var inclusionAnnotation: GlueClientTypes.InclusionAnnotationValue? + /// The ID of the data quality monitoring profile to annotate. + /// This member is required. + public var profileId: Swift.String? + + public init( + inclusionAnnotation: GlueClientTypes.InclusionAnnotationValue? = nil, + profileId: Swift.String? = nil + ) + { + self.inclusionAnnotation = inclusionAnnotation + self.profileId = profileId + } +} + +/// Left blank. +public struct PutDataQualityProfileAnnotationOutput { + + public init() { } +} + extension GlueClientTypes { public enum EnableHybridValues: Swift.Equatable, Swift.RawRepresentable, Swift.CaseIterable, Swift.Hashable { @@ -21708,6 +22293,8 @@ public struct StartDataQualityRuleRecommendationRunInput { public var clientToken: Swift.String? /// A name for the ruleset. public var createdRulesetName: Swift.String? + /// The name of the security configuration created with the data quality encryption option. + public var dataQualitySecurityConfiguration: Swift.String? /// The data source (Glue table) associated with this run. /// This member is required. public var dataSource: GlueClientTypes.DataSource? @@ -21722,6 +22309,7 @@ public struct StartDataQualityRuleRecommendationRunInput { public init( clientToken: Swift.String? = nil, createdRulesetName: Swift.String? = nil, + dataQualitySecurityConfiguration: Swift.String? = nil, dataSource: GlueClientTypes.DataSource? = nil, numberOfWorkers: Swift.Int? = nil, role: Swift.String? = nil, @@ -21730,6 +22318,7 @@ public struct StartDataQualityRuleRecommendationRunInput { { self.clientToken = clientToken self.createdRulesetName = createdRulesetName + self.dataQualitySecurityConfiguration = dataQualitySecurityConfiguration self.dataSource = dataSource self.numberOfWorkers = numberOfWorkers self.role = role @@ -24514,6 +25103,13 @@ extension BatchGetWorkflowsInput { } } +extension BatchPutDataQualityStatisticAnnotationInput { + + static func urlPathProvider(_ value: BatchPutDataQualityStatisticAnnotationInput) -> Swift.String? { + return "/" + } +} + extension BatchStopJobRunInput { static func urlPathProvider(_ value: BatchStopJobRunInput) -> Swift.String? { @@ -25053,6 +25649,20 @@ extension GetDataflowGraphInput { } } +extension GetDataQualityModelInput { + + static func urlPathProvider(_ value: GetDataQualityModelInput) -> Swift.String? { + return "/" + } +} + +extension GetDataQualityModelResultInput { + + static func urlPathProvider(_ value: GetDataQualityModelResultInput) -> Swift.String? { + return "/" + } +} + extension GetDataQualityResultInput { static func urlPathProvider(_ value: GetDataQualityResultInput) -> Swift.String? { @@ -25466,6 +26076,20 @@ extension ListDataQualityRulesetsInput { } } +extension ListDataQualityStatisticAnnotationsInput { + + static func urlPathProvider(_ value: ListDataQualityStatisticAnnotationsInput) -> Swift.String? { + return "/" + } +} + +extension ListDataQualityStatisticsInput { + + static func urlPathProvider(_ value: ListDataQualityStatisticsInput) -> Swift.String? { + return "/" + } +} + extension ListDevEndpointsInput { static func urlPathProvider(_ value: ListDevEndpointsInput) -> Swift.String? { @@ -25557,6 +26181,13 @@ extension PutDataCatalogEncryptionSettingsInput { } } +extension PutDataQualityProfileAnnotationInput { + + static func urlPathProvider(_ value: PutDataQualityProfileAnnotationInput) -> Swift.String? { + return "/" + } +} + extension PutResourcePolicyInput { static func urlPathProvider(_ value: PutResourcePolicyInput) -> Swift.String? { @@ -26074,6 +26705,15 @@ extension BatchGetWorkflowsInput { } } +extension BatchPutDataQualityStatisticAnnotationInput { + + static func write(value: BatchPutDataQualityStatisticAnnotationInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ClientToken"].write(value.clientToken) + try writer["InclusionAnnotations"].writeList(value.inclusionAnnotations, memberWritingClosure: GlueClientTypes.DatapointInclusionAnnotation.write(value:to:), memberNodeInfo: "member", isFlattened: false) + } +} + extension BatchStopJobRunInput { static func write(value: BatchStopJobRunInput?, to writer: SmithyJSON.Writer) throws { @@ -26218,6 +26858,7 @@ extension CreateDataQualityRulesetInput { static func write(value: CreateDataQualityRulesetInput?, to writer: SmithyJSON.Writer) throws { guard let value else { return } try writer["ClientToken"].write(value.clientToken) + try writer["DataQualitySecurityConfiguration"].write(value.dataQualitySecurityConfiguration) try writer["Description"].write(value.description) try writer["Name"].write(value.name) try writer["Ruleset"].write(value.ruleset) @@ -26896,6 +27537,24 @@ extension GetDataflowGraphInput { } } +extension GetDataQualityModelInput { + + static func write(value: GetDataQualityModelInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ProfileId"].write(value.profileId) + try writer["StatisticId"].write(value.statisticId) + } +} + +extension GetDataQualityModelResultInput { + + static func write(value: GetDataQualityModelResultInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["ProfileId"].write(value.profileId) + try writer["StatisticId"].write(value.statisticId) + } +} + extension GetDataQualityResultInput { static func write(value: GetDataQualityResultInput?, to writer: SmithyJSON.Writer) throws { @@ -27497,6 +28156,30 @@ extension ListDataQualityRulesetsInput { } } +extension ListDataQualityStatisticAnnotationsInput { + + static func write(value: ListDataQualityStatisticAnnotationsInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["MaxResults"].write(value.maxResults) + try writer["NextToken"].write(value.nextToken) + try writer["ProfileId"].write(value.profileId) + try writer["StatisticId"].write(value.statisticId) + try writer["TimestampFilter"].write(value.timestampFilter, with: GlueClientTypes.TimestampFilter.write(value:to:)) + } +} + +extension ListDataQualityStatisticsInput { + + static func write(value: ListDataQualityStatisticsInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["MaxResults"].write(value.maxResults) + try writer["NextToken"].write(value.nextToken) + try writer["ProfileId"].write(value.profileId) + try writer["StatisticId"].write(value.statisticId) + try writer["TimestampFilter"].write(value.timestampFilter, with: GlueClientTypes.TimestampFilter.write(value:to:)) + } +} + extension ListDevEndpointsInput { static func write(value: ListDevEndpointsInput?, to writer: SmithyJSON.Writer) throws { @@ -27630,6 +28313,15 @@ extension PutDataCatalogEncryptionSettingsInput { } } +extension PutDataQualityProfileAnnotationInput { + + static func write(value: PutDataQualityProfileAnnotationInput?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["InclusionAnnotation"].write(value.inclusionAnnotation) + try writer["ProfileId"].write(value.profileId) + } +} + extension PutResourcePolicyInput { static func write(value: PutResourcePolicyInput?, to writer: SmithyJSON.Writer) throws { @@ -27785,6 +28477,7 @@ extension StartDataQualityRuleRecommendationRunInput { guard let value else { return } try writer["ClientToken"].write(value.clientToken) try writer["CreatedRulesetName"].write(value.createdRulesetName) + try writer["DataQualitySecurityConfiguration"].write(value.dataQualitySecurityConfiguration) try writer["DataSource"].write(value.dataSource, with: GlueClientTypes.DataSource.write(value:to:)) try writer["NumberOfWorkers"].write(value.numberOfWorkers) try writer["Role"].write(value.role) @@ -28416,6 +29109,18 @@ extension BatchGetWorkflowsOutput { } } +extension BatchPutDataQualityStatisticAnnotationOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> BatchPutDataQualityStatisticAnnotationOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = BatchPutDataQualityStatisticAnnotationOutput() + value.failedInclusionAnnotations = try reader["FailedInclusionAnnotations"].readListIfPresent(memberReadingClosure: GlueClientTypes.AnnotationError.read(from:), memberNodeInfo: "member", isFlattened: false) + return value + } +} + extension BatchStopJobRunOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> BatchStopJobRunOutput { @@ -29256,6 +29961,34 @@ extension GetDataflowGraphOutput { } } +extension GetDataQualityModelOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> GetDataQualityModelOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = GetDataQualityModelOutput() + value.completedOn = try reader["CompletedOn"].readTimestampIfPresent(format: .epochSeconds) + value.failureReason = try reader["FailureReason"].readIfPresent() + value.startedOn = try reader["StartedOn"].readTimestampIfPresent(format: .epochSeconds) + value.status = try reader["Status"].readIfPresent() + return value + } +} + +extension GetDataQualityModelResultOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> GetDataQualityModelResultOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = GetDataQualityModelResultOutput() + value.completedOn = try reader["CompletedOn"].readTimestampIfPresent(format: .epochSeconds) + value.model = try reader["Model"].readListIfPresent(memberReadingClosure: GlueClientTypes.StatisticModelResult.read(from:), memberNodeInfo: "member", isFlattened: false) + return value + } +} + extension GetDataQualityResultOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> GetDataQualityResultOutput { @@ -29270,6 +30003,7 @@ extension GetDataQualityResultOutput { value.jobName = try reader["JobName"].readIfPresent() value.jobRunId = try reader["JobRunId"].readIfPresent() value.observations = try reader["Observations"].readListIfPresent(memberReadingClosure: GlueClientTypes.DataQualityObservation.read(from:), memberNodeInfo: "member", isFlattened: false) + value.profileId = try reader["ProfileId"].readIfPresent() value.resultId = try reader["ResultId"].readIfPresent() value.ruleResults = try reader["RuleResults"].readListIfPresent(memberReadingClosure: GlueClientTypes.DataQualityRuleResult.read(from:), memberNodeInfo: "member", isFlattened: false) value.rulesetEvaluationRunId = try reader["RulesetEvaluationRunId"].readIfPresent() @@ -29289,6 +30023,7 @@ extension GetDataQualityRuleRecommendationRunOutput { var value = GetDataQualityRuleRecommendationRunOutput() value.completedOn = try reader["CompletedOn"].readTimestampIfPresent(format: .epochSeconds) value.createdRulesetName = try reader["CreatedRulesetName"].readIfPresent() + value.dataQualitySecurityConfiguration = try reader["DataQualitySecurityConfiguration"].readIfPresent() value.dataSource = try reader["DataSource"].readIfPresent(with: GlueClientTypes.DataSource.read(from:)) value.errorString = try reader["ErrorString"].readIfPresent() value.executionTime = try reader["ExecutionTime"].readIfPresent() ?? 0 @@ -29312,6 +30047,7 @@ extension GetDataQualityRulesetOutput { let reader = responseReader var value = GetDataQualityRulesetOutput() value.createdOn = try reader["CreatedOn"].readTimestampIfPresent(format: .epochSeconds) + value.dataQualitySecurityConfiguration = try reader["DataQualitySecurityConfiguration"].readIfPresent() value.description = try reader["Description"].readIfPresent() value.lastModifiedOn = try reader["LastModifiedOn"].readTimestampIfPresent(format: .epochSeconds) value.name = try reader["Name"].readIfPresent() @@ -30103,6 +30839,32 @@ extension ListDataQualityRulesetsOutput { } } +extension ListDataQualityStatisticAnnotationsOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> ListDataQualityStatisticAnnotationsOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = ListDataQualityStatisticAnnotationsOutput() + value.annotations = try reader["Annotations"].readListIfPresent(memberReadingClosure: GlueClientTypes.StatisticAnnotation.read(from:), memberNodeInfo: "member", isFlattened: false) + value.nextToken = try reader["NextToken"].readIfPresent() + return value + } +} + +extension ListDataQualityStatisticsOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> ListDataQualityStatisticsOutput { + let data = try await httpResponse.data() + let responseReader = try SmithyJSON.Reader.from(data: data) + let reader = responseReader + var value = ListDataQualityStatisticsOutput() + value.nextToken = try reader["NextToken"].readIfPresent() + value.statistics = try reader["Statistics"].readListIfPresent(memberReadingClosure: GlueClientTypes.StatisticSummary.read(from:), memberNodeInfo: "member", isFlattened: false) + return value + } +} + extension ListDevEndpointsOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> ListDevEndpointsOutput { @@ -30270,6 +31032,13 @@ extension PutDataCatalogEncryptionSettingsOutput { } } +extension PutDataQualityProfileAnnotationOutput { + + static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> PutDataQualityProfileAnnotationOutput { + return PutDataQualityProfileAnnotationOutput() + } +} + extension PutResourcePolicyOutput { static func httpOutput(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> PutResourcePolicyOutput { @@ -31099,6 +31868,23 @@ enum BatchGetWorkflowsOutputError { } } +enum BatchPutDataQualityStatisticAnnotationOutputError { + + 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.AWSJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "EntityNotFoundException": return try EntityNotFoundException.makeError(baseError: baseError) + case "InternalServiceException": return try InternalServiceException.makeError(baseError: baseError) + case "InvalidInputException": return try InvalidInputException.makeError(baseError: baseError) + case "ResourceNumberLimitExceededException": return try ResourceNumberLimitExceededException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum BatchStopJobRunOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -32448,6 +33234,40 @@ enum GetDataflowGraphOutputError { } } +enum GetDataQualityModelOutputError { + + 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.AWSJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "EntityNotFoundException": return try EntityNotFoundException.makeError(baseError: baseError) + case "InternalServiceException": return try InternalServiceException.makeError(baseError: baseError) + case "InvalidInputException": return try InvalidInputException.makeError(baseError: baseError) + case "OperationTimeoutException": return try OperationTimeoutException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + +enum GetDataQualityModelResultOutputError { + + 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.AWSJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "EntityNotFoundException": return try EntityNotFoundException.makeError(baseError: baseError) + case "InternalServiceException": return try InternalServiceException.makeError(baseError: baseError) + case "InvalidInputException": return try InvalidInputException.makeError(baseError: baseError) + case "OperationTimeoutException": return try OperationTimeoutException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum GetDataQualityResultOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -33473,6 +34293,37 @@ enum ListDataQualityRulesetsOutputError { } } +enum ListDataQualityStatisticAnnotationsOutputError { + + 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.AWSJSONError(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 "InvalidInputException": return try InvalidInputException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + +enum ListDataQualityStatisticsOutputError { + + 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.AWSJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "EntityNotFoundException": return try EntityNotFoundException.makeError(baseError: baseError) + case "InternalServiceException": return try InternalServiceException.makeError(baseError: baseError) + case "InvalidInputException": return try InvalidInputException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum ListDevEndpointsOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -33693,6 +34544,22 @@ enum PutDataCatalogEncryptionSettingsOutputError { } } +enum PutDataQualityProfileAnnotationOutputError { + + 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.AWSJSONError(httpResponse: httpResponse, responseReader: responseReader, noErrorWrapping: false) + if let error = baseError.customError() { return error } + switch baseError.code { + case "EntityNotFoundException": return try EntityNotFoundException.makeError(baseError: baseError) + case "InternalServiceException": return try InternalServiceException.makeError(baseError: baseError) + case "InvalidInputException": return try InvalidInputException.makeError(baseError: baseError) + default: return try AWSClientRuntime.UnknownAWSHTTPServiceError.makeError(baseError: baseError) + } + } +} + enum PutResourcePolicyOutputError { static func httpError(from httpResponse: SmithyHTTPAPI.HTTPResponse) async throws -> Swift.Error { @@ -35558,6 +36425,7 @@ extension GlueClientTypes.DataQualityResult { guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } var value = GlueClientTypes.DataQualityResult() value.resultId = try reader["ResultId"].readIfPresent() + value.profileId = try reader["ProfileId"].readIfPresent() value.score = try reader["Score"].readIfPresent() value.dataSource = try reader["DataSource"].readIfPresent(with: GlueClientTypes.DataSource.read(from:)) value.rulesetName = try reader["RulesetName"].readIfPresent() @@ -35591,6 +36459,7 @@ extension GlueClientTypes.MetricBasedObservation { guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } var value = GlueClientTypes.MetricBasedObservation() value.metricName = try reader["MetricName"].readIfPresent() + value.statisticId = try reader["StatisticId"].readIfPresent() value.metricValues = try reader["MetricValues"].readIfPresent(with: GlueClientTypes.DataQualityMetricValues.read(from:)) value.newRules = try reader["NewRules"].readListIfPresent(memberReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), memberNodeInfo: "member", isFlattened: false) return value @@ -35633,6 +36502,7 @@ extension GlueClientTypes.DataQualityRuleResult { value.evaluationMessage = try reader["EvaluationMessage"].readIfPresent() value.result = try reader["Result"].readIfPresent() value.evaluatedMetrics = try reader["EvaluatedMetrics"].readMapIfPresent(valueReadingClosure: SmithyReadWrite.ReadingClosures.readDouble(from:), keyNodeInfo: "key", valueNodeInfo: "value", isFlattened: false) + value.evaluatedRule = try reader["EvaluatedRule"].readIfPresent() return value } } @@ -38974,6 +39844,18 @@ extension GlueClientTypes.WorkflowRunStatistics { } } +extension GlueClientTypes.AnnotationError { + + static func read(from reader: SmithyJSON.Reader) throws -> GlueClientTypes.AnnotationError { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = GlueClientTypes.AnnotationError() + value.profileId = try reader["ProfileId"].readIfPresent() + value.statisticId = try reader["StatisticId"].readIfPresent() + value.failureReason = try reader["FailureReason"].readIfPresent() + return value + } +} + extension GlueClientTypes.BatchStopJobRunSuccessfulSubmission { static func read(from reader: SmithyJSON.Reader) throws -> GlueClientTypes.BatchStopJobRunSuccessfulSubmission { @@ -39733,6 +40615,21 @@ extension GlueClientTypes.CodeGenEdge { } } +extension GlueClientTypes.StatisticModelResult { + + static func read(from reader: SmithyJSON.Reader) throws -> GlueClientTypes.StatisticModelResult { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = GlueClientTypes.StatisticModelResult() + value.lowerBound = try reader["LowerBound"].readIfPresent() + value.upperBound = try reader["UpperBound"].readIfPresent() + value.predictedValue = try reader["PredictedValue"].readIfPresent() + value.actualValue = try reader["ActualValue"].readIfPresent() + value.date = try reader["Date"].readTimestampIfPresent(format: .epochSeconds) + value.inclusionAnnotation = try reader["InclusionAnnotation"].readIfPresent() + return value + } +} + extension GlueClientTypes.DataQualityTargetTable { static func write(value: GlueClientTypes.DataQualityTargetTable?, to writer: SmithyJSON.Writer) throws { @@ -40500,6 +41397,61 @@ extension GlueClientTypes.DataQualityRulesetListDetails { } } +extension GlueClientTypes.StatisticAnnotation { + + static func read(from reader: SmithyJSON.Reader) throws -> GlueClientTypes.StatisticAnnotation { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = GlueClientTypes.StatisticAnnotation() + value.profileId = try reader["ProfileId"].readIfPresent() + value.statisticId = try reader["StatisticId"].readIfPresent() + value.statisticRecordedOn = try reader["StatisticRecordedOn"].readTimestampIfPresent(format: .epochSeconds) + value.inclusionAnnotation = try reader["InclusionAnnotation"].readIfPresent(with: GlueClientTypes.TimestampedInclusionAnnotation.read(from:)) + return value + } +} + +extension GlueClientTypes.TimestampedInclusionAnnotation { + + static func read(from reader: SmithyJSON.Reader) throws -> GlueClientTypes.TimestampedInclusionAnnotation { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = GlueClientTypes.TimestampedInclusionAnnotation() + value.value = try reader["Value"].readIfPresent() + value.lastModifiedOn = try reader["LastModifiedOn"].readTimestampIfPresent(format: .epochSeconds) + return value + } +} + +extension GlueClientTypes.StatisticSummary { + + static func read(from reader: SmithyJSON.Reader) throws -> GlueClientTypes.StatisticSummary { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = GlueClientTypes.StatisticSummary() + value.statisticId = try reader["StatisticId"].readIfPresent() + value.profileId = try reader["ProfileId"].readIfPresent() + value.runIdentifier = try reader["RunIdentifier"].readIfPresent(with: GlueClientTypes.RunIdentifier.read(from:)) + value.statisticName = try reader["StatisticName"].readIfPresent() + value.doubleValue = try reader["DoubleValue"].readIfPresent() ?? 0 + value.evaluationLevel = try reader["EvaluationLevel"].readIfPresent() + value.columnsReferenced = try reader["ColumnsReferenced"].readListIfPresent(memberReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), memberNodeInfo: "member", isFlattened: false) + value.referencedDatasets = try reader["ReferencedDatasets"].readListIfPresent(memberReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), memberNodeInfo: "member", isFlattened: false) + value.statisticProperties = try reader["StatisticProperties"].readMapIfPresent(valueReadingClosure: SmithyReadWrite.ReadingClosures.readString(from:), keyNodeInfo: "key", valueNodeInfo: "value", isFlattened: false) + value.recordedOn = try reader["RecordedOn"].readTimestampIfPresent(format: .epochSeconds) + value.inclusionAnnotation = try reader["InclusionAnnotation"].readIfPresent(with: GlueClientTypes.TimestampedInclusionAnnotation.read(from:)) + return value + } +} + +extension GlueClientTypes.RunIdentifier { + + static func read(from reader: SmithyJSON.Reader) throws -> GlueClientTypes.RunIdentifier { + guard reader.hasContent else { throw SmithyReadWrite.ReaderError.requiredValueNotPresent } + var value = GlueClientTypes.RunIdentifier() + value.runId = try reader["RunId"].readIfPresent() + value.jobRunId = try reader["JobRunId"].readIfPresent() + return value + } +} + extension GlueClientTypes.RegistryListItem { static func read(from reader: SmithyJSON.Reader) throws -> GlueClientTypes.RegistryListItem { @@ -40615,6 +41567,16 @@ extension GlueClientTypes.BatchGetTableOptimizerEntry { } } +extension GlueClientTypes.DatapointInclusionAnnotation { + + static func write(value: GlueClientTypes.DatapointInclusionAnnotation?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["InclusionAnnotation"].write(value.inclusionAnnotation) + try writer["ProfileId"].write(value.profileId) + try writer["StatisticId"].write(value.statisticId) + } +} + extension GlueClientTypes.BatchUpdatePartitionRequestEntry { static func write(value: GlueClientTypes.BatchUpdatePartitionRequestEntry?, to writer: SmithyJSON.Writer) throws { @@ -41000,6 +41962,15 @@ extension GlueClientTypes.DataQualityRulesetFilterCriteria { } } +extension GlueClientTypes.TimestampFilter { + + static func write(value: GlueClientTypes.TimestampFilter?, to writer: SmithyJSON.Writer) throws { + guard let value else { return } + try writer["RecordedAfter"].writeTimestamp(value.recordedAfter, format: .epochSeconds) + try writer["RecordedBefore"].writeTimestamp(value.recordedBefore, format: .epochSeconds) + } +} + extension GlueClientTypes.MetadataKeyValuePair { static func write(value: GlueClientTypes.MetadataKeyValuePair?, to writer: SmithyJSON.Writer) throws {