{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2017-03-31",
    "endpointPrefix":"glue",
    "jsonVersion":"1.1",
    "protocol":"json",
    "protocols":["json"],
    "serviceFullName":"AWS Glue",
    "serviceId":"Glue",
    "signatureVersion":"v4",
    "targetPrefix":"AWSGlue",
    "uid":"glue-2017-03-31"
  },
  "operations":{
    "BatchCreatePartition":{
      "name":"BatchCreatePartition",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchCreatePartitionRequest"},
      "output":{"shape":"BatchCreatePartitionResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"InternalServiceException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Creates one or more partitions in a batch operation.</p>"
    },
    "BatchDeleteConnection":{
      "name":"BatchDeleteConnection",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchDeleteConnectionRequest"},
      "output":{"shape":"BatchDeleteConnectionResponse"},
      "errors":[
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Deletes a list of connection definitions from the Data Catalog.</p>"
    },
    "BatchDeletePartition":{
      "name":"BatchDeletePartition",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchDeletePartitionRequest"},
      "output":{"shape":"BatchDeletePartitionResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Deletes one or more partitions in a batch operation.</p>"
    },
    "BatchDeleteTable":{
      "name":"BatchDeleteTable",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchDeleteTableRequest"},
      "output":{"shape":"BatchDeleteTableResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"ResourceNotReadyException"}
      ],
      "documentation":"<p>Deletes multiple tables at once.</p> <note> <p>After completing this operation, you no longer have access to the table versions and partitions that belong to the deleted table. Glue deletes these \"orphaned\" resources asynchronously in a timely manner, at the discretion of the service.</p> <p>To ensure the immediate deletion of all related resources, before calling <code>BatchDeleteTable</code>, use <code>DeleteTableVersion</code> or <code>BatchDeleteTableVersion</code>, and <code>DeletePartition</code> or <code>BatchDeletePartition</code>, to delete any resources that belong to the table.</p> </note>"
    },
    "BatchDeleteTableVersion":{
      "name":"BatchDeleteTableVersion",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchDeleteTableVersionRequest"},
      "output":{"shape":"BatchDeleteTableVersionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Deletes a specified batch of versions of a table.</p>"
    },
    "BatchGetBlueprints":{
      "name":"BatchGetBlueprints",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchGetBlueprintsRequest"},
      "output":{"shape":"BatchGetBlueprintsResponse"},
      "errors":[
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Retrieves information about a list of blueprints.</p>"
    },
    "BatchGetCrawlers":{
      "name":"BatchGetCrawlers",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchGetCrawlersRequest"},
      "output":{"shape":"BatchGetCrawlersResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Returns a list of resource metadata for a given list of crawler names. After calling the <code>ListCrawlers</code> operation, you can call this operation to access the data to which you have been granted permissions. This operation supports all IAM permissions, including permission conditions that uses tags.</p>"
    },
    "BatchGetCustomEntityTypes":{
      "name":"BatchGetCustomEntityTypes",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchGetCustomEntityTypesRequest"},
      "output":{"shape":"BatchGetCustomEntityTypesResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves the details for the custom patterns specified by a list of names.</p>"
    },
    "BatchGetDataQualityResult":{
      "name":"BatchGetDataQualityResult",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchGetDataQualityResultRequest"},
      "output":{"shape":"BatchGetDataQualityResultResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Retrieves a list of data quality results for the specified result IDs.</p>"
    },
    "BatchGetDevEndpoints":{
      "name":"BatchGetDevEndpoints",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchGetDevEndpointsRequest"},
      "output":{"shape":"BatchGetDevEndpointsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Returns a list of resource metadata for a given list of development endpoint names. After calling the <code>ListDevEndpoints</code> operation, you can call this operation to access the data to which you have been granted permissions. This operation supports all IAM permissions, including permission conditions that uses tags.</p>"
    },
    "BatchGetJobs":{
      "name":"BatchGetJobs",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchGetJobsRequest"},
      "output":{"shape":"BatchGetJobsResponse"},
      "errors":[
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Returns a list of resource metadata for a given list of job names. After calling the <code>ListJobs</code> operation, you can call this operation to access the data to which you have been granted permissions. This operation supports all IAM permissions, including permission conditions that uses tags. </p>"
    },
    "BatchGetPartition":{
      "name":"BatchGetPartition",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchGetPartitionRequest"},
      "output":{"shape":"BatchGetPartitionResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"InvalidStateException"},
        {"shape":"FederationSourceException"},
        {"shape":"FederationSourceRetryableException"}
      ],
      "documentation":"<p>Retrieves partitions in a batch request.</p>"
    },
    "BatchGetTableOptimizer":{
      "name":"BatchGetTableOptimizer",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchGetTableOptimizerRequest"},
      "output":{"shape":"BatchGetTableOptimizerResponse"},
      "errors":[
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Returns the configuration for the specified table optimizers.</p>"
    },
    "BatchGetTriggers":{
      "name":"BatchGetTriggers",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchGetTriggersRequest"},
      "output":{"shape":"BatchGetTriggersResponse"},
      "errors":[
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Returns a list of resource metadata for a given list of trigger names. After calling the <code>ListTriggers</code> operation, you can call this operation to access the data to which you have been granted permissions. This operation supports all IAM permissions, including permission conditions that uses tags.</p>"
    },
    "BatchGetWorkflows":{
      "name":"BatchGetWorkflows",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchGetWorkflowsRequest"},
      "output":{"shape":"BatchGetWorkflowsResponse"},
      "errors":[
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Returns a list of resource metadata for a given list of workflow names. After calling the <code>ListWorkflows</code> operation, you can call this operation to access the data to which you have been granted permissions. This operation supports all IAM permissions, including permission conditions that uses tags.</p>"
    },
    "BatchStopJobRun":{
      "name":"BatchStopJobRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchStopJobRunRequest"},
      "output":{"shape":"BatchStopJobRunResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Stops one or more job runs for a specified job definition.</p>"
    },
    "BatchUpdatePartition":{
      "name":"BatchUpdatePartition",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"BatchUpdatePartitionRequest"},
      "output":{"shape":"BatchUpdatePartitionResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Updates one or more partitions in a batch operation.</p>"
    },
    "CancelDataQualityRuleRecommendationRun":{
      "name":"CancelDataQualityRuleRecommendationRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CancelDataQualityRuleRecommendationRunRequest"},
      "output":{"shape":"CancelDataQualityRuleRecommendationRunResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Cancels the specified recommendation run that was being used to generate rules.</p>"
    },
    "CancelDataQualityRulesetEvaluationRun":{
      "name":"CancelDataQualityRulesetEvaluationRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CancelDataQualityRulesetEvaluationRunRequest"},
      "output":{"shape":"CancelDataQualityRulesetEvaluationRunResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Cancels a run where a ruleset is being evaluated against a data source.</p>"
    },
    "CancelMLTaskRun":{
      "name":"CancelMLTaskRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CancelMLTaskRunRequest"},
      "output":{"shape":"CancelMLTaskRunResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Cancels (stops) a task run. Machine learning task runs are asynchronous tasks that Glue runs on your behalf as part of various machine learning workflows. You can cancel a machine learning task run at any time by calling <code>CancelMLTaskRun</code> with a task run's parent transform's <code>TransformID</code> and the task run's <code>TaskRunId</code>. </p>"
    },
    "CancelStatement":{
      "name":"CancelStatement",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CancelStatementRequest"},
      "output":{"shape":"CancelStatementResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"IllegalSessionStateException"}
      ],
      "documentation":"<p>Cancels the statement.</p>"
    },
    "CheckSchemaVersionValidity":{
      "name":"CheckSchemaVersionValidity",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CheckSchemaVersionValidityInput"},
      "output":{"shape":"CheckSchemaVersionValidityResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Validates the supplied schema. This call has no side effects, it simply validates using the supplied schema using <code>DataFormat</code> as the format. Since it does not take a schema set name, no compatibility checks are performed.</p>"
    },
    "CreateBlueprint":{
      "name":"CreateBlueprint",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateBlueprintRequest"},
      "output":{"shape":"CreateBlueprintResponse"},
      "errors":[
        {"shape":"AlreadyExistsException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"ResourceNumberLimitExceededException"}
      ],
      "documentation":"<p>Registers a blueprint with Glue.</p>"
    },
    "CreateClassifier":{
      "name":"CreateClassifier",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateClassifierRequest"},
      "output":{"shape":"CreateClassifierResponse"},
      "errors":[
        {"shape":"AlreadyExistsException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Creates a classifier in the user's account. This can be a <code>GrokClassifier</code>, an <code>XMLClassifier</code>, a <code>JsonClassifier</code>, or a <code>CsvClassifier</code>, depending on which field of the request is present.</p>"
    },
    "CreateConnection":{
      "name":"CreateConnection",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateConnectionRequest"},
      "output":{"shape":"CreateConnectionResponse"},
      "errors":[
        {"shape":"AlreadyExistsException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Creates a connection definition in the Data Catalog.</p> <p>Connections used for creating federated resources require the IAM <code>glue:PassConnection</code> permission.</p>"
    },
    "CreateCrawler":{
      "name":"CreateCrawler",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateCrawlerRequest"},
      "output":{"shape":"CreateCrawlerResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"}
      ],
      "documentation":"<p>Creates a new crawler with specified targets, role, configuration, and optional schedule. At least one crawl target must be specified, in the <code>s3Targets</code> field, the <code>jdbcTargets</code> field, or the <code>DynamoDBTargets</code> field.</p>"
    },
    "CreateCustomEntityType":{
      "name":"CreateCustomEntityType",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateCustomEntityTypeRequest"},
      "output":{"shape":"CreateCustomEntityTypeResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"IdempotentParameterMismatchException"},
        {"shape":"InternalServiceException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"}
      ],
      "documentation":"<p>Creates a custom pattern that is used to detect sensitive data across the columns and rows of your structured data.</p> <p>Each custom pattern you create specifies a regular expression and an optional list of context words. If no context words are passed only a regular expression is checked.</p>"
    },
    "CreateDataQualityRuleset":{
      "name":"CreateDataQualityRuleset",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateDataQualityRulesetRequest"},
      "output":{"shape":"CreateDataQualityRulesetResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"ResourceNumberLimitExceededException"}
      ],
      "documentation":"<p>Creates a data quality ruleset with DQDL rules applied to a specified Glue table.</p> <p>You create the ruleset using the Data Quality Definition Language (DQDL). For more information, see the Glue developer guide.</p>",
      "idempotent":true
    },
    "CreateDatabase":{
      "name":"CreateDatabase",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateDatabaseRequest"},
      "output":{"shape":"CreateDatabaseResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"ConcurrentModificationException"},
        {"shape":"FederatedResourceAlreadyExistsException"}
      ],
      "documentation":"<p>Creates a new database in a Data Catalog.</p>"
    },
    "CreateDevEndpoint":{
      "name":"CreateDevEndpoint",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateDevEndpointRequest"},
      "output":{"shape":"CreateDevEndpointResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"IdempotentParameterMismatchException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"ValidationException"},
        {"shape":"ResourceNumberLimitExceededException"}
      ],
      "documentation":"<p>Creates a new development endpoint.</p>"
    },
    "CreateJob":{
      "name":"CreateJob",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateJobRequest"},
      "output":{"shape":"CreateJobResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"IdempotentParameterMismatchException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Creates a new job definition.</p>"
    },
    "CreateMLTransform":{
      "name":"CreateMLTransform",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateMLTransformRequest"},
      "output":{"shape":"CreateMLTransformResponse"},
      "errors":[
        {"shape":"AlreadyExistsException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"IdempotentParameterMismatchException"}
      ],
      "documentation":"<p>Creates an Glue machine learning transform. This operation creates the transform and all the necessary parameters to train it.</p> <p>Call this operation as the first step in the process of using a machine learning transform (such as the <code>FindMatches</code> transform) for deduplicating data. You can provide an optional <code>Description</code>, in addition to the parameters that you want to use for your algorithm.</p> <p>You must also specify certain parameters for the tasks that Glue runs on your behalf as part of learning from your data and creating a high-quality machine learning transform. These parameters include <code>Role</code>, and optionally, <code>AllocatedCapacity</code>, <code>Timeout</code>, and <code>MaxRetries</code>. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html\">Jobs</a>.</p>"
    },
    "CreatePartition":{
      "name":"CreatePartition",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreatePartitionRequest"},
      "output":{"shape":"CreatePartitionResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"InternalServiceException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Creates a new partition.</p>"
    },
    "CreatePartitionIndex":{
      "name":"CreatePartitionIndex",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreatePartitionIndexRequest"},
      "output":{"shape":"CreatePartitionIndexResponse"},
      "errors":[
        {"shape":"AlreadyExistsException"},
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Creates a specified partition index in an existing table.</p>"
    },
    "CreateRegistry":{
      "name":"CreateRegistry",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateRegistryInput"},
      "output":{"shape":"CreateRegistryResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"ConcurrentModificationException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Creates a new registry which may be used to hold a collection of schemas.</p>"
    },
    "CreateSchema":{
      "name":"CreateSchema",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateSchemaInput"},
      "output":{"shape":"CreateSchemaResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"ConcurrentModificationException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Creates a new schema set and registers the schema definition. Returns an error if the schema set already exists without actually registering the version.</p> <p>When the schema set is created, a version checkpoint will be set to the first version. Compatibility mode \"DISABLED\" restricts any additional schema versions from being added after the first schema version. For all other compatibility modes, validation of compatibility settings will be applied only from the second version onwards when the <code>RegisterSchemaVersion</code> API is used.</p> <p>When this API is called without a <code>RegistryId</code>, this will create an entry for a \"default-registry\" in the registry database tables, if it is not already present.</p>"
    },
    "CreateScript":{
      "name":"CreateScript",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateScriptRequest"},
      "output":{"shape":"CreateScriptResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Transforms a directed acyclic graph (DAG) into code.</p>"
    },
    "CreateSecurityConfiguration":{
      "name":"CreateSecurityConfiguration",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateSecurityConfigurationRequest"},
      "output":{"shape":"CreateSecurityConfigurationResponse"},
      "errors":[
        {"shape":"AlreadyExistsException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"}
      ],
      "documentation":"<p>Creates a new security configuration. A security configuration is a set of security properties that can be used by Glue. You can use a security configuration to encrypt data at rest. For information about using security configurations in Glue, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/encryption-security-configuration.html\">Encrypting Data Written by Crawlers, Jobs, and Development Endpoints</a>.</p>"
    },
    "CreateSession":{
      "name":"CreateSession",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateSessionRequest"},
      "output":{"shape":"CreateSessionResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"IdempotentParameterMismatchException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"ValidationException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"ResourceNumberLimitExceededException"}
      ],
      "documentation":"<p>Creates a new session.</p>"
    },
    "CreateTable":{
      "name":"CreateTable",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateTableRequest"},
      "output":{"shape":"CreateTableResponse"},
      "errors":[
        {"shape":"AlreadyExistsException"},
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"ConcurrentModificationException"},
        {"shape":"ResourceNotReadyException"}
      ],
      "documentation":"<p>Creates a new table definition in the Data Catalog.</p>"
    },
    "CreateTableOptimizer":{
      "name":"CreateTableOptimizer",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateTableOptimizerRequest"},
      "output":{"shape":"CreateTableOptimizerResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Creates a new table optimizer for a specific function. <code>compaction</code> is the only currently supported optimizer type.</p>"
    },
    "CreateTrigger":{
      "name":"CreateTrigger",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateTriggerRequest"},
      "output":{"shape":"CreateTriggerResponse"},
      "errors":[
        {"shape":"AlreadyExistsException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"IdempotentParameterMismatchException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Creates a new trigger.</p>"
    },
    "CreateUserDefinedFunction":{
      "name":"CreateUserDefinedFunction",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateUserDefinedFunctionRequest"},
      "output":{"shape":"CreateUserDefinedFunctionResponse"},
      "errors":[
        {"shape":"AlreadyExistsException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Creates a new function definition in the Data Catalog.</p>"
    },
    "CreateWorkflow":{
      "name":"CreateWorkflow",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"CreateWorkflowRequest"},
      "output":{"shape":"CreateWorkflowResponse"},
      "errors":[
        {"shape":"AlreadyExistsException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Creates a new workflow.</p>"
    },
    "DeleteBlueprint":{
      "name":"DeleteBlueprint",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteBlueprintRequest"},
      "output":{"shape":"DeleteBlueprintResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Deletes an existing blueprint.</p>"
    },
    "DeleteClassifier":{
      "name":"DeleteClassifier",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteClassifierRequest"},
      "output":{"shape":"DeleteClassifierResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Removes a classifier from the Data Catalog.</p>"
    },
    "DeleteColumnStatisticsForPartition":{
      "name":"DeleteColumnStatisticsForPartition",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteColumnStatisticsForPartitionRequest"},
      "output":{"shape":"DeleteColumnStatisticsForPartitionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Delete the partition column statistics of a column.</p> <p>The Identity and Access Management (IAM) permission required for this operation is <code>DeletePartition</code>.</p>"
    },
    "DeleteColumnStatisticsForTable":{
      "name":"DeleteColumnStatisticsForTable",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteColumnStatisticsForTableRequest"},
      "output":{"shape":"DeleteColumnStatisticsForTableResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Retrieves table statistics of columns.</p> <p>The Identity and Access Management (IAM) permission required for this operation is <code>DeleteTable</code>.</p>"
    },
    "DeleteConnection":{
      "name":"DeleteConnection",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteConnectionRequest"},
      "output":{"shape":"DeleteConnectionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Deletes a connection from the Data Catalog.</p>"
    },
    "DeleteCrawler":{
      "name":"DeleteCrawler",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteCrawlerRequest"},
      "output":{"shape":"DeleteCrawlerResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"CrawlerRunningException"},
        {"shape":"SchedulerTransitioningException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Removes a specified crawler from the Glue Data Catalog, unless the crawler state is <code>RUNNING</code>.</p>"
    },
    "DeleteCustomEntityType":{
      "name":"DeleteCustomEntityType",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteCustomEntityTypeRequest"},
      "output":{"shape":"DeleteCustomEntityTypeResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServiceException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Deletes a custom pattern by specifying its name.</p>"
    },
    "DeleteDataQualityRuleset":{
      "name":"DeleteDataQualityRuleset",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteDataQualityRulesetRequest"},
      "output":{"shape":"DeleteDataQualityRulesetResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Deletes a data quality ruleset.</p>"
    },
    "DeleteDatabase":{
      "name":"DeleteDatabase",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteDatabaseRequest"},
      "output":{"shape":"DeleteDatabaseResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Removes a specified database from a Data Catalog.</p> <note> <p>After completing this operation, you no longer have access to the tables (and all table versions and partitions that might belong to the tables) and the user-defined functions in the deleted database. Glue deletes these \"orphaned\" resources asynchronously in a timely manner, at the discretion of the service.</p> <p>To ensure the immediate deletion of all related resources, before calling <code>DeleteDatabase</code>, use <code>DeleteTableVersion</code> or <code>BatchDeleteTableVersion</code>, <code>DeletePartition</code> or <code>BatchDeletePartition</code>, <code>DeleteUserDefinedFunction</code>, and <code>DeleteTable</code> or <code>BatchDeleteTable</code>, to delete any resources that belong to the database.</p> </note>"
    },
    "DeleteDevEndpoint":{
      "name":"DeleteDevEndpoint",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteDevEndpointRequest"},
      "output":{"shape":"DeleteDevEndpointResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Deletes a specified development endpoint.</p>"
    },
    "DeleteJob":{
      "name":"DeleteJob",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteJobRequest"},
      "output":{"shape":"DeleteJobResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Deletes a specified job definition. If the job definition is not found, no exception is thrown.</p>"
    },
    "DeleteMLTransform":{
      "name":"DeleteMLTransform",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteMLTransformRequest"},
      "output":{"shape":"DeleteMLTransformResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Deletes an Glue machine learning transform. Machine learning transforms are a special type of transform that use machine learning to learn the details of the transformation to be performed by learning from examples provided by humans. These transformations are then saved by Glue. If you no longer need a transform, you can delete it by calling <code>DeleteMLTransforms</code>. However, any Glue jobs that still reference the deleted transform will no longer succeed.</p>"
    },
    "DeletePartition":{
      "name":"DeletePartition",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeletePartitionRequest"},
      "output":{"shape":"DeletePartitionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Deletes a specified partition.</p>"
    },
    "DeletePartitionIndex":{
      "name":"DeletePartitionIndex",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeletePartitionIndexRequest"},
      "output":{"shape":"DeletePartitionIndexResponse"},
      "errors":[
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Deletes a specified partition index from an existing table.</p>"
    },
    "DeleteRegistry":{
      "name":"DeleteRegistry",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteRegistryInput"},
      "output":{"shape":"DeleteRegistryResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Delete the entire registry including schema and all of its versions. To get the status of the delete operation, you can call the <code>GetRegistry</code> API after the asynchronous call. Deleting a registry will deactivate all online operations for the registry such as the <code>UpdateRegistry</code>, <code>CreateSchema</code>, <code>UpdateSchema</code>, and <code>RegisterSchemaVersion</code> APIs. </p>"
    },
    "DeleteResourcePolicy":{
      "name":"DeleteResourcePolicy",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteResourcePolicyRequest"},
      "output":{"shape":"DeleteResourcePolicyResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"ConditionCheckFailureException"}
      ],
      "documentation":"<p>Deletes a specified policy.</p>"
    },
    "DeleteSchema":{
      "name":"DeleteSchema",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteSchemaInput"},
      "output":{"shape":"DeleteSchemaResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Deletes the entire schema set, including the schema set and all of its versions. To get the status of the delete operation, you can call <code>GetSchema</code> API after the asynchronous call. Deleting a registry will deactivate all online operations for the schema, such as the <code>GetSchemaByDefinition</code>, and <code>RegisterSchemaVersion</code> APIs.</p>"
    },
    "DeleteSchemaVersions":{
      "name":"DeleteSchemaVersions",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteSchemaVersionsInput"},
      "output":{"shape":"DeleteSchemaVersionsResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Remove versions from the specified schema. A version number or range may be supplied. If the compatibility mode forbids deleting of a version that is necessary, such as BACKWARDS_FULL, an error is returned. Calling the <code>GetSchemaVersions</code> API after this call will list the status of the deleted versions.</p> <p>When the range of version numbers contain check pointed version, the API will return a 409 conflict and will not proceed with the deletion. You have to remove the checkpoint first using the <code>DeleteSchemaCheckpoint</code> API before using this API.</p> <p>You cannot use the <code>DeleteSchemaVersions</code> API to delete the first schema version in the schema set. The first schema version can only be deleted by the <code>DeleteSchema</code> API. This operation will also delete the attached <code>SchemaVersionMetadata</code> under the schema versions. Hard deletes will be enforced on the database.</p> <p>If the compatibility mode forbids deleting of a version that is necessary, such as BACKWARDS_FULL, an error is returned.</p>"
    },
    "DeleteSecurityConfiguration":{
      "name":"DeleteSecurityConfiguration",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteSecurityConfigurationRequest"},
      "output":{"shape":"DeleteSecurityConfigurationResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Deletes a specified security configuration.</p>"
    },
    "DeleteSession":{
      "name":"DeleteSession",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteSessionRequest"},
      "output":{"shape":"DeleteSessionResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"IllegalSessionStateException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Deletes the session.</p>"
    },
    "DeleteTable":{
      "name":"DeleteTable",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteTableRequest"},
      "output":{"shape":"DeleteTableResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ConcurrentModificationException"},
        {"shape":"ResourceNotReadyException"}
      ],
      "documentation":"<p>Removes a table definition from the Data Catalog.</p> <note> <p>After completing this operation, you no longer have access to the table versions and partitions that belong to the deleted table. Glue deletes these \"orphaned\" resources asynchronously in a timely manner, at the discretion of the service.</p> <p>To ensure the immediate deletion of all related resources, before calling <code>DeleteTable</code>, use <code>DeleteTableVersion</code> or <code>BatchDeleteTableVersion</code>, and <code>DeletePartition</code> or <code>BatchDeletePartition</code>, to delete any resources that belong to the table.</p> </note>"
    },
    "DeleteTableOptimizer":{
      "name":"DeleteTableOptimizer",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteTableOptimizerRequest"},
      "output":{"shape":"DeleteTableOptimizerResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Deletes an optimizer and all associated metadata for a table. The optimization will no longer be performed on the table.</p>"
    },
    "DeleteTableVersion":{
      "name":"DeleteTableVersion",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteTableVersionRequest"},
      "output":{"shape":"DeleteTableVersionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Deletes a specified version of a table.</p>"
    },
    "DeleteTrigger":{
      "name":"DeleteTrigger",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteTriggerRequest"},
      "output":{"shape":"DeleteTriggerResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Deletes a specified trigger. If the trigger is not found, no exception is thrown.</p>"
    },
    "DeleteUserDefinedFunction":{
      "name":"DeleteUserDefinedFunction",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteUserDefinedFunctionRequest"},
      "output":{"shape":"DeleteUserDefinedFunctionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Deletes an existing function definition from the Data Catalog.</p>"
    },
    "DeleteWorkflow":{
      "name":"DeleteWorkflow",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"DeleteWorkflowRequest"},
      "output":{"shape":"DeleteWorkflowResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Deletes a workflow.</p>"
    },
    "GetBlueprint":{
      "name":"GetBlueprint",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetBlueprintRequest"},
      "output":{"shape":"GetBlueprintResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Retrieves the details of a blueprint.</p>"
    },
    "GetBlueprintRun":{
      "name":"GetBlueprintRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetBlueprintRunRequest"},
      "output":{"shape":"GetBlueprintRunResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves the details of a blueprint run.</p>"
    },
    "GetBlueprintRuns":{
      "name":"GetBlueprintRuns",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetBlueprintRunsRequest"},
      "output":{"shape":"GetBlueprintRunsResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Retrieves the details of blueprint runs for a specified blueprint.</p>"
    },
    "GetCatalogImportStatus":{
      "name":"GetCatalogImportStatus",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetCatalogImportStatusRequest"},
      "output":{"shape":"GetCatalogImportStatusResponse"},
      "errors":[
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves the status of a migration operation.</p>"
    },
    "GetClassifier":{
      "name":"GetClassifier",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetClassifierRequest"},
      "output":{"shape":"GetClassifierResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieve a classifier by name.</p>"
    },
    "GetClassifiers":{
      "name":"GetClassifiers",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetClassifiersRequest"},
      "output":{"shape":"GetClassifiersResponse"},
      "errors":[
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Lists all classifier objects in the Data Catalog.</p>"
    },
    "GetColumnStatisticsForPartition":{
      "name":"GetColumnStatisticsForPartition",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetColumnStatisticsForPartitionRequest"},
      "output":{"shape":"GetColumnStatisticsForPartitionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Retrieves partition statistics of columns.</p> <p>The Identity and Access Management (IAM) permission required for this operation is <code>GetPartition</code>.</p>"
    },
    "GetColumnStatisticsForTable":{
      "name":"GetColumnStatisticsForTable",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetColumnStatisticsForTableRequest"},
      "output":{"shape":"GetColumnStatisticsForTableResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Retrieves table statistics of columns.</p> <p>The Identity and Access Management (IAM) permission required for this operation is <code>GetTable</code>.</p>"
    },
    "GetColumnStatisticsTaskRun":{
      "name":"GetColumnStatisticsTaskRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetColumnStatisticsTaskRunRequest"},
      "output":{"shape":"GetColumnStatisticsTaskRunResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Get the associated metadata/information for a task run, given a task run ID.</p>"
    },
    "GetColumnStatisticsTaskRuns":{
      "name":"GetColumnStatisticsTaskRuns",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetColumnStatisticsTaskRunsRequest"},
      "output":{"shape":"GetColumnStatisticsTaskRunsResponse"},
      "errors":[
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves information about all runs associated with the specified table.</p>"
    },
    "GetConnection":{
      "name":"GetConnection",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetConnectionRequest"},
      "output":{"shape":"GetConnectionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Retrieves a connection definition from the Data Catalog.</p>"
    },
    "GetConnections":{
      "name":"GetConnections",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetConnectionsRequest"},
      "output":{"shape":"GetConnectionsResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Retrieves a list of connection definitions from the Data Catalog.</p>"
    },
    "GetCrawler":{
      "name":"GetCrawler",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetCrawlerRequest"},
      "output":{"shape":"GetCrawlerResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves metadata for a specified crawler.</p>"
    },
    "GetCrawlerMetrics":{
      "name":"GetCrawlerMetrics",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetCrawlerMetricsRequest"},
      "output":{"shape":"GetCrawlerMetricsResponse"},
      "errors":[
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves metrics about specified crawlers.</p>"
    },
    "GetCrawlers":{
      "name":"GetCrawlers",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetCrawlersRequest"},
      "output":{"shape":"GetCrawlersResponse"},
      "errors":[
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves metadata for all crawlers defined in the customer account.</p>"
    },
    "GetCustomEntityType":{
      "name":"GetCustomEntityType",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetCustomEntityTypeRequest"},
      "output":{"shape":"GetCustomEntityTypeResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServiceException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves the details of a custom pattern by specifying its name.</p>"
    },
    "GetDataCatalogEncryptionSettings":{
      "name":"GetDataCatalogEncryptionSettings",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetDataCatalogEncryptionSettingsRequest"},
      "output":{"shape":"GetDataCatalogEncryptionSettingsResponse"},
      "errors":[
        {"shape":"InternalServiceException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves the security configuration for a specified catalog.</p>"
    },
    "GetDataQualityResult":{
      "name":"GetDataQualityResult",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetDataQualityResultRequest"},
      "output":{"shape":"GetDataQualityResultResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"EntityNotFoundException"}
      ],
      "documentation":"<p>Retrieves the result of a data quality rule evaluation.</p>"
    },
    "GetDataQualityRuleRecommendationRun":{
      "name":"GetDataQualityRuleRecommendationRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetDataQualityRuleRecommendationRunRequest"},
      "output":{"shape":"GetDataQualityRuleRecommendationRunResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Gets the specified recommendation run that was used to generate rules.</p>"
    },
    "GetDataQualityRuleset":{
      "name":"GetDataQualityRuleset",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetDataQualityRulesetRequest"},
      "output":{"shape":"GetDataQualityRulesetResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Returns an existing ruleset by identifier or name.</p>"
    },
    "GetDataQualityRulesetEvaluationRun":{
      "name":"GetDataQualityRulesetEvaluationRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetDataQualityRulesetEvaluationRunRequest"},
      "output":{"shape":"GetDataQualityRulesetEvaluationRunResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Retrieves a specific run where a ruleset is evaluated against a data source.</p>"
    },
    "GetDatabase":{
      "name":"GetDatabase",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetDatabaseRequest"},
      "output":{"shape":"GetDatabaseResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"FederationSourceException"}
      ],
      "documentation":"<p>Retrieves the definition of a specified database.</p>"
    },
    "GetDatabases":{
      "name":"GetDatabases",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetDatabasesRequest"},
      "output":{"shape":"GetDatabasesResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Retrieves all databases defined in a given Data Catalog.</p>"
    },
    "GetDataflowGraph":{
      "name":"GetDataflowGraph",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetDataflowGraphRequest"},
      "output":{"shape":"GetDataflowGraphResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Transforms a Python script into a directed acyclic graph (DAG). </p>"
    },
    "GetDevEndpoint":{
      "name":"GetDevEndpoint",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetDevEndpointRequest"},
      "output":{"shape":"GetDevEndpointResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Retrieves information about a specified development endpoint.</p> <note> <p>When you create a development endpoint in a virtual private cloud (VPC), Glue returns only a private IP address, and the public IP address field is not populated. When you create a non-VPC development endpoint, Glue returns only a public IP address.</p> </note>"
    },
    "GetDevEndpoints":{
      "name":"GetDevEndpoints",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetDevEndpointsRequest"},
      "output":{"shape":"GetDevEndpointsResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Retrieves all the development endpoints in this Amazon Web Services account.</p> <note> <p>When you create a development endpoint in a virtual private cloud (VPC), Glue returns only a private IP address and the public IP address field is not populated. When you create a non-VPC development endpoint, Glue returns only a public IP address.</p> </note>"
    },
    "GetJob":{
      "name":"GetJob",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetJobRequest"},
      "output":{"shape":"GetJobResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves an existing job definition.</p>"
    },
    "GetJobBookmark":{
      "name":"GetJobBookmark",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetJobBookmarkRequest"},
      "output":{"shape":"GetJobBookmarkResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Returns information on a job bookmark entry.</p> <p>For more information about enabling and using job bookmarks, see:</p> <ul> <li> <p> <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-continuations.html\">Tracking processed data using job bookmarks</a> </p> </li> <li> <p> <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html\">Job parameters used by Glue</a> </p> </li> <li> <p> <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-Job\">Job structure</a> </p> </li> </ul>"
    },
    "GetJobRun":{
      "name":"GetJobRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetJobRunRequest"},
      "output":{"shape":"GetJobRunResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves the metadata for a given job run.</p>"
    },
    "GetJobRuns":{
      "name":"GetJobRuns",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetJobRunsRequest"},
      "output":{"shape":"GetJobRunsResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves metadata for all runs of a given job definition.</p>"
    },
    "GetJobs":{
      "name":"GetJobs",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetJobsRequest"},
      "output":{"shape":"GetJobsResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves all current job definitions.</p>"
    },
    "GetMLTaskRun":{
      "name":"GetMLTaskRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetMLTaskRunRequest"},
      "output":{"shape":"GetMLTaskRunResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Gets details for a specific task run on a machine learning transform. Machine learning task runs are asynchronous tasks that Glue runs on your behalf as part of various machine learning workflows. You can check the stats of any task run by calling <code>GetMLTaskRun</code> with the <code>TaskRunID</code> and its parent transform's <code>TransformID</code>.</p>"
    },
    "GetMLTaskRuns":{
      "name":"GetMLTaskRuns",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetMLTaskRunsRequest"},
      "output":{"shape":"GetMLTaskRunsResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Gets a list of runs for a machine learning transform. Machine learning task runs are asynchronous tasks that Glue runs on your behalf as part of various machine learning workflows. You can get a sortable, filterable list of machine learning task runs by calling <code>GetMLTaskRuns</code> with their parent transform's <code>TransformID</code> and other optional parameters as documented in this section.</p> <p>This operation returns a list of historic runs and must be paginated.</p>"
    },
    "GetMLTransform":{
      "name":"GetMLTransform",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetMLTransformRequest"},
      "output":{"shape":"GetMLTransformResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Gets an Glue machine learning transform artifact and all its corresponding metadata. Machine learning transforms are a special type of transform that use machine learning to learn the details of the transformation to be performed by learning from examples provided by humans. These transformations are then saved by Glue. You can retrieve their metadata by calling <code>GetMLTransform</code>.</p>"
    },
    "GetMLTransforms":{
      "name":"GetMLTransforms",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetMLTransformsRequest"},
      "output":{"shape":"GetMLTransformsResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Gets a sortable, filterable list of existing Glue machine learning transforms. Machine learning transforms are a special type of transform that use machine learning to learn the details of the transformation to be performed by learning from examples provided by humans. These transformations are then saved by Glue, and you can retrieve their metadata by calling <code>GetMLTransforms</code>.</p>"
    },
    "GetMapping":{
      "name":"GetMapping",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetMappingRequest"},
      "output":{"shape":"GetMappingResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"EntityNotFoundException"}
      ],
      "documentation":"<p>Creates mappings.</p>"
    },
    "GetPartition":{
      "name":"GetPartition",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetPartitionRequest"},
      "output":{"shape":"GetPartitionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"FederationSourceException"},
        {"shape":"FederationSourceRetryableException"}
      ],
      "documentation":"<p>Retrieves information about a specified partition.</p>"
    },
    "GetPartitionIndexes":{
      "name":"GetPartitionIndexes",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetPartitionIndexesRequest"},
      "output":{"shape":"GetPartitionIndexesResponse"},
      "errors":[
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"ConflictException"}
      ],
      "documentation":"<p>Retrieves the partition indexes associated with a table.</p>"
    },
    "GetPartitions":{
      "name":"GetPartitions",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetPartitionsRequest"},
      "output":{"shape":"GetPartitionsResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"InvalidStateException"},
        {"shape":"ResourceNotReadyException"},
        {"shape":"FederationSourceException"},
        {"shape":"FederationSourceRetryableException"}
      ],
      "documentation":"<p>Retrieves information about the partitions in a table.</p>"
    },
    "GetPlan":{
      "name":"GetPlan",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetPlanRequest"},
      "output":{"shape":"GetPlanResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Gets code to perform a specified mapping.</p>"
    },
    "GetRegistry":{
      "name":"GetRegistry",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetRegistryInput"},
      "output":{"shape":"GetRegistryResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Describes the specified registry in detail.</p>"
    },
    "GetResourcePolicies":{
      "name":"GetResourcePolicies",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetResourcePoliciesRequest"},
      "output":{"shape":"GetResourcePoliciesResponse"},
      "errors":[
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Retrieves the resource policies set on individual resources by Resource Access Manager during cross-account permission grants. Also retrieves the Data Catalog resource policy.</p> <p>If you enabled metadata encryption in Data Catalog settings, and you do not have permission on the KMS key, the operation can't return the Data Catalog resource policy.</p>"
    },
    "GetResourcePolicy":{
      "name":"GetResourcePolicy",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetResourcePolicyRequest"},
      "output":{"shape":"GetResourcePolicyResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Retrieves a specified resource policy.</p>"
    },
    "GetSchema":{
      "name":"GetSchema",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetSchemaInput"},
      "output":{"shape":"GetSchemaResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Describes the specified schema in detail.</p>"
    },
    "GetSchemaByDefinition":{
      "name":"GetSchemaByDefinition",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetSchemaByDefinitionInput"},
      "output":{"shape":"GetSchemaByDefinitionResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Retrieves a schema by the <code>SchemaDefinition</code>. The schema definition is sent to the Schema Registry, canonicalized, and hashed. If the hash is matched within the scope of the <code>SchemaName</code> or ARN (or the default registry, if none is supplied), that schema’s metadata is returned. Otherwise, a 404 or NotFound error is returned. Schema versions in <code>Deleted</code> statuses will not be included in the results.</p>"
    },
    "GetSchemaVersion":{
      "name":"GetSchemaVersion",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetSchemaVersionInput"},
      "output":{"shape":"GetSchemaVersionResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Get the specified schema by its unique ID assigned when a version of the schema is created or registered. Schema versions in Deleted status will not be included in the results.</p>"
    },
    "GetSchemaVersionsDiff":{
      "name":"GetSchemaVersionsDiff",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetSchemaVersionsDiffInput"},
      "output":{"shape":"GetSchemaVersionsDiffResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Fetches the schema version difference in the specified difference type between two stored schema versions in the Schema Registry.</p> <p>This API allows you to compare two schema versions between two schema definitions under the same schema.</p>"
    },
    "GetSecurityConfiguration":{
      "name":"GetSecurityConfiguration",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetSecurityConfigurationRequest"},
      "output":{"shape":"GetSecurityConfigurationResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves a specified security configuration.</p>"
    },
    "GetSecurityConfigurations":{
      "name":"GetSecurityConfigurations",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetSecurityConfigurationsRequest"},
      "output":{"shape":"GetSecurityConfigurationsResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves a list of all security configurations.</p>"
    },
    "GetSession":{
      "name":"GetSession",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetSessionRequest"},
      "output":{"shape":"GetSessionResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Retrieves the session.</p>"
    },
    "GetStatement":{
      "name":"GetStatement",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetStatementRequest"},
      "output":{"shape":"GetStatementResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"IllegalSessionStateException"}
      ],
      "documentation":"<p>Retrieves the statement.</p>"
    },
    "GetTable":{
      "name":"GetTable",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetTableRequest"},
      "output":{"shape":"GetTableResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"ResourceNotReadyException"},
        {"shape":"FederationSourceException"},
        {"shape":"FederationSourceRetryableException"}
      ],
      "documentation":"<p>Retrieves the <code>Table</code> definition in a Data Catalog for a specified table.</p>"
    },
    "GetTableOptimizer":{
      "name":"GetTableOptimizer",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetTableOptimizerRequest"},
      "output":{"shape":"GetTableOptimizerResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Returns the configuration of all optimizers associated with a specified table.</p>"
    },
    "GetTableVersion":{
      "name":"GetTableVersion",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetTableVersionRequest"},
      "output":{"shape":"GetTableVersionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Retrieves a specified version of a table.</p>"
    },
    "GetTableVersions":{
      "name":"GetTableVersions",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetTableVersionsRequest"},
      "output":{"shape":"GetTableVersionsResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Retrieves a list of strings that identify available versions of a specified table.</p>"
    },
    "GetTables":{
      "name":"GetTables",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetTablesRequest"},
      "output":{"shape":"GetTablesResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"FederationSourceException"},
        {"shape":"FederationSourceRetryableException"}
      ],
      "documentation":"<p>Retrieves the definitions of some or all of the tables in a given <code>Database</code>.</p>"
    },
    "GetTags":{
      "name":"GetTags",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetTagsRequest"},
      "output":{"shape":"GetTagsResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"EntityNotFoundException"}
      ],
      "documentation":"<p>Retrieves a list of tags associated with a resource.</p>"
    },
    "GetTrigger":{
      "name":"GetTrigger",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetTriggerRequest"},
      "output":{"shape":"GetTriggerResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves the definition of a trigger.</p>"
    },
    "GetTriggers":{
      "name":"GetTriggers",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetTriggersRequest"},
      "output":{"shape":"GetTriggersResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Gets all the triggers associated with a job.</p>"
    },
    "GetUnfilteredPartitionMetadata":{
      "name":"GetUnfilteredPartitionMetadata",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetUnfilteredPartitionMetadataRequest"},
      "output":{"shape":"GetUnfilteredPartitionMetadataResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"PermissionTypeMismatchException"},
        {"shape":"FederationSourceException"},
        {"shape":"FederationSourceRetryableException"}
      ],
      "documentation":"<p>Retrieves partition metadata from the Data Catalog that contains unfiltered metadata.</p> <p>For IAM authorization, the public IAM action associated with this API is <code>glue:GetPartition</code>.</p>"
    },
    "GetUnfilteredPartitionsMetadata":{
      "name":"GetUnfilteredPartitionsMetadata",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetUnfilteredPartitionsMetadataRequest"},
      "output":{"shape":"GetUnfilteredPartitionsMetadataResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"PermissionTypeMismatchException"},
        {"shape":"FederationSourceException"},
        {"shape":"FederationSourceRetryableException"}
      ],
      "documentation":"<p>Retrieves partition metadata from the Data Catalog that contains unfiltered metadata.</p> <p>For IAM authorization, the public IAM action associated with this API is <code>glue:GetPartitions</code>.</p>"
    },
    "GetUnfilteredTableMetadata":{
      "name":"GetUnfilteredTableMetadata",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetUnfilteredTableMetadataRequest"},
      "output":{"shape":"GetUnfilteredTableMetadataResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"PermissionTypeMismatchException"},
        {"shape":"FederationSourceException"},
        {"shape":"FederationSourceRetryableException"}
      ],
      "documentation":"<p>Allows a third-party analytical engine to retrieve unfiltered table metadata from the Data Catalog.</p> <p>For IAM authorization, the public IAM action associated with this API is <code>glue:GetTable</code>.</p>"
    },
    "GetUserDefinedFunction":{
      "name":"GetUserDefinedFunction",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetUserDefinedFunctionRequest"},
      "output":{"shape":"GetUserDefinedFunctionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Retrieves a specified function definition from the Data Catalog.</p>"
    },
    "GetUserDefinedFunctions":{
      "name":"GetUserDefinedFunctions",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetUserDefinedFunctionsRequest"},
      "output":{"shape":"GetUserDefinedFunctionsResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Retrieves multiple function definitions from the Data Catalog.</p>"
    },
    "GetWorkflow":{
      "name":"GetWorkflow",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetWorkflowRequest"},
      "output":{"shape":"GetWorkflowResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves resource metadata for a workflow.</p>"
    },
    "GetWorkflowRun":{
      "name":"GetWorkflowRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetWorkflowRunRequest"},
      "output":{"shape":"GetWorkflowRunResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves the metadata for a given workflow run. </p>"
    },
    "GetWorkflowRunProperties":{
      "name":"GetWorkflowRunProperties",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetWorkflowRunPropertiesRequest"},
      "output":{"shape":"GetWorkflowRunPropertiesResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves the workflow run properties which were set during the run.</p>"
    },
    "GetWorkflowRuns":{
      "name":"GetWorkflowRuns",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"GetWorkflowRunsRequest"},
      "output":{"shape":"GetWorkflowRunsResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves metadata for all runs of a given workflow.</p>"
    },
    "ImportCatalogToGlue":{
      "name":"ImportCatalogToGlue",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ImportCatalogToGlueRequest"},
      "output":{"shape":"ImportCatalogToGlueResponse"},
      "errors":[
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Imports an existing Amazon Athena Data Catalog to Glue.</p>"
    },
    "ListBlueprints":{
      "name":"ListBlueprints",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListBlueprintsRequest"},
      "output":{"shape":"ListBlueprintsResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Lists all the blueprint names in an account.</p>"
    },
    "ListColumnStatisticsTaskRuns":{
      "name":"ListColumnStatisticsTaskRuns",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListColumnStatisticsTaskRunsRequest"},
      "output":{"shape":"ListColumnStatisticsTaskRunsResponse"},
      "errors":[
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>List all task runs for a particular account.</p>"
    },
    "ListCrawlers":{
      "name":"ListCrawlers",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListCrawlersRequest"},
      "output":{"shape":"ListCrawlersResponse"},
      "errors":[
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves the names of all crawler 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.</p> <p>This operation takes the optional <code>Tags</code> 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.</p>"
    },
    "ListCrawls":{
      "name":"ListCrawls",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListCrawlsRequest"},
      "output":{"shape":"ListCrawlsResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Returns all the crawls of a specified crawler. Returns only the crawls that have occurred since the launch date of the crawler history feature, and only retains up to 12 months of crawls. Older crawls will not be returned.</p> <p>You may use this API to:</p> <ul> <li> <p>Retrive all the crawls of a specified crawler.</p> </li> <li> <p>Retrieve all the crawls of a specified crawler within a limited count.</p> </li> <li> <p>Retrieve all the crawls of a specified crawler in a specific time range.</p> </li> <li> <p>Retrieve all the crawls of a specified crawler with a particular state, crawl ID, or DPU hour value.</p> </li> </ul>"
    },
    "ListCustomEntityTypes":{
      "name":"ListCustomEntityTypes",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListCustomEntityTypesRequest"},
      "output":{"shape":"ListCustomEntityTypesResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Lists all the custom patterns that have been created.</p>"
    },
    "ListDataQualityResults":{
      "name":"ListDataQualityResults",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListDataQualityResultsRequest"},
      "output":{"shape":"ListDataQualityResultsResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Returns all data quality execution results for your account.</p>"
    },
    "ListDataQualityRuleRecommendationRuns":{
      "name":"ListDataQualityRuleRecommendationRuns",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListDataQualityRuleRecommendationRunsRequest"},
      "output":{"shape":"ListDataQualityRuleRecommendationRunsResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Lists the recommendation runs meeting the filter criteria.</p>"
    },
    "ListDataQualityRulesetEvaluationRuns":{
      "name":"ListDataQualityRulesetEvaluationRuns",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListDataQualityRulesetEvaluationRunsRequest"},
      "output":{"shape":"ListDataQualityRulesetEvaluationRunsResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Lists all the runs meeting the filter criteria, where a ruleset is evaluated against a data source.</p>"
    },
    "ListDataQualityRulesets":{
      "name":"ListDataQualityRulesets",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListDataQualityRulesetsRequest"},
      "output":{"shape":"ListDataQualityRulesetsResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Returns a paginated list of rulesets for the specified list of Glue tables.</p>"
    },
    "ListDevEndpoints":{
      "name":"ListDevEndpoints",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListDevEndpointsRequest"},
      "output":{"shape":"ListDevEndpointsResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves the names of all <code>DevEndpoint</code> 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.</p> <p>This operation takes the optional <code>Tags</code> 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.</p>"
    },
    "ListJobs":{
      "name":"ListJobs",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListJobsRequest"},
      "output":{"shape":"ListJobsResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves the names of all job 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.</p> <p>This operation takes the optional <code>Tags</code> 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.</p>"
    },
    "ListMLTransforms":{
      "name":"ListMLTransforms",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListMLTransformsRequest"},
      "output":{"shape":"ListMLTransformsResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p> Retrieves a sortable, filterable list of existing Glue machine learning transforms in this Amazon Web Services account, or the resources with the specified tag. This operation takes the optional <code>Tags</code> field, which you can use as a filter of the responses so that tagged resources can be retrieved as a group. If you choose to use tag filtering, only resources with the tags are retrieved. </p>"
    },
    "ListRegistries":{
      "name":"ListRegistries",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListRegistriesInput"},
      "output":{"shape":"ListRegistriesResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Returns a list of registries that you have created, with minimal registry information. Registries in the <code>Deleting</code> status will not be included in the results. Empty results will be returned if there are no registries available.</p>"
    },
    "ListSchemaVersions":{
      "name":"ListSchemaVersions",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListSchemaVersionsInput"},
      "output":{"shape":"ListSchemaVersionsResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Returns a list of schema versions that you have created, with minimal information. Schema versions in Deleted status will not be included in the results. Empty results will be returned if there are no schema versions available.</p>"
    },
    "ListSchemas":{
      "name":"ListSchemas",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListSchemasInput"},
      "output":{"shape":"ListSchemasResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Returns a list of schemas with minimal details. Schemas in Deleting status will not be included in the results. Empty results will be returned if there are no schemas available.</p> <p>When the <code>RegistryId</code> is not provided, all the schemas across registries will be part of the API response.</p>"
    },
    "ListSessions":{
      "name":"ListSessions",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListSessionsRequest"},
      "output":{"shape":"ListSessionsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieve a list of sessions.</p>"
    },
    "ListStatements":{
      "name":"ListStatements",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListStatementsRequest"},
      "output":{"shape":"ListStatementsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"IllegalSessionStateException"}
      ],
      "documentation":"<p>Lists statements for the session.</p>"
    },
    "ListTableOptimizerRuns":{
      "name":"ListTableOptimizerRuns",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListTableOptimizerRunsRequest"},
      "output":{"shape":"ListTableOptimizerRunsResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Lists the history of previous optimizer runs for a specific table.</p>"
    },
    "ListTriggers":{
      "name":"ListTriggers",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListTriggersRequest"},
      "output":{"shape":"ListTriggersResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Retrieves the names of all trigger 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.</p> <p>This operation takes the optional <code>Tags</code> 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.</p>"
    },
    "ListWorkflows":{
      "name":"ListWorkflows",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ListWorkflowsRequest"},
      "output":{"shape":"ListWorkflowsResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Lists names of workflows created in the account.</p>"
    },
    "PutDataCatalogEncryptionSettings":{
      "name":"PutDataCatalogEncryptionSettings",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutDataCatalogEncryptionSettingsRequest"},
      "output":{"shape":"PutDataCatalogEncryptionSettingsResponse"},
      "errors":[
        {"shape":"InternalServiceException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Sets the security configuration for a specified catalog. After the configuration has been set, the specified encryption is applied to every catalog write thereafter.</p>"
    },
    "PutResourcePolicy":{
      "name":"PutResourcePolicy",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutResourcePolicyRequest"},
      "output":{"shape":"PutResourcePolicyResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"ConditionCheckFailureException"}
      ],
      "documentation":"<p>Sets the Data Catalog resource policy for access control.</p>"
    },
    "PutSchemaVersionMetadata":{
      "name":"PutSchemaVersionMetadata",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutSchemaVersionMetadataInput"},
      "output":{"shape":"PutSchemaVersionMetadataResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"ResourceNumberLimitExceededException"}
      ],
      "documentation":"<p>Puts the metadata key value pair for a specified schema version ID. A maximum of 10 key value pairs will be allowed per schema version. They can be added over one or more calls.</p>"
    },
    "PutWorkflowRunProperties":{
      "name":"PutWorkflowRunProperties",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"PutWorkflowRunPropertiesRequest"},
      "output":{"shape":"PutWorkflowRunPropertiesResponse"},
      "errors":[
        {"shape":"AlreadyExistsException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Puts the specified workflow run properties for the given workflow run. If a property already exists for the specified run, then it overrides the value otherwise adds the property to existing properties.</p>"
    },
    "QuerySchemaVersionMetadata":{
      "name":"QuerySchemaVersionMetadata",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"QuerySchemaVersionMetadataInput"},
      "output":{"shape":"QuerySchemaVersionMetadataResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"}
      ],
      "documentation":"<p>Queries for the schema version metadata information. </p>"
    },
    "RegisterSchemaVersion":{
      "name":"RegisterSchemaVersion",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"RegisterSchemaVersionInput"},
      "output":{"shape":"RegisterSchemaVersionResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"ConcurrentModificationException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Adds a new version to the existing schema. Returns an error if new version of schema does not meet the compatibility requirements of the schema set. This API will not create a new schema set and will return a 404 error if the schema set is not already present in the Schema Registry.</p> <p>If this is the first schema definition to be registered in the Schema Registry, this API will store the schema version and return immediately. Otherwise, this call has the potential to run longer than other operations due to compatibility modes. You can call the <code>GetSchemaVersion</code> API with the <code>SchemaVersionId</code> to check compatibility modes.</p> <p>If the same schema definition is already stored in Schema Registry as a version, the schema ID of the existing schema is returned to the caller.</p>"
    },
    "RemoveSchemaVersionMetadata":{
      "name":"RemoveSchemaVersionMetadata",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"RemoveSchemaVersionMetadataInput"},
      "output":{"shape":"RemoveSchemaVersionMetadataResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"}
      ],
      "documentation":"<p>Removes a key value pair from the schema version metadata for the specified schema version ID.</p>"
    },
    "ResetJobBookmark":{
      "name":"ResetJobBookmark",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ResetJobBookmarkRequest"},
      "output":{"shape":"ResetJobBookmarkResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Resets a bookmark entry.</p> <p>For more information about enabling and using job bookmarks, see:</p> <ul> <li> <p> <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-continuations.html\">Tracking processed data using job bookmarks</a> </p> </li> <li> <p> <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html\">Job parameters used by Glue</a> </p> </li> <li> <p> <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-Job\">Job structure</a> </p> </li> </ul>"
    },
    "ResumeWorkflowRun":{
      "name":"ResumeWorkflowRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"ResumeWorkflowRunRequest"},
      "output":{"shape":"ResumeWorkflowRunResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ConcurrentRunsExceededException"},
        {"shape":"IllegalWorkflowStateException"}
      ],
      "documentation":"<p>Restarts selected nodes of a previous partially completed workflow run and resumes the workflow run. The selected nodes and all nodes that are downstream from the selected nodes are run.</p>"
    },
    "RunStatement":{
      "name":"RunStatement",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"RunStatementRequest"},
      "output":{"shape":"RunStatementResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"ValidationException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"IllegalSessionStateException"}
      ],
      "documentation":"<p>Executes the statement.</p>"
    },
    "SearchTables":{
      "name":"SearchTables",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"SearchTablesRequest"},
      "output":{"shape":"SearchTablesResponse"},
      "errors":[
        {"shape":"InternalServiceException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Searches a set of tables based on properties in the table metadata as well as on the parent database. You can search against text or filter conditions. </p> <p>You can only get tables that you have access to based on the security policies defined in Lake Formation. You need at least a read-only access to the table for it to be returned. If you do not have access to all the columns in the table, these columns will not be searched against when returning the list of tables back to you. If you have access to the columns but not the data in the columns, those columns and the associated metadata for those columns will be included in the search. </p>"
    },
    "StartBlueprintRun":{
      "name":"StartBlueprintRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartBlueprintRunRequest"},
      "output":{"shape":"StartBlueprintRunResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"IllegalBlueprintStateException"}
      ],
      "documentation":"<p>Starts a new run of the specified blueprint.</p>"
    },
    "StartColumnStatisticsTaskRun":{
      "name":"StartColumnStatisticsTaskRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartColumnStatisticsTaskRunRequest"},
      "output":{"shape":"StartColumnStatisticsTaskRunResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"ColumnStatisticsTaskRunningException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"InvalidInputException"}
      ],
      "documentation":"<p>Starts a column statistics task run, for a specified table and columns.</p>"
    },
    "StartCrawler":{
      "name":"StartCrawler",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartCrawlerRequest"},
      "output":{"shape":"StartCrawlerResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"CrawlerRunningException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Starts a crawl using the specified crawler, regardless of what is scheduled. If the crawler is already running, returns a <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-exceptions.html#aws-glue-api-exceptions-CrawlerRunningException\">CrawlerRunningException</a>.</p>"
    },
    "StartCrawlerSchedule":{
      "name":"StartCrawlerSchedule",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartCrawlerScheduleRequest"},
      "output":{"shape":"StartCrawlerScheduleResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"SchedulerRunningException"},
        {"shape":"SchedulerTransitioningException"},
        {"shape":"NoScheduleException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Changes the schedule state of the specified crawler to <code>SCHEDULED</code>, unless the crawler is already running or the schedule state is already <code>SCHEDULED</code>.</p>"
    },
    "StartDataQualityRuleRecommendationRun":{
      "name":"StartDataQualityRuleRecommendationRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartDataQualityRuleRecommendationRunRequest"},
      "output":{"shape":"StartDataQualityRuleRecommendationRunResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"ConflictException"}
      ],
      "documentation":"<p>Starts a recommendation run that is used to generate rules when you don't know what rules to write. Glue Data Quality analyzes the data and comes up with recommendations for a potential ruleset. You can then triage the ruleset and modify the generated ruleset to your liking.</p> <p>Recommendation runs are automatically deleted after 90 days.</p>",
      "idempotent":true
    },
    "StartDataQualityRulesetEvaluationRun":{
      "name":"StartDataQualityRulesetEvaluationRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartDataQualityRulesetEvaluationRunRequest"},
      "output":{"shape":"StartDataQualityRulesetEvaluationRunResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"ConflictException"}
      ],
      "documentation":"<p>Once you have a ruleset definition (either recommended or your own), you call this operation to evaluate the ruleset against a data source (Glue table). The evaluation computes results which you can retrieve with the <code>GetDataQualityResult</code> API.</p>",
      "idempotent":true
    },
    "StartExportLabelsTaskRun":{
      "name":"StartExportLabelsTaskRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartExportLabelsTaskRunRequest"},
      "output":{"shape":"StartExportLabelsTaskRunResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Begins an asynchronous task to export all labeled data for a particular transform. This task is the only label-related API call that is not part of the typical active learning workflow. You typically use <code>StartExportLabelsTaskRun</code> when you want to work with all of your existing labels at the same time, such as when you want to remove or change labels that were previously submitted as truth. This API operation accepts the <code>TransformId</code> whose labels you want to export and an Amazon Simple Storage Service (Amazon S3) path to export the labels to. The operation returns a <code>TaskRunId</code>. You can check on the status of your task run by calling the <code>GetMLTaskRun</code> API.</p>"
    },
    "StartImportLabelsTaskRun":{
      "name":"StartImportLabelsTaskRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartImportLabelsTaskRunRequest"},
      "output":{"shape":"StartImportLabelsTaskRunResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Enables you to provide additional labels (examples of truth) to be used to teach the machine learning transform and improve its quality. This API operation is generally used as part of the active learning workflow that starts with the <code>StartMLLabelingSetGenerationTaskRun</code> call and that ultimately results in improving the quality of your machine learning transform. </p> <p>After the <code>StartMLLabelingSetGenerationTaskRun</code> finishes, Glue machine learning will have generated a series of questions for humans to answer. (Answering these questions is often called 'labeling' in the machine learning workflows). In the case of the <code>FindMatches</code> transform, these questions are of the form, “What is the correct way to group these rows together into groups composed entirely of matching records?” After the labeling process is finished, users upload their answers/labels with a call to <code>StartImportLabelsTaskRun</code>. After <code>StartImportLabelsTaskRun</code> finishes, all future runs of the machine learning transform use the new and improved labels and perform a higher-quality transformation.</p> <p>By default, <code>StartMLLabelingSetGenerationTaskRun</code> continually learns from and combines all labels that you upload unless you set <code>Replace</code> to true. If you set <code>Replace</code> to true, <code>StartImportLabelsTaskRun</code> deletes and forgets all previously uploaded labels and learns only from the exact set that you upload. Replacing labels can be helpful if you realize that you previously uploaded incorrect labels, and you believe that they are having a negative effect on your transform quality.</p> <p>You can check on the status of your task run by calling the <code>GetMLTaskRun</code> operation. </p>"
    },
    "StartJobRun":{
      "name":"StartJobRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartJobRunRequest"},
      "output":{"shape":"StartJobRunResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"ConcurrentRunsExceededException"}
      ],
      "documentation":"<p>Starts a job run using a job definition.</p>"
    },
    "StartMLEvaluationTaskRun":{
      "name":"StartMLEvaluationTaskRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartMLEvaluationTaskRunRequest"},
      "output":{"shape":"StartMLEvaluationTaskRunResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"ConcurrentRunsExceededException"},
        {"shape":"MLTransformNotReadyException"}
      ],
      "documentation":"<p>Starts a task to estimate the quality of the transform. </p> <p>When you provide label sets as examples of truth, Glue machine learning uses some of those examples to learn from them. The rest of the labels are used as a test to estimate quality.</p> <p>Returns a unique identifier for the run. You can call <code>GetMLTaskRun</code> to get more information about the stats of the <code>EvaluationTaskRun</code>.</p>"
    },
    "StartMLLabelingSetGenerationTaskRun":{
      "name":"StartMLLabelingSetGenerationTaskRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartMLLabelingSetGenerationTaskRunRequest"},
      "output":{"shape":"StartMLLabelingSetGenerationTaskRunResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"ConcurrentRunsExceededException"}
      ],
      "documentation":"<p>Starts the active learning workflow for your machine learning transform to improve the transform's quality by generating label sets and adding labels.</p> <p>When the <code>StartMLLabelingSetGenerationTaskRun</code> finishes, Glue will have generated a \"labeling set\" or a set of questions for humans to answer.</p> <p>In the case of the <code>FindMatches</code> transform, these questions are of the form, “What is the correct way to group these rows together into groups composed entirely of matching records?” </p> <p>After the labeling process is finished, you can upload your labels with a call to <code>StartImportLabelsTaskRun</code>. After <code>StartImportLabelsTaskRun</code> finishes, all future runs of the machine learning transform will use the new and improved labels and perform a higher-quality transformation.</p>"
    },
    "StartTrigger":{
      "name":"StartTrigger",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartTriggerRequest"},
      "output":{"shape":"StartTriggerResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"ConcurrentRunsExceededException"}
      ],
      "documentation":"<p>Starts an existing trigger. See <a href=\"https://docs.aws.amazon.com/glue/latest/dg/trigger-job.html\">Triggering Jobs</a> for information about how different types of trigger are started.</p>"
    },
    "StartWorkflowRun":{
      "name":"StartWorkflowRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StartWorkflowRunRequest"},
      "output":{"shape":"StartWorkflowRunResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"ConcurrentRunsExceededException"}
      ],
      "documentation":"<p>Starts a new run of the specified workflow.</p>"
    },
    "StopColumnStatisticsTaskRun":{
      "name":"StopColumnStatisticsTaskRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StopColumnStatisticsTaskRunRequest"},
      "output":{"shape":"StopColumnStatisticsTaskRunResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"ColumnStatisticsTaskNotRunningException"},
        {"shape":"ColumnStatisticsTaskStoppingException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Stops a task run for the specified table.</p>"
    },
    "StopCrawler":{
      "name":"StopCrawler",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StopCrawlerRequest"},
      "output":{"shape":"StopCrawlerResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"CrawlerNotRunningException"},
        {"shape":"CrawlerStoppingException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>If the specified crawler is running, stops the crawl.</p>"
    },
    "StopCrawlerSchedule":{
      "name":"StopCrawlerSchedule",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StopCrawlerScheduleRequest"},
      "output":{"shape":"StopCrawlerScheduleResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"SchedulerNotRunningException"},
        {"shape":"SchedulerTransitioningException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Sets the schedule state of the specified crawler to <code>NOT_SCHEDULED</code>, but does not stop the crawler if it is already running.</p>"
    },
    "StopSession":{
      "name":"StopSession",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StopSessionRequest"},
      "output":{"shape":"StopSessionResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"IllegalSessionStateException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Stops the session.</p>"
    },
    "StopTrigger":{
      "name":"StopTrigger",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StopTriggerRequest"},
      "output":{"shape":"StopTriggerResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Stops a specified trigger.</p>"
    },
    "StopWorkflowRun":{
      "name":"StopWorkflowRun",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"StopWorkflowRunRequest"},
      "output":{"shape":"StopWorkflowRunResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"IllegalWorkflowStateException"}
      ],
      "documentation":"<p>Stops the execution of the specified workflow run.</p>"
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"TagResourceRequest"},
      "output":{"shape":"TagResourceResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"EntityNotFoundException"}
      ],
      "documentation":"<p>Adds tags to a resource. A tag is a label you can assign to an Amazon Web Services resource. In Glue, you can tag only certain resources. For information about what resources you can tag, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html\">Amazon Web Services Tags in Glue</a>.</p>"
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UntagResourceRequest"},
      "output":{"shape":"UntagResourceResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"EntityNotFoundException"}
      ],
      "documentation":"<p>Removes tags from a resource.</p>"
    },
    "UpdateBlueprint":{
      "name":"UpdateBlueprint",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateBlueprintRequest"},
      "output":{"shape":"UpdateBlueprintResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"ConcurrentModificationException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"IllegalBlueprintStateException"}
      ],
      "documentation":"<p>Updates a registered blueprint.</p>"
    },
    "UpdateClassifier":{
      "name":"UpdateClassifier",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateClassifierRequest"},
      "output":{"shape":"UpdateClassifierResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"VersionMismatchException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Modifies an existing classifier (a <code>GrokClassifier</code>, an <code>XMLClassifier</code>, a <code>JsonClassifier</code>, or a <code>CsvClassifier</code>, depending on which field is present).</p>"
    },
    "UpdateColumnStatisticsForPartition":{
      "name":"UpdateColumnStatisticsForPartition",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateColumnStatisticsForPartitionRequest"},
      "output":{"shape":"UpdateColumnStatisticsForPartitionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Creates or updates partition statistics of columns.</p> <p>The Identity and Access Management (IAM) permission required for this operation is <code>UpdatePartition</code>.</p>"
    },
    "UpdateColumnStatisticsForTable":{
      "name":"UpdateColumnStatisticsForTable",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateColumnStatisticsForTableRequest"},
      "output":{"shape":"UpdateColumnStatisticsForTableResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Creates or updates table statistics of columns.</p> <p>The Identity and Access Management (IAM) permission required for this operation is <code>UpdateTable</code>.</p>"
    },
    "UpdateConnection":{
      "name":"UpdateConnection",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateConnectionRequest"},
      "output":{"shape":"UpdateConnectionResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Updates a connection definition in the Data Catalog.</p>"
    },
    "UpdateCrawler":{
      "name":"UpdateCrawler",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateCrawlerRequest"},
      "output":{"shape":"UpdateCrawlerResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"VersionMismatchException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"CrawlerRunningException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Updates a crawler. If a crawler is running, you must stop it using <code>StopCrawler</code> before updating it.</p>"
    },
    "UpdateCrawlerSchedule":{
      "name":"UpdateCrawlerSchedule",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateCrawlerScheduleRequest"},
      "output":{"shape":"UpdateCrawlerScheduleResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"VersionMismatchException"},
        {"shape":"SchedulerTransitioningException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Updates the schedule of a crawler using a <code>cron</code> expression. </p>"
    },
    "UpdateDataQualityRuleset":{
      "name":"UpdateDataQualityRuleset",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateDataQualityRulesetRequest"},
      "output":{"shape":"UpdateDataQualityRulesetResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"IdempotentParameterMismatchException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"ResourceNumberLimitExceededException"}
      ],
      "documentation":"<p>Updates the specified data quality ruleset.</p>"
    },
    "UpdateDatabase":{
      "name":"UpdateDatabase",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateDatabaseRequest"},
      "output":{"shape":"UpdateDatabaseResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Updates an existing database definition in a Data Catalog.</p>"
    },
    "UpdateDevEndpoint":{
      "name":"UpdateDevEndpoint",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateDevEndpointRequest"},
      "output":{"shape":"UpdateDevEndpointResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InvalidInputException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Updates a specified development endpoint.</p>"
    },
    "UpdateJob":{
      "name":"UpdateJob",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateJobRequest"},
      "output":{"shape":"UpdateJobResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Updates an existing job definition. The previous job definition is completely overwritten by this information.</p>"
    },
    "UpdateJobFromSourceControl":{
      "name":"UpdateJobFromSourceControl",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateJobFromSourceControlRequest"},
      "output":{"shape":"UpdateJobFromSourceControlResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"InvalidInputException"},
        {"shape":"ValidationException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Synchronizes a job from the source control repository. This operation takes the job artifacts that are located in the remote repository and updates the Glue internal stores with these artifacts.</p> <p>This API supports optional parameters which take in the repository information.</p>"
    },
    "UpdateMLTransform":{
      "name":"UpdateMLTransform",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateMLTransformRequest"},
      "output":{"shape":"UpdateMLTransformResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"InternalServiceException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Updates an existing machine learning transform. Call this operation to tune the algorithm parameters to achieve better results.</p> <p>After calling this operation, you can call the <code>StartMLEvaluationTaskRun</code> operation to assess how well your new parameters achieved your goals (such as improving the quality of your machine learning transform, or making it more cost-effective).</p>"
    },
    "UpdatePartition":{
      "name":"UpdatePartition",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdatePartitionRequest"},
      "output":{"shape":"UpdatePartitionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Updates a partition.</p>"
    },
    "UpdateRegistry":{
      "name":"UpdateRegistry",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateRegistryInput"},
      "output":{"shape":"UpdateRegistryResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"ConcurrentModificationException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Updates an existing registry which is used to hold a collection of schemas. The updated properties relate to the registry, and do not modify any of the schemas within the registry. </p>"
    },
    "UpdateSchema":{
      "name":"UpdateSchema",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateSchemaInput"},
      "output":{"shape":"UpdateSchemaResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"ConcurrentModificationException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Updates the description, compatibility setting, or version checkpoint for a schema set.</p> <p>For updating the compatibility setting, the call will not validate compatibility for the entire set of schema versions with the new compatibility setting. If the value for <code>Compatibility</code> is provided, the <code>VersionNumber</code> (a checkpoint) is also required. The API will validate the checkpoint version number for consistency.</p> <p>If the value for the <code>VersionNumber</code> (checkpoint) is provided, <code>Compatibility</code> is optional and this can be used to set/reset a checkpoint for the schema.</p> <p>This update will happen only if the schema is in the AVAILABLE state.</p>"
    },
    "UpdateSourceControlFromJob":{
      "name":"UpdateSourceControlFromJob",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateSourceControlFromJobRequest"},
      "output":{"shape":"UpdateSourceControlFromJobResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"AlreadyExistsException"},
        {"shape":"InvalidInputException"},
        {"shape":"ValidationException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"}
      ],
      "documentation":"<p>Synchronizes a job to the source control repository. This operation takes the job artifacts from the Glue internal stores and makes a commit to the remote repository that is configured on the job.</p> <p>This API supports optional parameters which take in the repository information.</p>"
    },
    "UpdateTable":{
      "name":"UpdateTable",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateTableRequest"},
      "output":{"shape":"UpdateTableResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ConcurrentModificationException"},
        {"shape":"ResourceNumberLimitExceededException"},
        {"shape":"GlueEncryptionException"},
        {"shape":"ResourceNotReadyException"}
      ],
      "documentation":"<p>Updates a metadata table in the Data Catalog.</p>"
    },
    "UpdateTableOptimizer":{
      "name":"UpdateTableOptimizer",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateTableOptimizerRequest"},
      "output":{"shape":"UpdateTableOptimizerResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServiceException"}
      ],
      "documentation":"<p>Updates the configuration for an existing table optimizer.</p>"
    },
    "UpdateTrigger":{
      "name":"UpdateTrigger",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateTriggerRequest"},
      "output":{"shape":"UpdateTriggerResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Updates a trigger definition.</p>"
    },
    "UpdateUserDefinedFunction":{
      "name":"UpdateUserDefinedFunction",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateUserDefinedFunctionRequest"},
      "output":{"shape":"UpdateUserDefinedFunctionResponse"},
      "errors":[
        {"shape":"EntityNotFoundException"},
        {"shape":"InvalidInputException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"GlueEncryptionException"}
      ],
      "documentation":"<p>Updates an existing function definition in the Data Catalog.</p>"
    },
    "UpdateWorkflow":{
      "name":"UpdateWorkflow",
      "http":{
        "method":"POST",
        "requestUri":"/"
      },
      "input":{"shape":"UpdateWorkflowRequest"},
      "output":{"shape":"UpdateWorkflowResponse"},
      "errors":[
        {"shape":"InvalidInputException"},
        {"shape":"EntityNotFoundException"},
        {"shape":"InternalServiceException"},
        {"shape":"OperationTimeoutException"},
        {"shape":"ConcurrentModificationException"}
      ],
      "documentation":"<p>Updates an existing workflow.</p>"
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>Access to a resource was denied.</p>",
      "exception":true
    },
    "AccountId":{
      "type":"string",
      "max":12,
      "min":0
    },
    "Action":{
      "type":"structure",
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of a job to be run.</p>"
        },
        "Arguments":{
          "shape":"GenericMap",
          "documentation":"<p>The job arguments used when this trigger fires. For this job run, they replace the default arguments set in the job definition itself.</p> <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p> <p>For information about how to specify and consume your own Job arguments, see the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html\">Calling Glue APIs in Python</a> topic in the developer guide.</p> <p>For information about the key-value pairs that Glue consumes to set up your job, see the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html\">Special Parameters Used by Glue</a> topic in the developer guide.</p>"
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The <code>JobRun</code> timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status. The default is 2,880 minutes (48 hours). This overrides the timeout value set in the parent job.</p>"
        },
        "SecurityConfiguration":{
          "shape":"NameString",
          "documentation":"<p>The name of the <code>SecurityConfiguration</code> structure to be used with this action.</p>"
        },
        "NotificationProperty":{
          "shape":"NotificationProperty",
          "documentation":"<p>Specifies configuration properties of a job run notification.</p>"
        },
        "CrawlerName":{
          "shape":"NameString",
          "documentation":"<p>The name of the crawler to be used with this action.</p>"
        }
      },
      "documentation":"<p>Defines an action to be initiated by a trigger.</p>"
    },
    "ActionList":{
      "type":"list",
      "member":{"shape":"Action"}
    },
    "AdditionalContextMap":{
      "type":"map",
      "key":{"shape":"ContextKey"},
      "value":{"shape":"ContextValue"}
    },
    "AdditionalOptionKeys":{
      "type":"string",
      "enum":[
        "performanceTuning.caching",
        "observations.scope"
      ]
    },
    "AdditionalOptions":{
      "type":"map",
      "key":{"shape":"EnclosedInStringProperty"},
      "value":{"shape":"EnclosedInStringProperty"}
    },
    "AdditionalPlanOptionsMap":{
      "type":"map",
      "key":{"shape":"GenericString"},
      "value":{"shape":"GenericString"}
    },
    "AggFunction":{
      "type":"string",
      "enum":[
        "avg",
        "countDistinct",
        "count",
        "first",
        "last",
        "kurtosis",
        "max",
        "min",
        "skewness",
        "stddev_samp",
        "stddev_pop",
        "sum",
        "sumDistinct",
        "var_samp",
        "var_pop"
      ]
    },
    "Aggregate":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Groups",
        "Aggs"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>Specifies the fields and rows to use as inputs for the aggregate transform.</p>"
        },
        "Groups":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>Specifies the fields to group by.</p>"
        },
        "Aggs":{
          "shape":"AggregateOperations",
          "documentation":"<p>Specifies the aggregate functions to be performed on specified fields. </p>"
        }
      },
      "documentation":"<p>Specifies a transform that groups rows by chosen fields and computes the aggregated value by specified function.</p>"
    },
    "AggregateOperation":{
      "type":"structure",
      "required":[
        "Column",
        "AggFunc"
      ],
      "members":{
        "Column":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>Specifies the column on the data set on which the aggregation function will be applied.</p>"
        },
        "AggFunc":{
          "shape":"AggFunction",
          "documentation":"<p>Specifies the aggregation function to apply.</p> <p>Possible aggregation functions include: avg countDistinct, count, first, last, kurtosis, max, min, skewness, stddev_samp, stddev_pop, sum, sumDistinct, var_samp, var_pop</p>"
        }
      },
      "documentation":"<p>Specifies the set of parameters needed to perform aggregation in the aggregate transform.</p>"
    },
    "AggregateOperations":{
      "type":"list",
      "member":{"shape":"AggregateOperation"},
      "max":30,
      "min":1
    },
    "AlreadyExistsException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>A resource to be created or added already exists.</p>",
      "exception":true
    },
    "AmazonRedshiftAdvancedOption":{
      "type":"structure",
      "members":{
        "Key":{
          "shape":"GenericString",
          "documentation":"<p>The key for the additional connection option.</p>"
        },
        "Value":{
          "shape":"GenericString",
          "documentation":"<p>The value for the additional connection option.</p>"
        }
      },
      "documentation":"<p>Specifies an optional value when connecting to the Redshift cluster.</p>"
    },
    "AmazonRedshiftAdvancedOptions":{
      "type":"list",
      "member":{"shape":"AmazonRedshiftAdvancedOption"}
    },
    "AmazonRedshiftNodeData":{
      "type":"structure",
      "members":{
        "AccessType":{
          "shape":"GenericLimitedString",
          "documentation":"<p>The access type for the Redshift connection. Can be a direct connection or catalog connections.</p>"
        },
        "SourceType":{
          "shape":"GenericLimitedString",
          "documentation":"<p>The source type to specify whether a specific table is the source or a custom query.</p>"
        },
        "Connection":{
          "shape":"Option",
          "documentation":"<p>The Glue connection to the Redshift cluster.</p>"
        },
        "Schema":{
          "shape":"Option",
          "documentation":"<p>The Redshift schema name when working with a direct connection.</p>"
        },
        "Table":{
          "shape":"Option",
          "documentation":"<p>The Redshift table name when working with a direct connection.</p>"
        },
        "CatalogDatabase":{
          "shape":"Option",
          "documentation":"<p>The name of the Glue Data Catalog database when working with a data catalog.</p>"
        },
        "CatalogTable":{
          "shape":"Option",
          "documentation":"<p>The Glue Data Catalog table name when working with a data catalog.</p>"
        },
        "CatalogRedshiftSchema":{
          "shape":"GenericString",
          "documentation":"<p>The Redshift schema name when working with a data catalog.</p>"
        },
        "CatalogRedshiftTable":{
          "shape":"GenericString",
          "documentation":"<p>The database table to read from.</p>"
        },
        "TempDir":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The Amazon S3 path where temporary data can be staged when copying out of the database.</p>"
        },
        "IamRole":{
          "shape":"Option",
          "documentation":"<p>Optional. The role name use when connection to S3. The IAM role ill default to the role on the job when left blank.</p>"
        },
        "AdvancedOptions":{
          "shape":"AmazonRedshiftAdvancedOptions",
          "documentation":"<p>Optional values when connecting to the Redshift cluster.</p>"
        },
        "SampleQuery":{
          "shape":"GenericString",
          "documentation":"<p>The SQL used to fetch the data from a Redshift sources when the SourceType is 'query'.</p>"
        },
        "PreAction":{
          "shape":"GenericString",
          "documentation":"<p>The SQL used before a MERGE or APPEND with upsert is run.</p>"
        },
        "PostAction":{
          "shape":"GenericString",
          "documentation":"<p>The SQL used before a MERGE or APPEND with upsert is run.</p>"
        },
        "Action":{
          "shape":"GenericString",
          "documentation":"<p>Specifies how writing to a Redshift cluser will occur.</p>"
        },
        "TablePrefix":{
          "shape":"GenericLimitedString",
          "documentation":"<p>Specifies the prefix to a table.</p>"
        },
        "Upsert":{
          "shape":"BooleanValue",
          "documentation":"<p>The action used on Redshift sinks when doing an APPEND.</p>"
        },
        "MergeAction":{
          "shape":"GenericLimitedString",
          "documentation":"<p>The action used when to detemine how a MERGE in a Redshift sink will be handled.</p>"
        },
        "MergeWhenMatched":{
          "shape":"GenericLimitedString",
          "documentation":"<p>The action used when to detemine how a MERGE in a Redshift sink will be handled when an existing record matches a new record.</p>"
        },
        "MergeWhenNotMatched":{
          "shape":"GenericLimitedString",
          "documentation":"<p>The action used when to detemine how a MERGE in a Redshift sink will be handled when an existing record doesn't match a new record.</p>"
        },
        "MergeClause":{
          "shape":"GenericString",
          "documentation":"<p>The SQL used in a custom merge to deal with matching records.</p>"
        },
        "CrawlerConnection":{
          "shape":"GenericString",
          "documentation":"<p>Specifies the name of the connection that is associated with the catalog table used.</p>"
        },
        "TableSchema":{
          "shape":"OptionList",
          "documentation":"<p>The array of schema output for a given node.</p>"
        },
        "StagingTable":{
          "shape":"GenericString",
          "documentation":"<p>The name of the temporary staging table that is used when doing a MERGE or APPEND with upsert.</p>"
        },
        "SelectedColumns":{
          "shape":"OptionList",
          "documentation":"<p>The list of column names used to determine a matching record when doing a MERGE or APPEND with upsert.</p>"
        }
      },
      "documentation":"<p>Specifies an Amazon Redshift node.</p>"
    },
    "AmazonRedshiftSource":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the Amazon Redshift source.</p>"
        },
        "Data":{
          "shape":"AmazonRedshiftNodeData",
          "documentation":"<p>Specifies the data of the Amazon Reshift source node.</p>"
        }
      },
      "documentation":"<p>Specifies an Amazon Redshift source.</p>"
    },
    "AmazonRedshiftTarget":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the Amazon Redshift target.</p>"
        },
        "Data":{
          "shape":"AmazonRedshiftNodeData",
          "documentation":"<p>Specifies the data of the Amazon Redshift target node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        }
      },
      "documentation":"<p>Specifies an Amazon Redshift target.</p>"
    },
    "ApplyMapping":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Mapping"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "Mapping":{
          "shape":"Mappings",
          "documentation":"<p>Specifies the mapping of data property keys in the data source to data property keys in the data target.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that maps data property keys in the data source to data property keys in the data target. You can rename keys, modify the data types for keys, and choose which keys to drop from the dataset.</p>"
    },
    "ArnString":{
      "type":"string",
      "max":2048,
      "min":20
    },
    "AthenaConnectorSource":{
      "type":"structure",
      "required":[
        "Name",
        "ConnectionName",
        "ConnectorName",
        "ConnectionType",
        "SchemaName"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data source.</p>"
        },
        "ConnectionName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the connection that is associated with the connector.</p>"
        },
        "ConnectorName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of a connector that assists with accessing the data store in Glue Studio.</p>"
        },
        "ConnectionType":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The type of connection, such as marketplace.athena or custom.athena, designating a connection to an Amazon Athena data store.</p>"
        },
        "ConnectionTable":{
          "shape":"EnclosedInStringPropertyWithQuote",
          "documentation":"<p>The name of the table in the data source.</p>"
        },
        "SchemaName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the Cloudwatch log group to read from. For example, <code>/aws-glue/jobs/output</code>.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the custom Athena source.</p>"
        }
      },
      "documentation":"<p>Specifies a connector to an Amazon Athena data source.</p>"
    },
    "AttemptCount":{"type":"integer"},
    "AuditColumnNamesList":{
      "type":"list",
      "member":{"shape":"ColumnNameString"}
    },
    "AuditContext":{
      "type":"structure",
      "members":{
        "AdditionalAuditContext":{
          "shape":"AuditContextString",
          "documentation":"<p>A string containing the additional audit context information.</p>"
        },
        "RequestedColumns":{
          "shape":"AuditColumnNamesList",
          "documentation":"<p>The requested columns for audit.</p>"
        },
        "AllColumnsRequested":{
          "shape":"NullableBoolean",
          "documentation":"<p>All columns request for audit.</p>"
        }
      },
      "documentation":"<p>A structure containing the Lake Formation audit context.</p>"
    },
    "AuditContextString":{
      "type":"string",
      "max":2048,
      "min":0
    },
    "AuthTokenString":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "BackfillError":{
      "type":"structure",
      "members":{
        "Code":{
          "shape":"BackfillErrorCode",
          "documentation":"<p>The error code for an error that occurred when registering partition indexes for an existing table.</p>"
        },
        "Partitions":{
          "shape":"BackfillErroredPartitionsList",
          "documentation":"<p>A list of a limited number of partitions in the response.</p>"
        }
      },
      "documentation":"<p>A list of errors that can occur when registering partition indexes for an existing table.</p> <p>These errors give the details about why an index registration failed and provide a limited number of partitions in the response, so that you can fix the partitions at fault and try registering the index again. The most common set of errors that can occur are categorized as follows:</p> <ul> <li> <p>EncryptedPartitionError: The partitions are encrypted.</p> </li> <li> <p>InvalidPartitionTypeDataError: The partition value doesn't match the data type for that partition column.</p> </li> <li> <p>MissingPartitionValueError: The partitions are encrypted.</p> </li> <li> <p>UnsupportedPartitionCharacterError: Characters inside the partition value are not supported. For example: U+0000 , U+0001, U+0002.</p> </li> <li> <p>InternalError: Any error which does not belong to other error codes.</p> </li> </ul>"
    },
    "BackfillErrorCode":{
      "type":"string",
      "enum":[
        "ENCRYPTED_PARTITION_ERROR",
        "INTERNAL_ERROR",
        "INVALID_PARTITION_TYPE_DATA_ERROR",
        "MISSING_PARTITION_VALUE_ERROR",
        "UNSUPPORTED_PARTITION_CHARACTER_ERROR"
      ]
    },
    "BackfillErroredPartitionsList":{
      "type":"list",
      "member":{"shape":"PartitionValueList"}
    },
    "BackfillErrors":{
      "type":"list",
      "member":{"shape":"BackfillError"}
    },
    "BasicCatalogTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of your data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The database that contains the table you want to use as the target. This database must already exist in the Data Catalog.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The table that defines the schema of your output data. This table must already exist in the Data Catalog.</p>"
        }
      },
      "documentation":"<p>Specifies a target that uses a Glue Data Catalog table.</p>"
    },
    "BatchCreatePartitionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "PartitionInputList"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the catalog in which the partition is to be created. Currently, this should be the Amazon Web Services account ID.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the metadata database in which the partition is to be created.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the metadata table in which the partition is to be created.</p>"
        },
        "PartitionInputList":{
          "shape":"PartitionInputList",
          "documentation":"<p>A list of <code>PartitionInput</code> structures that define the partitions to be created.</p>"
        }
      }
    },
    "BatchCreatePartitionResponse":{
      "type":"structure",
      "members":{
        "Errors":{
          "shape":"PartitionErrors",
          "documentation":"<p>The errors encountered when trying to create the requested partitions.</p>"
        }
      }
    },
    "BatchDeleteConnectionRequest":{
      "type":"structure",
      "required":["ConnectionNameList"],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the connections reside. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "ConnectionNameList":{
          "shape":"DeleteConnectionNameList",
          "documentation":"<p>A list of names of the connections to delete.</p>"
        }
      }
    },
    "BatchDeleteConnectionResponse":{
      "type":"structure",
      "members":{
        "Succeeded":{
          "shape":"NameStringList",
          "documentation":"<p>A list of names of the connection definitions that were successfully deleted.</p>"
        },
        "Errors":{
          "shape":"ErrorByName",
          "documentation":"<p>A map of the names of connections that were not successfully deleted to error details.</p>"
        }
      }
    },
    "BatchDeletePartitionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "PartitionsToDelete"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the partition to be deleted resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database in which the table in question resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table that contains the partitions to be deleted.</p>"
        },
        "PartitionsToDelete":{
          "shape":"BatchDeletePartitionValueList",
          "documentation":"<p>A list of <code>PartitionInput</code> structures that define the partitions to be deleted.</p>"
        }
      }
    },
    "BatchDeletePartitionResponse":{
      "type":"structure",
      "members":{
        "Errors":{
          "shape":"PartitionErrors",
          "documentation":"<p>The errors encountered when trying to delete the requested partitions.</p>"
        }
      }
    },
    "BatchDeletePartitionValueList":{
      "type":"list",
      "member":{"shape":"PartitionValueList"},
      "max":25,
      "min":0
    },
    "BatchDeleteTableNameList":{
      "type":"list",
      "member":{"shape":"NameString"},
      "max":100,
      "min":0
    },
    "BatchDeleteTableRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TablesToDelete"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the table resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database in which the tables to delete reside. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "TablesToDelete":{
          "shape":"BatchDeleteTableNameList",
          "documentation":"<p>A list of the table to delete.</p>"
        },
        "TransactionId":{
          "shape":"TransactionIdString",
          "documentation":"<p>The transaction ID at which to delete the table contents.</p>"
        }
      }
    },
    "BatchDeleteTableResponse":{
      "type":"structure",
      "members":{
        "Errors":{
          "shape":"TableErrors",
          "documentation":"<p>A list of errors encountered in attempting to delete the specified tables.</p>"
        }
      }
    },
    "BatchDeleteTableVersionList":{
      "type":"list",
      "member":{"shape":"VersionString"},
      "max":100,
      "min":0
    },
    "BatchDeleteTableVersionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "VersionIds"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the tables reside. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The database in the catalog in which the table resides. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "VersionIds":{
          "shape":"BatchDeleteTableVersionList",
          "documentation":"<p>A list of the IDs of versions to be deleted. A <code>VersionId</code> is a string representation of an integer. Each version is incremented by 1.</p>"
        }
      }
    },
    "BatchDeleteTableVersionResponse":{
      "type":"structure",
      "members":{
        "Errors":{
          "shape":"TableVersionErrors",
          "documentation":"<p>A list of errors encountered while trying to delete the specified table versions.</p>"
        }
      }
    },
    "BatchGetBlueprintNames":{
      "type":"list",
      "member":{"shape":"OrchestrationNameString"},
      "max":25,
      "min":1
    },
    "BatchGetBlueprintsRequest":{
      "type":"structure",
      "required":["Names"],
      "members":{
        "Names":{
          "shape":"BatchGetBlueprintNames",
          "documentation":"<p>A list of blueprint names.</p>"
        },
        "IncludeBlueprint":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies whether or not to include the blueprint in the response.</p>"
        },
        "IncludeParameterSpec":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies whether or not to include the parameters, as a JSON string, for the blueprint in the response.</p>"
        }
      }
    },
    "BatchGetBlueprintsResponse":{
      "type":"structure",
      "members":{
        "Blueprints":{
          "shape":"Blueprints",
          "documentation":"<p>Returns a list of blueprint as a <code>Blueprints</code> object.</p>"
        },
        "MissingBlueprints":{
          "shape":"BlueprintNames",
          "documentation":"<p>Returns a list of <code>BlueprintNames</code> that were not found.</p>"
        }
      }
    },
    "BatchGetCrawlersRequest":{
      "type":"structure",
      "required":["CrawlerNames"],
      "members":{
        "CrawlerNames":{
          "shape":"CrawlerNameList",
          "documentation":"<p>A list of crawler names, which might be the names returned from the <code>ListCrawlers</code> operation.</p>"
        }
      }
    },
    "BatchGetCrawlersResponse":{
      "type":"structure",
      "members":{
        "Crawlers":{
          "shape":"CrawlerList",
          "documentation":"<p>A list of crawler definitions.</p>"
        },
        "CrawlersNotFound":{
          "shape":"CrawlerNameList",
          "documentation":"<p>A list of names of crawlers that were not found.</p>"
        }
      }
    },
    "BatchGetCustomEntityTypesRequest":{
      "type":"structure",
      "required":["Names"],
      "members":{
        "Names":{
          "shape":"CustomEntityTypeNames",
          "documentation":"<p>A list of names of the custom patterns that you want to retrieve.</p>"
        }
      }
    },
    "BatchGetCustomEntityTypesResponse":{
      "type":"structure",
      "members":{
        "CustomEntityTypes":{
          "shape":"CustomEntityTypes",
          "documentation":"<p>A list of <code>CustomEntityType</code> objects representing the custom patterns that have been created.</p>"
        },
        "CustomEntityTypesNotFound":{
          "shape":"CustomEntityTypeNames",
          "documentation":"<p>A list of the names of custom patterns that were not found.</p>"
        }
      }
    },
    "BatchGetDataQualityResultRequest":{
      "type":"structure",
      "required":["ResultIds"],
      "members":{
        "ResultIds":{
          "shape":"DataQualityResultIds",
          "documentation":"<p>A list of unique result IDs for the data quality results.</p>"
        }
      }
    },
    "BatchGetDataQualityResultResponse":{
      "type":"structure",
      "required":["Results"],
      "members":{
        "Results":{
          "shape":"DataQualityResultsList",
          "documentation":"<p>A list of <code>DataQualityResult</code> objects representing the data quality results.</p>"
        },
        "ResultsNotFound":{
          "shape":"DataQualityResultIds",
          "documentation":"<p>A list of result IDs for which results were not found.</p>"
        }
      }
    },
    "BatchGetDevEndpointsRequest":{
      "type":"structure",
      "required":["DevEndpointNames"],
      "members":{
        "DevEndpointNames":{
          "shape":"DevEndpointNames",
          "documentation":"<p>The list of <code>DevEndpoint</code> names, which might be the names returned from the <code>ListDevEndpoint</code> operation.</p>"
        }
      }
    },
    "BatchGetDevEndpointsResponse":{
      "type":"structure",
      "members":{
        "DevEndpoints":{
          "shape":"DevEndpointList",
          "documentation":"<p>A list of <code>DevEndpoint</code> definitions.</p>"
        },
        "DevEndpointsNotFound":{
          "shape":"DevEndpointNames",
          "documentation":"<p>A list of <code>DevEndpoints</code> not found.</p>"
        }
      }
    },
    "BatchGetJobsRequest":{
      "type":"structure",
      "required":["JobNames"],
      "members":{
        "JobNames":{
          "shape":"JobNameList",
          "documentation":"<p>A list of job names, which might be the names returned from the <code>ListJobs</code> operation.</p>"
        }
      }
    },
    "BatchGetJobsResponse":{
      "type":"structure",
      "members":{
        "Jobs":{
          "shape":"JobList",
          "documentation":"<p>A list of job definitions.</p>"
        },
        "JobsNotFound":{
          "shape":"JobNameList",
          "documentation":"<p>A list of names of jobs not found.</p>"
        }
      }
    },
    "BatchGetPartitionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "PartitionsToGet"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the partitions in question reside. If none is supplied, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the partitions reside.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the partitions' table.</p>"
        },
        "PartitionsToGet":{
          "shape":"BatchGetPartitionValueList",
          "documentation":"<p>A list of partition values identifying the partitions to retrieve.</p>"
        }
      }
    },
    "BatchGetPartitionResponse":{
      "type":"structure",
      "members":{
        "Partitions":{
          "shape":"PartitionList",
          "documentation":"<p>A list of the requested partitions.</p>"
        },
        "UnprocessedKeys":{
          "shape":"BatchGetPartitionValueList",
          "documentation":"<p>A list of the partition values in the request for which partitions were not returned.</p>"
        }
      }
    },
    "BatchGetPartitionValueList":{
      "type":"list",
      "member":{"shape":"PartitionValueList"},
      "max":1000,
      "min":0
    },
    "BatchGetTableOptimizerEntries":{
      "type":"list",
      "member":{"shape":"BatchGetTableOptimizerEntry"}
    },
    "BatchGetTableOptimizerEntry":{
      "type":"structure",
      "members":{
        "catalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The Catalog ID of the table.</p>"
        },
        "databaseName":{
          "shape":"databaseNameString",
          "documentation":"<p>The name of the database in the catalog in which the table resides.</p>"
        },
        "tableName":{
          "shape":"tableNameString",
          "documentation":"<p>The name of the table.</p>"
        },
        "type":{
          "shape":"TableOptimizerType",
          "documentation":"<p>The type of table optimizer.</p>"
        }
      },
      "documentation":"<p>Represents a table optimizer to retrieve in the <code>BatchGetTableOptimizer</code> operation.</p>"
    },
    "BatchGetTableOptimizerError":{
      "type":"structure",
      "members":{
        "error":{
          "shape":"ErrorDetail",
          "documentation":"<p>An <code>ErrorDetail</code> object containing code and message details about the error.</p>"
        },
        "catalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The Catalog ID of the table.</p>"
        },
        "databaseName":{
          "shape":"databaseNameString",
          "documentation":"<p>The name of the database in the catalog in which the table resides.</p>"
        },
        "tableName":{
          "shape":"tableNameString",
          "documentation":"<p>The name of the table.</p>"
        },
        "type":{
          "shape":"TableOptimizerType",
          "documentation":"<p>The type of table optimizer.</p>"
        }
      },
      "documentation":"<p>Contains details on one of the errors in the error list returned by the <code>BatchGetTableOptimizer</code> operation.</p>"
    },
    "BatchGetTableOptimizerErrors":{
      "type":"list",
      "member":{"shape":"BatchGetTableOptimizerError"}
    },
    "BatchGetTableOptimizerRequest":{
      "type":"structure",
      "required":["Entries"],
      "members":{
        "Entries":{
          "shape":"BatchGetTableOptimizerEntries",
          "documentation":"<p>A list of <code>BatchGetTableOptimizerEntry</code> objects specifying the table optimizers to retrieve.</p>"
        }
      }
    },
    "BatchGetTableOptimizerResponse":{
      "type":"structure",
      "members":{
        "TableOptimizers":{
          "shape":"BatchTableOptimizers",
          "documentation":"<p>A list of <code>BatchTableOptimizer</code> objects.</p>"
        },
        "Failures":{
          "shape":"BatchGetTableOptimizerErrors",
          "documentation":"<p>A list of errors from the operation.</p>"
        }
      }
    },
    "BatchGetTriggersRequest":{
      "type":"structure",
      "required":["TriggerNames"],
      "members":{
        "TriggerNames":{
          "shape":"TriggerNameList",
          "documentation":"<p>A list of trigger names, which may be the names returned from the <code>ListTriggers</code> operation.</p>"
        }
      }
    },
    "BatchGetTriggersResponse":{
      "type":"structure",
      "members":{
        "Triggers":{
          "shape":"TriggerList",
          "documentation":"<p>A list of trigger definitions.</p>"
        },
        "TriggersNotFound":{
          "shape":"TriggerNameList",
          "documentation":"<p>A list of names of triggers not found.</p>"
        }
      }
    },
    "BatchGetWorkflowsRequest":{
      "type":"structure",
      "required":["Names"],
      "members":{
        "Names":{
          "shape":"WorkflowNames",
          "documentation":"<p>A list of workflow names, which may be the names returned from the <code>ListWorkflows</code> operation.</p>"
        },
        "IncludeGraph":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies whether to include a graph when returning the workflow resource metadata.</p>"
        }
      }
    },
    "BatchGetWorkflowsResponse":{
      "type":"structure",
      "members":{
        "Workflows":{
          "shape":"Workflows",
          "documentation":"<p>A list of workflow resource metadata.</p>"
        },
        "MissingWorkflows":{
          "shape":"WorkflowNames",
          "documentation":"<p>A list of names of workflows not found.</p>"
        }
      }
    },
    "BatchSize":{
      "type":"integer",
      "max":100,
      "min":1
    },
    "BatchStopJobRunError":{
      "type":"structure",
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the job definition that is used in the job run in question.</p>"
        },
        "JobRunId":{
          "shape":"IdString",
          "documentation":"<p>The <code>JobRunId</code> of the job run in question.</p>"
        },
        "ErrorDetail":{
          "shape":"ErrorDetail",
          "documentation":"<p>Specifies details about the error that was encountered.</p>"
        }
      },
      "documentation":"<p>Records an error that occurred when attempting to stop a specified job run.</p>"
    },
    "BatchStopJobRunErrorList":{
      "type":"list",
      "member":{"shape":"BatchStopJobRunError"}
    },
    "BatchStopJobRunJobRunIdList":{
      "type":"list",
      "member":{"shape":"IdString"},
      "max":25,
      "min":1
    },
    "BatchStopJobRunRequest":{
      "type":"structure",
      "required":[
        "JobName",
        "JobRunIds"
      ],
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the job definition for which to stop job runs.</p>"
        },
        "JobRunIds":{
          "shape":"BatchStopJobRunJobRunIdList",
          "documentation":"<p>A list of the <code>JobRunIds</code> that should be stopped for that job definition.</p>"
        }
      }
    },
    "BatchStopJobRunResponse":{
      "type":"structure",
      "members":{
        "SuccessfulSubmissions":{
          "shape":"BatchStopJobRunSuccessfulSubmissionList",
          "documentation":"<p>A list of the JobRuns that were successfully submitted for stopping.</p>"
        },
        "Errors":{
          "shape":"BatchStopJobRunErrorList",
          "documentation":"<p>A list of the errors that were encountered in trying to stop <code>JobRuns</code>, including the <code>JobRunId</code> for which each error was encountered and details about the error.</p>"
        }
      }
    },
    "BatchStopJobRunSuccessfulSubmission":{
      "type":"structure",
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the job definition used in the job run that was stopped.</p>"
        },
        "JobRunId":{
          "shape":"IdString",
          "documentation":"<p>The <code>JobRunId</code> of the job run that was stopped.</p>"
        }
      },
      "documentation":"<p>Records a successful request to stop a specified <code>JobRun</code>.</p>"
    },
    "BatchStopJobRunSuccessfulSubmissionList":{
      "type":"list",
      "member":{"shape":"BatchStopJobRunSuccessfulSubmission"}
    },
    "BatchTableOptimizer":{
      "type":"structure",
      "members":{
        "catalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The Catalog ID of the table.</p>"
        },
        "databaseName":{
          "shape":"databaseNameString",
          "documentation":"<p>The name of the database in the catalog in which the table resides.</p>"
        },
        "tableName":{
          "shape":"tableNameString",
          "documentation":"<p>The name of the table.</p>"
        },
        "tableOptimizer":{
          "shape":"TableOptimizer",
          "documentation":"<p>A <code>TableOptimizer</code> object that contains details on the configuration and last run of a table optimzer.</p>"
        }
      },
      "documentation":"<p>Contains details for one of the table optimizers returned by the <code>BatchGetTableOptimizer</code> operation.</p>"
    },
    "BatchTableOptimizers":{
      "type":"list",
      "member":{"shape":"BatchTableOptimizer"}
    },
    "BatchUpdatePartitionFailureEntry":{
      "type":"structure",
      "members":{
        "PartitionValueList":{
          "shape":"BoundedPartitionValueList",
          "documentation":"<p>A list of values defining the partitions.</p>"
        },
        "ErrorDetail":{
          "shape":"ErrorDetail",
          "documentation":"<p>The details about the batch update partition error.</p>"
        }
      },
      "documentation":"<p>Contains information about a batch update partition error.</p>"
    },
    "BatchUpdatePartitionFailureList":{
      "type":"list",
      "member":{"shape":"BatchUpdatePartitionFailureEntry"}
    },
    "BatchUpdatePartitionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "Entries"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the catalog in which the partition is to be updated. Currently, this should be the Amazon Web Services account ID.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the metadata database in which the partition is to be updated.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the metadata table in which the partition is to be updated.</p>"
        },
        "Entries":{
          "shape":"BatchUpdatePartitionRequestEntryList",
          "documentation":"<p>A list of up to 100 <code>BatchUpdatePartitionRequestEntry</code> objects to update.</p>"
        }
      }
    },
    "BatchUpdatePartitionRequestEntry":{
      "type":"structure",
      "required":[
        "PartitionValueList",
        "PartitionInput"
      ],
      "members":{
        "PartitionValueList":{
          "shape":"BoundedPartitionValueList",
          "documentation":"<p>A list of values defining the partitions.</p>"
        },
        "PartitionInput":{
          "shape":"PartitionInput",
          "documentation":"<p>The structure used to update a partition.</p>"
        }
      },
      "documentation":"<p>A structure that contains the values and structure used to update a partition.</p>"
    },
    "BatchUpdatePartitionRequestEntryList":{
      "type":"list",
      "member":{"shape":"BatchUpdatePartitionRequestEntry"},
      "max":100,
      "min":1
    },
    "BatchUpdatePartitionResponse":{
      "type":"structure",
      "members":{
        "Errors":{
          "shape":"BatchUpdatePartitionFailureList",
          "documentation":"<p>The errors encountered when trying to update the requested partitions. A list of <code>BatchUpdatePartitionFailureEntry</code> objects.</p>"
        }
      }
    },
    "BatchWindow":{
      "type":"integer",
      "box":true,
      "max":900,
      "min":1
    },
    "BinaryColumnStatisticsData":{
      "type":"structure",
      "required":[
        "MaximumLength",
        "AverageLength",
        "NumberOfNulls"
      ],
      "members":{
        "MaximumLength":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The size of the longest bit sequence in the column.</p>"
        },
        "AverageLength":{
          "shape":"NonNegativeDouble",
          "documentation":"<p>The average bit sequence length in the column.</p>"
        },
        "NumberOfNulls":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of null values in the column.</p>"
        }
      },
      "documentation":"<p>Defines column statistics supported for bit sequence data values.</p>"
    },
    "Blob":{"type":"blob"},
    "Blueprint":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The name of the blueprint.</p>"
        },
        "Description":{
          "shape":"Generic512CharString",
          "documentation":"<p>The description of the blueprint.</p>"
        },
        "CreatedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time the blueprint was registered.</p>"
        },
        "LastModifiedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time the blueprint was last modified.</p>"
        },
        "ParameterSpec":{
          "shape":"BlueprintParameterSpec",
          "documentation":"<p>A JSON string that indicates the list of parameter specifications for the blueprint.</p>"
        },
        "BlueprintLocation":{
          "shape":"GenericString",
          "documentation":"<p>Specifies the path in Amazon S3 where the blueprint is published.</p>"
        },
        "BlueprintServiceLocation":{
          "shape":"GenericString",
          "documentation":"<p>Specifies a path in Amazon S3 where the blueprint is copied when you call <code>CreateBlueprint/UpdateBlueprint</code> to register the blueprint in Glue.</p>"
        },
        "Status":{
          "shape":"BlueprintStatus",
          "documentation":"<p>The status of the blueprint registration.</p> <ul> <li> <p>Creating — The blueprint registration is in progress.</p> </li> <li> <p>Active — The blueprint has been successfully registered.</p> </li> <li> <p>Updating — An update to the blueprint registration is in progress.</p> </li> <li> <p>Failed — The blueprint registration failed.</p> </li> </ul>"
        },
        "ErrorMessage":{
          "shape":"ErrorString",
          "documentation":"<p>An error message.</p>"
        },
        "LastActiveDefinition":{
          "shape":"LastActiveDefinition",
          "documentation":"<p>When there are multiple versions of a blueprint and the latest version has some errors, this attribute indicates the last successful blueprint definition that is available with the service.</p>"
        }
      },
      "documentation":"<p>The details of a blueprint.</p>"
    },
    "BlueprintDetails":{
      "type":"structure",
      "members":{
        "BlueprintName":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The name of the blueprint.</p>"
        },
        "RunId":{
          "shape":"IdString",
          "documentation":"<p>The run ID for this blueprint.</p>"
        }
      },
      "documentation":"<p>The details of a blueprint.</p>"
    },
    "BlueprintNames":{
      "type":"list",
      "member":{"shape":"OrchestrationNameString"}
    },
    "BlueprintParameterSpec":{
      "type":"string",
      "max":131072,
      "min":1
    },
    "BlueprintParameters":{
      "type":"string",
      "max":131072,
      "min":1
    },
    "BlueprintRun":{
      "type":"structure",
      "members":{
        "BlueprintName":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The name of the blueprint.</p>"
        },
        "RunId":{
          "shape":"IdString",
          "documentation":"<p>The run ID for this blueprint run.</p>"
        },
        "WorkflowName":{
          "shape":"NameString",
          "documentation":"<p>The name of a workflow that is created as a result of a successful blueprint run. If a blueprint run has an error, there will not be a workflow created.</p>"
        },
        "State":{
          "shape":"BlueprintRunState",
          "documentation":"<p>The state of the blueprint run. Possible values are:</p> <ul> <li> <p>Running — The blueprint run is in progress.</p> </li> <li> <p>Succeeded — The blueprint run completed successfully.</p> </li> <li> <p>Failed — The blueprint run failed and rollback is complete.</p> </li> <li> <p>Rolling Back — The blueprint run failed and rollback is in progress.</p> </li> </ul>"
        },
        "StartedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time that the blueprint run started.</p>"
        },
        "CompletedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time that the blueprint run completed.</p>"
        },
        "ErrorMessage":{
          "shape":"MessageString",
          "documentation":"<p>Indicates any errors that are seen while running the blueprint.</p>"
        },
        "RollbackErrorMessage":{
          "shape":"MessageString",
          "documentation":"<p>If there are any errors while creating the entities of a workflow, we try to roll back the created entities until that point and delete them. This attribute indicates the errors seen while trying to delete the entities that are created.</p>"
        },
        "Parameters":{
          "shape":"BlueprintParameters",
          "documentation":"<p>The blueprint parameters as a string. You will have to provide a value for each key that is required from the parameter spec that is defined in the <code>Blueprint$ParameterSpec</code>.</p>"
        },
        "RoleArn":{
          "shape":"OrchestrationIAMRoleArn",
          "documentation":"<p>The role ARN. This role will be assumed by the Glue service and will be used to create the workflow and other entities of a workflow.</p>"
        }
      },
      "documentation":"<p>The details of a blueprint run.</p>"
    },
    "BlueprintRunState":{
      "type":"string",
      "enum":[
        "RUNNING",
        "SUCCEEDED",
        "FAILED",
        "ROLLING_BACK"
      ]
    },
    "BlueprintRuns":{
      "type":"list",
      "member":{"shape":"BlueprintRun"}
    },
    "BlueprintStatus":{
      "type":"string",
      "enum":[
        "CREATING",
        "ACTIVE",
        "UPDATING",
        "FAILED"
      ]
    },
    "Blueprints":{
      "type":"list",
      "member":{"shape":"Blueprint"}
    },
    "Boolean":{"type":"boolean"},
    "BooleanColumnStatisticsData":{
      "type":"structure",
      "required":[
        "NumberOfTrues",
        "NumberOfFalses",
        "NumberOfNulls"
      ],
      "members":{
        "NumberOfTrues":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of true values in the column.</p>"
        },
        "NumberOfFalses":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of false values in the column.</p>"
        },
        "NumberOfNulls":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of null values in the column.</p>"
        }
      },
      "documentation":"<p>Defines column statistics supported for Boolean data columns.</p>"
    },
    "BooleanNullable":{"type":"boolean"},
    "BooleanValue":{"type":"boolean"},
    "BoundedPartitionValueList":{
      "type":"list",
      "member":{"shape":"ValueString"},
      "max":100,
      "min":0
    },
    "BoxedBoolean":{
      "type":"boolean",
      "box":true
    },
    "BoxedDoubleFraction":{
      "type":"double",
      "box":true,
      "max":1,
      "min":0
    },
    "BoxedLong":{
      "type":"long",
      "box":true
    },
    "BoxedNonNegativeInt":{
      "type":"integer",
      "box":true,
      "min":0
    },
    "BoxedNonNegativeLong":{
      "type":"long",
      "box":true,
      "min":0
    },
    "BoxedPositiveInt":{
      "type":"integer",
      "box":true,
      "min":0
    },
    "CancelDataQualityRuleRecommendationRunRequest":{
      "type":"structure",
      "required":["RunId"],
      "members":{
        "RunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run identifier associated with this run.</p>"
        }
      }
    },
    "CancelDataQualityRuleRecommendationRunResponse":{
      "type":"structure",
      "members":{
      }
    },
    "CancelDataQualityRulesetEvaluationRunRequest":{
      "type":"structure",
      "required":["RunId"],
      "members":{
        "RunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run identifier associated with this run.</p>"
        }
      }
    },
    "CancelDataQualityRulesetEvaluationRunResponse":{
      "type":"structure",
      "members":{
      }
    },
    "CancelMLTaskRunRequest":{
      "type":"structure",
      "required":[
        "TransformId",
        "TaskRunId"
      ],
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the machine learning transform.</p>"
        },
        "TaskRunId":{
          "shape":"HashString",
          "documentation":"<p>A unique identifier for the task run.</p>"
        }
      }
    },
    "CancelMLTaskRunResponse":{
      "type":"structure",
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the machine learning transform.</p>"
        },
        "TaskRunId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier for the task run.</p>"
        },
        "Status":{
          "shape":"TaskStatusType",
          "documentation":"<p>The status for this run.</p>"
        }
      }
    },
    "CancelStatementRequest":{
      "type":"structure",
      "required":[
        "SessionId",
        "Id"
      ],
      "members":{
        "SessionId":{
          "shape":"NameString",
          "documentation":"<p>The Session ID of the statement to be cancelled.</p>"
        },
        "Id":{
          "shape":"IntegerValue",
          "documentation":"<p>The ID of the statement to be cancelled.</p>"
        },
        "RequestOrigin":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The origin of the request to cancel the statement.</p>"
        }
      }
    },
    "CancelStatementResponse":{
      "type":"structure",
      "members":{
      }
    },
    "CatalogDeltaSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the Delta Lake data source.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to read from.</p>"
        },
        "AdditionalDeltaOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Specifies additional connection options.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the Delta Lake source.</p>"
        }
      },
      "documentation":"<p>Specifies a Delta Lake data source that is registered in the Glue Data Catalog.</p>"
    },
    "CatalogEncryptionMode":{
      "type":"string",
      "enum":[
        "DISABLED",
        "SSE-KMS",
        "SSE-KMS-WITH-SERVICE-ROLE"
      ]
    },
    "CatalogEntries":{
      "type":"list",
      "member":{"shape":"CatalogEntry"}
    },
    "CatalogEntry":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName"
      ],
      "members":{
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The database in which the table metadata resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table in question.</p>"
        }
      },
      "documentation":"<p>Specifies a table definition in the Glue Data Catalog.</p>"
    },
    "CatalogGetterPageSize":{
      "type":"integer",
      "box":true,
      "max":100,
      "min":1
    },
    "CatalogHudiSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the Hudi data source.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to read from.</p>"
        },
        "AdditionalHudiOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Specifies additional connection options.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the Hudi source.</p>"
        }
      },
      "documentation":"<p>Specifies a Hudi data source that is registered in the Glue Data Catalog.</p>"
    },
    "CatalogIdString":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "CatalogImportStatus":{
      "type":"structure",
      "members":{
        "ImportCompleted":{
          "shape":"Boolean",
          "documentation":"<p> <code>True</code> if the migration has completed, or <code>False</code> otherwise.</p>"
        },
        "ImportTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time that the migration was started.</p>"
        },
        "ImportedBy":{
          "shape":"NameString",
          "documentation":"<p>The name of the person who initiated the migration.</p>"
        }
      },
      "documentation":"<p>A structure containing migration status information.</p>"
    },
    "CatalogKafkaSource":{
      "type":"structure",
      "required":[
        "Name",
        "Table",
        "Database"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data store.</p>"
        },
        "WindowSize":{
          "shape":"BoxedPositiveInt",
          "documentation":"<p>The amount of time to spend processing each micro batch.</p>",
          "box":true
        },
        "DetectSchema":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Whether to automatically determine the schema from the incoming data.</p>",
          "box":true
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to read from.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to read from.</p>"
        },
        "StreamingOptions":{
          "shape":"KafkaStreamingSourceOptions",
          "documentation":"<p>Specifies the streaming options.</p>"
        },
        "DataPreviewOptions":{
          "shape":"StreamingDataPreviewOptions",
          "documentation":"<p>Specifies options related to data preview for viewing a sample of your data.</p>"
        }
      },
      "documentation":"<p>Specifies an Apache Kafka data store in the Data Catalog.</p>"
    },
    "CatalogKinesisSource":{
      "type":"structure",
      "required":[
        "Name",
        "Table",
        "Database"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data source.</p>"
        },
        "WindowSize":{
          "shape":"BoxedPositiveInt",
          "documentation":"<p>The amount of time to spend processing each micro batch.</p>"
        },
        "DetectSchema":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Whether to automatically determine the schema from the incoming data.</p>",
          "box":true
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to read from.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to read from.</p>"
        },
        "StreamingOptions":{
          "shape":"KinesisStreamingSourceOptions",
          "documentation":"<p>Additional options for the Kinesis streaming data source.</p>"
        },
        "DataPreviewOptions":{
          "shape":"StreamingDataPreviewOptions",
          "documentation":"<p>Additional options for data preview.</p>"
        }
      },
      "documentation":"<p>Specifies a Kinesis data source in the Glue Data Catalog.</p>"
    },
    "CatalogSchemaChangePolicy":{
      "type":"structure",
      "members":{
        "EnableUpdateCatalog":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Whether to use the specified update behavior when the crawler finds a changed schema.</p>"
        },
        "UpdateBehavior":{
          "shape":"UpdateCatalogBehavior",
          "documentation":"<p>The update behavior when the crawler finds a changed schema.</p>"
        }
      },
      "documentation":"<p>A policy that specifies update behavior for the crawler.</p>"
    },
    "CatalogSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data store.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to read from.</p>"
        }
      },
      "documentation":"<p>Specifies a data store in the Glue Data Catalog.</p>"
    },
    "CatalogTablesList":{
      "type":"list",
      "member":{"shape":"NameString"},
      "min":1
    },
    "CatalogTarget":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "Tables"
      ],
      "members":{
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the database to be synchronized.</p>"
        },
        "Tables":{
          "shape":"CatalogTablesList",
          "documentation":"<p>A list of the tables to be synchronized.</p>"
        },
        "ConnectionName":{
          "shape":"ConnectionName",
          "documentation":"<p>The name of the connection for an Amazon S3-backed Data Catalog table to be a target of the crawl when using a <code>Catalog</code> connection type paired with a <code>NETWORK</code> Connection type.</p>"
        },
        "EventQueueArn":{
          "shape":"EventQueueArn",
          "documentation":"<p>A valid Amazon SQS ARN. For example, <code>arn:aws:sqs:region:account:sqs</code>.</p>"
        },
        "DlqEventQueueArn":{
          "shape":"EventQueueArn",
          "documentation":"<p>A valid Amazon dead-letter SQS ARN. For example, <code>arn:aws:sqs:region:account:deadLetterQueue</code>.</p>"
        }
      },
      "documentation":"<p>Specifies an Glue Data Catalog target.</p>"
    },
    "CatalogTargetList":{
      "type":"list",
      "member":{"shape":"CatalogTarget"}
    },
    "CheckSchemaVersionValidityInput":{
      "type":"structure",
      "required":[
        "DataFormat",
        "SchemaDefinition"
      ],
      "members":{
        "DataFormat":{
          "shape":"DataFormat",
          "documentation":"<p>The data format of the schema definition. Currently <code>AVRO</code>, <code>JSON</code> and <code>PROTOBUF</code> are supported.</p>"
        },
        "SchemaDefinition":{
          "shape":"SchemaDefinitionString",
          "documentation":"<p>The definition of the schema that has to be validated.</p>"
        }
      }
    },
    "CheckSchemaVersionValidityResponse":{
      "type":"structure",
      "members":{
        "Valid":{
          "shape":"IsVersionValid",
          "documentation":"<p>Return true, if the schema is valid and false otherwise.</p>"
        },
        "Error":{
          "shape":"SchemaValidationError",
          "documentation":"<p>A validation failure error message.</p>"
        }
      }
    },
    "Classification":{"type":"string"},
    "Classifier":{
      "type":"structure",
      "members":{
        "GrokClassifier":{
          "shape":"GrokClassifier",
          "documentation":"<p>A classifier that uses <code>grok</code>.</p>"
        },
        "XMLClassifier":{
          "shape":"XMLClassifier",
          "documentation":"<p>A classifier for XML content.</p>"
        },
        "JsonClassifier":{
          "shape":"JsonClassifier",
          "documentation":"<p>A classifier for JSON content.</p>"
        },
        "CsvClassifier":{
          "shape":"CsvClassifier",
          "documentation":"<p>A classifier for comma-separated values (CSV).</p>"
        }
      },
      "documentation":"<p>Classifiers are triggered during a crawl task. A classifier checks whether a given file is in a format it can handle. If it is, the classifier creates a schema in the form of a <code>StructType</code> object that matches that data format.</p> <p>You can use the standard classifiers that Glue provides, or you can write your own classifiers to best categorize your data sources and specify the appropriate schemas to use for them. A classifier can be a <code>grok</code> classifier, an <code>XML</code> classifier, a <code>JSON</code> classifier, or a custom <code>CSV</code> classifier, as specified in one of the fields in the <code>Classifier</code> object.</p>"
    },
    "ClassifierList":{
      "type":"list",
      "member":{"shape":"Classifier"}
    },
    "ClassifierNameList":{
      "type":"list",
      "member":{"shape":"NameString"}
    },
    "CloudWatchEncryption":{
      "type":"structure",
      "members":{
        "CloudWatchEncryptionMode":{
          "shape":"CloudWatchEncryptionMode",
          "documentation":"<p>The encryption mode to use for CloudWatch data.</p>"
        },
        "KmsKeyArn":{
          "shape":"KmsKeyArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the KMS key to be used to encrypt the data.</p>"
        }
      },
      "documentation":"<p>Specifies how Amazon CloudWatch data should be encrypted.</p>"
    },
    "CloudWatchEncryptionMode":{
      "type":"string",
      "enum":[
        "DISABLED",
        "SSE-KMS"
      ]
    },
    "CodeGenArgName":{"type":"string"},
    "CodeGenArgValue":{"type":"string"},
    "CodeGenConfigurationNode":{
      "type":"structure",
      "members":{
        "AthenaConnectorSource":{
          "shape":"AthenaConnectorSource",
          "documentation":"<p>Specifies a connector to an Amazon Athena data source.</p>"
        },
        "JDBCConnectorSource":{
          "shape":"JDBCConnectorSource",
          "documentation":"<p>Specifies a connector to a JDBC data source.</p>"
        },
        "SparkConnectorSource":{
          "shape":"SparkConnectorSource",
          "documentation":"<p>Specifies a connector to an Apache Spark data source.</p>"
        },
        "CatalogSource":{
          "shape":"CatalogSource",
          "documentation":"<p>Specifies a data store in the Glue Data Catalog.</p>"
        },
        "RedshiftSource":{
          "shape":"RedshiftSource",
          "documentation":"<p>Specifies an Amazon Redshift data store.</p>"
        },
        "S3CatalogSource":{
          "shape":"S3CatalogSource",
          "documentation":"<p>Specifies an Amazon S3 data store in the Glue Data Catalog.</p>"
        },
        "S3CsvSource":{
          "shape":"S3CsvSource",
          "documentation":"<p>Specifies a command-separated value (CSV) data store stored in Amazon S3.</p>"
        },
        "S3JsonSource":{
          "shape":"S3JsonSource",
          "documentation":"<p>Specifies a JSON data store stored in Amazon S3.</p>"
        },
        "S3ParquetSource":{
          "shape":"S3ParquetSource",
          "documentation":"<p>Specifies an Apache Parquet data store stored in Amazon S3.</p>"
        },
        "RelationalCatalogSource":{
          "shape":"RelationalCatalogSource",
          "documentation":"<p>Specifies a relational catalog data store in the Glue Data Catalog.</p>"
        },
        "DynamoDBCatalogSource":{
          "shape":"DynamoDBCatalogSource",
          "documentation":"<p>Specifies a DynamoDBC Catalog data store in the Glue Data Catalog.</p>"
        },
        "JDBCConnectorTarget":{
          "shape":"JDBCConnectorTarget",
          "documentation":"<p>Specifies a data target that writes to Amazon S3 in Apache Parquet columnar storage.</p>"
        },
        "SparkConnectorTarget":{
          "shape":"SparkConnectorTarget",
          "documentation":"<p>Specifies a target that uses an Apache Spark connector.</p>"
        },
        "CatalogTarget":{
          "shape":"BasicCatalogTarget",
          "documentation":"<p>Specifies a target that uses a Glue Data Catalog table.</p>"
        },
        "RedshiftTarget":{
          "shape":"RedshiftTarget",
          "documentation":"<p>Specifies a target that uses Amazon Redshift.</p>"
        },
        "S3CatalogTarget":{
          "shape":"S3CatalogTarget",
          "documentation":"<p>Specifies a data target that writes to Amazon S3 using the Glue Data Catalog.</p>"
        },
        "S3GlueParquetTarget":{
          "shape":"S3GlueParquetTarget",
          "documentation":"<p>Specifies a data target that writes to Amazon S3 in Apache Parquet columnar storage.</p>"
        },
        "S3DirectTarget":{
          "shape":"S3DirectTarget",
          "documentation":"<p>Specifies a data target that writes to Amazon S3.</p>"
        },
        "ApplyMapping":{
          "shape":"ApplyMapping",
          "documentation":"<p>Specifies a transform that maps data property keys in the data source to data property keys in the data target. You can rename keys, modify the data types for keys, and choose which keys to drop from the dataset.</p>"
        },
        "SelectFields":{
          "shape":"SelectFields",
          "documentation":"<p>Specifies a transform that chooses the data property keys that you want to keep.</p>"
        },
        "DropFields":{
          "shape":"DropFields",
          "documentation":"<p>Specifies a transform that chooses the data property keys that you want to drop.</p>"
        },
        "RenameField":{
          "shape":"RenameField",
          "documentation":"<p>Specifies a transform that renames a single data property key.</p>"
        },
        "Spigot":{
          "shape":"Spigot",
          "documentation":"<p>Specifies a transform that writes samples of the data to an Amazon S3 bucket.</p>"
        },
        "Join":{
          "shape":"Join",
          "documentation":"<p>Specifies a transform that joins two datasets into one dataset using a comparison phrase on the specified data property keys. You can use inner, outer, left, right, left semi, and left anti joins.</p>"
        },
        "SplitFields":{
          "shape":"SplitFields",
          "documentation":"<p>Specifies a transform that splits data property keys into two <code>DynamicFrames</code>. The output is a collection of <code>DynamicFrames</code>: one with selected data property keys, and one with the remaining data property keys.</p>"
        },
        "SelectFromCollection":{
          "shape":"SelectFromCollection",
          "documentation":"<p>Specifies a transform that chooses one <code>DynamicFrame</code> from a collection of <code>DynamicFrames</code>. The output is the selected <code>DynamicFrame</code> </p>"
        },
        "FillMissingValues":{
          "shape":"FillMissingValues",
          "documentation":"<p>Specifies a transform that locates records in the dataset that have missing values and adds a new field with a value determined by imputation. The input data set is used to train the machine learning model that determines what the missing value should be.</p>"
        },
        "Filter":{
          "shape":"Filter",
          "documentation":"<p>Specifies a transform that splits a dataset into two, based on a filter condition.</p>"
        },
        "CustomCode":{
          "shape":"CustomCode",
          "documentation":"<p>Specifies a transform that uses custom code you provide to perform the data transformation. The output is a collection of DynamicFrames.</p>"
        },
        "SparkSQL":{
          "shape":"SparkSQL",
          "documentation":"<p>Specifies a transform where you enter a SQL query using Spark SQL syntax to transform the data. The output is a single <code>DynamicFrame</code>.</p>"
        },
        "DirectKinesisSource":{
          "shape":"DirectKinesisSource",
          "documentation":"<p>Specifies a direct Amazon Kinesis data source.</p>"
        },
        "DirectKafkaSource":{
          "shape":"DirectKafkaSource",
          "documentation":"<p>Specifies an Apache Kafka data store.</p>"
        },
        "CatalogKinesisSource":{
          "shape":"CatalogKinesisSource",
          "documentation":"<p>Specifies a Kinesis data source in the Glue Data Catalog.</p>"
        },
        "CatalogKafkaSource":{
          "shape":"CatalogKafkaSource",
          "documentation":"<p>Specifies an Apache Kafka data store in the Data Catalog.</p>"
        },
        "DropNullFields":{
          "shape":"DropNullFields",
          "documentation":"<p>Specifies a transform that removes columns from the dataset if all values in the column are 'null'. By default, Glue Studio will recognize null objects, but some values such as empty strings, strings that are \"null\", -1 integers or other placeholders such as zeros, are not automatically recognized as nulls.</p>"
        },
        "Merge":{
          "shape":"Merge",
          "documentation":"<p>Specifies a transform that merges a <code>DynamicFrame</code> with a staging <code>DynamicFrame</code> based on the specified primary keys to identify records. Duplicate records (records with the same primary keys) are not de-duplicated. </p>"
        },
        "Union":{
          "shape":"Union",
          "documentation":"<p>Specifies a transform that combines the rows from two or more datasets into a single result.</p>"
        },
        "PIIDetection":{
          "shape":"PIIDetection",
          "documentation":"<p>Specifies a transform that identifies, removes or masks PII data.</p>"
        },
        "Aggregate":{
          "shape":"Aggregate",
          "documentation":"<p>Specifies a transform that groups rows by chosen fields and computes the aggregated value by specified function.</p>"
        },
        "DropDuplicates":{
          "shape":"DropDuplicates",
          "documentation":"<p>Specifies a transform that removes rows of repeating data from a data set.</p>"
        },
        "GovernedCatalogTarget":{
          "shape":"GovernedCatalogTarget",
          "documentation":"<p>Specifies a data target that writes to a goverened catalog.</p>"
        },
        "GovernedCatalogSource":{
          "shape":"GovernedCatalogSource",
          "documentation":"<p>Specifies a data source in a goverened Data Catalog.</p>"
        },
        "MicrosoftSQLServerCatalogSource":{
          "shape":"MicrosoftSQLServerCatalogSource",
          "documentation":"<p>Specifies a Microsoft SQL server data source in the Glue Data Catalog.</p>"
        },
        "MySQLCatalogSource":{
          "shape":"MySQLCatalogSource",
          "documentation":"<p>Specifies a MySQL data source in the Glue Data Catalog.</p>"
        },
        "OracleSQLCatalogSource":{
          "shape":"OracleSQLCatalogSource",
          "documentation":"<p>Specifies an Oracle data source in the Glue Data Catalog.</p>"
        },
        "PostgreSQLCatalogSource":{
          "shape":"PostgreSQLCatalogSource",
          "documentation":"<p>Specifies a PostgresSQL data source in the Glue Data Catalog.</p>"
        },
        "MicrosoftSQLServerCatalogTarget":{
          "shape":"MicrosoftSQLServerCatalogTarget",
          "documentation":"<p>Specifies a target that uses Microsoft SQL.</p>"
        },
        "MySQLCatalogTarget":{
          "shape":"MySQLCatalogTarget",
          "documentation":"<p>Specifies a target that uses MySQL.</p>"
        },
        "OracleSQLCatalogTarget":{
          "shape":"OracleSQLCatalogTarget",
          "documentation":"<p>Specifies a target that uses Oracle SQL.</p>"
        },
        "PostgreSQLCatalogTarget":{
          "shape":"PostgreSQLCatalogTarget",
          "documentation":"<p>Specifies a target that uses Postgres SQL.</p>"
        },
        "DynamicTransform":{
          "shape":"DynamicTransform",
          "documentation":"<p>Specifies a custom visual transform created by a user.</p>"
        },
        "EvaluateDataQuality":{
          "shape":"EvaluateDataQuality",
          "documentation":"<p>Specifies your data quality evaluation criteria.</p>"
        },
        "S3CatalogHudiSource":{
          "shape":"S3CatalogHudiSource",
          "documentation":"<p>Specifies a Hudi data source that is registered in the Glue Data Catalog. The data source must be stored in Amazon S3.</p>"
        },
        "CatalogHudiSource":{
          "shape":"CatalogHudiSource",
          "documentation":"<p>Specifies a Hudi data source that is registered in the Glue Data Catalog.</p>"
        },
        "S3HudiSource":{
          "shape":"S3HudiSource",
          "documentation":"<p>Specifies a Hudi data source stored in Amazon S3.</p>"
        },
        "S3HudiCatalogTarget":{
          "shape":"S3HudiCatalogTarget",
          "documentation":"<p>Specifies a target that writes to a Hudi data source in the Glue Data Catalog.</p>"
        },
        "S3HudiDirectTarget":{
          "shape":"S3HudiDirectTarget",
          "documentation":"<p>Specifies a target that writes to a Hudi data source in Amazon S3.</p>"
        },
        "DirectJDBCSource":{"shape":"DirectJDBCSource"},
        "S3CatalogDeltaSource":{
          "shape":"S3CatalogDeltaSource",
          "documentation":"<p>Specifies a Delta Lake data source that is registered in the Glue Data Catalog. The data source must be stored in Amazon S3.</p>"
        },
        "CatalogDeltaSource":{
          "shape":"CatalogDeltaSource",
          "documentation":"<p>Specifies a Delta Lake data source that is registered in the Glue Data Catalog.</p>"
        },
        "S3DeltaSource":{
          "shape":"S3DeltaSource",
          "documentation":"<p>Specifies a Delta Lake data source stored in Amazon S3.</p>"
        },
        "S3DeltaCatalogTarget":{
          "shape":"S3DeltaCatalogTarget",
          "documentation":"<p>Specifies a target that writes to a Delta Lake data source in the Glue Data Catalog.</p>"
        },
        "S3DeltaDirectTarget":{
          "shape":"S3DeltaDirectTarget",
          "documentation":"<p>Specifies a target that writes to a Delta Lake data source in Amazon S3.</p>"
        },
        "AmazonRedshiftSource":{
          "shape":"AmazonRedshiftSource",
          "documentation":"<p>Specifies a target that writes to a data source in Amazon Redshift.</p>"
        },
        "AmazonRedshiftTarget":{
          "shape":"AmazonRedshiftTarget",
          "documentation":"<p>Specifies a target that writes to a data target in Amazon Redshift.</p>"
        },
        "EvaluateDataQualityMultiFrame":{
          "shape":"EvaluateDataQualityMultiFrame",
          "documentation":"<p>Specifies your data quality evaluation criteria. Allows multiple input data and returns a collection of Dynamic Frames.</p>"
        },
        "Recipe":{
          "shape":"Recipe",
          "documentation":"<p>Specifies a Glue DataBrew recipe node.</p>"
        },
        "SnowflakeSource":{
          "shape":"SnowflakeSource",
          "documentation":"<p>Specifies a Snowflake data source.</p>"
        },
        "SnowflakeTarget":{
          "shape":"SnowflakeTarget",
          "documentation":"<p>Specifies a target that writes to a Snowflake data source.</p>"
        },
        "ConnectorDataSource":{
          "shape":"ConnectorDataSource",
          "documentation":"<p>Specifies a source generated with standard connection options.</p>"
        },
        "ConnectorDataTarget":{
          "shape":"ConnectorDataTarget",
          "documentation":"<p>Specifies a target generated with standard connection options.</p>"
        }
      },
      "documentation":"<p> <code>CodeGenConfigurationNode</code> enumerates all valid Node types. One and only one of its member variables can be populated.</p>"
    },
    "CodeGenConfigurationNodes":{
      "type":"map",
      "key":{"shape":"NodeId"},
      "value":{"shape":"CodeGenConfigurationNode"},
      "sensitive":true
    },
    "CodeGenEdge":{
      "type":"structure",
      "required":[
        "Source",
        "Target"
      ],
      "members":{
        "Source":{
          "shape":"CodeGenIdentifier",
          "documentation":"<p>The ID of the node at which the edge starts.</p>"
        },
        "Target":{
          "shape":"CodeGenIdentifier",
          "documentation":"<p>The ID of the node at which the edge ends.</p>"
        },
        "TargetParameter":{
          "shape":"CodeGenArgName",
          "documentation":"<p>The target of the edge.</p>"
        }
      },
      "documentation":"<p>Represents a directional edge in a directed acyclic graph (DAG).</p>"
    },
    "CodeGenIdentifier":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"[A-Za-z_][A-Za-z0-9_]*"
    },
    "CodeGenNode":{
      "type":"structure",
      "required":[
        "Id",
        "NodeType",
        "Args"
      ],
      "members":{
        "Id":{
          "shape":"CodeGenIdentifier",
          "documentation":"<p>A node identifier that is unique within the node's graph.</p>"
        },
        "NodeType":{
          "shape":"CodeGenNodeType",
          "documentation":"<p>The type of node that this is.</p>"
        },
        "Args":{
          "shape":"CodeGenNodeArgs",
          "documentation":"<p>Properties of the node, in the form of name-value pairs.</p>"
        },
        "LineNumber":{
          "shape":"Integer",
          "documentation":"<p>The line number of the node.</p>"
        }
      },
      "documentation":"<p>Represents a node in a directed acyclic graph (DAG)</p>"
    },
    "CodeGenNodeArg":{
      "type":"structure",
      "required":[
        "Name",
        "Value"
      ],
      "members":{
        "Name":{
          "shape":"CodeGenArgName",
          "documentation":"<p>The name of the argument or property.</p>"
        },
        "Value":{
          "shape":"CodeGenArgValue",
          "documentation":"<p>The value of the argument or property.</p>"
        },
        "Param":{
          "shape":"Boolean",
          "documentation":"<p>True if the value is used as a parameter.</p>"
        }
      },
      "documentation":"<p>An argument or property of a node.</p>"
    },
    "CodeGenNodeArgs":{
      "type":"list",
      "member":{"shape":"CodeGenNodeArg"},
      "max":50,
      "min":0
    },
    "CodeGenNodeType":{"type":"string"},
    "Column":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the <code>Column</code>.</p>"
        },
        "Type":{
          "shape":"ColumnTypeString",
          "documentation":"<p>The data type of the <code>Column</code>.</p>"
        },
        "Comment":{
          "shape":"CommentString",
          "documentation":"<p>A free-form text comment.</p>"
        },
        "Parameters":{
          "shape":"ParametersMap",
          "documentation":"<p>These key-value pairs define properties associated with the column.</p>"
        }
      },
      "documentation":"<p>A column in a <code>Table</code>.</p>"
    },
    "ColumnError":{
      "type":"structure",
      "members":{
        "ColumnName":{
          "shape":"NameString",
          "documentation":"<p>The name of the column that failed.</p>"
        },
        "Error":{
          "shape":"ErrorDetail",
          "documentation":"<p>An error message with the reason for the failure of an operation.</p>"
        }
      },
      "documentation":"<p>Encapsulates a column name that failed and the reason for failure.</p>"
    },
    "ColumnErrors":{
      "type":"list",
      "member":{"shape":"ColumnError"}
    },
    "ColumnImportance":{
      "type":"structure",
      "members":{
        "ColumnName":{
          "shape":"NameString",
          "documentation":"<p>The name of a column.</p>"
        },
        "Importance":{
          "shape":"GenericBoundedDouble",
          "documentation":"<p>The column importance score for the column, as a decimal.</p>"
        }
      },
      "documentation":"<p>A structure containing the column name and column importance score for a column. </p> <p>Column importance helps you understand how columns contribute to your model, by identifying which columns in your records are more important than others.</p>"
    },
    "ColumnImportanceList":{
      "type":"list",
      "member":{"shape":"ColumnImportance"},
      "max":100,
      "min":0
    },
    "ColumnList":{
      "type":"list",
      "member":{"shape":"Column"}
    },
    "ColumnNameList":{
      "type":"list",
      "member":{"shape":"NameString"}
    },
    "ColumnNameString":{
      "type":"string",
      "max":1024,
      "min":1,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "ColumnRowFilter":{
      "type":"structure",
      "members":{
        "ColumnName":{
          "shape":"NameString",
          "documentation":"<p>A string containing the name of the column.</p>"
        },
        "RowFilterExpression":{
          "shape":"PredicateString",
          "documentation":"<p>A string containing the row-level filter expression.</p>"
        }
      },
      "documentation":"<p>A filter that uses both column-level and row-level filtering.</p>"
    },
    "ColumnRowFilterList":{
      "type":"list",
      "member":{"shape":"ColumnRowFilter"}
    },
    "ColumnStatistics":{
      "type":"structure",
      "required":[
        "ColumnName",
        "ColumnType",
        "AnalyzedTime",
        "StatisticsData"
      ],
      "members":{
        "ColumnName":{
          "shape":"NameString",
          "documentation":"<p>Name of column which statistics belong to.</p>"
        },
        "ColumnType":{
          "shape":"TypeString",
          "documentation":"<p>The data type of the column.</p>"
        },
        "AnalyzedTime":{
          "shape":"Timestamp",
          "documentation":"<p>The timestamp of when column statistics were generated.</p>"
        },
        "StatisticsData":{
          "shape":"ColumnStatisticsData",
          "documentation":"<p>A <code>ColumnStatisticData</code> object that contains the statistics data values.</p>"
        }
      },
      "documentation":"<p>Represents the generated column-level statistics for a table or partition.</p>"
    },
    "ColumnStatisticsData":{
      "type":"structure",
      "required":["Type"],
      "members":{
        "Type":{
          "shape":"ColumnStatisticsType",
          "documentation":"<p>The type of column statistics data.</p>"
        },
        "BooleanColumnStatisticsData":{
          "shape":"BooleanColumnStatisticsData",
          "documentation":"<p>Boolean column statistics data.</p>"
        },
        "DateColumnStatisticsData":{
          "shape":"DateColumnStatisticsData",
          "documentation":"<p>Date column statistics data.</p>"
        },
        "DecimalColumnStatisticsData":{
          "shape":"DecimalColumnStatisticsData",
          "documentation":"<p> Decimal column statistics data. UnscaledValues within are Base64-encoded binary objects storing big-endian, two's complement representations of the decimal's unscaled value. </p>"
        },
        "DoubleColumnStatisticsData":{
          "shape":"DoubleColumnStatisticsData",
          "documentation":"<p>Double column statistics data.</p>"
        },
        "LongColumnStatisticsData":{
          "shape":"LongColumnStatisticsData",
          "documentation":"<p>Long column statistics data.</p>"
        },
        "StringColumnStatisticsData":{
          "shape":"StringColumnStatisticsData",
          "documentation":"<p>String column statistics data.</p>"
        },
        "BinaryColumnStatisticsData":{
          "shape":"BinaryColumnStatisticsData",
          "documentation":"<p>Binary column statistics data.</p>"
        }
      },
      "documentation":"<p>Contains the individual types of column statistics data. Only one data object should be set and indicated by the <code>Type</code> attribute.</p>"
    },
    "ColumnStatisticsError":{
      "type":"structure",
      "members":{
        "ColumnStatistics":{
          "shape":"ColumnStatistics",
          "documentation":"<p>The <code>ColumnStatistics</code> of the column.</p>"
        },
        "Error":{
          "shape":"ErrorDetail",
          "documentation":"<p>An error message with the reason for the failure of an operation.</p>"
        }
      },
      "documentation":"<p>Encapsulates a <code>ColumnStatistics</code> object that failed and the reason for failure.</p>"
    },
    "ColumnStatisticsErrors":{
      "type":"list",
      "member":{"shape":"ColumnStatisticsError"}
    },
    "ColumnStatisticsList":{
      "type":"list",
      "member":{"shape":"ColumnStatistics"}
    },
    "ColumnStatisticsState":{
      "type":"string",
      "enum":[
        "STARTING",
        "RUNNING",
        "SUCCEEDED",
        "FAILED",
        "STOPPED"
      ]
    },
    "ColumnStatisticsTaskNotRunningException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>An exception thrown when you try to stop a task run when there is no task running.</p>",
      "exception":true
    },
    "ColumnStatisticsTaskRun":{
      "type":"structure",
      "members":{
        "CustomerId":{
          "shape":"AccountId",
          "documentation":"<p>The Amazon Web Services account ID.</p>"
        },
        "ColumnStatisticsTaskRunId":{
          "shape":"HashString",
          "documentation":"<p>The identifier for the particular column statistics task run.</p>"
        },
        "DatabaseName":{
          "shape":"DatabaseName",
          "documentation":"<p>The database where the table resides.</p>"
        },
        "TableName":{
          "shape":"TableName",
          "documentation":"<p>The name of the table for which column statistics is generated.</p>"
        },
        "ColumnNameList":{
          "shape":"ColumnNameList",
          "documentation":"<p>A list of the column names. If none is supplied, all column names for the table will be used by default.</p>"
        },
        "CatalogID":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the table resides. If none is supplied, the Amazon Web Services account ID is used by default.</p>"
        },
        "Role":{
          "shape":"Role",
          "documentation":"<p>The IAM role that the service assumes to generate statistics.</p>"
        },
        "SampleSize":{
          "shape":"SampleSizePercentage",
          "documentation":"<p>The percentage of rows used to generate statistics. If none is supplied, the entire table will be used to generate stats.</p>"
        },
        "SecurityConfiguration":{
          "shape":"CrawlerSecurityConfiguration",
          "documentation":"<p>Name of the security configuration that is used to encrypt CloudWatch logs for the column stats task run.</p>"
        },
        "NumberOfWorkers":{
          "shape":"PositiveInteger",
          "documentation":"<p>The number of workers used to generate column statistics. The job is preconfigured to autoscale up to 25 instances.</p>"
        },
        "WorkerType":{
          "shape":"NameString",
          "documentation":"<p>The type of workers being used for generating stats. The default is <code>g.1x</code>.</p>"
        },
        "Status":{
          "shape":"ColumnStatisticsState",
          "documentation":"<p>The status of the task run.</p>"
        },
        "CreationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time that this task was created.</p>"
        },
        "LastUpdated":{
          "shape":"Timestamp",
          "documentation":"<p>The last point in time when this task was modified.</p>"
        },
        "StartTime":{
          "shape":"Timestamp",
          "documentation":"<p>The start time of the task.</p>"
        },
        "EndTime":{
          "shape":"Timestamp",
          "documentation":"<p>The end time of the task.</p>"
        },
        "ErrorMessage":{
          "shape":"DescriptionString",
          "documentation":"<p>The error message for the job.</p>"
        },
        "DPUSeconds":{
          "shape":"NonNegativeDouble",
          "documentation":"<p>The calculated DPU usage in seconds for all autoscaled workers.</p>"
        }
      },
      "documentation":"<p>The object that shows the details of the column stats run.</p>"
    },
    "ColumnStatisticsTaskRunIdList":{
      "type":"list",
      "member":{"shape":"HashString"},
      "max":100,
      "min":0
    },
    "ColumnStatisticsTaskRunningException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>An exception thrown when you try to start another job while running a column stats generation job.</p>",
      "exception":true
    },
    "ColumnStatisticsTaskRunsList":{
      "type":"list",
      "member":{"shape":"ColumnStatisticsTaskRun"}
    },
    "ColumnStatisticsTaskStoppingException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>An exception thrown when you try to stop a task run.</p>",
      "exception":true
    },
    "ColumnStatisticsType":{
      "type":"string",
      "enum":[
        "BOOLEAN",
        "DATE",
        "DECIMAL",
        "DOUBLE",
        "LONG",
        "STRING",
        "BINARY"
      ]
    },
    "ColumnTypeString":{
      "type":"string",
      "max":131072,
      "min":0,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "ColumnValueStringList":{
      "type":"list",
      "member":{"shape":"ColumnValuesString"}
    },
    "ColumnValuesString":{"type":"string"},
    "CommentString":{
      "type":"string",
      "max":255,
      "min":0,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "CommitIdString":{
      "type":"string",
      "max":40,
      "min":1,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "Comparator":{
      "type":"string",
      "enum":[
        "EQUALS",
        "GREATER_THAN",
        "LESS_THAN",
        "GREATER_THAN_EQUALS",
        "LESS_THAN_EQUALS"
      ]
    },
    "Compatibility":{
      "type":"string",
      "enum":[
        "NONE",
        "DISABLED",
        "BACKWARD",
        "BACKWARD_ALL",
        "FORWARD",
        "FORWARD_ALL",
        "FULL",
        "FULL_ALL"
      ]
    },
    "CompressionType":{
      "type":"string",
      "enum":[
        "gzip",
        "bzip2"
      ]
    },
    "ConcurrentModificationException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>Two processes are trying to modify a resource simultaneously.</p>",
      "exception":true
    },
    "ConcurrentRunsExceededException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>Too many jobs are being run concurrently.</p>",
      "exception":true
    },
    "Condition":{
      "type":"structure",
      "members":{
        "LogicalOperator":{
          "shape":"LogicalOperator",
          "documentation":"<p>A logical operator.</p>"
        },
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the job whose <code>JobRuns</code> this condition applies to, and on which this trigger waits.</p>"
        },
        "State":{
          "shape":"JobRunState",
          "documentation":"<p>The condition state. Currently, the only job states that a trigger can listen for are <code>SUCCEEDED</code>, <code>STOPPED</code>, <code>FAILED</code>, and <code>TIMEOUT</code>. The only crawler states that a trigger can listen for are <code>SUCCEEDED</code>, <code>FAILED</code>, and <code>CANCELLED</code>.</p>"
        },
        "CrawlerName":{
          "shape":"NameString",
          "documentation":"<p>The name of the crawler to which this condition applies.</p>"
        },
        "CrawlState":{
          "shape":"CrawlState",
          "documentation":"<p>The state of the crawler to which this condition applies.</p>"
        }
      },
      "documentation":"<p>Defines a condition under which a trigger fires.</p>"
    },
    "ConditionCheckFailureException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>A specified condition was not satisfied.</p>",
      "exception":true
    },
    "ConditionList":{
      "type":"list",
      "member":{"shape":"Condition"}
    },
    "ConflictException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>The <code>CreatePartitions</code> API was called on a table that has indexes enabled. </p>",
      "exception":true
    },
    "ConfusionMatrix":{
      "type":"structure",
      "members":{
        "NumTruePositives":{
          "shape":"RecordsCount",
          "documentation":"<p>The number of matches in the data that the transform correctly found, in the confusion matrix for your transform.</p>"
        },
        "NumFalsePositives":{
          "shape":"RecordsCount",
          "documentation":"<p>The number of nonmatches in the data that the transform incorrectly classified as a match, in the confusion matrix for your transform.</p>"
        },
        "NumTrueNegatives":{
          "shape":"RecordsCount",
          "documentation":"<p>The number of nonmatches in the data that the transform correctly rejected, in the confusion matrix for your transform.</p>"
        },
        "NumFalseNegatives":{
          "shape":"RecordsCount",
          "documentation":"<p>The number of matches in the data that the transform didn't find, in the confusion matrix for your transform.</p>"
        }
      },
      "documentation":"<p>The confusion matrix shows you what your transform is predicting accurately and what types of errors it is making.</p> <p>For more information, see <a href=\"https://en.wikipedia.org/wiki/Confusion_matrix\">Confusion matrix</a> in Wikipedia.</p>"
    },
    "Connection":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the connection definition.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>The description of the connection.</p>"
        },
        "ConnectionType":{
          "shape":"ConnectionType",
          "documentation":"<p>The type of the connection. Currently, SFTP is not supported.</p>"
        },
        "MatchCriteria":{
          "shape":"MatchCriteria",
          "documentation":"<p>A list of criteria that can be used in selecting this connection.</p>"
        },
        "ConnectionProperties":{
          "shape":"ConnectionProperties",
          "documentation":"<p>These key-value pairs define parameters for the connection:</p> <ul> <li> <p> <code>HOST</code> - The host URI: either the fully qualified domain name (FQDN) or the IPv4 address of the database host.</p> </li> <li> <p> <code>PORT</code> - The port number, between 1024 and 65535, of the port on which the database host is listening for database connections.</p> </li> <li> <p> <code>USER_NAME</code> - The name under which to log in to the database. The value string for <code>USER_NAME</code> is \"<code>USERNAME</code>\".</p> </li> <li> <p> <code>PASSWORD</code> - A password, if one is used, for the user name.</p> </li> <li> <p> <code>ENCRYPTED_PASSWORD</code> - When you enable connection password protection by setting <code>ConnectionPasswordEncryption</code> in the Data Catalog encryption settings, this field stores the encrypted password.</p> </li> <li> <p> <code>JDBC_DRIVER_JAR_URI</code> - The Amazon Simple Storage Service (Amazon S3) path of the JAR file that contains the JDBC driver to use.</p> </li> <li> <p> <code>JDBC_DRIVER_CLASS_NAME</code> - The class name of the JDBC driver to use.</p> </li> <li> <p> <code>JDBC_ENGINE</code> - The name of the JDBC engine to use.</p> </li> <li> <p> <code>JDBC_ENGINE_VERSION</code> - The version of the JDBC engine to use.</p> </li> <li> <p> <code>CONFIG_FILES</code> - (Reserved for future use.)</p> </li> <li> <p> <code>INSTANCE_ID</code> - The instance ID to use.</p> </li> <li> <p> <code>JDBC_CONNECTION_URL</code> - The URL for connecting to a JDBC data source.</p> </li> <li> <p> <code>JDBC_ENFORCE_SSL</code> - A Boolean string (true, false) specifying whether Secure Sockets Layer (SSL) with hostname matching is enforced for the JDBC connection on the client. The default is false.</p> </li> <li> <p> <code>CUSTOM_JDBC_CERT</code> - An Amazon S3 location specifying the customer's root certificate. Glue uses this root certificate to validate the customer’s certificate when connecting to the customer database. Glue only handles X.509 certificates. The certificate provided must be DER-encoded and supplied in Base64 encoding PEM format.</p> </li> <li> <p> <code>SKIP_CUSTOM_JDBC_CERT_VALIDATION</code> - By default, this is <code>false</code>. Glue validates the Signature algorithm and Subject Public Key Algorithm for the customer certificate. The only permitted algorithms for the Signature algorithm are SHA256withRSA, SHA384withRSA or SHA512withRSA. For the Subject Public Key Algorithm, the key length must be at least 2048. You can set the value of this property to <code>true</code> to skip Glue’s validation of the customer certificate.</p> </li> <li> <p> <code>CUSTOM_JDBC_CERT_STRING</code> - A custom JDBC certificate string which is used for domain match or distinguished name match to prevent a man-in-the-middle attack. In Oracle database, this is used as the <code>SSL_SERVER_CERT_DN</code>; in Microsoft SQL Server, this is used as the <code>hostNameInCertificate</code>.</p> </li> <li> <p> <code>CONNECTION_URL</code> - The URL for connecting to a general (non-JDBC) data source.</p> </li> <li> <p> <code>SECRET_ID</code> - The secret ID used for the secret manager of credentials.</p> </li> <li> <p> <code>CONNECTOR_URL</code> - The connector URL for a MARKETPLACE or CUSTOM connection.</p> </li> <li> <p> <code>CONNECTOR_TYPE</code> - The connector type for a MARKETPLACE or CUSTOM connection.</p> </li> <li> <p> <code>CONNECTOR_CLASS_NAME</code> - The connector class name for a MARKETPLACE or CUSTOM connection.</p> </li> <li> <p> <code>KAFKA_BOOTSTRAP_SERVERS</code> - A comma-separated list of host and port pairs that are the addresses of the Apache Kafka brokers in a Kafka cluster to which a Kafka client will connect to and bootstrap itself.</p> </li> <li> <p> <code>KAFKA_SSL_ENABLED</code> - Whether to enable or disable SSL on an Apache Kafka connection. Default value is \"true\".</p> </li> <li> <p> <code>KAFKA_CUSTOM_CERT</code> - The Amazon S3 URL for the private CA cert file (.pem format). The default is an empty string.</p> </li> <li> <p> <code>KAFKA_SKIP_CUSTOM_CERT_VALIDATION</code> - Whether to skip the validation of the CA cert file or not. Glue validates for three algorithms: SHA256withRSA, SHA384withRSA and SHA512withRSA. Default value is \"false\".</p> </li> <li> <p> <code>KAFKA_CLIENT_KEYSTORE</code> - The Amazon S3 location of the client keystore file for Kafka client side authentication (Optional).</p> </li> <li> <p> <code>KAFKA_CLIENT_KEYSTORE_PASSWORD</code> - The password to access the provided keystore (Optional).</p> </li> <li> <p> <code>KAFKA_CLIENT_KEY_PASSWORD</code> - A keystore can consist of multiple keys, so this is the password to access the client key to be used with the Kafka server side key (Optional).</p> </li> <li> <p> <code>ENCRYPTED_KAFKA_CLIENT_KEYSTORE_PASSWORD</code> - The encrypted version of the Kafka client keystore password (if the user has the Glue encrypt passwords setting selected).</p> </li> <li> <p> <code>ENCRYPTED_KAFKA_CLIENT_KEY_PASSWORD</code> - The encrypted version of the Kafka client key password (if the user has the Glue encrypt passwords setting selected).</p> </li> <li> <p> <code>KAFKA_SASL_MECHANISM</code> - <code>\"SCRAM-SHA-512\"</code>, <code>\"GSSAPI\"</code>, <code>\"AWS_MSK_IAM\"</code>, or <code>\"PLAIN\"</code>. These are the supported <a href=\"https://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml\">SASL Mechanisms</a>.</p> </li> <li> <p> <code>KAFKA_SASL_PLAIN_USERNAME</code> - A plaintext username used to authenticate with the \"PLAIN\" mechanism.</p> </li> <li> <p> <code>KAFKA_SASL_PLAIN_PASSWORD</code> - A plaintext password used to authenticate with the \"PLAIN\" mechanism.</p> </li> <li> <p> <code>ENCRYPTED_KAFKA_SASL_PLAIN_PASSWORD</code> - The encrypted version of the Kafka SASL PLAIN password (if the user has the Glue encrypt passwords setting selected).</p> </li> <li> <p> <code>KAFKA_SASL_SCRAM_USERNAME</code> - A plaintext username used to authenticate with the \"SCRAM-SHA-512\" mechanism.</p> </li> <li> <p> <code>KAFKA_SASL_SCRAM_PASSWORD</code> - A plaintext password used to authenticate with the \"SCRAM-SHA-512\" mechanism.</p> </li> <li> <p> <code>ENCRYPTED_KAFKA_SASL_SCRAM_PASSWORD</code> - The encrypted version of the Kafka SASL SCRAM password (if the user has the Glue encrypt passwords setting selected).</p> </li> <li> <p> <code>KAFKA_SASL_SCRAM_SECRETS_ARN</code> - The Amazon Resource Name of a secret in Amazon Web Services Secrets Manager.</p> </li> <li> <p> <code>KAFKA_SASL_GSSAPI_KEYTAB</code> - The S3 location of a Kerberos <code>keytab</code> file. A keytab stores long-term keys for one or more principals. For more information, see <a href=\"https://web.mit.edu/kerberos/krb5-latest/doc/basic/keytab_def.html\">MIT Kerberos Documentation: Keytab</a>.</p> </li> <li> <p> <code>KAFKA_SASL_GSSAPI_KRB5_CONF</code> - The S3 location of a Kerberos <code>krb5.conf</code> file. A krb5.conf stores Kerberos configuration information, such as the location of the KDC server. For more information, see <a href=\"https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html\">MIT Kerberos Documentation: krb5.conf</a>.</p> </li> <li> <p> <code>KAFKA_SASL_GSSAPI_SERVICE</code> - The Kerberos service name, as set with <code>sasl.kerberos.service.name</code> in your <a href=\"https://kafka.apache.org/documentation/#brokerconfigs_sasl.kerberos.service.name\">Kafka Configuration</a>.</p> </li> <li> <p> <code>KAFKA_SASL_GSSAPI_PRINCIPAL</code> - The name of the Kerberos princial used by Glue. For more information, see <a href=\"https://kafka.apache.org/documentation/#security_sasl_kerberos_clientconfig\">Kafka Documentation: Configuring Kafka Brokers</a>.</p> </li> </ul>"
        },
        "PhysicalConnectionRequirements":{
          "shape":"PhysicalConnectionRequirements",
          "documentation":"<p>A map of physical connection requirements, such as virtual private cloud (VPC) and <code>SecurityGroup</code>, that are needed to make this connection successfully.</p>"
        },
        "CreationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time that this connection definition was created.</p>"
        },
        "LastUpdatedTime":{
          "shape":"Timestamp",
          "documentation":"<p>The last time that this connection definition was updated.</p>"
        },
        "LastUpdatedBy":{
          "shape":"NameString",
          "documentation":"<p>The user, group, or role that last updated this connection definition.</p>"
        }
      },
      "documentation":"<p>Defines a connection to a data source.</p>"
    },
    "ConnectionInput":{
      "type":"structure",
      "required":[
        "Name",
        "ConnectionType",
        "ConnectionProperties"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the connection. Connection will not function as expected without a name.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>The description of the connection.</p>"
        },
        "ConnectionType":{
          "shape":"ConnectionType",
          "documentation":"<p>The type of the connection. Currently, these types are supported:</p> <ul> <li> <p> <code>JDBC</code> - Designates a connection to a database through Java Database Connectivity (JDBC).</p> <p> <code>JDBC</code> Connections use the following ConnectionParameters.</p> <ul> <li> <p>Required: All of (<code>HOST</code>, <code>PORT</code>, <code>JDBC_ENGINE</code>) or <code>JDBC_CONNECTION_URL</code>.</p> </li> <li> <p>Required: All of (<code>USERNAME</code>, <code>PASSWORD</code>) or <code>SECRET_ID</code>.</p> </li> <li> <p>Optional: <code>JDBC_ENFORCE_SSL</code>, <code>CUSTOM_JDBC_CERT</code>, <code>CUSTOM_JDBC_CERT_STRING</code>, <code>SKIP_CUSTOM_JDBC_CERT_VALIDATION</code>. These parameters are used to configure SSL with JDBC.</p> </li> </ul> </li> <li> <p> <code>KAFKA</code> - Designates a connection to an Apache Kafka streaming platform.</p> <p> <code>KAFKA</code> Connections use the following ConnectionParameters.</p> <ul> <li> <p>Required: <code>KAFKA_BOOTSTRAP_SERVERS</code>.</p> </li> <li> <p>Optional: <code>KAFKA_SSL_ENABLED</code>, <code>KAFKA_CUSTOM_CERT</code>, <code>KAFKA_SKIP_CUSTOM_CERT_VALIDATION</code>. These parameters are used to configure SSL with <code>KAFKA</code>.</p> </li> <li> <p>Optional: <code>KAFKA_CLIENT_KEYSTORE</code>, <code>KAFKA_CLIENT_KEYSTORE_PASSWORD</code>, <code>KAFKA_CLIENT_KEY_PASSWORD</code>, <code>ENCRYPTED_KAFKA_CLIENT_KEYSTORE_PASSWORD</code>, <code>ENCRYPTED_KAFKA_CLIENT_KEY_PASSWORD</code>. These parameters are used to configure TLS client configuration with SSL in <code>KAFKA</code>.</p> </li> <li> <p>Optional: <code>KAFKA_SASL_MECHANISM</code>. Can be specified as <code>SCRAM-SHA-512</code>, <code>GSSAPI</code>, or <code>AWS_MSK_IAM</code>.</p> </li> <li> <p>Optional: <code>KAFKA_SASL_SCRAM_USERNAME</code>, <code>KAFKA_SASL_SCRAM_PASSWORD</code>, <code>ENCRYPTED_KAFKA_SASL_SCRAM_PASSWORD</code>. These parameters are used to configure SASL/SCRAM-SHA-512 authentication with <code>KAFKA</code>.</p> </li> <li> <p>Optional: <code>KAFKA_SASL_GSSAPI_KEYTAB</code>, <code>KAFKA_SASL_GSSAPI_KRB5_CONF</code>, <code>KAFKA_SASL_GSSAPI_SERVICE</code>, <code>KAFKA_SASL_GSSAPI_PRINCIPAL</code>. These parameters are used to configure SASL/GSSAPI authentication with <code>KAFKA</code>.</p> </li> </ul> </li> <li> <p> <code>MONGODB</code> - Designates a connection to a MongoDB document database.</p> <p> <code>MONGODB</code> Connections use the following ConnectionParameters.</p> <ul> <li> <p>Required: <code>CONNECTION_URL</code>.</p> </li> <li> <p>Required: All of (<code>USERNAME</code>, <code>PASSWORD</code>) or <code>SECRET_ID</code>.</p> </li> </ul> </li> <li> <p> <code>NETWORK</code> - Designates a network connection to a data source within an Amazon Virtual Private Cloud environment (Amazon VPC).</p> <p> <code>NETWORK</code> Connections do not require ConnectionParameters. Instead, provide a PhysicalConnectionRequirements.</p> </li> <li> <p> <code>MARKETPLACE</code> - Uses configuration settings contained in a connector purchased from Amazon Web Services Marketplace to read from and write to data stores that are not natively supported by Glue.</p> <p> <code>MARKETPLACE</code> Connections use the following ConnectionParameters.</p> <ul> <li> <p>Required: <code>CONNECTOR_TYPE</code>, <code>CONNECTOR_URL</code>, <code>CONNECTOR_CLASS_NAME</code>, <code>CONNECTION_URL</code>.</p> </li> <li> <p>Required for <code>JDBC</code> <code>CONNECTOR_TYPE</code> connections: All of (<code>USERNAME</code>, <code>PASSWORD</code>) or <code>SECRET_ID</code>.</p> </li> </ul> </li> <li> <p> <code>CUSTOM</code> - Uses configuration settings contained in a custom connector to read from and write to data stores that are not natively supported by Glue.</p> </li> </ul> <p> <code>SFTP</code> is not supported.</p> <p>For more information about how optional ConnectionProperties are used to configure features in Glue, consult <a href=\"https://docs.aws.amazon.com/glue/latest/dg/connection-defining.html\">Glue connection properties</a>.</p> <p>For more information about how optional ConnectionProperties are used to configure features in Glue Studio, consult <a href=\"https://docs.aws.amazon.com/glue/latest/ug/connectors-chapter.html\">Using connectors and connections</a>.</p>"
        },
        "MatchCriteria":{
          "shape":"MatchCriteria",
          "documentation":"<p>A list of criteria that can be used in selecting this connection.</p>"
        },
        "ConnectionProperties":{
          "shape":"ConnectionProperties",
          "documentation":"<p>These key-value pairs define parameters for the connection.</p>"
        },
        "PhysicalConnectionRequirements":{
          "shape":"PhysicalConnectionRequirements",
          "documentation":"<p>A map of physical connection requirements, such as virtual private cloud (VPC) and <code>SecurityGroup</code>, that are needed to successfully make this connection.</p>"
        }
      },
      "documentation":"<p>A structure that is used to specify a connection to create or update.</p>"
    },
    "ConnectionList":{
      "type":"list",
      "member":{"shape":"Connection"}
    },
    "ConnectionName":{"type":"string"},
    "ConnectionPasswordEncryption":{
      "type":"structure",
      "required":["ReturnConnectionPasswordEncrypted"],
      "members":{
        "ReturnConnectionPasswordEncrypted":{
          "shape":"Boolean",
          "documentation":"<p>When the <code>ReturnConnectionPasswordEncrypted</code> flag is set to \"true\", passwords remain encrypted in the responses of <code>GetConnection</code> and <code>GetConnections</code>. This encryption takes effect independently from catalog encryption. </p>"
        },
        "AwsKmsKeyId":{
          "shape":"NameString",
          "documentation":"<p>An KMS key that is used to encrypt the connection password. </p> <p>If connection password protection is enabled, the caller of <code>CreateConnection</code> and <code>UpdateConnection</code> needs at least <code>kms:Encrypt</code> permission on the specified KMS key, to encrypt passwords before storing them in the Data Catalog. </p> <p>You can set the decrypt permission to enable or restrict access on the password key according to your security requirements.</p>"
        }
      },
      "documentation":"<p>The data structure used by the Data Catalog to encrypt the password as part of <code>CreateConnection</code> or <code>UpdateConnection</code> and store it in the <code>ENCRYPTED_PASSWORD</code> field in the connection properties. You can enable catalog encryption or only password encryption.</p> <p>When a <code>CreationConnection</code> request arrives containing a password, the Data Catalog first encrypts the password using your KMS key. It then encrypts the whole connection object again if catalog encryption is also enabled.</p> <p>This encryption requires that you set KMS key permissions to enable or restrict access on the password key according to your security requirements. For example, you might want only administrators to have decrypt permission on the password key.</p>"
    },
    "ConnectionProperties":{
      "type":"map",
      "key":{"shape":"ConnectionPropertyKey"},
      "value":{"shape":"ValueString"},
      "max":100,
      "min":0
    },
    "ConnectionPropertyKey":{
      "type":"string",
      "enum":[
        "HOST",
        "PORT",
        "USERNAME",
        "PASSWORD",
        "ENCRYPTED_PASSWORD",
        "JDBC_DRIVER_JAR_URI",
        "JDBC_DRIVER_CLASS_NAME",
        "JDBC_ENGINE",
        "JDBC_ENGINE_VERSION",
        "CONFIG_FILES",
        "INSTANCE_ID",
        "JDBC_CONNECTION_URL",
        "JDBC_ENFORCE_SSL",
        "CUSTOM_JDBC_CERT",
        "SKIP_CUSTOM_JDBC_CERT_VALIDATION",
        "CUSTOM_JDBC_CERT_STRING",
        "CONNECTION_URL",
        "KAFKA_BOOTSTRAP_SERVERS",
        "KAFKA_SSL_ENABLED",
        "KAFKA_CUSTOM_CERT",
        "KAFKA_SKIP_CUSTOM_CERT_VALIDATION",
        "KAFKA_CLIENT_KEYSTORE",
        "KAFKA_CLIENT_KEYSTORE_PASSWORD",
        "KAFKA_CLIENT_KEY_PASSWORD",
        "ENCRYPTED_KAFKA_CLIENT_KEYSTORE_PASSWORD",
        "ENCRYPTED_KAFKA_CLIENT_KEY_PASSWORD",
        "SECRET_ID",
        "CONNECTOR_URL",
        "CONNECTOR_TYPE",
        "CONNECTOR_CLASS_NAME",
        "KAFKA_SASL_MECHANISM",
        "KAFKA_SASL_PLAIN_USERNAME",
        "KAFKA_SASL_PLAIN_PASSWORD",
        "ENCRYPTED_KAFKA_SASL_PLAIN_PASSWORD",
        "KAFKA_SASL_SCRAM_USERNAME",
        "KAFKA_SASL_SCRAM_PASSWORD",
        "KAFKA_SASL_SCRAM_SECRETS_ARN",
        "ENCRYPTED_KAFKA_SASL_SCRAM_PASSWORD",
        "KAFKA_SASL_GSSAPI_KEYTAB",
        "KAFKA_SASL_GSSAPI_KRB5_CONF",
        "KAFKA_SASL_GSSAPI_SERVICE",
        "KAFKA_SASL_GSSAPI_PRINCIPAL"
      ]
    },
    "ConnectionType":{
      "type":"string",
      "enum":[
        "JDBC",
        "SFTP",
        "MONGODB",
        "KAFKA",
        "NETWORK",
        "MARKETPLACE",
        "CUSTOM"
      ]
    },
    "ConnectionsList":{
      "type":"structure",
      "members":{
        "Connections":{
          "shape":"OrchestrationStringList",
          "documentation":"<p>A list of connections used by the job.</p>"
        }
      },
      "documentation":"<p>Specifies the connections used by a job.</p>"
    },
    "ConnectorDataSource":{
      "type":"structure",
      "required":[
        "Name",
        "ConnectionType",
        "Data"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of this source node.</p>"
        },
        "ConnectionType":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The <code>connectionType</code>, as provided to the underlying Glue library. This node type supports the following connection types: </p> <ul> <li> <p> <code>opensearch</code> </p> </li> <li> <p> <code>azuresql</code> </p> </li> <li> <p> <code>azurecosmos</code> </p> </li> <li> <p> <code>bigquery</code> </p> </li> <li> <p> <code>saphana</code> </p> </li> <li> <p> <code>teradata</code> </p> </li> <li> <p> <code>vertica</code> </p> </li> </ul>"
        },
        "Data":{
          "shape":"ConnectorOptions",
          "documentation":"<p>A map specifying connection options for the node. You can find standard connection options for the corresponding connection type in the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html\"> Connection parameters</a> section of the Glue documentation.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for this source.</p>"
        }
      },
      "documentation":"<p>Specifies a source generated with standard connection options.</p>"
    },
    "ConnectorDataTarget":{
      "type":"structure",
      "required":[
        "Name",
        "ConnectionType",
        "Data"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of this target node.</p>"
        },
        "ConnectionType":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The <code>connectionType</code>, as provided to the underlying Glue library. This node type supports the following connection types: </p> <ul> <li> <p> <code>opensearch</code> </p> </li> <li> <p> <code>azuresql</code> </p> </li> <li> <p> <code>azurecosmos</code> </p> </li> <li> <p> <code>bigquery</code> </p> </li> <li> <p> <code>saphana</code> </p> </li> <li> <p> <code>teradata</code> </p> </li> <li> <p> <code>vertica</code> </p> </li> </ul>"
        },
        "Data":{
          "shape":"ConnectorOptions",
          "documentation":"<p>A map specifying connection options for the node. You can find standard connection options for the corresponding connection type in the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html\"> Connection parameters</a> section of the Glue documentation.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        }
      },
      "documentation":"<p>Specifies a target generated with standard connection options.</p>"
    },
    "ConnectorOptions":{
      "type":"map",
      "key":{"shape":"GenericString"},
      "value":{"shape":"GenericString"}
    },
    "ContextKey":{
      "type":"string",
      "max":128,
      "min":1
    },
    "ContextValue":{
      "type":"string",
      "max":256,
      "min":0
    },
    "ContextWords":{
      "type":"list",
      "member":{"shape":"NameString"},
      "max":20,
      "min":1
    },
    "Crawl":{
      "type":"structure",
      "members":{
        "State":{
          "shape":"CrawlState",
          "documentation":"<p>The state of the crawler.</p>"
        },
        "StartedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time on which the crawl started.</p>"
        },
        "CompletedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time on which the crawl completed.</p>"
        },
        "ErrorMessage":{
          "shape":"DescriptionString",
          "documentation":"<p>The error message associated with the crawl.</p>"
        },
        "LogGroup":{
          "shape":"LogGroup",
          "documentation":"<p>The log group associated with the crawl.</p>"
        },
        "LogStream":{
          "shape":"LogStream",
          "documentation":"<p>The log stream associated with the crawl.</p>"
        }
      },
      "documentation":"<p>The details of a crawl in the workflow.</p>"
    },
    "CrawlId":{"type":"string"},
    "CrawlList":{
      "type":"list",
      "member":{"shape":"Crawl"}
    },
    "CrawlState":{
      "type":"string",
      "enum":[
        "RUNNING",
        "CANCELLING",
        "CANCELLED",
        "SUCCEEDED",
        "FAILED",
        "ERROR"
      ]
    },
    "Crawler":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the crawler.</p>"
        },
        "Role":{
          "shape":"Role",
          "documentation":"<p>The Amazon Resource Name (ARN) of an IAM role that's used to access customer resources, such as Amazon Simple Storage Service (Amazon S3) data.</p>"
        },
        "Targets":{
          "shape":"CrawlerTargets",
          "documentation":"<p>A collection of targets to crawl.</p>"
        },
        "DatabaseName":{
          "shape":"DatabaseName",
          "documentation":"<p>The name of the database in which the crawler's output is stored.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the crawler.</p>"
        },
        "Classifiers":{
          "shape":"ClassifierNameList",
          "documentation":"<p>A list of UTF-8 strings that specify the custom classifiers that are associated with the crawler.</p>"
        },
        "RecrawlPolicy":{
          "shape":"RecrawlPolicy",
          "documentation":"<p>A policy that specifies whether to crawl the entire dataset again, or to crawl only folders that were added since the last crawler run.</p>"
        },
        "SchemaChangePolicy":{
          "shape":"SchemaChangePolicy",
          "documentation":"<p>The policy that specifies update and delete behaviors for the crawler.</p>"
        },
        "LineageConfiguration":{
          "shape":"LineageConfiguration",
          "documentation":"<p>A configuration that specifies whether data lineage is enabled for the crawler.</p>"
        },
        "State":{
          "shape":"CrawlerState",
          "documentation":"<p>Indicates whether the crawler is running, or whether a run is pending.</p>"
        },
        "TablePrefix":{
          "shape":"TablePrefix",
          "documentation":"<p>The prefix added to the names of tables that are created.</p>"
        },
        "Schedule":{
          "shape":"Schedule",
          "documentation":"<p>For scheduled crawlers, the schedule when the crawler runs.</p>"
        },
        "CrawlElapsedTime":{
          "shape":"MillisecondsCount",
          "documentation":"<p>If the crawler is running, contains the total time elapsed since the last crawl began.</p>"
        },
        "CreationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time that the crawler was created.</p>"
        },
        "LastUpdated":{
          "shape":"Timestamp",
          "documentation":"<p>The time that the crawler was last updated.</p>"
        },
        "LastCrawl":{
          "shape":"LastCrawlInfo",
          "documentation":"<p>The status of the last crawl, and potentially error information if an error occurred.</p>"
        },
        "Version":{
          "shape":"VersionId",
          "documentation":"<p>The version of the crawler.</p>"
        },
        "Configuration":{
          "shape":"CrawlerConfiguration",
          "documentation":"<p>Crawler configuration information. This versioned JSON string allows users to specify aspects of a crawler's behavior. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html\">Setting crawler configuration options</a>.</p>"
        },
        "CrawlerSecurityConfiguration":{
          "shape":"CrawlerSecurityConfiguration",
          "documentation":"<p>The name of the <code>SecurityConfiguration</code> structure to be used by this crawler.</p>"
        },
        "LakeFormationConfiguration":{
          "shape":"LakeFormationConfiguration",
          "documentation":"<p>Specifies whether the crawler should use Lake Formation credentials for the crawler instead of the IAM role credentials.</p>"
        }
      },
      "documentation":"<p>Specifies a crawler program that examines a data source and uses classifiers to try to determine its schema. If successful, the crawler records metadata concerning the data source in the Glue Data Catalog.</p>"
    },
    "CrawlerConfiguration":{"type":"string"},
    "CrawlerHistory":{
      "type":"structure",
      "members":{
        "CrawlId":{
          "shape":"CrawlId",
          "documentation":"<p>A UUID identifier for each crawl.</p>"
        },
        "State":{
          "shape":"CrawlerHistoryState",
          "documentation":"<p>The state of the crawl.</p>"
        },
        "StartTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time on which the crawl started.</p>"
        },
        "EndTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time on which the crawl ended.</p>"
        },
        "Summary":{
          "shape":"NameString",
          "documentation":"<p>A run summary for the specific crawl in JSON. Contains the catalog tables and partitions that were added, updated, or deleted.</p>"
        },
        "ErrorMessage":{
          "shape":"DescriptionString",
          "documentation":"<p>If an error occurred, the error message associated with the crawl.</p>"
        },
        "LogGroup":{
          "shape":"LogGroup",
          "documentation":"<p>The log group associated with the crawl.</p>"
        },
        "LogStream":{
          "shape":"LogStream",
          "documentation":"<p>The log stream associated with the crawl.</p>"
        },
        "MessagePrefix":{
          "shape":"MessagePrefix",
          "documentation":"<p>The prefix for a CloudWatch message about this crawl.</p>"
        },
        "DPUHour":{
          "shape":"NonNegativeDouble",
          "documentation":"<p>The number of data processing units (DPU) used in hours for the crawl.</p>"
        }
      },
      "documentation":"<p>Contains the information for a run of a crawler.</p>"
    },
    "CrawlerHistoryList":{
      "type":"list",
      "member":{"shape":"CrawlerHistory"}
    },
    "CrawlerHistoryState":{
      "type":"string",
      "enum":[
        "RUNNING",
        "COMPLETED",
        "FAILED",
        "STOPPED"
      ]
    },
    "CrawlerLineageSettings":{
      "type":"string",
      "enum":[
        "ENABLE",
        "DISABLE"
      ]
    },
    "CrawlerList":{
      "type":"list",
      "member":{"shape":"Crawler"}
    },
    "CrawlerMetrics":{
      "type":"structure",
      "members":{
        "CrawlerName":{
          "shape":"NameString",
          "documentation":"<p>The name of the crawler.</p>"
        },
        "TimeLeftSeconds":{
          "shape":"NonNegativeDouble",
          "documentation":"<p>The estimated time left to complete a running crawl.</p>"
        },
        "StillEstimating":{
          "shape":"Boolean",
          "documentation":"<p>True if the crawler is still estimating how long it will take to complete this run.</p>"
        },
        "LastRuntimeSeconds":{
          "shape":"NonNegativeDouble",
          "documentation":"<p>The duration of the crawler's most recent run, in seconds.</p>"
        },
        "MedianRuntimeSeconds":{
          "shape":"NonNegativeDouble",
          "documentation":"<p>The median duration of this crawler's runs, in seconds.</p>"
        },
        "TablesCreated":{
          "shape":"NonNegativeInteger",
          "documentation":"<p>The number of tables created by this crawler.</p>"
        },
        "TablesUpdated":{
          "shape":"NonNegativeInteger",
          "documentation":"<p>The number of tables updated by this crawler.</p>"
        },
        "TablesDeleted":{
          "shape":"NonNegativeInteger",
          "documentation":"<p>The number of tables deleted by this crawler.</p>"
        }
      },
      "documentation":"<p>Metrics for a specified crawler.</p>"
    },
    "CrawlerMetricsList":{
      "type":"list",
      "member":{"shape":"CrawlerMetrics"}
    },
    "CrawlerNameList":{
      "type":"list",
      "member":{"shape":"NameString"},
      "max":100,
      "min":0
    },
    "CrawlerNodeDetails":{
      "type":"structure",
      "members":{
        "Crawls":{
          "shape":"CrawlList",
          "documentation":"<p>A list of crawls represented by the crawl node.</p>"
        }
      },
      "documentation":"<p>The details of a Crawler node present in the workflow.</p>"
    },
    "CrawlerNotRunningException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>The specified crawler is not running.</p>",
      "exception":true
    },
    "CrawlerRunningException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>The operation cannot be performed because the crawler is already running.</p>",
      "exception":true
    },
    "CrawlerSecurityConfiguration":{
      "type":"string",
      "max":128,
      "min":0
    },
    "CrawlerState":{
      "type":"string",
      "enum":[
        "READY",
        "RUNNING",
        "STOPPING"
      ]
    },
    "CrawlerStoppingException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>The specified crawler is stopping.</p>",
      "exception":true
    },
    "CrawlerTargets":{
      "type":"structure",
      "members":{
        "S3Targets":{
          "shape":"S3TargetList",
          "documentation":"<p>Specifies Amazon Simple Storage Service (Amazon S3) targets.</p>"
        },
        "JdbcTargets":{
          "shape":"JdbcTargetList",
          "documentation":"<p>Specifies JDBC targets.</p>"
        },
        "MongoDBTargets":{
          "shape":"MongoDBTargetList",
          "documentation":"<p>Specifies Amazon DocumentDB or MongoDB targets.</p>"
        },
        "DynamoDBTargets":{
          "shape":"DynamoDBTargetList",
          "documentation":"<p>Specifies Amazon DynamoDB targets.</p>"
        },
        "CatalogTargets":{
          "shape":"CatalogTargetList",
          "documentation":"<p>Specifies Glue Data Catalog targets.</p>"
        },
        "DeltaTargets":{
          "shape":"DeltaTargetList",
          "documentation":"<p>Specifies Delta data store targets.</p>"
        },
        "IcebergTargets":{
          "shape":"IcebergTargetList",
          "documentation":"<p>Specifies Apache Iceberg data store targets.</p>"
        },
        "HudiTargets":{
          "shape":"HudiTargetList",
          "documentation":"<p>Specifies Apache Hudi data store targets.</p>"
        }
      },
      "documentation":"<p>Specifies data stores to crawl.</p>"
    },
    "CrawlsFilter":{
      "type":"structure",
      "members":{
        "FieldName":{
          "shape":"FieldName",
          "documentation":"<p>A key used to filter the crawler runs for a specified crawler. Valid values for each of the field names are:</p> <ul> <li> <p> <code>CRAWL_ID</code>: A string representing the UUID identifier for a crawl.</p> </li> <li> <p> <code>STATE</code>: A string representing the state of the crawl.</p> </li> <li> <p> <code>START_TIME</code> and <code>END_TIME</code>: The epoch timestamp in milliseconds.</p> </li> <li> <p> <code>DPU_HOUR</code>: The number of data processing unit (DPU) hours used for the crawl.</p> </li> </ul>"
        },
        "FilterOperator":{
          "shape":"FilterOperator",
          "documentation":"<p>A defined comparator that operates on the value. The available operators are:</p> <ul> <li> <p> <code>GT</code>: Greater than.</p> </li> <li> <p> <code>GE</code>: Greater than or equal to.</p> </li> <li> <p> <code>LT</code>: Less than.</p> </li> <li> <p> <code>LE</code>: Less than or equal to.</p> </li> <li> <p> <code>EQ</code>: Equal to.</p> </li> <li> <p> <code>NE</code>: Not equal to.</p> </li> </ul>"
        },
        "FieldValue":{
          "shape":"GenericString",
          "documentation":"<p>The value provided for comparison on the crawl field. </p>"
        }
      },
      "documentation":"<p>A list of fields, comparators and value that you can use to filter the crawler runs for a specified crawler.</p>"
    },
    "CrawlsFilterList":{
      "type":"list",
      "member":{"shape":"CrawlsFilter"}
    },
    "CreateBlueprintRequest":{
      "type":"structure",
      "required":[
        "Name",
        "BlueprintLocation"
      ],
      "members":{
        "Name":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The name of the blueprint.</p>"
        },
        "Description":{
          "shape":"Generic512CharString",
          "documentation":"<p>A description of the blueprint.</p>"
        },
        "BlueprintLocation":{
          "shape":"OrchestrationS3Location",
          "documentation":"<p>Specifies a path in Amazon S3 where the blueprint is published.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>The tags to be applied to this blueprint.</p>"
        }
      }
    },
    "CreateBlueprintResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Returns the name of the blueprint that was registered.</p>"
        }
      }
    },
    "CreateClassifierRequest":{
      "type":"structure",
      "members":{
        "GrokClassifier":{
          "shape":"CreateGrokClassifierRequest",
          "documentation":"<p>A <code>GrokClassifier</code> object specifying the classifier to create.</p>"
        },
        "XMLClassifier":{
          "shape":"CreateXMLClassifierRequest",
          "documentation":"<p>An <code>XMLClassifier</code> object specifying the classifier to create.</p>"
        },
        "JsonClassifier":{
          "shape":"CreateJsonClassifierRequest",
          "documentation":"<p>A <code>JsonClassifier</code> object specifying the classifier to create.</p>"
        },
        "CsvClassifier":{
          "shape":"CreateCsvClassifierRequest",
          "documentation":"<p>A <code>CsvClassifier</code> object specifying the classifier to create.</p>"
        }
      }
    },
    "CreateClassifierResponse":{
      "type":"structure",
      "members":{
      }
    },
    "CreateConnectionRequest":{
      "type":"structure",
      "required":["ConnectionInput"],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which to create the connection. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "ConnectionInput":{
          "shape":"ConnectionInput",
          "documentation":"<p>A <code>ConnectionInput</code> object defining the connection to create.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>The tags you assign to the connection.</p>"
        }
      }
    },
    "CreateConnectionResponse":{
      "type":"structure",
      "members":{
      }
    },
    "CreateCrawlerRequest":{
      "type":"structure",
      "required":[
        "Name",
        "Role",
        "Targets"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the new crawler.</p>"
        },
        "Role":{
          "shape":"Role",
          "documentation":"<p>The IAM role or Amazon Resource Name (ARN) of an IAM role used by the new crawler to access customer resources.</p>"
        },
        "DatabaseName":{
          "shape":"DatabaseName",
          "documentation":"<p>The Glue database where results are written, such as: <code>arn:aws:daylight:us-east-1::database/sometable/*</code>.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the new crawler.</p>"
        },
        "Targets":{
          "shape":"CrawlerTargets",
          "documentation":"<p>A list of collection of targets to crawl.</p>"
        },
        "Schedule":{
          "shape":"CronExpression",
          "documentation":"<p>A <code>cron</code> expression used to specify the schedule (see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html\">Time-Based Schedules for Jobs and Crawlers</a>. For example, to run something every day at 12:15 UTC, you would specify: <code>cron(15 12 * * ? *)</code>.</p>"
        },
        "Classifiers":{
          "shape":"ClassifierNameList",
          "documentation":"<p>A list of custom classifiers that the user has registered. By default, all built-in classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification.</p>"
        },
        "TablePrefix":{
          "shape":"TablePrefix",
          "documentation":"<p>The table prefix used for catalog tables that are created.</p>"
        },
        "SchemaChangePolicy":{
          "shape":"SchemaChangePolicy",
          "documentation":"<p>The policy for the crawler's update and deletion behavior.</p>"
        },
        "RecrawlPolicy":{
          "shape":"RecrawlPolicy",
          "documentation":"<p>A policy that specifies whether to crawl the entire dataset again, or to crawl only folders that were added since the last crawler run.</p>"
        },
        "LineageConfiguration":{
          "shape":"LineageConfiguration",
          "documentation":"<p>Specifies data lineage configuration settings for the crawler.</p>"
        },
        "LakeFormationConfiguration":{
          "shape":"LakeFormationConfiguration",
          "documentation":"<p>Specifies Lake Formation configuration settings for the crawler.</p>"
        },
        "Configuration":{
          "shape":"CrawlerConfiguration",
          "documentation":"<p>Crawler configuration information. This versioned JSON string allows users to specify aspects of a crawler's behavior. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html\">Setting crawler configuration options</a>.</p>"
        },
        "CrawlerSecurityConfiguration":{
          "shape":"CrawlerSecurityConfiguration",
          "documentation":"<p>The name of the <code>SecurityConfiguration</code> structure to be used by this crawler.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>The tags to use with this crawler request. You may use tags to limit access to the crawler. For more information about tags in Glue, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html\">Amazon Web Services Tags in Glue</a> in the developer guide.</p>"
        }
      }
    },
    "CreateCrawlerResponse":{
      "type":"structure",
      "members":{
      }
    },
    "CreateCsvClassifierRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the classifier.</p>"
        },
        "Delimiter":{
          "shape":"CsvColumnDelimiter",
          "documentation":"<p>A custom symbol to denote what separates each column entry in the row.</p>"
        },
        "QuoteSymbol":{
          "shape":"CsvQuoteSymbol",
          "documentation":"<p>A custom symbol to denote what combines content into a single column value. Must be different from the column delimiter.</p>"
        },
        "ContainsHeader":{
          "shape":"CsvHeaderOption",
          "documentation":"<p>Indicates whether the CSV file contains a header.</p>"
        },
        "Header":{
          "shape":"CsvHeader",
          "documentation":"<p>A list of strings representing column names.</p>"
        },
        "DisableValueTrimming":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies not to trim values before identifying the type of column values. The default value is true.</p>"
        },
        "AllowSingleColumn":{
          "shape":"NullableBoolean",
          "documentation":"<p>Enables the processing of files that contain only one column.</p>"
        },
        "CustomDatatypeConfigured":{
          "shape":"NullableBoolean",
          "documentation":"<p>Enables the configuration of custom datatypes.</p>"
        },
        "CustomDatatypes":{
          "shape":"CustomDatatypes",
          "documentation":"<p>Creates a list of supported custom datatypes.</p>"
        },
        "Serde":{
          "shape":"CsvSerdeOption",
          "documentation":"<p>Sets the SerDe for processing CSV in the classifier, which will be applied in the Data Catalog. Valid values are <code>OpenCSVSerDe</code>, <code>LazySimpleSerDe</code>, and <code>None</code>. You can specify the <code>None</code> value when you want the crawler to do the detection.</p>"
        }
      },
      "documentation":"<p>Specifies a custom CSV classifier for <code>CreateClassifier</code> to create.</p>"
    },
    "CreateCustomEntityTypeRequest":{
      "type":"structure",
      "required":[
        "Name",
        "RegexString"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>A name for the custom pattern that allows it to be retrieved or deleted later. This name must be unique per Amazon Web Services account.</p>"
        },
        "RegexString":{
          "shape":"NameString",
          "documentation":"<p>A regular expression string that is used for detecting sensitive data in a custom pattern.</p>"
        },
        "ContextWords":{
          "shape":"ContextWords",
          "documentation":"<p>A list of context words. If none of these context words are found within the vicinity of the regular expression the data will not be detected as sensitive data.</p> <p>If no context words are passed only a regular expression is checked.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>A list of tags applied to the custom entity type.</p>"
        }
      }
    },
    "CreateCustomEntityTypeResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the custom pattern you created.</p>"
        }
      }
    },
    "CreateDataQualityRulesetRequest":{
      "type":"structure",
      "required":[
        "Name",
        "Ruleset"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>A unique name for the data quality ruleset.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the data quality ruleset.</p>"
        },
        "Ruleset":{
          "shape":"DataQualityRulesetString",
          "documentation":"<p>A Data Quality Definition Language (DQDL) ruleset. For more information, see the Glue developer guide.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>A list of tags applied to the data quality ruleset.</p>"
        },
        "TargetTable":{
          "shape":"DataQualityTargetTable",
          "documentation":"<p>A target table associated with the data quality ruleset.</p>"
        },
        "ClientToken":{
          "shape":"HashString",
          "documentation":"<p>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.</p>"
        }
      }
    },
    "CreateDataQualityRulesetResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>A unique name for the data quality ruleset.</p>"
        }
      }
    },
    "CreateDatabaseRequest":{
      "type":"structure",
      "required":["DatabaseInput"],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which to create the database. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseInput":{
          "shape":"DatabaseInput",
          "documentation":"<p>The metadata for the database.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>The tags you assign to the database.</p>"
        }
      }
    },
    "CreateDatabaseResponse":{
      "type":"structure",
      "members":{
      }
    },
    "CreateDevEndpointRequest":{
      "type":"structure",
      "required":[
        "EndpointName",
        "RoleArn"
      ],
      "members":{
        "EndpointName":{
          "shape":"GenericString",
          "documentation":"<p>The name to be assigned to the new <code>DevEndpoint</code>.</p>"
        },
        "RoleArn":{
          "shape":"RoleArn",
          "documentation":"<p>The IAM role for the <code>DevEndpoint</code>.</p>"
        },
        "SecurityGroupIds":{
          "shape":"StringList",
          "documentation":"<p>Security group IDs for the security groups to be used by the new <code>DevEndpoint</code>.</p>"
        },
        "SubnetId":{
          "shape":"GenericString",
          "documentation":"<p>The subnet ID for the new <code>DevEndpoint</code> to use.</p>"
        },
        "PublicKey":{
          "shape":"GenericString",
          "documentation":"<p>The public key to be used by this <code>DevEndpoint</code> for authentication. This attribute is provided for backward compatibility because the recommended attribute to use is public keys.</p>"
        },
        "PublicKeys":{
          "shape":"PublicKeysList",
          "documentation":"<p>A list of public keys to be used by the development endpoints for authentication. The use of this attribute is preferred over a single public key because the public keys allow you to have a different private key per client.</p> <note> <p>If you previously created an endpoint with a public key, you must remove that key to be able to set a list of public keys. Call the <code>UpdateDevEndpoint</code> API with the public key content in the <code>deletePublicKeys</code> attribute, and the list of new keys in the <code>addPublicKeys</code> attribute.</p> </note>"
        },
        "NumberOfNodes":{
          "shape":"IntegerValue",
          "documentation":"<p>The number of Glue Data Processing Units (DPUs) to allocate to this <code>DevEndpoint</code>.</p>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated to the development endpoint. Accepts a value of Standard, G.1X, or G.2X.</p> <ul> <li> <p>For the <code>Standard</code> worker type, each worker provides 4 vCPU, 16 GB of memory and a 50GB disk, and 2 executors per worker.</p> </li> <li> <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPU, 16 GB of memory, 64 GB disk), and provides 1 executor per worker. We recommend this worker type for memory-intensive jobs.</p> </li> <li> <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPU, 32 GB of memory, 128 GB disk), and provides 1 executor per worker. We recommend this worker type for memory-intensive jobs.</p> </li> </ul> <p>Known issue: when a development endpoint is created with the <code>G.2X</code> <code>WorkerType</code> configuration, the Spark drivers for the development endpoint will run on 4 vCPU, 16 GB of memory, and a 64 GB disk. </p>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>Glue version determines the versions of Apache Spark and Python that Glue supports. The Python version indicates the version supported for running your ETL scripts on development endpoints. </p> <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/add-job.html\">Glue version</a> in the developer guide.</p> <p>Development endpoints that are created without specifying a Glue version default to Glue 0.9.</p> <p>You can specify a version of Python support for development endpoints by using the <code>Arguments</code> parameter in the <code>CreateDevEndpoint</code> or <code>UpdateDevEndpoint</code> APIs. If no arguments are provided, the version defaults to Python 2.</p>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>workerType</code> that are allocated to the development endpoint.</p> <p>The maximum number of workers you can define are 299 for <code>G.1X</code>, and 149 for <code>G.2X</code>. </p>"
        },
        "ExtraPythonLibsS3Path":{
          "shape":"GenericString",
          "documentation":"<p>The paths to one or more Python libraries in an Amazon S3 bucket that should be loaded in your <code>DevEndpoint</code>. Multiple values must be complete paths separated by a comma.</p> <note> <p>You can only use pure Python libraries with a <code>DevEndpoint</code>. Libraries that rely on C extensions, such as the <a href=\"http://pandas.pydata.org/\">pandas</a> Python data analysis library, are not yet supported.</p> </note>"
        },
        "ExtraJarsS3Path":{
          "shape":"GenericString",
          "documentation":"<p>The path to one or more Java <code>.jar</code> files in an S3 bucket that should be loaded in your <code>DevEndpoint</code>.</p>"
        },
        "SecurityConfiguration":{
          "shape":"NameString",
          "documentation":"<p>The name of the <code>SecurityConfiguration</code> structure to be used with this <code>DevEndpoint</code>.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>The tags to use with this DevEndpoint. You may use tags to limit access to the DevEndpoint. For more information about tags in Glue, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html\">Amazon Web Services Tags in Glue</a> in the developer guide.</p>"
        },
        "Arguments":{
          "shape":"MapValue",
          "documentation":"<p>A map of arguments used to configure the <code>DevEndpoint</code>.</p>"
        }
      }
    },
    "CreateDevEndpointResponse":{
      "type":"structure",
      "members":{
        "EndpointName":{
          "shape":"GenericString",
          "documentation":"<p>The name assigned to the new <code>DevEndpoint</code>.</p>"
        },
        "Status":{
          "shape":"GenericString",
          "documentation":"<p>The current status of the new <code>DevEndpoint</code>.</p>"
        },
        "SecurityGroupIds":{
          "shape":"StringList",
          "documentation":"<p>The security groups assigned to the new <code>DevEndpoint</code>.</p>"
        },
        "SubnetId":{
          "shape":"GenericString",
          "documentation":"<p>The subnet ID assigned to the new <code>DevEndpoint</code>.</p>"
        },
        "RoleArn":{
          "shape":"RoleArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the role assigned to the new <code>DevEndpoint</code>.</p>"
        },
        "YarnEndpointAddress":{
          "shape":"GenericString",
          "documentation":"<p>The address of the YARN endpoint used by this <code>DevEndpoint</code>.</p>"
        },
        "ZeppelinRemoteSparkInterpreterPort":{
          "shape":"IntegerValue",
          "documentation":"<p>The Apache Zeppelin port for the remote Apache Spark interpreter.</p>"
        },
        "NumberOfNodes":{
          "shape":"IntegerValue",
          "documentation":"<p>The number of Glue Data Processing Units (DPUs) allocated to this DevEndpoint.</p>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated to the development endpoint. May be a value of Standard, G.1X, or G.2X.</p>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>Glue version determines the versions of Apache Spark and Python that Glue supports. The Python version indicates the version supported for running your ETL scripts on development endpoints. </p> <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/add-job.html\">Glue version</a> in the developer guide.</p>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>workerType</code> that are allocated to the development endpoint.</p>"
        },
        "AvailabilityZone":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Web Services Availability Zone where this <code>DevEndpoint</code> is located.</p>"
        },
        "VpcId":{
          "shape":"GenericString",
          "documentation":"<p>The ID of the virtual private cloud (VPC) used by this <code>DevEndpoint</code>.</p>"
        },
        "ExtraPythonLibsS3Path":{
          "shape":"GenericString",
          "documentation":"<p>The paths to one or more Python libraries in an S3 bucket that will be loaded in your <code>DevEndpoint</code>.</p>"
        },
        "ExtraJarsS3Path":{
          "shape":"GenericString",
          "documentation":"<p>Path to one or more Java <code>.jar</code> files in an S3 bucket that will be loaded in your <code>DevEndpoint</code>.</p>"
        },
        "FailureReason":{
          "shape":"GenericString",
          "documentation":"<p>The reason for a current failure in this <code>DevEndpoint</code>.</p>"
        },
        "SecurityConfiguration":{
          "shape":"NameString",
          "documentation":"<p>The name of the <code>SecurityConfiguration</code> structure being used with this <code>DevEndpoint</code>.</p>"
        },
        "CreatedTimestamp":{
          "shape":"TimestampValue",
          "documentation":"<p>The point in time at which this <code>DevEndpoint</code> was created.</p>"
        },
        "Arguments":{
          "shape":"MapValue",
          "documentation":"<p>The map of arguments used to configure this <code>DevEndpoint</code>.</p> <p>Valid arguments are:</p> <ul> <li> <p> <code>\"--enable-glue-datacatalog\": \"\"</code> </p> </li> </ul> <p>You can specify a version of Python support for development endpoints by using the <code>Arguments</code> parameter in the <code>CreateDevEndpoint</code> or <code>UpdateDevEndpoint</code> APIs. If no arguments are provided, the version defaults to Python 2.</p>"
        }
      }
    },
    "CreateGrokClassifierRequest":{
      "type":"structure",
      "required":[
        "Classification",
        "Name",
        "GrokPattern"
      ],
      "members":{
        "Classification":{
          "shape":"Classification",
          "documentation":"<p>An identifier of the data format that the classifier matches, such as Twitter, JSON, Omniture logs, Amazon CloudWatch Logs, and so on.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the new classifier.</p>"
        },
        "GrokPattern":{
          "shape":"GrokPattern",
          "documentation":"<p>The grok pattern used by this classifier.</p>"
        },
        "CustomPatterns":{
          "shape":"CustomPatterns",
          "documentation":"<p>Optional custom grok patterns used by this classifier.</p>"
        }
      },
      "documentation":"<p>Specifies a <code>grok</code> classifier for <code>CreateClassifier</code> to create.</p>"
    },
    "CreateJobRequest":{
      "type":"structure",
      "required":[
        "Name",
        "Role",
        "Command"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name you assign to this job definition. It must be unique in your account.</p>"
        },
        "JobMode":{
          "shape":"JobMode",
          "documentation":"<p>A mode that describes how a job was created. Valid values are:</p> <ul> <li> <p> <code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p> </li> <li> <p> <code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p> </li> <li> <p> <code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p> </li> </ul> <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>Description of the job being defined.</p>"
        },
        "LogUri":{
          "shape":"UriString",
          "documentation":"<p>This field is reserved for future use.</p>"
        },
        "Role":{
          "shape":"RoleString",
          "documentation":"<p>The name or Amazon Resource Name (ARN) of the IAM role associated with this job.</p>"
        },
        "ExecutionProperty":{
          "shape":"ExecutionProperty",
          "documentation":"<p>An <code>ExecutionProperty</code> specifying the maximum number of concurrent runs allowed for this job.</p>"
        },
        "Command":{
          "shape":"JobCommand",
          "documentation":"<p>The <code>JobCommand</code> that runs this job.</p>"
        },
        "DefaultArguments":{
          "shape":"GenericMap",
          "documentation":"<p>The default arguments for every run of this job, specified as name-value pairs.</p> <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p> <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job. </p> <p>For information about how to specify and consume your own Job arguments, see the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html\">Calling Glue APIs in Python</a> topic in the developer guide.</p> <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html\">Special Parameters Used by Glue</a> topic in the developer guide.</p> <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html\">Using job parameters in Ray jobs</a> in the developer guide.</p>"
        },
        "NonOverridableArguments":{
          "shape":"GenericMap",
          "documentation":"<p>Arguments for this job that are not overridden when providing job arguments in a job run, specified as name-value pairs.</p>"
        },
        "Connections":{
          "shape":"ConnectionsList",
          "documentation":"<p>The connections used for this job.</p>"
        },
        "MaxRetries":{
          "shape":"MaxRetries",
          "documentation":"<p>The maximum number of times to retry this job if it fails.</p>"
        },
        "AllocatedCapacity":{
          "shape":"IntegerValue",
          "documentation":"<p>This parameter is deprecated. Use <code>MaxCapacity</code> instead.</p> <p>The number of Glue data processing units (DPUs) to allocate to this Job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"https://aws.amazon.com/glue/pricing/\">Glue pricing page</a>.</p>",
          "deprecated":true,
          "deprecatedMessage":"This property is deprecated, use MaxCapacity instead."
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The job timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status. The default is 2,880 minutes (48 hours).</p>"
        },
        "MaxCapacity":{
          "shape":"NullableDouble",
          "documentation":"<p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"https://aws.amazon.com/glue/pricing/\"> Glue pricing page</a>.</p> <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p> <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p> <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p> <ul> <li> <p>When you specify a Python shell job (<code>JobCommand.Name</code>=\"pythonshell\"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p> </li> <li> <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>=\"glueetl\") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>=\"gluestreaming\"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p> </li> </ul>"
        },
        "SecurityConfiguration":{
          "shape":"NameString",
          "documentation":"<p>The name of the <code>SecurityConfiguration</code> structure to be used with this job.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>The tags to use with this job. You may use tags to limit access to the job. For more information about tags in Glue, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html\">Amazon Web Services Tags in Glue</a> in the developer guide.</p>"
        },
        "NotificationProperty":{
          "shape":"NotificationProperty",
          "documentation":"<p>Specifies configuration properties of a job notification.</p>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark. </p> <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p> <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/add-job.html\">Glue version</a> in the developer guide.</p> <p>Jobs that are created without specifying a Glue version default to Glue 0.9.</p>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p> <ul> <li> <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 84GB disk (approximately 34GB free), and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p> </li> <li> <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 128GB disk (approximately 77GB free), and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p> </li> <li> <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk (approximately 235GB free), and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in the following Amazon Web Services Regions: US East (Ohio), US East (N. Virginia), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (Ireland), and Europe (Stockholm).</p> </li> <li> <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk (approximately 487GB free), and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs, in the same Amazon Web Services Regions as supported for the <code>G.4X</code> worker type.</p> </li> <li> <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk (approximately 34GB free), and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 streaming jobs.</p> </li> <li> <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk (approximately 120GB free), and provides up to 8 Ray workers based on the autoscaler.</p> </li> </ul>"
        },
        "CodeGenConfigurationNodes":{
          "shape":"CodeGenConfigurationNodes",
          "documentation":"<p>The representation of a directed acyclic graph on which both the Glue Studio visual component and Glue Studio code generation is based.</p>"
        },
        "ExecutionClass":{
          "shape":"ExecutionClass",
          "documentation":"<p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p> <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary. </p> <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>"
        },
        "SourceControlDetails":{
          "shape":"SourceControlDetails",
          "documentation":"<p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>"
        },
        "MaintenanceWindow":{
          "shape":"MaintenanceWindow",
          "documentation":"<p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p> <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>"
        }
      }
    },
    "CreateJobResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The unique name that was provided for this job definition.</p>"
        }
      }
    },
    "CreateJsonClassifierRequest":{
      "type":"structure",
      "required":[
        "Name",
        "JsonPath"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the classifier.</p>"
        },
        "JsonPath":{
          "shape":"JsonPath",
          "documentation":"<p>A <code>JsonPath</code> string defining the JSON data for the classifier to classify. Glue supports a subset of JsonPath, as described in <a href=\"https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-json\">Writing JsonPath Custom Classifiers</a>.</p>"
        }
      },
      "documentation":"<p>Specifies a JSON classifier for <code>CreateClassifier</code> to create.</p>"
    },
    "CreateMLTransformRequest":{
      "type":"structure",
      "required":[
        "Name",
        "InputRecordTables",
        "Parameters",
        "Role"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The unique name that you give the transform when you create it.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the machine learning transform that is being defined. The default is an empty string.</p>"
        },
        "InputRecordTables":{
          "shape":"GlueTables",
          "documentation":"<p>A list of Glue table definitions used by the transform.</p>"
        },
        "Parameters":{
          "shape":"TransformParameters",
          "documentation":"<p>The algorithmic parameters that are specific to the transform type used. Conditionally dependent on the transform type.</p>"
        },
        "Role":{
          "shape":"RoleString",
          "documentation":"<p>The name or Amazon Resource Name (ARN) of the IAM role with the required permissions. The required permissions include both Glue service role permissions to Glue resources, and Amazon S3 permissions required by the transform. </p> <ul> <li> <p>This role needs Glue service role permissions to allow access to resources in Glue. See <a href=\"https://docs.aws.amazon.com/glue/latest/dg/attach-policy-iam-user.html\">Attach a Policy to IAM Users That Access Glue</a>.</p> </li> <li> <p>This role needs permission to your Amazon Simple Storage Service (Amazon S3) sources, targets, temporary directory, scripts, and any libraries used by the task run for this transform.</p> </li> </ul>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>This value determines which version of Glue this machine learning transform is compatible with. Glue 1.0 is recommended for most customers. If the value is not set, the Glue compatibility defaults to Glue 0.9. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions\">Glue Versions</a> in the developer guide.</p>"
        },
        "MaxCapacity":{
          "shape":"NullableDouble",
          "documentation":"<p>The number of Glue data processing units (DPUs) that are allocated to task runs for this transform. You can allocate from 2 to 100 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"https://aws.amazon.com/glue/pricing/\">Glue pricing page</a>. </p> <p> <code>MaxCapacity</code> is a mutually exclusive option with <code>NumberOfWorkers</code> and <code>WorkerType</code>.</p> <ul> <li> <p>If either <code>NumberOfWorkers</code> or <code>WorkerType</code> is set, then <code>MaxCapacity</code> cannot be set.</p> </li> <li> <p>If <code>MaxCapacity</code> is set then neither <code>NumberOfWorkers</code> or <code>WorkerType</code> can be set.</p> </li> <li> <p>If <code>WorkerType</code> is set, then <code>NumberOfWorkers</code> is required (and vice versa).</p> </li> <li> <p> <code>MaxCapacity</code> and <code>NumberOfWorkers</code> must both be at least 1.</p> </li> </ul> <p>When the <code>WorkerType</code> field is set to a value other than <code>Standard</code>, the <code>MaxCapacity</code> field is set automatically and becomes read-only.</p> <p>When the <code>WorkerType</code> field is set to a value other than <code>Standard</code>, the <code>MaxCapacity</code> field is set automatically and becomes read-only.</p>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated when this task runs. Accepts a value of Standard, G.1X, or G.2X.</p> <ul> <li> <p>For the <code>Standard</code> worker type, each worker provides 4 vCPU, 16 GB of memory and a 50GB disk, and 2 executors per worker.</p> </li> <li> <p>For the <code>G.1X</code> worker type, each worker provides 4 vCPU, 16 GB of memory and a 64GB disk, and 1 executor per worker.</p> </li> <li> <p>For the <code>G.2X</code> worker type, each worker provides 8 vCPU, 32 GB of memory and a 128GB disk, and 1 executor per worker.</p> </li> </ul> <p> <code>MaxCapacity</code> is a mutually exclusive option with <code>NumberOfWorkers</code> and <code>WorkerType</code>.</p> <ul> <li> <p>If either <code>NumberOfWorkers</code> or <code>WorkerType</code> is set, then <code>MaxCapacity</code> cannot be set.</p> </li> <li> <p>If <code>MaxCapacity</code> is set then neither <code>NumberOfWorkers</code> or <code>WorkerType</code> can be set.</p> </li> <li> <p>If <code>WorkerType</code> is set, then <code>NumberOfWorkers</code> is required (and vice versa).</p> </li> <li> <p> <code>MaxCapacity</code> and <code>NumberOfWorkers</code> must both be at least 1.</p> </li> </ul>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>workerType</code> that are allocated when this task runs.</p> <p>If <code>WorkerType</code> is set, then <code>NumberOfWorkers</code> is required (and vice versa).</p>"
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The timeout of the task run for this transform in minutes. This is the maximum time that a task run for this transform can consume resources before it is terminated and enters <code>TIMEOUT</code> status. The default is 2,880 minutes (48 hours).</p>"
        },
        "MaxRetries":{
          "shape":"NullableInteger",
          "documentation":"<p>The maximum number of times to retry a task for this transform after a task run fails.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>The tags to use with this machine learning transform. You may use tags to limit access to the machine learning transform. For more information about tags in Glue, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html\">Amazon Web Services Tags in Glue</a> in the developer guide.</p>"
        },
        "TransformEncryption":{
          "shape":"TransformEncryption",
          "documentation":"<p>The encryption-at-rest settings of the transform that apply to accessing user data. Machine learning transforms can access user data encrypted in Amazon S3 using KMS.</p>"
        }
      }
    },
    "CreateMLTransformResponse":{
      "type":"structure",
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>A unique identifier that is generated for the transform.</p>"
        }
      }
    },
    "CreatePartitionIndexRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "PartitionIndex"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The catalog ID where the table resides.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>Specifies the name of a database in which you want to create a partition index.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>Specifies the name of a table in which you want to create a partition index.</p>"
        },
        "PartitionIndex":{
          "shape":"PartitionIndex",
          "documentation":"<p>Specifies a <code>PartitionIndex</code> structure to create a partition index in an existing table.</p>"
        }
      }
    },
    "CreatePartitionIndexResponse":{
      "type":"structure",
      "members":{
      }
    },
    "CreatePartitionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "PartitionInput"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The Amazon Web Services account ID of the catalog in which the partition is to be created.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the metadata database in which the partition is to be created.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the metadata table in which the partition is to be created.</p>"
        },
        "PartitionInput":{
          "shape":"PartitionInput",
          "documentation":"<p>A <code>PartitionInput</code> structure defining the partition to be created.</p>"
        }
      }
    },
    "CreatePartitionResponse":{
      "type":"structure",
      "members":{
      }
    },
    "CreateRegistryInput":{
      "type":"structure",
      "required":["RegistryName"],
      "members":{
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>Name of the registry to be created of max length of 255, and may only contain letters, numbers, hyphen, underscore, dollar sign, or hash mark. No whitespace.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the registry. If description is not provided, there will not be any default value for this.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>Amazon Web Services tags that contain a key value pair and may be searched by console, command line, or API.</p>"
        }
      }
    },
    "CreateRegistryResponse":{
      "type":"structure",
      "members":{
        "RegistryArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the newly created registry.</p>"
        },
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the registry.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the registry.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>The tags for the registry.</p>"
        }
      }
    },
    "CreateSchemaInput":{
      "type":"structure",
      "required":[
        "SchemaName",
        "DataFormat"
      ],
      "members":{
        "RegistryId":{
          "shape":"RegistryId",
          "documentation":"<p> This is a wrapper shape to contain the registry identity fields. If this is not provided, the default registry will be used. The ARN format for the same will be: <code>arn:aws:glue:us-east-2:&lt;customer id&gt;:registry/default-registry:random-5-letter-id</code>.</p>"
        },
        "SchemaName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>Name of the schema to be created of max length of 255, and may only contain letters, numbers, hyphen, underscore, dollar sign, or hash mark. No whitespace.</p>"
        },
        "DataFormat":{
          "shape":"DataFormat",
          "documentation":"<p>The data format of the schema definition. Currently <code>AVRO</code>, <code>JSON</code> and <code>PROTOBUF</code> are supported.</p>"
        },
        "Compatibility":{
          "shape":"Compatibility",
          "documentation":"<p>The compatibility mode of the schema. The possible values are:</p> <ul> <li> <p> <i>NONE</i>: No compatibility mode applies. You can use this choice in development scenarios or if you do not know the compatibility mode that you want to apply to schemas. Any new version added will be accepted without undergoing a compatibility check.</p> </li> <li> <p> <i>DISABLED</i>: This compatibility choice prevents versioning for a particular schema. You can use this choice to prevent future versioning of a schema.</p> </li> <li> <p> <i>BACKWARD</i>: This compatibility choice is recommended as it allows data receivers to read both the current and one previous schema version. This means that for instance, a new schema version cannot drop data fields or change the type of these fields, so they can't be read by readers using the previous version.</p> </li> <li> <p> <i>BACKWARD_ALL</i>: This compatibility choice allows data receivers to read both the current and all previous schema versions. You can use this choice when you need to delete fields or add optional fields, and check compatibility against all previous schema versions. </p> </li> <li> <p> <i>FORWARD</i>: This compatibility choice allows data receivers to read both the current and one next schema version, but not necessarily later versions. You can use this choice when you need to add fields or delete optional fields, but only check compatibility against the last schema version.</p> </li> <li> <p> <i>FORWARD_ALL</i>: This compatibility choice allows data receivers to read written by producers of any new registered schema. You can use this choice when you need to add fields or delete optional fields, and check compatibility against all previous schema versions.</p> </li> <li> <p> <i>FULL</i>: This compatibility choice allows data receivers to read data written by producers using the previous or next version of the schema, but not necessarily earlier or later versions. You can use this choice when you need to add or remove optional fields, but only check compatibility against the last schema version.</p> </li> <li> <p> <i>FULL_ALL</i>: This compatibility choice allows data receivers to read data written by producers using all previous schema versions. You can use this choice when you need to add or remove optional fields, and check compatibility against all previous schema versions.</p> </li> </ul>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>An optional description of the schema. If description is not provided, there will not be any automatic default value for this.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>Amazon Web Services tags that contain a key value pair and may be searched by console, command line, or API. If specified, follows the Amazon Web Services tags-on-create pattern.</p>"
        },
        "SchemaDefinition":{
          "shape":"SchemaDefinitionString",
          "documentation":"<p>The schema definition using the <code>DataFormat</code> setting for <code>SchemaName</code>.</p>"
        }
      }
    },
    "CreateSchemaResponse":{
      "type":"structure",
      "members":{
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the registry.</p>"
        },
        "RegistryArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the registry.</p>"
        },
        "SchemaName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the schema.</p>"
        },
        "SchemaArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the schema.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the schema if specified when created.</p>"
        },
        "DataFormat":{
          "shape":"DataFormat",
          "documentation":"<p>The data format of the schema definition. Currently <code>AVRO</code>, <code>JSON</code> and <code>PROTOBUF</code> are supported.</p>"
        },
        "Compatibility":{
          "shape":"Compatibility",
          "documentation":"<p>The schema compatibility mode.</p>"
        },
        "SchemaCheckpoint":{
          "shape":"SchemaCheckpointNumber",
          "documentation":"<p>The version number of the checkpoint (the last time the compatibility mode was changed).</p>"
        },
        "LatestSchemaVersion":{
          "shape":"VersionLongNumber",
          "documentation":"<p>The latest version of the schema associated with the returned schema definition.</p>"
        },
        "NextSchemaVersion":{
          "shape":"VersionLongNumber",
          "documentation":"<p>The next version of the schema associated with the returned schema definition.</p>"
        },
        "SchemaStatus":{
          "shape":"SchemaStatus",
          "documentation":"<p>The status of the schema. </p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>The tags for the schema.</p>"
        },
        "SchemaVersionId":{
          "shape":"SchemaVersionIdString",
          "documentation":"<p>The unique identifier of the first schema version.</p>"
        },
        "SchemaVersionStatus":{
          "shape":"SchemaVersionStatus",
          "documentation":"<p>The status of the first schema version created.</p>"
        }
      }
    },
    "CreateScriptRequest":{
      "type":"structure",
      "members":{
        "DagNodes":{
          "shape":"DagNodes",
          "documentation":"<p>A list of the nodes in the DAG.</p>"
        },
        "DagEdges":{
          "shape":"DagEdges",
          "documentation":"<p>A list of the edges in the DAG.</p>"
        },
        "Language":{
          "shape":"Language",
          "documentation":"<p>The programming language of the resulting code from the DAG.</p>"
        }
      }
    },
    "CreateScriptResponse":{
      "type":"structure",
      "members":{
        "PythonScript":{
          "shape":"PythonScript",
          "documentation":"<p>The Python script generated from the DAG.</p>"
        },
        "ScalaCode":{
          "shape":"ScalaCode",
          "documentation":"<p>The Scala code generated from the DAG.</p>"
        }
      }
    },
    "CreateSecurityConfigurationRequest":{
      "type":"structure",
      "required":[
        "Name",
        "EncryptionConfiguration"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name for the new security configuration.</p>"
        },
        "EncryptionConfiguration":{
          "shape":"EncryptionConfiguration",
          "documentation":"<p>The encryption configuration for the new security configuration.</p>"
        }
      }
    },
    "CreateSecurityConfigurationResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name assigned to the new security configuration.</p>"
        },
        "CreatedTimestamp":{
          "shape":"TimestampValue",
          "documentation":"<p>The time at which the new security configuration was created.</p>"
        }
      }
    },
    "CreateSessionRequest":{
      "type":"structure",
      "required":[
        "Id",
        "Role",
        "Command"
      ],
      "members":{
        "Id":{
          "shape":"NameString",
          "documentation":"<p>The ID of the session request. </p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>The description of the session. </p>"
        },
        "Role":{
          "shape":"OrchestrationRoleArn",
          "documentation":"<p>The IAM Role ARN </p>"
        },
        "Command":{
          "shape":"SessionCommand",
          "documentation":"<p>The <code>SessionCommand</code> that runs the job. </p>"
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p> The number of minutes before session times out. Default for Spark ETL jobs is 48 hours (2880 minutes), the maximum session lifetime for this job type. Consult the documentation for other job types. </p>"
        },
        "IdleTimeout":{
          "shape":"Timeout",
          "documentation":"<p> The number of minutes when idle before session times out. Default for Spark ETL jobs is value of Timeout. Consult the documentation for other job types. </p>"
        },
        "DefaultArguments":{
          "shape":"OrchestrationArgumentsMap",
          "documentation":"<p>A map array of key-value pairs. Max is 75 pairs. </p>"
        },
        "Connections":{
          "shape":"ConnectionsList",
          "documentation":"<p>The number of connections to use for the session. </p>"
        },
        "MaxCapacity":{
          "shape":"NullableDouble",
          "documentation":"<p>The number of Glue data processing units (DPUs) that can be allocated when the job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB memory. </p>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>WorkerType</code> to use for the session. </p>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.1X, G.2X, G.4X, or G.8X for Spark jobs. Accepts the value Z.2X for Ray notebooks.</p> <ul> <li> <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 84GB disk (approximately 34GB free), and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p> </li> <li> <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 128GB disk (approximately 77GB free), and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p> </li> <li> <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk (approximately 235GB free), and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in the following Amazon Web Services Regions: US East (Ohio), US East (N. Virginia), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (Ireland), and Europe (Stockholm).</p> </li> <li> <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk (approximately 487GB free), and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs, in the same Amazon Web Services Regions as supported for the <code>G.4X</code> worker type.</p> </li> <li> <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk (approximately 120GB free), and provides up to 8 Ray workers based on the autoscaler.</p> </li> </ul>"
        },
        "SecurityConfiguration":{
          "shape":"NameString",
          "documentation":"<p>The name of the SecurityConfiguration structure to be used with the session </p>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>The Glue version determines the versions of Apache Spark and Python that Glue supports. The GlueVersion must be greater than 2.0. </p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>The map of key value pairs (tags) belonging to the session.</p>"
        },
        "RequestOrigin":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The origin of the request. </p>"
        }
      },
      "documentation":"<p>Request to create a new session.</p>"
    },
    "CreateSessionResponse":{
      "type":"structure",
      "members":{
        "Session":{
          "shape":"Session",
          "documentation":"<p>Returns the session object in the response.</p>"
        }
      }
    },
    "CreateTableOptimizerRequest":{
      "type":"structure",
      "required":[
        "CatalogId",
        "DatabaseName",
        "TableName",
        "Type",
        "TableOptimizerConfiguration"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The Catalog ID of the table.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the database in the catalog in which the table resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table.</p>"
        },
        "Type":{
          "shape":"TableOptimizerType",
          "documentation":"<p>The type of table optimizer. Currently, the only valid value is <code>compaction</code>.</p>"
        },
        "TableOptimizerConfiguration":{
          "shape":"TableOptimizerConfiguration",
          "documentation":"<p>A <code>TableOptimizerConfiguration</code> object representing the configuration of a table optimizer.</p>"
        }
      }
    },
    "CreateTableOptimizerResponse":{
      "type":"structure",
      "members":{
      }
    },
    "CreateTableRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableInput"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which to create the <code>Table</code>. If none is supplied, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The catalog database in which to create the new table. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "TableInput":{
          "shape":"TableInput",
          "documentation":"<p>The <code>TableInput</code> object that defines the metadata table to create in the catalog.</p>"
        },
        "PartitionIndexes":{
          "shape":"PartitionIndexList",
          "documentation":"<p>A list of partition indexes, <code>PartitionIndex</code> structures, to create in the table.</p>"
        },
        "TransactionId":{
          "shape":"TransactionIdString",
          "documentation":"<p>The ID of the transaction.</p>"
        },
        "OpenTableFormatInput":{
          "shape":"OpenTableFormatInput",
          "documentation":"<p>Specifies an <code>OpenTableFormatInput</code> structure when creating an open format table.</p>"
        }
      }
    },
    "CreateTableResponse":{
      "type":"structure",
      "members":{
      }
    },
    "CreateTriggerRequest":{
      "type":"structure",
      "required":[
        "Name",
        "Type",
        "Actions"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the trigger.</p>"
        },
        "WorkflowName":{
          "shape":"NameString",
          "documentation":"<p>The name of the workflow associated with the trigger.</p>"
        },
        "Type":{
          "shape":"TriggerType",
          "documentation":"<p>The type of the new trigger.</p>"
        },
        "Schedule":{
          "shape":"GenericString",
          "documentation":"<p>A <code>cron</code> expression used to specify the schedule (see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html\">Time-Based Schedules for Jobs and Crawlers</a>. For example, to run something every day at 12:15 UTC, you would specify: <code>cron(15 12 * * ? *)</code>.</p> <p>This field is required when the trigger type is SCHEDULED.</p>"
        },
        "Predicate":{
          "shape":"Predicate",
          "documentation":"<p>A predicate to specify when the new trigger should fire.</p> <p>This field is required when the trigger type is <code>CONDITIONAL</code>.</p>"
        },
        "Actions":{
          "shape":"ActionList",
          "documentation":"<p>The actions initiated by this trigger when it fires.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the new trigger.</p>"
        },
        "StartOnCreation":{
          "shape":"BooleanValue",
          "documentation":"<p>Set to <code>true</code> to start <code>SCHEDULED</code> and <code>CONDITIONAL</code> triggers when created. True is not supported for <code>ON_DEMAND</code> triggers.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>The tags to use with this trigger. You may use tags to limit access to the trigger. For more information about tags in Glue, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html\">Amazon Web Services Tags in Glue</a> in the developer guide. </p>"
        },
        "EventBatchingCondition":{
          "shape":"EventBatchingCondition",
          "documentation":"<p>Batch condition that must be met (specified number of events received or batch time window expired) before EventBridge event trigger fires.</p>"
        }
      }
    },
    "CreateTriggerResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the trigger.</p>"
        }
      }
    },
    "CreateUserDefinedFunctionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "FunctionInput"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which to create the function. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database in which to create the function.</p>"
        },
        "FunctionInput":{
          "shape":"UserDefinedFunctionInput",
          "documentation":"<p>A <code>FunctionInput</code> object that defines the function to create in the Data Catalog.</p>"
        }
      }
    },
    "CreateUserDefinedFunctionResponse":{
      "type":"structure",
      "members":{
      }
    },
    "CreateWorkflowRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name to be assigned to the workflow. It should be unique within your account.</p>"
        },
        "Description":{
          "shape":"GenericString",
          "documentation":"<p>A description of the workflow.</p>"
        },
        "DefaultRunProperties":{
          "shape":"WorkflowRunProperties",
          "documentation":"<p>A collection of properties to be used as part of each execution of the workflow.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>The tags to be used with this workflow.</p>"
        },
        "MaxConcurrentRuns":{
          "shape":"NullableInteger",
          "documentation":"<p>You can use this parameter to prevent unwanted multiple updates to data, to control costs, or in some cases, to prevent exceeding the maximum number of concurrent runs of any of the component jobs. If you leave this parameter blank, there is no limit to the number of concurrent workflow runs.</p>"
        }
      }
    },
    "CreateWorkflowResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the workflow which was provided as part of the request.</p>"
        }
      }
    },
    "CreateXMLClassifierRequest":{
      "type":"structure",
      "required":[
        "Classification",
        "Name"
      ],
      "members":{
        "Classification":{
          "shape":"Classification",
          "documentation":"<p>An identifier of the data format that the classifier matches.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the classifier.</p>"
        },
        "RowTag":{
          "shape":"RowTag",
          "documentation":"<p>The XML tag designating the element that contains each record in an XML document being parsed. This can't identify a self-closing element (closed by <code>/&gt;</code>). An empty row element that contains only attributes can be parsed as long as it ends with a closing tag (for example, <code>&lt;row item_a=\"A\" item_b=\"B\"&gt;&lt;/row&gt;</code> is okay, but <code>&lt;row item_a=\"A\" item_b=\"B\" /&gt;</code> is not).</p>"
        }
      },
      "documentation":"<p>Specifies an XML classifier for <code>CreateClassifier</code> to create.</p>"
    },
    "CreatedTimestamp":{"type":"string"},
    "CronExpression":{"type":"string"},
    "CsvClassifier":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the classifier.</p>"
        },
        "CreationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time that this classifier was registered.</p>"
        },
        "LastUpdated":{
          "shape":"Timestamp",
          "documentation":"<p>The time that this classifier was last updated.</p>"
        },
        "Version":{
          "shape":"VersionId",
          "documentation":"<p>The version of this classifier.</p>"
        },
        "Delimiter":{
          "shape":"CsvColumnDelimiter",
          "documentation":"<p>A custom symbol to denote what separates each column entry in the row.</p>"
        },
        "QuoteSymbol":{
          "shape":"CsvQuoteSymbol",
          "documentation":"<p>A custom symbol to denote what combines content into a single column value. It must be different from the column delimiter.</p>"
        },
        "ContainsHeader":{
          "shape":"CsvHeaderOption",
          "documentation":"<p>Indicates whether the CSV file contains a header.</p>"
        },
        "Header":{
          "shape":"CsvHeader",
          "documentation":"<p>A list of strings representing column names.</p>"
        },
        "DisableValueTrimming":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies not to trim values before identifying the type of column values. The default value is <code>true</code>.</p>"
        },
        "AllowSingleColumn":{
          "shape":"NullableBoolean",
          "documentation":"<p>Enables the processing of files that contain only one column.</p>"
        },
        "CustomDatatypeConfigured":{
          "shape":"NullableBoolean",
          "documentation":"<p>Enables the custom datatype to be configured.</p>"
        },
        "CustomDatatypes":{
          "shape":"CustomDatatypes",
          "documentation":"<p>A list of custom datatypes including \"BINARY\", \"BOOLEAN\", \"DATE\", \"DECIMAL\", \"DOUBLE\", \"FLOAT\", \"INT\", \"LONG\", \"SHORT\", \"STRING\", \"TIMESTAMP\".</p>"
        },
        "Serde":{
          "shape":"CsvSerdeOption",
          "documentation":"<p>Sets the SerDe for processing CSV in the classifier, which will be applied in the Data Catalog. Valid values are <code>OpenCSVSerDe</code>, <code>LazySimpleSerDe</code>, and <code>None</code>. You can specify the <code>None</code> value when you want the crawler to do the detection.</p>"
        }
      },
      "documentation":"<p>A classifier for custom <code>CSV</code> content.</p>"
    },
    "CsvColumnDelimiter":{
      "type":"string",
      "max":1,
      "min":1,
      "pattern":"[^\\r\\n]"
    },
    "CsvHeader":{
      "type":"list",
      "member":{"shape":"NameString"}
    },
    "CsvHeaderOption":{
      "type":"string",
      "enum":[
        "UNKNOWN",
        "PRESENT",
        "ABSENT"
      ]
    },
    "CsvQuoteSymbol":{
      "type":"string",
      "max":1,
      "min":1,
      "pattern":"[^\\r\\n]"
    },
    "CsvSerdeOption":{
      "type":"string",
      "enum":[
        "OpenCSVSerDe",
        "LazySimpleSerDe",
        "None"
      ]
    },
    "CustomCode":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Code",
        "ClassName"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"ManyInputs",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "Code":{
          "shape":"ExtendedString",
          "documentation":"<p>The custom code that is used to perform the data transformation.</p>"
        },
        "ClassName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name defined for the custom code node class.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the custom code transform.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that uses custom code you provide to perform the data transformation. The output is a collection of DynamicFrames.</p>"
    },
    "CustomDatatypes":{
      "type":"list",
      "member":{"shape":"NameString"}
    },
    "CustomEntityType":{
      "type":"structure",
      "required":[
        "Name",
        "RegexString"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>A name for the custom pattern that allows it to be retrieved or deleted later. This name must be unique per Amazon Web Services account.</p>"
        },
        "RegexString":{
          "shape":"NameString",
          "documentation":"<p>A regular expression string that is used for detecting sensitive data in a custom pattern.</p>"
        },
        "ContextWords":{
          "shape":"ContextWords",
          "documentation":"<p>A list of context words. If none of these context words are found within the vicinity of the regular expression the data will not be detected as sensitive data.</p> <p>If no context words are passed only a regular expression is checked.</p>"
        }
      },
      "documentation":"<p>An object representing a custom pattern for detecting sensitive data across the columns and rows of your structured data.</p>"
    },
    "CustomEntityTypeNames":{
      "type":"list",
      "member":{"shape":"NameString"},
      "max":50,
      "min":1
    },
    "CustomEntityTypes":{
      "type":"list",
      "member":{"shape":"CustomEntityType"}
    },
    "CustomPatterns":{
      "type":"string",
      "max":16000,
      "min":0,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*"
    },
    "DQAdditionalOptions":{
      "type":"map",
      "key":{"shape":"AdditionalOptionKeys"},
      "value":{"shape":"GenericString"}
    },
    "DQDLAliases":{
      "type":"map",
      "key":{"shape":"NodeName"},
      "value":{"shape":"EnclosedInStringProperty"}
    },
    "DQDLString":{
      "type":"string",
      "max":65536,
      "min":1,
      "pattern":"([\\u0020-\\u007E\\r\\s\\n])*"
    },
    "DQResultsPublishingOptions":{
      "type":"structure",
      "members":{
        "EvaluationContext":{
          "shape":"GenericLimitedString",
          "documentation":"<p>The context of the evaluation.</p>"
        },
        "ResultsS3Prefix":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The Amazon S3 prefix prepended to the results.</p>"
        },
        "CloudWatchMetricsEnabled":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Enable metrics for your data quality results.</p>"
        },
        "ResultsPublishingEnabled":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Enable publishing for your data quality results.</p>"
        }
      },
      "documentation":"<p>Options to configure how your data quality evaluation results are published.</p>"
    },
    "DQStopJobOnFailureOptions":{
      "type":"structure",
      "members":{
        "StopJobOnFailureTiming":{
          "shape":"DQStopJobOnFailureTiming",
          "documentation":"<p>When to stop job if your data quality evaluation fails. Options are Immediate or AfterDataLoad.</p>"
        }
      },
      "documentation":"<p>Options to configure how your job will stop if your data quality evaluation fails.</p>"
    },
    "DQStopJobOnFailureTiming":{
      "type":"string",
      "enum":[
        "Immediate",
        "AfterDataLoad"
      ]
    },
    "DQTransformOutput":{
      "type":"string",
      "enum":[
        "PrimaryInput",
        "EvaluationResults"
      ]
    },
    "DagEdges":{
      "type":"list",
      "member":{"shape":"CodeGenEdge"}
    },
    "DagNodes":{
      "type":"list",
      "member":{"shape":"CodeGenNode"}
    },
    "DataCatalogEncryptionSettings":{
      "type":"structure",
      "members":{
        "EncryptionAtRest":{
          "shape":"EncryptionAtRest",
          "documentation":"<p>Specifies the encryption-at-rest configuration for the Data Catalog.</p>"
        },
        "ConnectionPasswordEncryption":{
          "shape":"ConnectionPasswordEncryption",
          "documentation":"<p>When connection password protection is enabled, the Data Catalog uses a customer-provided key to encrypt the password as part of <code>CreateConnection</code> or <code>UpdateConnection</code> and store it in the <code>ENCRYPTED_PASSWORD</code> field in the connection properties. You can enable catalog encryption or only password encryption.</p>"
        }
      },
      "documentation":"<p>Contains configuration information for maintaining Data Catalog security.</p>"
    },
    "DataFormat":{
      "type":"string",
      "enum":[
        "AVRO",
        "JSON",
        "PROTOBUF"
      ]
    },
    "DataLakePrincipal":{
      "type":"structure",
      "members":{
        "DataLakePrincipalIdentifier":{
          "shape":"DataLakePrincipalString",
          "documentation":"<p>An identifier for the Lake Formation principal.</p>"
        }
      },
      "documentation":"<p>The Lake Formation principal.</p>"
    },
    "DataLakePrincipalString":{
      "type":"string",
      "max":255,
      "min":1
    },
    "DataQualityAnalyzerResult":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the data quality analyzer.</p>"
        },
        "Description":{
          "shape":"DataQualityRuleResultDescription",
          "documentation":"<p>A description of the data quality analyzer.</p>"
        },
        "EvaluationMessage":{
          "shape":"DataQualityRuleResultDescription",
          "documentation":"<p>An evaluation message.</p>"
        },
        "EvaluatedMetrics":{
          "shape":"EvaluatedMetricsMap",
          "documentation":"<p>A map of metrics associated with the evaluation of the analyzer.</p>"
        }
      },
      "documentation":"<p>Describes the result of the evaluation of a data quality analyzer.</p>"
    },
    "DataQualityAnalyzerResults":{
      "type":"list",
      "member":{"shape":"DataQualityAnalyzerResult"},
      "max":2000,
      "min":0
    },
    "DataQualityEvaluationRunAdditionalRunOptions":{
      "type":"structure",
      "members":{
        "CloudWatchMetricsEnabled":{
          "shape":"NullableBoolean",
          "documentation":"<p>Whether or not to enable CloudWatch metrics.</p>"
        },
        "ResultsS3Prefix":{
          "shape":"UriString",
          "documentation":"<p>Prefix for Amazon S3 to store results.</p>"
        }
      },
      "documentation":"<p>Additional run options you can specify for an evaluation run.</p>"
    },
    "DataQualityMetricValues":{
      "type":"structure",
      "members":{
        "ActualValue":{
          "shape":"NullableDouble",
          "documentation":"<p>The actual value of the data quality metric.</p>"
        },
        "ExpectedValue":{
          "shape":"NullableDouble",
          "documentation":"<p>The expected value of the data quality metric according to the analysis of historical data.</p>"
        },
        "LowerLimit":{
          "shape":"NullableDouble",
          "documentation":"<p>The lower limit of the data quality metric value according to the analysis of historical data.</p>"
        },
        "UpperLimit":{
          "shape":"NullableDouble",
          "documentation":"<p>The upper limit of the data quality metric value according to the analysis of historical data.</p>"
        }
      },
      "documentation":"<p>Describes the data quality metric value according to the analysis of historical data.</p>"
    },
    "DataQualityObservation":{
      "type":"structure",
      "members":{
        "Description":{
          "shape":"DataQualityObservationDescription",
          "documentation":"<p>A description of the data quality observation.</p>"
        },
        "MetricBasedObservation":{
          "shape":"MetricBasedObservation",
          "documentation":"<p>An object of type <code>MetricBasedObservation</code> representing the observation that is based on evaluated data quality metrics.</p>"
        }
      },
      "documentation":"<p>Describes the observation generated after evaluating the rules and analyzers.</p>"
    },
    "DataQualityObservationDescription":{
      "type":"string",
      "max":2048,
      "min":0,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*"
    },
    "DataQualityObservations":{
      "type":"list",
      "member":{"shape":"DataQualityObservation"},
      "max":50,
      "min":0
    },
    "DataQualityResult":{
      "type":"structure",
      "members":{
        "ResultId":{
          "shape":"HashString",
          "documentation":"<p>A unique result ID for the data quality result.</p>"
        },
        "Score":{
          "shape":"GenericBoundedDouble",
          "documentation":"<p>An aggregate data quality score. Represents the ratio of rules that passed to the total number of rules.</p>"
        },
        "DataSource":{
          "shape":"DataSource",
          "documentation":"<p>The table associated with the data quality result, if any.</p>"
        },
        "RulesetName":{
          "shape":"NameString",
          "documentation":"<p>The name of the ruleset associated with the data quality result.</p>"
        },
        "EvaluationContext":{
          "shape":"GenericString",
          "documentation":"<p>In the context of a job in Glue Studio, each node in the canvas is typically assigned some sort of name and data quality nodes will have names. In the case of multiple nodes, the <code>evaluationContext</code> can differentiate the nodes.</p>"
        },
        "StartedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when this data quality run started.</p>"
        },
        "CompletedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when this data quality run completed.</p>"
        },
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The job name associated with the data quality result, if any.</p>"
        },
        "JobRunId":{
          "shape":"HashString",
          "documentation":"<p>The job run ID associated with the data quality result, if any.</p>"
        },
        "RulesetEvaluationRunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run ID for the ruleset evaluation for this data quality result.</p>"
        },
        "RuleResults":{
          "shape":"DataQualityRuleResults",
          "documentation":"<p>A list of <code>DataQualityRuleResult</code> objects representing the results for each rule. </p>"
        },
        "AnalyzerResults":{
          "shape":"DataQualityAnalyzerResults",
          "documentation":"<p>A list of <code>DataQualityAnalyzerResult</code> objects representing the results for each analyzer. </p>"
        },
        "Observations":{
          "shape":"DataQualityObservations",
          "documentation":"<p>A list of <code>DataQualityObservation</code> objects representing the observations generated after evaluating the rules and analyzers. </p>"
        }
      },
      "documentation":"<p>Describes a data quality result.</p>"
    },
    "DataQualityResultDescription":{
      "type":"structure",
      "members":{
        "ResultId":{
          "shape":"HashString",
          "documentation":"<p>The unique result ID for this data quality result.</p>"
        },
        "DataSource":{
          "shape":"DataSource",
          "documentation":"<p>The table name associated with the data quality result.</p>"
        },
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The job name associated with the data quality result.</p>"
        },
        "JobRunId":{
          "shape":"HashString",
          "documentation":"<p>The job run ID associated with the data quality result.</p>"
        },
        "StartedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The time that the run started for this data quality result.</p>"
        }
      },
      "documentation":"<p>Describes a data quality result.</p>"
    },
    "DataQualityResultDescriptionList":{
      "type":"list",
      "member":{"shape":"DataQualityResultDescription"}
    },
    "DataQualityResultFilterCriteria":{
      "type":"structure",
      "members":{
        "DataSource":{
          "shape":"DataSource",
          "documentation":"<p>Filter results by the specified data source. For example, retrieving all results for an Glue table.</p>"
        },
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>Filter results by the specified job name.</p>"
        },
        "JobRunId":{
          "shape":"HashString",
          "documentation":"<p>Filter results by the specified job run ID.</p>"
        },
        "StartedAfter":{
          "shape":"Timestamp",
          "documentation":"<p>Filter results by runs that started after this time.</p>"
        },
        "StartedBefore":{
          "shape":"Timestamp",
          "documentation":"<p>Filter results by runs that started before this time.</p>"
        }
      },
      "documentation":"<p>Criteria used to return data quality results.</p>"
    },
    "DataQualityResultIdList":{
      "type":"list",
      "member":{"shape":"HashString"},
      "max":10,
      "min":1
    },
    "DataQualityResultIds":{
      "type":"list",
      "member":{"shape":"HashString"},
      "max":100,
      "min":1
    },
    "DataQualityResultsList":{
      "type":"list",
      "member":{"shape":"DataQualityResult"}
    },
    "DataQualityRuleRecommendationRunDescription":{
      "type":"structure",
      "members":{
        "RunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run identifier associated with this run.</p>"
        },
        "Status":{
          "shape":"TaskStatusType",
          "documentation":"<p>The status for this run.</p>"
        },
        "StartedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when this run started.</p>"
        },
        "DataSource":{
          "shape":"DataSource",
          "documentation":"<p>The data source (Glue table) associated with the recommendation run.</p>"
        }
      },
      "documentation":"<p>Describes the result of a data quality rule recommendation run.</p>"
    },
    "DataQualityRuleRecommendationRunFilter":{
      "type":"structure",
      "required":["DataSource"],
      "members":{
        "DataSource":{
          "shape":"DataSource",
          "documentation":"<p>Filter based on a specified data source (Glue table).</p>"
        },
        "StartedBefore":{
          "shape":"Timestamp",
          "documentation":"<p>Filter based on time for results started before provided time.</p>"
        },
        "StartedAfter":{
          "shape":"Timestamp",
          "documentation":"<p>Filter based on time for results started after provided time.</p>"
        }
      },
      "documentation":"<p>A filter for listing data quality recommendation runs.</p>"
    },
    "DataQualityRuleRecommendationRunList":{
      "type":"list",
      "member":{"shape":"DataQualityRuleRecommendationRunDescription"}
    },
    "DataQualityRuleResult":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the data quality rule.</p>"
        },
        "Description":{
          "shape":"DataQualityRuleResultDescription",
          "documentation":"<p>A description of the data quality rule.</p>"
        },
        "EvaluationMessage":{
          "shape":"DataQualityRuleResultDescription",
          "documentation":"<p>An evaluation message.</p>"
        },
        "Result":{
          "shape":"DataQualityRuleResultStatus",
          "documentation":"<p>A pass or fail status for the rule.</p>"
        },
        "EvaluatedMetrics":{
          "shape":"EvaluatedMetricsMap",
          "documentation":"<p>A map of metrics associated with the evaluation of the rule.</p>"
        }
      },
      "documentation":"<p>Describes the result of the evaluation of a data quality rule.</p>"
    },
    "DataQualityRuleResultDescription":{
      "type":"string",
      "max":2048,
      "min":0,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*"
    },
    "DataQualityRuleResultStatus":{
      "type":"string",
      "enum":[
        "PASS",
        "FAIL",
        "ERROR"
      ]
    },
    "DataQualityRuleResults":{
      "type":"list",
      "member":{"shape":"DataQualityRuleResult"},
      "max":2000,
      "min":0
    },
    "DataQualityRulesetEvaluationRunDescription":{
      "type":"structure",
      "members":{
        "RunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run identifier associated with this run.</p>"
        },
        "Status":{
          "shape":"TaskStatusType",
          "documentation":"<p>The status for this run.</p>"
        },
        "StartedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the run started.</p>"
        },
        "DataSource":{
          "shape":"DataSource",
          "documentation":"<p>The data source (an Glue table) associated with the run.</p>"
        }
      },
      "documentation":"<p>Describes the result of a data quality ruleset evaluation run.</p>"
    },
    "DataQualityRulesetEvaluationRunFilter":{
      "type":"structure",
      "required":["DataSource"],
      "members":{
        "DataSource":{
          "shape":"DataSource",
          "documentation":"<p>Filter based on a data source (an Glue table) associated with the run.</p>"
        },
        "StartedBefore":{
          "shape":"Timestamp",
          "documentation":"<p>Filter results by runs that started before this time.</p>"
        },
        "StartedAfter":{
          "shape":"Timestamp",
          "documentation":"<p>Filter results by runs that started after this time.</p>"
        }
      },
      "documentation":"<p>The filter criteria.</p>"
    },
    "DataQualityRulesetEvaluationRunList":{
      "type":"list",
      "member":{"shape":"DataQualityRulesetEvaluationRunDescription"}
    },
    "DataQualityRulesetFilterCriteria":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the ruleset filter criteria.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>The description of the ruleset filter criteria.</p>"
        },
        "CreatedBefore":{
          "shape":"Timestamp",
          "documentation":"<p>Filter on rulesets created before this date.</p>"
        },
        "CreatedAfter":{
          "shape":"Timestamp",
          "documentation":"<p>Filter on rulesets created after this date.</p>"
        },
        "LastModifiedBefore":{
          "shape":"Timestamp",
          "documentation":"<p>Filter on rulesets last modified before this date.</p>"
        },
        "LastModifiedAfter":{
          "shape":"Timestamp",
          "documentation":"<p>Filter on rulesets last modified after this date.</p>"
        },
        "TargetTable":{
          "shape":"DataQualityTargetTable",
          "documentation":"<p>The name and database name of the target table.</p>"
        }
      },
      "documentation":"<p>The criteria used to filter data quality rulesets.</p>"
    },
    "DataQualityRulesetList":{
      "type":"list",
      "member":{"shape":"DataQualityRulesetListDetails"}
    },
    "DataQualityRulesetListDetails":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the data quality ruleset.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the data quality ruleset.</p>"
        },
        "CreatedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time the data quality ruleset was created.</p>"
        },
        "LastModifiedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time the data quality ruleset was last modified.</p>"
        },
        "TargetTable":{
          "shape":"DataQualityTargetTable",
          "documentation":"<p>An object representing an Glue table.</p>"
        },
        "RecommendationRunId":{
          "shape":"HashString",
          "documentation":"<p>When a ruleset was created from a recommendation run, this run ID is generated to link the two together.</p>"
        },
        "RuleCount":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of rules in the ruleset.</p>"
        }
      },
      "documentation":"<p>Describes a data quality ruleset returned by <code>GetDataQualityRuleset</code>.</p>"
    },
    "DataQualityRulesetString":{
      "type":"string",
      "max":65536,
      "min":1
    },
    "DataQualityTargetTable":{
      "type":"structure",
      "required":[
        "TableName",
        "DatabaseName"
      ],
      "members":{
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the Glue table.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the database where the Glue table exists.</p>"
        },
        "CatalogId":{
          "shape":"NameString",
          "documentation":"<p>The catalog id where the Glue table exists.</p>"
        }
      },
      "documentation":"<p>An object representing an Glue table.</p>"
    },
    "DataSource":{
      "type":"structure",
      "required":["GlueTable"],
      "members":{
        "GlueTable":{
          "shape":"GlueTable",
          "documentation":"<p>An Glue table.</p>"
        }
      },
      "documentation":"<p>A data source (an Glue table) for which you want data quality results.</p>"
    },
    "DataSourceMap":{
      "type":"map",
      "key":{"shape":"NameString"},
      "value":{"shape":"DataSource"}
    },
    "Database":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the database. For Hive compatibility, this is folded to lowercase when it is stored.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the database.</p>"
        },
        "LocationUri":{
          "shape":"URI",
          "documentation":"<p>The location of the database (for example, an HDFS path).</p>"
        },
        "Parameters":{
          "shape":"ParametersMap",
          "documentation":"<p>These key-value pairs define parameters and properties of the database.</p>"
        },
        "CreateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time at which the metadata database was created in the catalog.</p>"
        },
        "CreateTableDefaultPermissions":{
          "shape":"PrincipalPermissionsList",
          "documentation":"<p>Creates a set of default permissions on the table for principals. Used by Lake Formation. Not used in the normal course of Glue operations.</p>"
        },
        "TargetDatabase":{
          "shape":"DatabaseIdentifier",
          "documentation":"<p>A <code>DatabaseIdentifier</code> structure that describes a target database for resource linking.</p>"
        },
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the database resides.</p>"
        },
        "FederatedDatabase":{
          "shape":"FederatedDatabase",
          "documentation":"<p>A <code>FederatedDatabase</code> structure that references an entity outside the Glue Data Catalog.</p>"
        }
      },
      "documentation":"<p>The <code>Database</code> object represents a logical grouping of tables that might reside in a Hive metastore or an RDBMS.</p>"
    },
    "DatabaseIdentifier":{
      "type":"structure",
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the database resides.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database.</p>"
        },
        "Region":{
          "shape":"NameString",
          "documentation":"<p>Region of the target database.</p>"
        }
      },
      "documentation":"<p>A structure that describes a target database for resource linking.</p>"
    },
    "DatabaseInput":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the database. For Hive compatibility, this is folded to lowercase when it is stored.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the database.</p>"
        },
        "LocationUri":{
          "shape":"URI",
          "documentation":"<p>The location of the database (for example, an HDFS path). </p>"
        },
        "Parameters":{
          "shape":"ParametersMap",
          "documentation":"<p>These key-value pairs define parameters and properties of the database.</p> <p>These key-value pairs define parameters and properties of the database.</p>"
        },
        "CreateTableDefaultPermissions":{
          "shape":"PrincipalPermissionsList",
          "documentation":"<p>Creates a set of default permissions on the table for principals. Used by Lake Formation. Not used in the normal course of Glue operations.</p>"
        },
        "TargetDatabase":{
          "shape":"DatabaseIdentifier",
          "documentation":"<p>A <code>DatabaseIdentifier</code> structure that describes a target database for resource linking.</p>"
        },
        "FederatedDatabase":{
          "shape":"FederatedDatabase",
          "documentation":"<p>A <code>FederatedDatabase</code> structure that references an entity outside the Glue Data Catalog.</p>"
        }
      },
      "documentation":"<p>The structure used to create or update a database.</p>"
    },
    "DatabaseList":{
      "type":"list",
      "member":{"shape":"Database"}
    },
    "DatabaseName":{"type":"string"},
    "Datatype":{
      "type":"structure",
      "required":[
        "Id",
        "Label"
      ],
      "members":{
        "Id":{
          "shape":"GenericLimitedString",
          "documentation":"<p>The datatype of the value.</p>"
        },
        "Label":{
          "shape":"GenericLimitedString",
          "documentation":"<p>A label assigned to the datatype.</p>"
        }
      },
      "documentation":"<p>A structure representing the datatype of the value.</p>"
    },
    "DateColumnStatisticsData":{
      "type":"structure",
      "required":[
        "NumberOfNulls",
        "NumberOfDistinctValues"
      ],
      "members":{
        "MinimumValue":{
          "shape":"Timestamp",
          "documentation":"<p>The lowest value in the column.</p>"
        },
        "MaximumValue":{
          "shape":"Timestamp",
          "documentation":"<p>The highest value in the column.</p>"
        },
        "NumberOfNulls":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of null values in the column.</p>"
        },
        "NumberOfDistinctValues":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of distinct values in a column.</p>"
        }
      },
      "documentation":"<p>Defines column statistics supported for timestamp data columns.</p>"
    },
    "DecimalColumnStatisticsData":{
      "type":"structure",
      "required":[
        "NumberOfNulls",
        "NumberOfDistinctValues"
      ],
      "members":{
        "MinimumValue":{
          "shape":"DecimalNumber",
          "documentation":"<p>The lowest value in the column.</p>"
        },
        "MaximumValue":{
          "shape":"DecimalNumber",
          "documentation":"<p>The highest value in the column.</p>"
        },
        "NumberOfNulls":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of null values in the column.</p>"
        },
        "NumberOfDistinctValues":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of distinct values in a column.</p>"
        }
      },
      "documentation":"<p>Defines column statistics supported for fixed-point number data columns.</p>"
    },
    "DecimalNumber":{
      "type":"structure",
      "required":[
        "UnscaledValue",
        "Scale"
      ],
      "members":{
        "UnscaledValue":{
          "shape":"Blob",
          "documentation":"<p>The unscaled numeric value.</p>"
        },
        "Scale":{
          "shape":"Integer",
          "documentation":"<p>The scale that determines where the decimal point falls in the unscaled value.</p>"
        }
      },
      "documentation":"<p>Contains a numeric value in decimal format.</p>"
    },
    "DeleteBehavior":{
      "type":"string",
      "enum":[
        "LOG",
        "DELETE_FROM_DATABASE",
        "DEPRECATE_IN_DATABASE"
      ]
    },
    "DeleteBlueprintRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the blueprint to delete.</p>"
        }
      }
    },
    "DeleteBlueprintResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Returns the name of the blueprint that was deleted.</p>"
        }
      }
    },
    "DeleteClassifierRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the classifier to remove.</p>"
        }
      }
    },
    "DeleteClassifierResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteColumnStatisticsForPartitionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "PartitionValues",
        "ColumnName"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the partitions in question reside. If none is supplied, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the partitions reside.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the partitions' table.</p>"
        },
        "PartitionValues":{
          "shape":"ValueStringList",
          "documentation":"<p>A list of partition values identifying the partition.</p>"
        },
        "ColumnName":{
          "shape":"NameString",
          "documentation":"<p>Name of the column.</p>"
        }
      }
    },
    "DeleteColumnStatisticsForPartitionResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteColumnStatisticsForTableRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "ColumnName"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the partitions in question reside. If none is supplied, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the partitions reside.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the partitions' table.</p>"
        },
        "ColumnName":{
          "shape":"NameString",
          "documentation":"<p>The name of the column.</p>"
        }
      }
    },
    "DeleteColumnStatisticsForTableResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteConnectionNameList":{
      "type":"list",
      "member":{"shape":"NameString"},
      "max":25,
      "min":0
    },
    "DeleteConnectionRequest":{
      "type":"structure",
      "required":["ConnectionName"],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the connection resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "ConnectionName":{
          "shape":"NameString",
          "documentation":"<p>The name of the connection to delete.</p>"
        }
      }
    },
    "DeleteConnectionResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteCrawlerRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the crawler to remove.</p>"
        }
      }
    },
    "DeleteCrawlerResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteCustomEntityTypeRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the custom pattern that you want to delete.</p>"
        }
      }
    },
    "DeleteCustomEntityTypeResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the custom pattern you deleted.</p>"
        }
      }
    },
    "DeleteDataQualityRulesetRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>A name for the data quality ruleset.</p>"
        }
      }
    },
    "DeleteDataQualityRulesetResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteDatabaseRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the database resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the database to delete. For Hive compatibility, this must be all lowercase.</p>"
        }
      }
    },
    "DeleteDatabaseResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteDevEndpointRequest":{
      "type":"structure",
      "required":["EndpointName"],
      "members":{
        "EndpointName":{
          "shape":"GenericString",
          "documentation":"<p>The name of the <code>DevEndpoint</code>.</p>"
        }
      }
    },
    "DeleteDevEndpointResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteJobRequest":{
      "type":"structure",
      "required":["JobName"],
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the job definition to delete.</p>"
        }
      }
    },
    "DeleteJobResponse":{
      "type":"structure",
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the job definition that was deleted.</p>"
        }
      }
    },
    "DeleteMLTransformRequest":{
      "type":"structure",
      "required":["TransformId"],
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the transform to delete.</p>"
        }
      }
    },
    "DeleteMLTransformResponse":{
      "type":"structure",
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the transform that was deleted.</p>"
        }
      }
    },
    "DeletePartitionIndexRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "IndexName"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The catalog ID where the table resides.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>Specifies the name of a database from which you want to delete a partition index.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>Specifies the name of a table from which you want to delete a partition index.</p>"
        },
        "IndexName":{
          "shape":"NameString",
          "documentation":"<p>The name of the partition index to be deleted.</p>"
        }
      }
    },
    "DeletePartitionIndexResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeletePartitionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "PartitionValues"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the partition to be deleted resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database in which the table in question resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table that contains the partition to be deleted.</p>"
        },
        "PartitionValues":{
          "shape":"ValueStringList",
          "documentation":"<p>The values that define the partition.</p>"
        }
      }
    },
    "DeletePartitionResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteRegistryInput":{
      "type":"structure",
      "required":["RegistryId"],
      "members":{
        "RegistryId":{
          "shape":"RegistryId",
          "documentation":"<p>This is a wrapper structure that may contain the registry name and Amazon Resource Name (ARN).</p>"
        }
      }
    },
    "DeleteRegistryResponse":{
      "type":"structure",
      "members":{
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the registry being deleted.</p>"
        },
        "RegistryArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the registry being deleted.</p>"
        },
        "Status":{
          "shape":"RegistryStatus",
          "documentation":"<p>The status of the registry. A successful operation will return the <code>Deleting</code> status.</p>"
        }
      }
    },
    "DeleteResourcePolicyRequest":{
      "type":"structure",
      "members":{
        "PolicyHashCondition":{
          "shape":"HashString",
          "documentation":"<p>The hash value returned when this policy was set.</p>"
        },
        "ResourceArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The ARN of the Glue resource for the resource policy to be deleted.</p>"
        }
      }
    },
    "DeleteResourcePolicyResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteSchemaInput":{
      "type":"structure",
      "required":["SchemaId"],
      "members":{
        "SchemaId":{
          "shape":"SchemaId",
          "documentation":"<p>This is a wrapper structure that may contain the schema name and Amazon Resource Name (ARN).</p>"
        }
      }
    },
    "DeleteSchemaResponse":{
      "type":"structure",
      "members":{
        "SchemaArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the schema being deleted.</p>"
        },
        "SchemaName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the schema being deleted.</p>"
        },
        "Status":{
          "shape":"SchemaStatus",
          "documentation":"<p>The status of the schema.</p>"
        }
      }
    },
    "DeleteSchemaVersionsInput":{
      "type":"structure",
      "required":[
        "SchemaId",
        "Versions"
      ],
      "members":{
        "SchemaId":{
          "shape":"SchemaId",
          "documentation":"<p>This is a wrapper structure that may contain the schema name and Amazon Resource Name (ARN).</p>"
        },
        "Versions":{
          "shape":"VersionsString",
          "documentation":"<p>A version range may be supplied which may be of the format:</p> <ul> <li> <p>a single version number, 5</p> </li> <li> <p>a range, 5-8 : deletes versions 5, 6, 7, 8</p> </li> </ul>"
        }
      }
    },
    "DeleteSchemaVersionsResponse":{
      "type":"structure",
      "members":{
        "SchemaVersionErrors":{
          "shape":"SchemaVersionErrorList",
          "documentation":"<p>A list of <code>SchemaVersionErrorItem</code> objects, each containing an error and schema version.</p>"
        }
      }
    },
    "DeleteSecurityConfigurationRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the security configuration to delete.</p>"
        }
      }
    },
    "DeleteSecurityConfigurationResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteSessionRequest":{
      "type":"structure",
      "required":["Id"],
      "members":{
        "Id":{
          "shape":"NameString",
          "documentation":"<p>The ID of the session to be deleted.</p>"
        },
        "RequestOrigin":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The name of the origin of the delete session request.</p>"
        }
      }
    },
    "DeleteSessionResponse":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"NameString",
          "documentation":"<p>Returns the ID of the deleted session.</p>"
        }
      }
    },
    "DeleteTableOptimizerRequest":{
      "type":"structure",
      "required":[
        "CatalogId",
        "DatabaseName",
        "TableName",
        "Type"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The Catalog ID of the table.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the database in the catalog in which the table resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table.</p>"
        },
        "Type":{
          "shape":"TableOptimizerType",
          "documentation":"<p>The type of table optimizer.</p>"
        }
      }
    },
    "DeleteTableOptimizerResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteTableRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "Name"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the table resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database in which the table resides. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the table to be deleted. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "TransactionId":{
          "shape":"TransactionIdString",
          "documentation":"<p>The transaction ID at which to delete the table contents.</p>"
        }
      }
    },
    "DeleteTableResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteTableVersionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "VersionId"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the tables reside. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The database in the catalog in which the table resides. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "VersionId":{
          "shape":"VersionString",
          "documentation":"<p>The ID of the table version to be deleted. A <code>VersionID</code> is a string representation of an integer. Each version is incremented by 1.</p>"
        }
      }
    },
    "DeleteTableVersionResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteTriggerRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the trigger to delete.</p>"
        }
      }
    },
    "DeleteTriggerResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the trigger that was deleted.</p>"
        }
      }
    },
    "DeleteUserDefinedFunctionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "FunctionName"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the function to be deleted is located. If none is supplied, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the function is located.</p>"
        },
        "FunctionName":{
          "shape":"NameString",
          "documentation":"<p>The name of the function definition to be deleted.</p>"
        }
      }
    },
    "DeleteUserDefinedFunctionResponse":{
      "type":"structure",
      "members":{
      }
    },
    "DeleteWorkflowRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the workflow to be deleted.</p>"
        }
      }
    },
    "DeleteWorkflowResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the workflow specified in input.</p>"
        }
      }
    },
    "DeltaTarget":{
      "type":"structure",
      "members":{
        "DeltaTables":{
          "shape":"PathList",
          "documentation":"<p>A list of the Amazon S3 paths to the Delta tables.</p>"
        },
        "ConnectionName":{
          "shape":"ConnectionName",
          "documentation":"<p>The name of the connection to use to connect to the Delta table target.</p>"
        },
        "WriteManifest":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies whether to write the manifest files to the Delta table path.</p>"
        },
        "CreateNativeDeltaTable":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies whether the crawler will create native tables, to allow integration with query engines that support querying of the Delta transaction log directly.</p>"
        }
      },
      "documentation":"<p>Specifies a Delta data store to crawl one or more Delta tables.</p>"
    },
    "DeltaTargetCompressionType":{
      "type":"string",
      "enum":[
        "uncompressed",
        "snappy"
      ]
    },
    "DeltaTargetList":{
      "type":"list",
      "member":{"shape":"DeltaTarget"}
    },
    "DescriptionString":{
      "type":"string",
      "max":2048,
      "min":0,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*"
    },
    "DescriptionStringRemovable":{
      "type":"string",
      "max":2048,
      "min":0,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*"
    },
    "DevEndpoint":{
      "type":"structure",
      "members":{
        "EndpointName":{
          "shape":"GenericString",
          "documentation":"<p>The name of the <code>DevEndpoint</code>.</p>"
        },
        "RoleArn":{
          "shape":"RoleArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the IAM role used in this <code>DevEndpoint</code>.</p>"
        },
        "SecurityGroupIds":{
          "shape":"StringList",
          "documentation":"<p>A list of security group identifiers used in this <code>DevEndpoint</code>.</p>"
        },
        "SubnetId":{
          "shape":"GenericString",
          "documentation":"<p>The subnet ID for this <code>DevEndpoint</code>.</p>"
        },
        "YarnEndpointAddress":{
          "shape":"GenericString",
          "documentation":"<p>The YARN endpoint address used by this <code>DevEndpoint</code>.</p>"
        },
        "PrivateAddress":{
          "shape":"GenericString",
          "documentation":"<p>A private IP address to access the <code>DevEndpoint</code> within a VPC if the <code>DevEndpoint</code> is created within one. The <code>PrivateAddress</code> field is present only when you create the <code>DevEndpoint</code> within your VPC.</p>"
        },
        "ZeppelinRemoteSparkInterpreterPort":{
          "shape":"IntegerValue",
          "documentation":"<p>The Apache Zeppelin port for the remote Apache Spark interpreter.</p>"
        },
        "PublicAddress":{
          "shape":"GenericString",
          "documentation":"<p>The public IP address used by this <code>DevEndpoint</code>. The <code>PublicAddress</code> field is present only when you create a non-virtual private cloud (VPC) <code>DevEndpoint</code>.</p>"
        },
        "Status":{
          "shape":"GenericString",
          "documentation":"<p>The current status of this <code>DevEndpoint</code>.</p>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated to the development endpoint. Accepts a value of Standard, G.1X, or G.2X.</p> <ul> <li> <p>For the <code>Standard</code> worker type, each worker provides 4 vCPU, 16 GB of memory and a 50GB disk, and 2 executors per worker.</p> </li> <li> <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPU, 16 GB of memory, 64 GB disk), and provides 1 executor per worker. We recommend this worker type for memory-intensive jobs.</p> </li> <li> <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPU, 32 GB of memory, 128 GB disk), and provides 1 executor per worker. We recommend this worker type for memory-intensive jobs.</p> </li> </ul> <p>Known issue: when a development endpoint is created with the <code>G.2X</code> <code>WorkerType</code> configuration, the Spark drivers for the development endpoint will run on 4 vCPU, 16 GB of memory, and a 64 GB disk. </p>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>Glue version determines the versions of Apache Spark and Python that Glue supports. The Python version indicates the version supported for running your ETL scripts on development endpoints. </p> <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/add-job.html\">Glue version</a> in the developer guide.</p> <p>Development endpoints that are created without specifying a Glue version default to Glue 0.9.</p> <p>You can specify a version of Python support for development endpoints by using the <code>Arguments</code> parameter in the <code>CreateDevEndpoint</code> or <code>UpdateDevEndpoint</code> APIs. If no arguments are provided, the version defaults to Python 2.</p>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>workerType</code> that are allocated to the development endpoint.</p> <p>The maximum number of workers you can define are 299 for <code>G.1X</code>, and 149 for <code>G.2X</code>. </p>"
        },
        "NumberOfNodes":{
          "shape":"IntegerValue",
          "documentation":"<p>The number of Glue Data Processing Units (DPUs) allocated to this <code>DevEndpoint</code>.</p>"
        },
        "AvailabilityZone":{
          "shape":"GenericString",
          "documentation":"<p>The Amazon Web Services Availability Zone where this <code>DevEndpoint</code> is located.</p>"
        },
        "VpcId":{
          "shape":"GenericString",
          "documentation":"<p>The ID of the virtual private cloud (VPC) used by this <code>DevEndpoint</code>.</p>"
        },
        "ExtraPythonLibsS3Path":{
          "shape":"GenericString",
          "documentation":"<p>The paths to one or more Python libraries in an Amazon S3 bucket that should be loaded in your <code>DevEndpoint</code>. Multiple values must be complete paths separated by a comma.</p> <note> <p>You can only use pure Python libraries with a <code>DevEndpoint</code>. Libraries that rely on C extensions, such as the <a href=\"http://pandas.pydata.org/\">pandas</a> Python data analysis library, are not currently supported.</p> </note>"
        },
        "ExtraJarsS3Path":{
          "shape":"GenericString",
          "documentation":"<p>The path to one or more Java <code>.jar</code> files in an S3 bucket that should be loaded in your <code>DevEndpoint</code>.</p> <note> <p>You can only use pure Java/Scala libraries with a <code>DevEndpoint</code>.</p> </note>"
        },
        "FailureReason":{
          "shape":"GenericString",
          "documentation":"<p>The reason for a current failure in this <code>DevEndpoint</code>.</p>"
        },
        "LastUpdateStatus":{
          "shape":"GenericString",
          "documentation":"<p>The status of the last update.</p>"
        },
        "CreatedTimestamp":{
          "shape":"TimestampValue",
          "documentation":"<p>The point in time at which this DevEndpoint was created.</p>"
        },
        "LastModifiedTimestamp":{
          "shape":"TimestampValue",
          "documentation":"<p>The point in time at which this <code>DevEndpoint</code> was last modified.</p>"
        },
        "PublicKey":{
          "shape":"GenericString",
          "documentation":"<p>The public key to be used by this <code>DevEndpoint</code> for authentication. This attribute is provided for backward compatibility because the recommended attribute to use is public keys.</p>"
        },
        "PublicKeys":{
          "shape":"PublicKeysList",
          "documentation":"<p>A list of public keys to be used by the <code>DevEndpoints</code> for authentication. Using this attribute is preferred over a single public key because the public keys allow you to have a different private key per client.</p> <note> <p>If you previously created an endpoint with a public key, you must remove that key to be able to set a list of public keys. Call the <code>UpdateDevEndpoint</code> API operation with the public key content in the <code>deletePublicKeys</code> attribute, and the list of new keys in the <code>addPublicKeys</code> attribute.</p> </note>"
        },
        "SecurityConfiguration":{
          "shape":"NameString",
          "documentation":"<p>The name of the <code>SecurityConfiguration</code> structure to be used with this <code>DevEndpoint</code>.</p>"
        },
        "Arguments":{
          "shape":"MapValue",
          "documentation":"<p>A map of arguments used to configure the <code>DevEndpoint</code>.</p> <p>Valid arguments are:</p> <ul> <li> <p> <code>\"--enable-glue-datacatalog\": \"\"</code> </p> </li> </ul> <p>You can specify a version of Python support for development endpoints by using the <code>Arguments</code> parameter in the <code>CreateDevEndpoint</code> or <code>UpdateDevEndpoint</code> APIs. If no arguments are provided, the version defaults to Python 2.</p>"
        }
      },
      "documentation":"<p>A development endpoint where a developer can remotely debug extract, transform, and load (ETL) scripts.</p>"
    },
    "DevEndpointCustomLibraries":{
      "type":"structure",
      "members":{
        "ExtraPythonLibsS3Path":{
          "shape":"GenericString",
          "documentation":"<p>The paths to one or more Python libraries in an Amazon Simple Storage Service (Amazon S3) bucket that should be loaded in your <code>DevEndpoint</code>. Multiple values must be complete paths separated by a comma.</p> <note> <p>You can only use pure Python libraries with a <code>DevEndpoint</code>. Libraries that rely on C extensions, such as the <a href=\"http://pandas.pydata.org/\">pandas</a> Python data analysis library, are not currently supported.</p> </note>"
        },
        "ExtraJarsS3Path":{
          "shape":"GenericString",
          "documentation":"<p>The path to one or more Java <code>.jar</code> files in an S3 bucket that should be loaded in your <code>DevEndpoint</code>.</p> <note> <p>You can only use pure Java/Scala libraries with a <code>DevEndpoint</code>.</p> </note>"
        }
      },
      "documentation":"<p>Custom libraries to be loaded into a development endpoint.</p>"
    },
    "DevEndpointList":{
      "type":"list",
      "member":{"shape":"DevEndpoint"}
    },
    "DevEndpointNameList":{
      "type":"list",
      "member":{"shape":"NameString"}
    },
    "DevEndpointNames":{
      "type":"list",
      "member":{"shape":"GenericString"},
      "max":25,
      "min":1
    },
    "DirectJDBCSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table",
        "ConnectionName",
        "ConnectionType"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the JDBC source connection.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The database of the JDBC source connection.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The table of the JDBC source connection.</p>"
        },
        "ConnectionName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The connection name of the JDBC source.</p>"
        },
        "ConnectionType":{
          "shape":"JDBCConnectionType",
          "documentation":"<p>The connection type of the JDBC source.</p>"
        },
        "RedshiftTmpDir":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The temp directory of the JDBC Redshift source.</p>"
        }
      },
      "documentation":"<p>Specifies the direct JDBC source connection.</p>"
    },
    "DirectKafkaSource":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data store.</p>"
        },
        "StreamingOptions":{
          "shape":"KafkaStreamingSourceOptions",
          "documentation":"<p>Specifies the streaming options.</p>"
        },
        "WindowSize":{
          "shape":"BoxedPositiveInt",
          "documentation":"<p>The amount of time to spend processing each micro batch.</p>",
          "box":true
        },
        "DetectSchema":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Whether to automatically determine the schema from the incoming data.</p>",
          "box":true
        },
        "DataPreviewOptions":{
          "shape":"StreamingDataPreviewOptions",
          "documentation":"<p>Specifies options related to data preview for viewing a sample of your data.</p>"
        }
      },
      "documentation":"<p>Specifies an Apache Kafka data store.</p>"
    },
    "DirectKinesisSource":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data source.</p>"
        },
        "WindowSize":{
          "shape":"BoxedPositiveInt",
          "documentation":"<p>The amount of time to spend processing each micro batch.</p>",
          "box":true
        },
        "DetectSchema":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Whether to automatically determine the schema from the incoming data.</p>",
          "box":true
        },
        "StreamingOptions":{
          "shape":"KinesisStreamingSourceOptions",
          "documentation":"<p>Additional options for the Kinesis streaming data source.</p>"
        },
        "DataPreviewOptions":{
          "shape":"StreamingDataPreviewOptions",
          "documentation":"<p>Additional options for data preview.</p>"
        }
      },
      "documentation":"<p>Specifies a direct Amazon Kinesis data source.</p>"
    },
    "DirectSchemaChangePolicy":{
      "type":"structure",
      "members":{
        "EnableUpdateCatalog":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Whether to use the specified update behavior when the crawler finds a changed schema.</p>"
        },
        "UpdateBehavior":{
          "shape":"UpdateCatalogBehavior",
          "documentation":"<p>The update behavior when the crawler finds a changed schema.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the table in the database that the schema change policy applies to.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the database that the schema change policy applies to.</p>"
        }
      },
      "documentation":"<p>A policy that specifies update behavior for the crawler.</p>"
    },
    "Double":{"type":"double"},
    "DoubleColumnStatisticsData":{
      "type":"structure",
      "required":[
        "NumberOfNulls",
        "NumberOfDistinctValues"
      ],
      "members":{
        "MinimumValue":{
          "shape":"Double",
          "documentation":"<p>The lowest value in the column.</p>"
        },
        "MaximumValue":{
          "shape":"Double",
          "documentation":"<p>The highest value in the column.</p>"
        },
        "NumberOfNulls":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of null values in the column.</p>"
        },
        "NumberOfDistinctValues":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of distinct values in a column.</p>"
        }
      },
      "documentation":"<p>Defines column statistics supported for floating-point number data columns.</p>"
    },
    "DoubleValue":{"type":"double"},
    "DropDuplicates":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "Columns":{
          "shape":"LimitedPathList",
          "documentation":"<p>The name of the columns to be merged or removed if repeating.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that removes rows of repeating data from a data set. </p>"
    },
    "DropFields":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Paths"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "Paths":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>A JSON path to a variable in the data structure.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that chooses the data property keys that you want to drop.</p>"
    },
    "DropNullFields":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "NullCheckBoxList":{
          "shape":"NullCheckBoxList",
          "documentation":"<p>A structure that represents whether certain values are recognized as null values for removal.</p>"
        },
        "NullTextList":{
          "shape":"NullValueFields",
          "documentation":"<p>A structure that specifies a list of NullValueField structures that represent a custom null value such as zero or other value being used as a null placeholder unique to the dataset.</p> <p>The <code>DropNullFields</code> transform removes custom null values only if both the value of the null placeholder and the datatype match the data.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that removes columns from the dataset if all values in the column are 'null'. By default, Glue Studio will recognize null objects, but some values such as empty strings, strings that are \"null\", -1 integers or other placeholders such as zeros, are not automatically recognized as nulls.</p>"
    },
    "DynamicTransform":{
      "type":"structure",
      "required":[
        "Name",
        "TransformName",
        "Inputs",
        "FunctionName",
        "Path"
      ],
      "members":{
        "Name":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the name of the dynamic transform.</p>"
        },
        "TransformName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the name of the dynamic transform as it appears in the Glue Studio visual editor.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>Specifies the inputs for the dynamic transform that are required.</p>"
        },
        "Parameters":{
          "shape":"TransformConfigParameterList",
          "documentation":"<p>Specifies the parameters of the dynamic transform.</p>"
        },
        "FunctionName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the name of the function of the dynamic transform.</p>"
        },
        "Path":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the path of the dynamic transform source and config files.</p>"
        },
        "Version":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>This field is not used and will be deprecated in future release.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the dynamic transform.</p>"
        }
      },
      "documentation":"<p>Specifies the set of parameters needed to perform the dynamic transform.</p>"
    },
    "DynamoDBCatalogSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data source.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to read from.</p>"
        }
      },
      "documentation":"<p>Specifies a DynamoDB data source in the Glue Data Catalog.</p>"
    },
    "DynamoDBTarget":{
      "type":"structure",
      "members":{
        "Path":{
          "shape":"Path",
          "documentation":"<p>The name of the DynamoDB table to crawl.</p>"
        },
        "scanAll":{
          "shape":"NullableBoolean",
          "documentation":"<p>Indicates whether to scan all the records, or to sample rows from the table. Scanning all the records can take a long time when the table is not a high throughput table.</p> <p>A value of <code>true</code> means to scan all records, while a value of <code>false</code> means to sample the records. If no value is specified, the value defaults to <code>true</code>.</p>"
        },
        "scanRate":{
          "shape":"NullableDouble",
          "documentation":"<p>The percentage of the configured read capacity units to use by the Glue crawler. Read capacity units is a term defined by DynamoDB, and is a numeric value that acts as rate limiter for the number of reads that can be performed on that table per second.</p> <p>The valid values are null or a value between 0.1 to 1.5. A null value is used when user does not provide a value, and defaults to 0.5 of the configured Read Capacity Unit (for provisioned tables), or 0.25 of the max configured Read Capacity Unit (for tables using on-demand mode).</p>"
        }
      },
      "documentation":"<p>Specifies an Amazon DynamoDB table to crawl.</p>"
    },
    "DynamoDBTargetList":{
      "type":"list",
      "member":{"shape":"DynamoDBTarget"}
    },
    "Edge":{
      "type":"structure",
      "members":{
        "SourceId":{
          "shape":"NameString",
          "documentation":"<p>The unique of the node within the workflow where the edge starts.</p>"
        },
        "DestinationId":{
          "shape":"NameString",
          "documentation":"<p>The unique of the node within the workflow where the edge ends.</p>"
        }
      },
      "documentation":"<p>An edge represents a directed connection between two Glue components that are part of the workflow the edge belongs to.</p>"
    },
    "EdgeList":{
      "type":"list",
      "member":{"shape":"Edge"}
    },
    "EnableAdditionalMetadata":{
      "type":"list",
      "member":{"shape":"JdbcMetadataEntry"}
    },
    "EnableHybridValues":{
      "type":"string",
      "enum":[
        "TRUE",
        "FALSE"
      ]
    },
    "EnclosedInStringProperties":{
      "type":"list",
      "member":{"shape":"EnclosedInStringProperty"}
    },
    "EnclosedInStringPropertiesMinOne":{
      "type":"list",
      "member":{"shape":"EnclosedInStringProperty"}
    },
    "EnclosedInStringProperty":{
      "type":"string",
      "pattern":"([\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF]|[^\\S\\r\\n\"'])*"
    },
    "EnclosedInStringPropertyWithQuote":{
      "type":"string",
      "pattern":"([\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF]|[^\\S\\r\\n])*"
    },
    "EncryptionAtRest":{
      "type":"structure",
      "required":["CatalogEncryptionMode"],
      "members":{
        "CatalogEncryptionMode":{
          "shape":"CatalogEncryptionMode",
          "documentation":"<p>The encryption-at-rest mode for encrypting Data Catalog data.</p>"
        },
        "SseAwsKmsKeyId":{
          "shape":"NameString",
          "documentation":"<p>The ID of the KMS key to use for encryption at rest.</p>"
        },
        "CatalogEncryptionServiceRole":{
          "shape":"IAMRoleArn",
          "documentation":"<p>The role that Glue assumes to encrypt and decrypt the Data Catalog objects on the caller's behalf.</p>"
        }
      },
      "documentation":"<p>Specifies the encryption-at-rest configuration for the Data Catalog.</p>"
    },
    "EncryptionConfiguration":{
      "type":"structure",
      "members":{
        "S3Encryption":{
          "shape":"S3EncryptionList",
          "documentation":"<p>The encryption configuration for Amazon Simple Storage Service (Amazon S3) data.</p>"
        },
        "CloudWatchEncryption":{
          "shape":"CloudWatchEncryption",
          "documentation":"<p>The encryption configuration for Amazon CloudWatch.</p>"
        },
        "JobBookmarksEncryption":{
          "shape":"JobBookmarksEncryption",
          "documentation":"<p>The encryption configuration for job bookmarks.</p>"
        }
      },
      "documentation":"<p>Specifies an encryption configuration.</p>"
    },
    "EntityNotFoundException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        },
        "FromFederationSource":{
          "shape":"NullableBoolean",
          "documentation":"<p>Indicates whether or not the exception relates to a federated source.</p>"
        }
      },
      "documentation":"<p>A specified entity does not exist</p>",
      "exception":true
    },
    "ErrorByName":{
      "type":"map",
      "key":{"shape":"NameString"},
      "value":{"shape":"ErrorDetail"}
    },
    "ErrorCodeString":{"type":"string"},
    "ErrorDetail":{
      "type":"structure",
      "members":{
        "ErrorCode":{
          "shape":"NameString",
          "documentation":"<p>The code associated with this error.</p>"
        },
        "ErrorMessage":{
          "shape":"DescriptionString",
          "documentation":"<p>A message describing the error.</p>"
        }
      },
      "documentation":"<p>Contains details about an error.</p>"
    },
    "ErrorDetails":{
      "type":"structure",
      "members":{
        "ErrorCode":{
          "shape":"ErrorCodeString",
          "documentation":"<p>The error code for an error.</p>"
        },
        "ErrorMessage":{
          "shape":"ErrorMessageString",
          "documentation":"<p>The error message for an error.</p>"
        }
      },
      "documentation":"<p>An object containing error details.</p>"
    },
    "ErrorMessageString":{"type":"string"},
    "ErrorString":{"type":"string"},
    "EvaluateDataQuality":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Ruleset"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data quality evaluation.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The inputs of your data quality evaluation.</p>"
        },
        "Ruleset":{
          "shape":"DQDLString",
          "documentation":"<p>The ruleset for your data quality evaluation.</p>"
        },
        "Output":{
          "shape":"DQTransformOutput",
          "documentation":"<p>The output of your data quality evaluation.</p>"
        },
        "PublishingOptions":{
          "shape":"DQResultsPublishingOptions",
          "documentation":"<p>Options to configure how your results are published.</p>"
        },
        "StopJobOnFailureOptions":{
          "shape":"DQStopJobOnFailureOptions",
          "documentation":"<p>Options to configure how your job will stop if your data quality evaluation fails.</p>"
        }
      },
      "documentation":"<p>Specifies your data quality evaluation criteria.</p>"
    },
    "EvaluateDataQualityMultiFrame":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Ruleset"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data quality evaluation.</p>"
        },
        "Inputs":{
          "shape":"ManyInputs",
          "documentation":"<p>The inputs of your data quality evaluation. The first input in this list is the primary data source.</p>"
        },
        "AdditionalDataSources":{
          "shape":"DQDLAliases",
          "documentation":"<p>The aliases of all data sources except primary.</p>"
        },
        "Ruleset":{
          "shape":"DQDLString",
          "documentation":"<p>The ruleset for your data quality evaluation.</p>"
        },
        "PublishingOptions":{
          "shape":"DQResultsPublishingOptions",
          "documentation":"<p>Options to configure how your results are published.</p>"
        },
        "AdditionalOptions":{
          "shape":"DQAdditionalOptions",
          "documentation":"<p>Options to configure runtime behavior of the transform.</p>"
        },
        "StopJobOnFailureOptions":{
          "shape":"DQStopJobOnFailureOptions",
          "documentation":"<p>Options to configure how your job will stop if your data quality evaluation fails.</p>"
        }
      },
      "documentation":"<p>Specifies your data quality evaluation criteria.</p>"
    },
    "EvaluatedMetricsMap":{
      "type":"map",
      "key":{"shape":"NameString"},
      "value":{"shape":"NullableDouble"}
    },
    "EvaluationMetrics":{
      "type":"structure",
      "required":["TransformType"],
      "members":{
        "TransformType":{
          "shape":"TransformType",
          "documentation":"<p>The type of machine learning transform.</p>"
        },
        "FindMatchesMetrics":{
          "shape":"FindMatchesMetrics",
          "documentation":"<p>The evaluation metrics for the find matches algorithm.</p>"
        }
      },
      "documentation":"<p>Evaluation metrics provide an estimate of the quality of your machine learning transform.</p>"
    },
    "EventBatchingCondition":{
      "type":"structure",
      "required":["BatchSize"],
      "members":{
        "BatchSize":{
          "shape":"BatchSize",
          "documentation":"<p>Number of events that must be received from Amazon EventBridge before EventBridge event trigger fires.</p>"
        },
        "BatchWindow":{
          "shape":"BatchWindow",
          "documentation":"<p>Window of time in seconds after which EventBridge event trigger fires. Window starts when first event is received.</p>"
        }
      },
      "documentation":"<p>Batch condition that must be met (specified number of events received or batch time window expired) before EventBridge event trigger fires.</p>"
    },
    "EventQueueArn":{"type":"string"},
    "ExecutionClass":{
      "type":"string",
      "enum":[
        "FLEX",
        "STANDARD"
      ],
      "max":16
    },
    "ExecutionProperty":{
      "type":"structure",
      "members":{
        "MaxConcurrentRuns":{
          "shape":"MaxConcurrentRuns",
          "documentation":"<p>The maximum number of concurrent runs allowed for the job. The default is 1. An error is returned when this threshold is reached. The maximum value you can specify is controlled by a service limit.</p>"
        }
      },
      "documentation":"<p>An execution property of a job.</p>"
    },
    "ExecutionTime":{"type":"integer"},
    "ExistCondition":{
      "type":"string",
      "enum":[
        "MUST_EXIST",
        "NOT_EXIST",
        "NONE"
      ]
    },
    "ExportLabelsTaskRunProperties":{
      "type":"structure",
      "members":{
        "OutputS3Path":{
          "shape":"UriString",
          "documentation":"<p>The Amazon Simple Storage Service (Amazon S3) path where you will export the labels.</p>"
        }
      },
      "documentation":"<p>Specifies configuration properties for an exporting labels task run.</p>"
    },
    "ExtendedString":{
      "type":"string",
      "pattern":"[\\s\\S]*"
    },
    "FederatedDatabase":{
      "type":"structure",
      "members":{
        "Identifier":{
          "shape":"FederationIdentifier",
          "documentation":"<p>A unique identifier for the federated database.</p>"
        },
        "ConnectionName":{
          "shape":"NameString",
          "documentation":"<p>The name of the connection to the external metastore.</p>"
        }
      },
      "documentation":"<p>A database that points to an entity outside the Glue Data Catalog.</p>"
    },
    "FederatedResourceAlreadyExistsException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>The message describing the problem.</p>"
        },
        "AssociatedGlueResource":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The associated Glue resource already exists.</p>"
        }
      },
      "documentation":"<p>A federated resource already exists.</p>",
      "exception":true
    },
    "FederatedTable":{
      "type":"structure",
      "members":{
        "Identifier":{
          "shape":"FederationIdentifier",
          "documentation":"<p>A unique identifier for the federated table.</p>"
        },
        "DatabaseIdentifier":{
          "shape":"FederationIdentifier",
          "documentation":"<p>A unique identifier for the federated database.</p>"
        },
        "ConnectionName":{
          "shape":"NameString",
          "documentation":"<p>The name of the connection to the external metastore.</p>"
        }
      },
      "documentation":"<p>A table that points to an entity outside the Glue Data Catalog.</p>"
    },
    "FederationIdentifier":{
      "type":"string",
      "max":512,
      "min":1,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "FederationSourceErrorCode":{
      "type":"string",
      "enum":[
        "InvalidResponseException",
        "OperationTimeoutException",
        "OperationNotSupportedException",
        "InternalServiceException",
        "ThrottlingException"
      ]
    },
    "FederationSourceException":{
      "type":"structure",
      "members":{
        "FederationSourceErrorCode":{
          "shape":"FederationSourceErrorCode",
          "documentation":"<p>The error code of the problem.</p>"
        },
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>The message describing the problem.</p>"
        }
      },
      "documentation":"<p>A federation source failed.</p>",
      "exception":true
    },
    "FederationSourceRetryableException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>A federation source failed, but the operation may be retried.</p>",
      "exception":true
    },
    "FieldName":{
      "type":"string",
      "enum":[
        "CRAWL_ID",
        "STATE",
        "START_TIME",
        "END_TIME",
        "DPU_HOUR"
      ]
    },
    "FieldType":{"type":"string"},
    "FillMissingValues":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "ImputedPath"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "ImputedPath":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>A JSON path to a variable in the data structure for the dataset that is imputed.</p>"
        },
        "FilledPath":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>A JSON path to a variable in the data structure for the dataset that is filled.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that locates records in the dataset that have missing values and adds a new field with a value determined by imputation. The input data set is used to train the machine learning model that determines what the missing value should be.</p>"
    },
    "Filter":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "LogicalOperator",
        "Filters"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "LogicalOperator":{
          "shape":"FilterLogicalOperator",
          "documentation":"<p>The operator used to filter rows by comparing the key value to a specified value.</p>"
        },
        "Filters":{
          "shape":"FilterExpressions",
          "documentation":"<p>Specifies a filter expression.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that splits a dataset into two, based on a filter condition.</p>"
    },
    "FilterExpression":{
      "type":"structure",
      "required":[
        "Operation",
        "Values"
      ],
      "members":{
        "Operation":{
          "shape":"FilterOperation",
          "documentation":"<p>The type of operation to perform in the expression.</p>"
        },
        "Negated":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Whether the expression is to be negated.</p>"
        },
        "Values":{
          "shape":"FilterValues",
          "documentation":"<p>A list of filter values.</p>"
        }
      },
      "documentation":"<p>Specifies a filter expression.</p>"
    },
    "FilterExpressions":{
      "type":"list",
      "member":{"shape":"FilterExpression"}
    },
    "FilterLogicalOperator":{
      "type":"string",
      "enum":[
        "AND",
        "OR"
      ]
    },
    "FilterOperation":{
      "type":"string",
      "enum":[
        "EQ",
        "LT",
        "GT",
        "LTE",
        "GTE",
        "REGEX",
        "ISNULL"
      ]
    },
    "FilterOperator":{
      "type":"string",
      "enum":[
        "GT",
        "GE",
        "LT",
        "LE",
        "EQ",
        "NE"
      ]
    },
    "FilterString":{
      "type":"string",
      "max":2048,
      "min":0,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "FilterValue":{
      "type":"structure",
      "required":[
        "Type",
        "Value"
      ],
      "members":{
        "Type":{
          "shape":"FilterValueType",
          "documentation":"<p>The type of filter value.</p>"
        },
        "Value":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>The value to be associated.</p>"
        }
      },
      "documentation":"<p>Represents a single entry in the list of values for a <code>FilterExpression</code>. </p>"
    },
    "FilterValueType":{
      "type":"string",
      "enum":[
        "COLUMNEXTRACTED",
        "CONSTANT"
      ]
    },
    "FilterValues":{
      "type":"list",
      "member":{"shape":"FilterValue"}
    },
    "FindMatchesMetrics":{
      "type":"structure",
      "members":{
        "AreaUnderPRCurve":{
          "shape":"GenericBoundedDouble",
          "documentation":"<p>The area under the precision/recall curve (AUPRC) is a single number measuring the overall quality of the transform, that is independent of the choice made for precision vs. recall. Higher values indicate that you have a more attractive precision vs. recall tradeoff.</p> <p>For more information, see <a href=\"https://en.wikipedia.org/wiki/Precision_and_recall\">Precision and recall</a> in Wikipedia.</p>"
        },
        "Precision":{
          "shape":"GenericBoundedDouble",
          "documentation":"<p>The precision metric indicates when often your transform is correct when it predicts a match. Specifically, it measures how well the transform finds true positives from the total true positives possible.</p> <p>For more information, see <a href=\"https://en.wikipedia.org/wiki/Precision_and_recall\">Precision and recall</a> in Wikipedia.</p>"
        },
        "Recall":{
          "shape":"GenericBoundedDouble",
          "documentation":"<p>The recall metric indicates that for an actual match, how often your transform predicts the match. Specifically, it measures how well the transform finds true positives from the total records in the source data.</p> <p>For more information, see <a href=\"https://en.wikipedia.org/wiki/Precision_and_recall\">Precision and recall</a> in Wikipedia.</p>"
        },
        "F1":{
          "shape":"GenericBoundedDouble",
          "documentation":"<p>The maximum F1 metric indicates the transform's accuracy between 0 and 1, where 1 is the best accuracy.</p> <p>For more information, see <a href=\"https://en.wikipedia.org/wiki/F1_score\">F1 score</a> in Wikipedia.</p>"
        },
        "ConfusionMatrix":{
          "shape":"ConfusionMatrix",
          "documentation":"<p>The confusion matrix shows you what your transform is predicting accurately and what types of errors it is making.</p> <p>For more information, see <a href=\"https://en.wikipedia.org/wiki/Confusion_matrix\">Confusion matrix</a> in Wikipedia.</p>"
        },
        "ColumnImportances":{
          "shape":"ColumnImportanceList",
          "documentation":"<p>A list of <code>ColumnImportance</code> structures containing column importance metrics, sorted in order of descending importance.</p>"
        }
      },
      "documentation":"<p>The evaluation metrics for the find matches algorithm. The quality of your machine learning transform is measured by getting your transform to predict some matches and comparing the results to known matches from the same dataset. The quality metrics are based on a subset of your data, so they are not precise.</p>"
    },
    "FindMatchesParameters":{
      "type":"structure",
      "members":{
        "PrimaryKeyColumnName":{
          "shape":"ColumnNameString",
          "documentation":"<p>The name of a column that uniquely identifies rows in the source table. Used to help identify matching records.</p>"
        },
        "PrecisionRecallTradeoff":{
          "shape":"GenericBoundedDouble",
          "documentation":"<p>The value selected when tuning your transform for a balance between precision and recall. A value of 0.5 means no preference; a value of 1.0 means a bias purely for precision, and a value of 0.0 means a bias for recall. Because this is a tradeoff, choosing values close to 1.0 means very low recall, and choosing values close to 0.0 results in very low precision.</p> <p>The precision metric indicates how often your model is correct when it predicts a match. </p> <p>The recall metric indicates that for an actual match, how often your model predicts the match.</p>"
        },
        "AccuracyCostTradeoff":{
          "shape":"GenericBoundedDouble",
          "documentation":"<p>The value that is selected when tuning your transform for a balance between accuracy and cost. A value of 0.5 means that the system balances accuracy and cost concerns. A value of 1.0 means a bias purely for accuracy, which typically results in a higher cost, sometimes substantially higher. A value of 0.0 means a bias purely for cost, which results in a less accurate <code>FindMatches</code> transform, sometimes with unacceptable accuracy.</p> <p>Accuracy measures how well the transform finds true positives and true negatives. Increasing accuracy requires more machine resources and cost. But it also results in increased recall. </p> <p>Cost measures how many compute resources, and thus money, are consumed to run the transform.</p>"
        },
        "EnforceProvidedLabels":{
          "shape":"NullableBoolean",
          "documentation":"<p>The value to switch on or off to force the output to match the provided labels from users. If the value is <code>True</code>, the <code>find matches</code> transform forces the output to match the provided labels. The results override the normal conflation results. If the value is <code>False</code>, the <code>find matches</code> transform does not ensure all the labels provided are respected, and the results rely on the trained model.</p> <p>Note that setting this value to true may increase the conflation execution time.</p>"
        }
      },
      "documentation":"<p>The parameters to configure the find matches transform.</p>"
    },
    "FindMatchesTaskRunProperties":{
      "type":"structure",
      "members":{
        "JobId":{
          "shape":"HashString",
          "documentation":"<p>The job ID for the Find Matches task run.</p>"
        },
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name assigned to the job for the Find Matches task run.</p>"
        },
        "JobRunId":{
          "shape":"HashString",
          "documentation":"<p>The job run ID for the Find Matches task run.</p>"
        }
      },
      "documentation":"<p>Specifies configuration properties for a Find Matches task run.</p>"
    },
    "FormatString":{
      "type":"string",
      "max":128,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "Generic512CharString":{
      "type":"string",
      "max":512,
      "min":1
    },
    "GenericBoundedDouble":{
      "type":"double",
      "box":true,
      "max":1.0,
      "min":0.0
    },
    "GenericLimitedString":{
      "type":"string",
      "pattern":"[A-Za-z0-9_-]*"
    },
    "GenericMap":{
      "type":"map",
      "key":{"shape":"GenericString"},
      "value":{"shape":"GenericString"}
    },
    "GenericString":{"type":"string"},
    "GetBlueprintRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the blueprint.</p>"
        },
        "IncludeBlueprint":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies whether or not to include the blueprint in the response.</p>"
        },
        "IncludeParameterSpec":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies whether or not to include the parameter specification.</p>"
        }
      }
    },
    "GetBlueprintResponse":{
      "type":"structure",
      "members":{
        "Blueprint":{
          "shape":"Blueprint",
          "documentation":"<p>Returns a <code>Blueprint</code> object.</p>"
        }
      }
    },
    "GetBlueprintRunRequest":{
      "type":"structure",
      "required":[
        "BlueprintName",
        "RunId"
      ],
      "members":{
        "BlueprintName":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The name of the blueprint.</p>"
        },
        "RunId":{
          "shape":"IdString",
          "documentation":"<p>The run ID for the blueprint run you want to retrieve.</p>"
        }
      }
    },
    "GetBlueprintRunResponse":{
      "type":"structure",
      "members":{
        "BlueprintRun":{
          "shape":"BlueprintRun",
          "documentation":"<p>Returns a <code>BlueprintRun</code> object.</p>"
        }
      }
    },
    "GetBlueprintRunsRequest":{
      "type":"structure",
      "required":["BlueprintName"],
      "members":{
        "BlueprintName":{
          "shape":"NameString",
          "documentation":"<p>The name of the blueprint.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if this is a continuation request.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum size of a list to return.</p>"
        }
      }
    },
    "GetBlueprintRunsResponse":{
      "type":"structure",
      "members":{
        "BlueprintRuns":{
          "shape":"BlueprintRuns",
          "documentation":"<p>Returns a list of <code>BlueprintRun</code> objects.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if not all blueprint runs have been returned.</p>"
        }
      }
    },
    "GetCatalogImportStatusRequest":{
      "type":"structure",
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the catalog to migrate. Currently, this should be the Amazon Web Services account ID.</p>"
        }
      }
    },
    "GetCatalogImportStatusResponse":{
      "type":"structure",
      "members":{
        "ImportStatus":{
          "shape":"CatalogImportStatus",
          "documentation":"<p>The status of the specified catalog migration.</p>"
        }
      }
    },
    "GetClassifierRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the classifier to retrieve.</p>"
        }
      }
    },
    "GetClassifierResponse":{
      "type":"structure",
      "members":{
        "Classifier":{
          "shape":"Classifier",
          "documentation":"<p>The requested classifier.</p>"
        }
      }
    },
    "GetClassifiersRequest":{
      "type":"structure",
      "members":{
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The size of the list to return (optional).</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>An optional continuation token.</p>"
        }
      }
    },
    "GetClassifiersResponse":{
      "type":"structure",
      "members":{
        "Classifiers":{
          "shape":"ClassifierList",
          "documentation":"<p>The requested list of classifier objects.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token.</p>"
        }
      }
    },
    "GetColumnNamesList":{
      "type":"list",
      "member":{"shape":"NameString"},
      "max":100,
      "min":0
    },
    "GetColumnStatisticsForPartitionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "PartitionValues",
        "ColumnNames"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the partitions in question reside. If none is supplied, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the partitions reside.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the partitions' table.</p>"
        },
        "PartitionValues":{
          "shape":"ValueStringList",
          "documentation":"<p>A list of partition values identifying the partition.</p>"
        },
        "ColumnNames":{
          "shape":"GetColumnNamesList",
          "documentation":"<p>A list of the column names.</p>"
        }
      }
    },
    "GetColumnStatisticsForPartitionResponse":{
      "type":"structure",
      "members":{
        "ColumnStatisticsList":{
          "shape":"ColumnStatisticsList",
          "documentation":"<p>List of ColumnStatistics that failed to be retrieved.</p>"
        },
        "Errors":{
          "shape":"ColumnErrors",
          "documentation":"<p>Error occurred during retrieving column statistics data.</p>"
        }
      }
    },
    "GetColumnStatisticsForTableRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "ColumnNames"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the partitions in question reside. If none is supplied, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the partitions reside.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the partitions' table.</p>"
        },
        "ColumnNames":{
          "shape":"GetColumnNamesList",
          "documentation":"<p>A list of the column names.</p>"
        }
      }
    },
    "GetColumnStatisticsForTableResponse":{
      "type":"structure",
      "members":{
        "ColumnStatisticsList":{
          "shape":"ColumnStatisticsList",
          "documentation":"<p>List of ColumnStatistics.</p>"
        },
        "Errors":{
          "shape":"ColumnErrors",
          "documentation":"<p>List of ColumnStatistics that failed to be retrieved.</p>"
        }
      }
    },
    "GetColumnStatisticsTaskRunRequest":{
      "type":"structure",
      "required":["ColumnStatisticsTaskRunId"],
      "members":{
        "ColumnStatisticsTaskRunId":{
          "shape":"HashString",
          "documentation":"<p>The identifier for the particular column statistics task run.</p>"
        }
      }
    },
    "GetColumnStatisticsTaskRunResponse":{
      "type":"structure",
      "members":{
        "ColumnStatisticsTaskRun":{
          "shape":"ColumnStatisticsTaskRun",
          "documentation":"<p>A <code>ColumnStatisticsTaskRun</code> object representing the details of the column stats run.</p>"
        }
      }
    },
    "GetColumnStatisticsTaskRunsRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName"
      ],
      "members":{
        "DatabaseName":{
          "shape":"DatabaseName",
          "documentation":"<p>The name of the database where the table resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum size of the response.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        }
      }
    },
    "GetColumnStatisticsTaskRunsResponse":{
      "type":"structure",
      "members":{
        "ColumnStatisticsTaskRuns":{
          "shape":"ColumnStatisticsTaskRunsList",
          "documentation":"<p>A list of column statistics task runs.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if not all task runs have yet been returned.</p>"
        }
      }
    },
    "GetConnectionRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the connection resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the connection definition to retrieve.</p>"
        },
        "HidePassword":{
          "shape":"Boolean",
          "documentation":"<p>Allows you to retrieve the connection metadata without returning the password. For instance, the Glue console uses this flag to retrieve the connection, and does not display the password. Set this parameter when the caller might not have permission to use the KMS key to decrypt the password, but it does have permission to access the rest of the connection properties.</p>"
        }
      }
    },
    "GetConnectionResponse":{
      "type":"structure",
      "members":{
        "Connection":{
          "shape":"Connection",
          "documentation":"<p>The requested connection definition.</p>"
        }
      }
    },
    "GetConnectionsFilter":{
      "type":"structure",
      "members":{
        "MatchCriteria":{
          "shape":"MatchCriteria",
          "documentation":"<p>A criteria string that must match the criteria recorded in the connection definition for that connection definition to be returned.</p>"
        },
        "ConnectionType":{
          "shape":"ConnectionType",
          "documentation":"<p>The type of connections to return. Currently, SFTP is not supported.</p>"
        }
      },
      "documentation":"<p>Filters the connection definitions that are returned by the <code>GetConnections</code> API operation.</p>"
    },
    "GetConnectionsRequest":{
      "type":"structure",
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the connections reside. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "Filter":{
          "shape":"GetConnectionsFilter",
          "documentation":"<p>A filter that controls which connections are returned.</p>"
        },
        "HidePassword":{
          "shape":"Boolean",
          "documentation":"<p>Allows you to retrieve the connection metadata without returning the password. For instance, the Glue console uses this flag to retrieve the connection, and does not display the password. Set this parameter when the caller might not have permission to use the KMS key to decrypt the password, but it does have permission to access the rest of the connection properties.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of connections to return in one response.</p>"
        }
      }
    },
    "GetConnectionsResponse":{
      "type":"structure",
      "members":{
        "ConnectionList":{
          "shape":"ConnectionList",
          "documentation":"<p>A list of requested connection definitions.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if the list of connections returned does not include the last of the filtered connections.</p>"
        }
      }
    },
    "GetCrawlerMetricsRequest":{
      "type":"structure",
      "members":{
        "CrawlerNameList":{
          "shape":"CrawlerNameList",
          "documentation":"<p>A list of the names of crawlers about which to retrieve metrics.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum size of a list to return.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        }
      }
    },
    "GetCrawlerMetricsResponse":{
      "type":"structure",
      "members":{
        "CrawlerMetricsList":{
          "shape":"CrawlerMetricsList",
          "documentation":"<p>A list of metrics for the specified crawler.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if the returned list does not contain the last metric available.</p>"
        }
      }
    },
    "GetCrawlerRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the crawler to retrieve metadata for.</p>"
        }
      }
    },
    "GetCrawlerResponse":{
      "type":"structure",
      "members":{
        "Crawler":{
          "shape":"Crawler",
          "documentation":"<p>The metadata for the specified crawler.</p>"
        }
      }
    },
    "GetCrawlersRequest":{
      "type":"structure",
      "members":{
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The number of crawlers to return on each call.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if this is a continuation request.</p>"
        }
      }
    },
    "GetCrawlersResponse":{
      "type":"structure",
      "members":{
        "Crawlers":{
          "shape":"CrawlerList",
          "documentation":"<p>A list of crawler metadata.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if the returned list has not reached the end of those defined in this customer account.</p>"
        }
      }
    },
    "GetCustomEntityTypeRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the custom pattern that you want to retrieve.</p>"
        }
      }
    },
    "GetCustomEntityTypeResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the custom pattern that you retrieved.</p>"
        },
        "RegexString":{
          "shape":"NameString",
          "documentation":"<p>A regular expression string that is used for detecting sensitive data in a custom pattern.</p>"
        },
        "ContextWords":{
          "shape":"ContextWords",
          "documentation":"<p>A list of context words if specified when you created the custom pattern. If none of these context words are found within the vicinity of the regular expression the data will not be detected as sensitive data.</p>"
        }
      }
    },
    "GetDataCatalogEncryptionSettingsRequest":{
      "type":"structure",
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog to retrieve the security configuration for. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        }
      }
    },
    "GetDataCatalogEncryptionSettingsResponse":{
      "type":"structure",
      "members":{
        "DataCatalogEncryptionSettings":{
          "shape":"DataCatalogEncryptionSettings",
          "documentation":"<p>The requested security configuration.</p>"
        }
      }
    },
    "GetDataQualityResultRequest":{
      "type":"structure",
      "required":["ResultId"],
      "members":{
        "ResultId":{
          "shape":"HashString",
          "documentation":"<p>A unique result ID for the data quality result.</p>"
        }
      }
    },
    "GetDataQualityResultResponse":{
      "type":"structure",
      "members":{
        "ResultId":{
          "shape":"HashString",
          "documentation":"<p>A unique result ID for the data quality result.</p>"
        },
        "Score":{
          "shape":"GenericBoundedDouble",
          "documentation":"<p>An aggregate data quality score. Represents the ratio of rules that passed to the total number of rules.</p>"
        },
        "DataSource":{
          "shape":"DataSource",
          "documentation":"<p>The table associated with the data quality result, if any.</p>"
        },
        "RulesetName":{
          "shape":"NameString",
          "documentation":"<p>The name of the ruleset associated with the data quality result.</p>"
        },
        "EvaluationContext":{
          "shape":"GenericString",
          "documentation":"<p>In the context of a job in Glue Studio, each node in the canvas is typically assigned some sort of name and data quality nodes will have names. In the case of multiple nodes, the <code>evaluationContext</code> can differentiate the nodes.</p>"
        },
        "StartedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the run for this data quality result started.</p>"
        },
        "CompletedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the run for this data quality result was completed.</p>"
        },
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The job name associated with the data quality result, if any.</p>"
        },
        "JobRunId":{
          "shape":"HashString",
          "documentation":"<p>The job run ID associated with the data quality result, if any.</p>"
        },
        "RulesetEvaluationRunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run ID associated with the ruleset evaluation.</p>"
        },
        "RuleResults":{
          "shape":"DataQualityRuleResults",
          "documentation":"<p>A list of <code>DataQualityRuleResult</code> objects representing the results for each rule. </p>"
        },
        "AnalyzerResults":{
          "shape":"DataQualityAnalyzerResults",
          "documentation":"<p>A list of <code>DataQualityAnalyzerResult</code> objects representing the results for each analyzer. </p>"
        },
        "Observations":{
          "shape":"DataQualityObservations",
          "documentation":"<p>A list of <code>DataQualityObservation</code> objects representing the observations generated after evaluating the rules and analyzers. </p>"
        }
      }
    },
    "GetDataQualityRuleRecommendationRunRequest":{
      "type":"structure",
      "required":["RunId"],
      "members":{
        "RunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run identifier associated with this run.</p>"
        }
      }
    },
    "GetDataQualityRuleRecommendationRunResponse":{
      "type":"structure",
      "members":{
        "RunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run identifier associated with this run.</p>"
        },
        "DataSource":{
          "shape":"DataSource",
          "documentation":"<p>The data source (an Glue table) associated with this run.</p>"
        },
        "Role":{
          "shape":"RoleString",
          "documentation":"<p>An IAM role supplied to encrypt the results of the run.</p>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of <code>G.1X</code> workers to be used in the run. The default is 5.</p>"
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The timeout for a run in minutes. This is the maximum time that a run can consume resources before it is terminated and enters <code>TIMEOUT</code> status. The default is 2,880 minutes (48 hours).</p>"
        },
        "Status":{
          "shape":"TaskStatusType",
          "documentation":"<p>The status for this run.</p>"
        },
        "ErrorString":{
          "shape":"GenericString",
          "documentation":"<p>The error strings that are associated with the run.</p>"
        },
        "StartedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when this run started.</p>"
        },
        "LastModifiedOn":{
          "shape":"Timestamp",
          "documentation":"<p>A timestamp. The last point in time when this data quality rule recommendation run was modified.</p>"
        },
        "CompletedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when this run was completed.</p>"
        },
        "ExecutionTime":{
          "shape":"ExecutionTime",
          "documentation":"<p>The amount of time (in seconds) that the run consumed resources.</p>"
        },
        "RecommendedRuleset":{
          "shape":"DataQualityRulesetString",
          "documentation":"<p>When a start rule recommendation run completes, it creates a recommended ruleset (a set of rules). This member has those rules in Data Quality Definition Language (DQDL) format.</p>"
        },
        "CreatedRulesetName":{
          "shape":"NameString",
          "documentation":"<p>The name of the ruleset that was created by the run.</p>"
        }
      }
    },
    "GetDataQualityRulesetEvaluationRunRequest":{
      "type":"structure",
      "required":["RunId"],
      "members":{
        "RunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run identifier associated with this run.</p>"
        }
      }
    },
    "GetDataQualityRulesetEvaluationRunResponse":{
      "type":"structure",
      "members":{
        "RunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run identifier associated with this run.</p>"
        },
        "DataSource":{
          "shape":"DataSource",
          "documentation":"<p>The data source (an Glue table) associated with this evaluation run.</p>"
        },
        "Role":{
          "shape":"RoleString",
          "documentation":"<p>An IAM role supplied to encrypt the results of the run.</p>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of <code>G.1X</code> workers to be used in the run. The default is 5.</p>"
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The timeout for a run in minutes. This is the maximum time that a run can consume resources before it is terminated and enters <code>TIMEOUT</code> status. The default is 2,880 minutes (48 hours).</p>"
        },
        "AdditionalRunOptions":{
          "shape":"DataQualityEvaluationRunAdditionalRunOptions",
          "documentation":"<p>Additional run options you can specify for an evaluation run.</p>"
        },
        "Status":{
          "shape":"TaskStatusType",
          "documentation":"<p>The status for this run.</p>"
        },
        "ErrorString":{
          "shape":"GenericString",
          "documentation":"<p>The error strings that are associated with the run.</p>"
        },
        "StartedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when this run started.</p>"
        },
        "LastModifiedOn":{
          "shape":"Timestamp",
          "documentation":"<p>A timestamp. The last point in time when this data quality rule recommendation run was modified.</p>"
        },
        "CompletedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when this run was completed.</p>"
        },
        "ExecutionTime":{
          "shape":"ExecutionTime",
          "documentation":"<p>The amount of time (in seconds) that the run consumed resources.</p>"
        },
        "RulesetNames":{
          "shape":"RulesetNames",
          "documentation":"<p>A list of ruleset names for the run.</p>"
        },
        "ResultIds":{
          "shape":"DataQualityResultIdList",
          "documentation":"<p>A list of result IDs for the data quality results for the run.</p>"
        },
        "AdditionalDataSources":{
          "shape":"DataSourceMap",
          "documentation":"<p>A map of reference strings to additional data sources you can specify for an evaluation run.</p>"
        }
      }
    },
    "GetDataQualityRulesetRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the ruleset.</p>"
        }
      }
    },
    "GetDataQualityRulesetResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the ruleset.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the ruleset.</p>"
        },
        "Ruleset":{
          "shape":"DataQualityRulesetString",
          "documentation":"<p>A Data Quality Definition Language (DQDL) ruleset. For more information, see the Glue developer guide.</p>"
        },
        "TargetTable":{
          "shape":"DataQualityTargetTable",
          "documentation":"<p>The name and database name of the target table.</p>"
        },
        "CreatedOn":{
          "shape":"Timestamp",
          "documentation":"<p>A timestamp. The time and date that this data quality ruleset was created.</p>"
        },
        "LastModifiedOn":{
          "shape":"Timestamp",
          "documentation":"<p>A timestamp. The last point in time when this data quality ruleset was modified.</p>"
        },
        "RecommendationRunId":{
          "shape":"HashString",
          "documentation":"<p>When a ruleset was created from a recommendation run, this run ID is generated to link the two together.</p>"
        }
      }
    },
    "GetDatabaseRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the database resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the database to retrieve. For Hive compatibility, this should be all lowercase.</p>"
        }
      }
    },
    "GetDatabaseResponse":{
      "type":"structure",
      "members":{
        "Database":{
          "shape":"Database",
          "documentation":"<p>The definition of the specified database in the Data Catalog.</p>"
        }
      }
    },
    "GetDatabasesRequest":{
      "type":"structure",
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog from which to retrieve <code>Databases</code>. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        },
        "MaxResults":{
          "shape":"CatalogGetterPageSize",
          "documentation":"<p>The maximum number of databases to return in one response.</p>"
        },
        "ResourceShareType":{
          "shape":"ResourceShareType",
          "documentation":"<p>Allows you to specify that you want to list the databases shared with your account. The allowable values are <code>FEDERATED</code>, <code>FOREIGN</code> or <code>ALL</code>. </p> <ul> <li> <p>If set to <code>FEDERATED</code>, will list the federated databases (referencing an external entity) shared with your account.</p> </li> <li> <p>If set to <code>FOREIGN</code>, will list the databases shared with your account. </p> </li> <li> <p>If set to <code>ALL</code>, will list the databases shared with your account, as well as the databases in yor local account. </p> </li> </ul>"
        }
      }
    },
    "GetDatabasesResponse":{
      "type":"structure",
      "required":["DatabaseList"],
      "members":{
        "DatabaseList":{
          "shape":"DatabaseList",
          "documentation":"<p>A list of <code>Database</code> objects from the specified catalog.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token for paginating the returned list of tokens, returned if the current segment of the list is not the last.</p>"
        }
      }
    },
    "GetDataflowGraphRequest":{
      "type":"structure",
      "members":{
        "PythonScript":{
          "shape":"PythonScript",
          "documentation":"<p>The Python script to transform.</p>"
        }
      }
    },
    "GetDataflowGraphResponse":{
      "type":"structure",
      "members":{
        "DagNodes":{
          "shape":"DagNodes",
          "documentation":"<p>A list of the nodes in the resulting DAG.</p>"
        },
        "DagEdges":{
          "shape":"DagEdges",
          "documentation":"<p>A list of the edges in the resulting DAG.</p>"
        }
      }
    },
    "GetDevEndpointRequest":{
      "type":"structure",
      "required":["EndpointName"],
      "members":{
        "EndpointName":{
          "shape":"GenericString",
          "documentation":"<p>Name of the <code>DevEndpoint</code> to retrieve information for.</p>"
        }
      }
    },
    "GetDevEndpointResponse":{
      "type":"structure",
      "members":{
        "DevEndpoint":{
          "shape":"DevEndpoint",
          "documentation":"<p>A <code>DevEndpoint</code> definition.</p>"
        }
      }
    },
    "GetDevEndpointsRequest":{
      "type":"structure",
      "members":{
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum size of information to return.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        }
      }
    },
    "GetDevEndpointsResponse":{
      "type":"structure",
      "members":{
        "DevEndpoints":{
          "shape":"DevEndpointList",
          "documentation":"<p>A list of <code>DevEndpoint</code> definitions.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if not all <code>DevEndpoint</code> definitions have yet been returned.</p>"
        }
      }
    },
    "GetJobBookmarkRequest":{
      "type":"structure",
      "required":["JobName"],
      "members":{
        "JobName":{
          "shape":"JobName",
          "documentation":"<p>The name of the job in question.</p>"
        },
        "RunId":{
          "shape":"RunId",
          "documentation":"<p>The unique run identifier associated with this job run.</p>"
        }
      }
    },
    "GetJobBookmarkResponse":{
      "type":"structure",
      "members":{
        "JobBookmarkEntry":{
          "shape":"JobBookmarkEntry",
          "documentation":"<p>A structure that defines a point that a job can resume processing.</p>"
        }
      }
    },
    "GetJobRequest":{
      "type":"structure",
      "required":["JobName"],
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the job definition to retrieve.</p>"
        }
      }
    },
    "GetJobResponse":{
      "type":"structure",
      "members":{
        "Job":{
          "shape":"Job",
          "documentation":"<p>The requested job definition.</p>"
        }
      }
    },
    "GetJobRunRequest":{
      "type":"structure",
      "required":[
        "JobName",
        "RunId"
      ],
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>Name of the job definition being run.</p>"
        },
        "RunId":{
          "shape":"IdString",
          "documentation":"<p>The ID of the job run.</p>"
        },
        "PredecessorsIncluded":{
          "shape":"BooleanValue",
          "documentation":"<p>True if a list of predecessor runs should be returned.</p>"
        }
      }
    },
    "GetJobRunResponse":{
      "type":"structure",
      "members":{
        "JobRun":{
          "shape":"JobRun",
          "documentation":"<p>The requested job-run metadata.</p>"
        }
      }
    },
    "GetJobRunsRequest":{
      "type":"structure",
      "required":["JobName"],
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the job definition for which to retrieve all job runs.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        },
        "MaxResults":{
          "shape":"OrchestrationPageSize200",
          "documentation":"<p>The maximum size of the response.</p>"
        }
      }
    },
    "GetJobRunsResponse":{
      "type":"structure",
      "members":{
        "JobRuns":{
          "shape":"JobRunList",
          "documentation":"<p>A list of job-run metadata objects.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if not all requested job runs have been returned.</p>"
        }
      }
    },
    "GetJobsRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum size of the response.</p>"
        }
      }
    },
    "GetJobsResponse":{
      "type":"structure",
      "members":{
        "Jobs":{
          "shape":"JobList",
          "documentation":"<p>A list of job definitions.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if not all job definitions have yet been returned.</p>"
        }
      }
    },
    "GetMLTaskRunRequest":{
      "type":"structure",
      "required":[
        "TransformId",
        "TaskRunId"
      ],
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the machine learning transform.</p>"
        },
        "TaskRunId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the task run.</p>"
        }
      }
    },
    "GetMLTaskRunResponse":{
      "type":"structure",
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the task run.</p>"
        },
        "TaskRunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run identifier associated with this run.</p>"
        },
        "Status":{
          "shape":"TaskStatusType",
          "documentation":"<p>The status for this task run.</p>"
        },
        "LogGroupName":{
          "shape":"GenericString",
          "documentation":"<p>The names of the log groups that are associated with the task run.</p>"
        },
        "Properties":{
          "shape":"TaskRunProperties",
          "documentation":"<p>The list of properties that are associated with the task run.</p>"
        },
        "ErrorString":{
          "shape":"GenericString",
          "documentation":"<p>The error strings that are associated with the task run.</p>"
        },
        "StartedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when this task run started.</p>"
        },
        "LastModifiedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when this task run was last modified.</p>"
        },
        "CompletedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when this task run was completed.</p>"
        },
        "ExecutionTime":{
          "shape":"ExecutionTime",
          "documentation":"<p>The amount of time (in seconds) that the task run consumed resources.</p>"
        }
      }
    },
    "GetMLTaskRunsRequest":{
      "type":"structure",
      "required":["TransformId"],
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the machine learning transform.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A token for pagination of the results. The default is empty.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of results to return. </p>"
        },
        "Filter":{
          "shape":"TaskRunFilterCriteria",
          "documentation":"<p>The filter criteria, in the <code>TaskRunFilterCriteria</code> structure, for the task run.</p>"
        },
        "Sort":{
          "shape":"TaskRunSortCriteria",
          "documentation":"<p>The sorting criteria, in the <code>TaskRunSortCriteria</code> structure, for the task run.</p>"
        }
      }
    },
    "GetMLTaskRunsResponse":{
      "type":"structure",
      "members":{
        "TaskRuns":{
          "shape":"TaskRunList",
          "documentation":"<p>A list of task runs that are associated with the transform.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A pagination token, if more results are available.</p>"
        }
      }
    },
    "GetMLTransformRequest":{
      "type":"structure",
      "required":["TransformId"],
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the transform, generated at the time that the transform was created.</p>"
        }
      }
    },
    "GetMLTransformResponse":{
      "type":"structure",
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the transform, generated at the time that the transform was created.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The unique name given to the transform when it was created.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the transform.</p>"
        },
        "Status":{
          "shape":"TransformStatusType",
          "documentation":"<p>The last known status of the transform (to indicate whether it can be used or not). One of \"NOT_READY\", \"READY\", or \"DELETING\".</p>"
        },
        "CreatedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the transform was created.</p>"
        },
        "LastModifiedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time when the transform was last modified.</p>"
        },
        "InputRecordTables":{
          "shape":"GlueTables",
          "documentation":"<p>A list of Glue table definitions used by the transform.</p>"
        },
        "Parameters":{
          "shape":"TransformParameters",
          "documentation":"<p>The configuration parameters that are specific to the algorithm used.</p>"
        },
        "EvaluationMetrics":{
          "shape":"EvaluationMetrics",
          "documentation":"<p>The latest evaluation metrics.</p>"
        },
        "LabelCount":{
          "shape":"LabelCount",
          "documentation":"<p>The number of labels available for this transform.</p>"
        },
        "Schema":{
          "shape":"TransformSchema",
          "documentation":"<p>The <code>Map&lt;Column, Type&gt;</code> object that represents the schema that this transform accepts. Has an upper bound of 100 columns.</p>"
        },
        "Role":{
          "shape":"RoleString",
          "documentation":"<p>The name or Amazon Resource Name (ARN) of the IAM role with the required permissions.</p>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>This value determines which version of Glue this machine learning transform is compatible with. Glue 1.0 is recommended for most customers. If the value is not set, the Glue compatibility defaults to Glue 0.9. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions\">Glue Versions</a> in the developer guide.</p>"
        },
        "MaxCapacity":{
          "shape":"NullableDouble",
          "documentation":"<p>The number of Glue data processing units (DPUs) that are allocated to task runs for this transform. You can allocate from 2 to 100 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"https://aws.amazon.com/glue/pricing/\">Glue pricing page</a>. </p> <p>When the <code>WorkerType</code> field is set to a value other than <code>Standard</code>, the <code>MaxCapacity</code> field is set automatically and becomes read-only.</p>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated when this task runs. Accepts a value of Standard, G.1X, or G.2X.</p> <ul> <li> <p>For the <code>Standard</code> worker type, each worker provides 4 vCPU, 16 GB of memory and a 50GB disk, and 2 executors per worker.</p> </li> <li> <p>For the <code>G.1X</code> worker type, each worker provides 4 vCPU, 16 GB of memory and a 64GB disk, and 1 executor per worker.</p> </li> <li> <p>For the <code>G.2X</code> worker type, each worker provides 8 vCPU, 32 GB of memory and a 128GB disk, and 1 executor per worker.</p> </li> </ul>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>workerType</code> that are allocated when this task runs.</p>"
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The timeout for a task run for this transform in minutes. This is the maximum time that a task run for this transform can consume resources before it is terminated and enters <code>TIMEOUT</code> status. The default is 2,880 minutes (48 hours).</p>"
        },
        "MaxRetries":{
          "shape":"NullableInteger",
          "documentation":"<p>The maximum number of times to retry a task for this transform after a task run fails.</p>"
        },
        "TransformEncryption":{
          "shape":"TransformEncryption",
          "documentation":"<p>The encryption-at-rest settings of the transform that apply to accessing user data. Machine learning transforms can access user data encrypted in Amazon S3 using KMS.</p>"
        }
      }
    },
    "GetMLTransformsRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A paginated token to offset the results.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of results to return.</p>"
        },
        "Filter":{
          "shape":"TransformFilterCriteria",
          "documentation":"<p>The filter transformation criteria.</p>"
        },
        "Sort":{
          "shape":"TransformSortCriteria",
          "documentation":"<p>The sorting criteria.</p>"
        }
      }
    },
    "GetMLTransformsResponse":{
      "type":"structure",
      "required":["Transforms"],
      "members":{
        "Transforms":{
          "shape":"TransformList",
          "documentation":"<p>A list of machine learning transforms.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A pagination token, if more results are available.</p>"
        }
      }
    },
    "GetMappingRequest":{
      "type":"structure",
      "required":["Source"],
      "members":{
        "Source":{
          "shape":"CatalogEntry",
          "documentation":"<p>Specifies the source table.</p>"
        },
        "Sinks":{
          "shape":"CatalogEntries",
          "documentation":"<p>A list of target tables.</p>"
        },
        "Location":{
          "shape":"Location",
          "documentation":"<p>Parameters for the mapping.</p>"
        }
      }
    },
    "GetMappingResponse":{
      "type":"structure",
      "required":["Mapping"],
      "members":{
        "Mapping":{
          "shape":"MappingList",
          "documentation":"<p>A list of mappings to the specified targets.</p>"
        }
      }
    },
    "GetPartitionIndexesRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The catalog ID where the table resides.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>Specifies the name of a database from which you want to retrieve partition indexes.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>Specifies the name of a table for which you want to retrieve the partition indexes.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, included if this is a continuation call.</p>"
        }
      }
    },
    "GetPartitionIndexesResponse":{
      "type":"structure",
      "members":{
        "PartitionIndexDescriptorList":{
          "shape":"PartitionIndexDescriptorList",
          "documentation":"<p>A list of index descriptors.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, present if the current list segment is not the last.</p>"
        }
      }
    },
    "GetPartitionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "PartitionValues"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the partition in question resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the partition resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the partition's table.</p>"
        },
        "PartitionValues":{
          "shape":"ValueStringList",
          "documentation":"<p>The values that define the partition.</p>"
        }
      }
    },
    "GetPartitionResponse":{
      "type":"structure",
      "members":{
        "Partition":{
          "shape":"Partition",
          "documentation":"<p>The requested information, in the form of a <code>Partition</code> object.</p>"
        }
      }
    },
    "GetPartitionsRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the partitions in question reside. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the partitions reside.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the partitions' table.</p>"
        },
        "Expression":{
          "shape":"PredicateString",
          "documentation":"<p>An expression that filters the partitions to be returned.</p> <p>The expression uses SQL syntax similar to the SQL <code>WHERE</code> filter clause. The SQL statement parser <a href=\"http://jsqlparser.sourceforge.net/home.php\">JSQLParser</a> parses the expression. </p> <p> <i>Operators</i>: The following are the operators that you can use in the <code>Expression</code> API call:</p> <dl> <dt>=</dt> <dd> <p>Checks whether the values of the two operands are equal; if yes, then the condition becomes true.</p> <p>Example: Assume 'variable a' holds 10 and 'variable b' holds 20. </p> <p>(a = b) is not true.</p> </dd> <dt>&lt; &gt;</dt> <dd> <p>Checks whether the values of two operands are equal; if the values are not equal, then the condition becomes true.</p> <p>Example: (a &lt; &gt; b) is true.</p> </dd> <dt>&gt;</dt> <dd> <p>Checks whether the value of the left operand is greater than the value of the right operand; if yes, then the condition becomes true.</p> <p>Example: (a &gt; b) is not true.</p> </dd> <dt>&lt;</dt> <dd> <p>Checks whether the value of the left operand is less than the value of the right operand; if yes, then the condition becomes true.</p> <p>Example: (a &lt; b) is true.</p> </dd> <dt>&gt;=</dt> <dd> <p>Checks whether the value of the left operand is greater than or equal to the value of the right operand; if yes, then the condition becomes true.</p> <p>Example: (a &gt;= b) is not true.</p> </dd> <dt>&lt;=</dt> <dd> <p>Checks whether the value of the left operand is less than or equal to the value of the right operand; if yes, then the condition becomes true.</p> <p>Example: (a &lt;= b) is true.</p> </dd> <dt>AND, OR, IN, BETWEEN, LIKE, NOT, IS NULL</dt> <dd> <p>Logical operators.</p> </dd> </dl> <p> <i>Supported Partition Key Types</i>: The following are the supported partition keys.</p> <ul> <li> <p> <code>string</code> </p> </li> <li> <p> <code>date</code> </p> </li> <li> <p> <code>timestamp</code> </p> </li> <li> <p> <code>int</code> </p> </li> <li> <p> <code>bigint</code> </p> </li> <li> <p> <code>long</code> </p> </li> <li> <p> <code>tinyint</code> </p> </li> <li> <p> <code>smallint</code> </p> </li> <li> <p> <code>decimal</code> </p> </li> </ul> <p>If an type is encountered that is not valid, an exception is thrown. </p> <p>The following list shows the valid operators on each type. When you define a crawler, the <code>partitionKey</code> type is created as a <code>STRING</code>, to be compatible with the catalog partitions. </p> <p> <i>Sample API Call</i>: </p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if this is not the first call to retrieve these partitions.</p>"
        },
        "Segment":{
          "shape":"Segment",
          "documentation":"<p>The segment of the table's partitions to scan in this request.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of partitions to return in a single response.</p>"
        },
        "ExcludeColumnSchema":{
          "shape":"BooleanNullable",
          "documentation":"<p>When true, specifies not returning the partition column schema. Useful when you are interested only in other partition attributes such as partition values or location. This approach avoids the problem of a large response by not returning duplicate data.</p>"
        },
        "TransactionId":{
          "shape":"TransactionIdString",
          "documentation":"<p>The transaction ID at which to read the partition contents.</p>"
        },
        "QueryAsOfTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time as of when to read the partition contents. If not set, the most recent transaction commit time will be used. Cannot be specified along with <code>TransactionId</code>.</p>"
        }
      }
    },
    "GetPartitionsResponse":{
      "type":"structure",
      "members":{
        "Partitions":{
          "shape":"PartitionList",
          "documentation":"<p>A list of requested partitions.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if the returned list of partitions does not include the last one.</p>"
        }
      }
    },
    "GetPlanRequest":{
      "type":"structure",
      "required":[
        "Mapping",
        "Source"
      ],
      "members":{
        "Mapping":{
          "shape":"MappingList",
          "documentation":"<p>The list of mappings from a source table to target tables.</p>"
        },
        "Source":{
          "shape":"CatalogEntry",
          "documentation":"<p>The source table.</p>"
        },
        "Sinks":{
          "shape":"CatalogEntries",
          "documentation":"<p>The target tables.</p>"
        },
        "Location":{
          "shape":"Location",
          "documentation":"<p>The parameters for the mapping.</p>"
        },
        "Language":{
          "shape":"Language",
          "documentation":"<p>The programming language of the code to perform the mapping.</p>"
        },
        "AdditionalPlanOptionsMap":{
          "shape":"AdditionalPlanOptionsMap",
          "documentation":"<p>A map to hold additional optional key-value parameters.</p> <p>Currently, these key-value pairs are supported:</p> <ul> <li> <p> <code>inferSchema</code>  —  Specifies whether to set <code>inferSchema</code> to true or false for the default script generated by an Glue job. For example, to set <code>inferSchema</code> to true, pass the following key value pair:</p> <p> <code>--additional-plan-options-map '{\"inferSchema\":\"true\"}'</code> </p> </li> </ul>"
        }
      }
    },
    "GetPlanResponse":{
      "type":"structure",
      "members":{
        "PythonScript":{
          "shape":"PythonScript",
          "documentation":"<p>A Python script to perform the mapping.</p>"
        },
        "ScalaCode":{
          "shape":"ScalaCode",
          "documentation":"<p>The Scala code to perform the mapping.</p>"
        }
      }
    },
    "GetRegistryInput":{
      "type":"structure",
      "required":["RegistryId"],
      "members":{
        "RegistryId":{
          "shape":"RegistryId",
          "documentation":"<p>This is a wrapper structure that may contain the registry name and Amazon Resource Name (ARN).</p>"
        }
      }
    },
    "GetRegistryResponse":{
      "type":"structure",
      "members":{
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the registry.</p>"
        },
        "RegistryArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the registry.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the registry.</p>"
        },
        "Status":{
          "shape":"RegistryStatus",
          "documentation":"<p>The status of the registry.</p>"
        },
        "CreatedTime":{
          "shape":"CreatedTimestamp",
          "documentation":"<p>The date and time the registry was created.</p>"
        },
        "UpdatedTime":{
          "shape":"UpdatedTimestamp",
          "documentation":"<p>The date and time the registry was updated.</p>"
        }
      }
    },
    "GetResourcePoliciesRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if this is a continuation request.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum size of a list to return.</p>"
        }
      }
    },
    "GetResourcePoliciesResponse":{
      "type":"structure",
      "members":{
        "GetResourcePoliciesResponseList":{
          "shape":"GetResourcePoliciesResponseList",
          "documentation":"<p>A list of the individual resource policies and the account-level resource policy.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if the returned list does not contain the last resource policy available.</p>"
        }
      }
    },
    "GetResourcePoliciesResponseList":{
      "type":"list",
      "member":{"shape":"GluePolicy"}
    },
    "GetResourcePolicyRequest":{
      "type":"structure",
      "members":{
        "ResourceArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The ARN of the Glue resource for which to retrieve the resource policy. If not supplied, the Data Catalog resource policy is returned. Use <code>GetResourcePolicies</code> to view all existing resource policies. For more information see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/glue-specifying-resource-arns.html\">Specifying Glue Resource ARNs</a>. </p>"
        }
      }
    },
    "GetResourcePolicyResponse":{
      "type":"structure",
      "members":{
        "PolicyInJson":{
          "shape":"PolicyJsonString",
          "documentation":"<p>Contains the requested policy document, in JSON format.</p>"
        },
        "PolicyHash":{
          "shape":"HashString",
          "documentation":"<p>Contains the hash value associated with this policy.</p>"
        },
        "CreateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time at which the policy was created.</p>"
        },
        "UpdateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time at which the policy was last updated.</p>"
        }
      }
    },
    "GetSchemaByDefinitionInput":{
      "type":"structure",
      "required":[
        "SchemaId",
        "SchemaDefinition"
      ],
      "members":{
        "SchemaId":{
          "shape":"SchemaId",
          "documentation":"<p>This is a wrapper structure to contain schema identity fields. The structure contains:</p> <ul> <li> <p>SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. One of <code>SchemaArn</code> or <code>SchemaName</code> has to be provided.</p> </li> <li> <p>SchemaId$SchemaName: The name of the schema. One of <code>SchemaArn</code> or <code>SchemaName</code> has to be provided.</p> </li> </ul>"
        },
        "SchemaDefinition":{
          "shape":"SchemaDefinitionString",
          "documentation":"<p>The definition of the schema for which schema details are required.</p>"
        }
      }
    },
    "GetSchemaByDefinitionResponse":{
      "type":"structure",
      "members":{
        "SchemaVersionId":{
          "shape":"SchemaVersionIdString",
          "documentation":"<p>The schema ID of the schema version.</p>"
        },
        "SchemaArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the schema.</p>"
        },
        "DataFormat":{
          "shape":"DataFormat",
          "documentation":"<p>The data format of the schema definition. Currently <code>AVRO</code>, <code>JSON</code> and <code>PROTOBUF</code> are supported.</p>"
        },
        "Status":{
          "shape":"SchemaVersionStatus",
          "documentation":"<p>The status of the schema version.</p>"
        },
        "CreatedTime":{
          "shape":"CreatedTimestamp",
          "documentation":"<p>The date and time the schema was created.</p>"
        }
      }
    },
    "GetSchemaInput":{
      "type":"structure",
      "required":["SchemaId"],
      "members":{
        "SchemaId":{
          "shape":"SchemaId",
          "documentation":"<p>This is a wrapper structure to contain schema identity fields. The structure contains:</p> <ul> <li> <p>SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. Either <code>SchemaArn</code> or <code>SchemaName</code> and <code>RegistryName</code> has to be provided.</p> </li> <li> <p>SchemaId$SchemaName: The name of the schema. Either <code>SchemaArn</code> or <code>SchemaName</code> and <code>RegistryName</code> has to be provided.</p> </li> </ul>"
        }
      }
    },
    "GetSchemaResponse":{
      "type":"structure",
      "members":{
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the registry.</p>"
        },
        "RegistryArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the registry.</p>"
        },
        "SchemaName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the schema.</p>"
        },
        "SchemaArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the schema.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of schema if specified when created</p>"
        },
        "DataFormat":{
          "shape":"DataFormat",
          "documentation":"<p>The data format of the schema definition. Currently <code>AVRO</code>, <code>JSON</code> and <code>PROTOBUF</code> are supported.</p>"
        },
        "Compatibility":{
          "shape":"Compatibility",
          "documentation":"<p>The compatibility mode of the schema.</p>"
        },
        "SchemaCheckpoint":{
          "shape":"SchemaCheckpointNumber",
          "documentation":"<p>The version number of the checkpoint (the last time the compatibility mode was changed).</p>"
        },
        "LatestSchemaVersion":{
          "shape":"VersionLongNumber",
          "documentation":"<p>The latest version of the schema associated with the returned schema definition.</p>"
        },
        "NextSchemaVersion":{
          "shape":"VersionLongNumber",
          "documentation":"<p>The next version of the schema associated with the returned schema definition.</p>"
        },
        "SchemaStatus":{
          "shape":"SchemaStatus",
          "documentation":"<p>The status of the schema.</p>"
        },
        "CreatedTime":{
          "shape":"CreatedTimestamp",
          "documentation":"<p>The date and time the schema was created.</p>"
        },
        "UpdatedTime":{
          "shape":"UpdatedTimestamp",
          "documentation":"<p>The date and time the schema was updated.</p>"
        }
      }
    },
    "GetSchemaVersionInput":{
      "type":"structure",
      "members":{
        "SchemaId":{
          "shape":"SchemaId",
          "documentation":"<p>This is a wrapper structure to contain schema identity fields. The structure contains:</p> <ul> <li> <p>SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. Either <code>SchemaArn</code> or <code>SchemaName</code> and <code>RegistryName</code> has to be provided.</p> </li> <li> <p>SchemaId$SchemaName: The name of the schema. Either <code>SchemaArn</code> or <code>SchemaName</code> and <code>RegistryName</code> has to be provided.</p> </li> </ul>"
        },
        "SchemaVersionId":{
          "shape":"SchemaVersionIdString",
          "documentation":"<p>The <code>SchemaVersionId</code> of the schema version. This field is required for fetching by schema ID. Either this or the <code>SchemaId</code> wrapper has to be provided.</p>"
        },
        "SchemaVersionNumber":{
          "shape":"SchemaVersionNumber",
          "documentation":"<p>The version number of the schema.</p>"
        }
      }
    },
    "GetSchemaVersionResponse":{
      "type":"structure",
      "members":{
        "SchemaVersionId":{
          "shape":"SchemaVersionIdString",
          "documentation":"<p>The <code>SchemaVersionId</code> of the schema version.</p>"
        },
        "SchemaDefinition":{
          "shape":"SchemaDefinitionString",
          "documentation":"<p>The schema definition for the schema ID.</p>"
        },
        "DataFormat":{
          "shape":"DataFormat",
          "documentation":"<p>The data format of the schema definition. Currently <code>AVRO</code>, <code>JSON</code> and <code>PROTOBUF</code> are supported.</p>"
        },
        "SchemaArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the schema.</p>"
        },
        "VersionNumber":{
          "shape":"VersionLongNumber",
          "documentation":"<p>The version number of the schema.</p>"
        },
        "Status":{
          "shape":"SchemaVersionStatus",
          "documentation":"<p>The status of the schema version. </p>"
        },
        "CreatedTime":{
          "shape":"CreatedTimestamp",
          "documentation":"<p>The date and time the schema version was created.</p>"
        }
      }
    },
    "GetSchemaVersionsDiffInput":{
      "type":"structure",
      "required":[
        "SchemaId",
        "FirstSchemaVersionNumber",
        "SecondSchemaVersionNumber",
        "SchemaDiffType"
      ],
      "members":{
        "SchemaId":{
          "shape":"SchemaId",
          "documentation":"<p>This is a wrapper structure to contain schema identity fields. The structure contains:</p> <ul> <li> <p>SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. One of <code>SchemaArn</code> or <code>SchemaName</code> has to be provided.</p> </li> <li> <p>SchemaId$SchemaName: The name of the schema. One of <code>SchemaArn</code> or <code>SchemaName</code> has to be provided.</p> </li> </ul>"
        },
        "FirstSchemaVersionNumber":{
          "shape":"SchemaVersionNumber",
          "documentation":"<p>The first of the two schema versions to be compared.</p>"
        },
        "SecondSchemaVersionNumber":{
          "shape":"SchemaVersionNumber",
          "documentation":"<p>The second of the two schema versions to be compared.</p>"
        },
        "SchemaDiffType":{
          "shape":"SchemaDiffType",
          "documentation":"<p>Refers to <code>SYNTAX_DIFF</code>, which is the currently supported diff type.</p>"
        }
      }
    },
    "GetSchemaVersionsDiffResponse":{
      "type":"structure",
      "members":{
        "Diff":{
          "shape":"SchemaDefinitionDiff",
          "documentation":"<p>The difference between schemas as a string in JsonPatch format.</p>"
        }
      }
    },
    "GetSecurityConfigurationRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the security configuration to retrieve.</p>"
        }
      }
    },
    "GetSecurityConfigurationResponse":{
      "type":"structure",
      "members":{
        "SecurityConfiguration":{
          "shape":"SecurityConfiguration",
          "documentation":"<p>The requested security configuration.</p>"
        }
      }
    },
    "GetSecurityConfigurationsRequest":{
      "type":"structure",
      "members":{
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of results to return.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        }
      }
    },
    "GetSecurityConfigurationsResponse":{
      "type":"structure",
      "members":{
        "SecurityConfigurations":{
          "shape":"SecurityConfigurationList",
          "documentation":"<p>A list of security configurations.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if there are more security configurations to return.</p>"
        }
      }
    },
    "GetSessionRequest":{
      "type":"structure",
      "required":["Id"],
      "members":{
        "Id":{
          "shape":"NameString",
          "documentation":"<p>The ID of the session. </p>"
        },
        "RequestOrigin":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The origin of the request. </p>"
        }
      }
    },
    "GetSessionResponse":{
      "type":"structure",
      "members":{
        "Session":{
          "shape":"Session",
          "documentation":"<p>The session object is returned in the response.</p>"
        }
      }
    },
    "GetStatementRequest":{
      "type":"structure",
      "required":[
        "SessionId",
        "Id"
      ],
      "members":{
        "SessionId":{
          "shape":"NameString",
          "documentation":"<p>The Session ID of the statement.</p>"
        },
        "Id":{
          "shape":"IntegerValue",
          "documentation":"<p>The Id of the statement.</p>"
        },
        "RequestOrigin":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The origin of the request.</p>"
        }
      }
    },
    "GetStatementResponse":{
      "type":"structure",
      "members":{
        "Statement":{
          "shape":"Statement",
          "documentation":"<p>Returns the statement.</p>"
        }
      }
    },
    "GetTableOptimizerRequest":{
      "type":"structure",
      "required":[
        "CatalogId",
        "DatabaseName",
        "TableName",
        "Type"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The Catalog ID of the table.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the database in the catalog in which the table resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table.</p>"
        },
        "Type":{
          "shape":"TableOptimizerType",
          "documentation":"<p>The type of table optimizer.</p>"
        }
      }
    },
    "GetTableOptimizerResponse":{
      "type":"structure",
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The Catalog ID of the table.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the database in the catalog in which the table resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table.</p>"
        },
        "TableOptimizer":{
          "shape":"TableOptimizer",
          "documentation":"<p>The optimizer associated with the specified table.</p>"
        }
      }
    },
    "GetTableRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "Name"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the table resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the database in the catalog in which the table resides. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the table for which to retrieve the definition. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "TransactionId":{
          "shape":"TransactionIdString",
          "documentation":"<p>The transaction ID at which to read the table contents. </p>"
        },
        "QueryAsOfTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time as of when to read the table contents. If not set, the most recent transaction commit time will be used. Cannot be specified along with <code>TransactionId</code>.</p>"
        }
      }
    },
    "GetTableResponse":{
      "type":"structure",
      "members":{
        "Table":{
          "shape":"Table",
          "documentation":"<p>The <code>Table</code> object that defines the specified table.</p>"
        }
      }
    },
    "GetTableVersionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the tables reside. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The database in the catalog in which the table resides. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "VersionId":{
          "shape":"VersionString",
          "documentation":"<p>The ID value of the table version to be retrieved. A <code>VersionID</code> is a string representation of an integer. Each version is incremented by 1. </p>"
        }
      }
    },
    "GetTableVersionResponse":{
      "type":"structure",
      "members":{
        "TableVersion":{
          "shape":"TableVersion",
          "documentation":"<p>The requested table version.</p>"
        }
      }
    },
    "GetTableVersionsList":{
      "type":"list",
      "member":{"shape":"TableVersion"}
    },
    "GetTableVersionsRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the tables reside. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The database in the catalog in which the table resides. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if this is not the first call.</p>"
        },
        "MaxResults":{
          "shape":"CatalogGetterPageSize",
          "documentation":"<p>The maximum number of table versions to return in one response.</p>"
        }
      }
    },
    "GetTableVersionsResponse":{
      "type":"structure",
      "members":{
        "TableVersions":{
          "shape":"GetTableVersionsList",
          "documentation":"<p>A list of strings identifying available versions of the specified table.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if the list of available versions does not include the last one.</p>"
        }
      }
    },
    "GetTablesRequest":{
      "type":"structure",
      "required":["DatabaseName"],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the tables reside. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The database in the catalog whose tables to list. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "Expression":{
          "shape":"FilterString",
          "documentation":"<p>A regular expression pattern. If present, only those tables whose names match the pattern are returned.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, included if this is a continuation call.</p>"
        },
        "MaxResults":{
          "shape":"CatalogGetterPageSize",
          "documentation":"<p>The maximum number of tables to return in a single response.</p>"
        },
        "TransactionId":{
          "shape":"TransactionIdString",
          "documentation":"<p>The transaction ID at which to read the table contents.</p>"
        },
        "QueryAsOfTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time as of when to read the table contents. If not set, the most recent transaction commit time will be used. Cannot be specified along with <code>TransactionId</code>.</p>"
        }
      }
    },
    "GetTablesResponse":{
      "type":"structure",
      "members":{
        "TableList":{
          "shape":"TableList",
          "documentation":"<p>A list of the requested <code>Table</code> objects.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, present if the current list segment is not the last.</p>"
        }
      }
    },
    "GetTagsRequest":{
      "type":"structure",
      "required":["ResourceArn"],
      "members":{
        "ResourceArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource for which to retrieve tags.</p>"
        }
      }
    },
    "GetTagsResponse":{
      "type":"structure",
      "members":{
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>The requested tags.</p>"
        }
      }
    },
    "GetTriggerRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the trigger to retrieve.</p>"
        }
      }
    },
    "GetTriggerResponse":{
      "type":"structure",
      "members":{
        "Trigger":{
          "shape":"Trigger",
          "documentation":"<p>The requested trigger definition.</p>"
        }
      }
    },
    "GetTriggersRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        },
        "DependentJobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the job to retrieve triggers for. The trigger that can start this job is returned, and if there is no such trigger, all triggers are returned.</p>"
        },
        "MaxResults":{
          "shape":"OrchestrationPageSize200",
          "documentation":"<p>The maximum size of the response.</p>"
        }
      }
    },
    "GetTriggersResponse":{
      "type":"structure",
      "members":{
        "Triggers":{
          "shape":"TriggerList",
          "documentation":"<p>A list of triggers for the specified job.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if not all the requested triggers have yet been returned.</p>"
        }
      }
    },
    "GetUnfilteredPartitionMetadataRequest":{
      "type":"structure",
      "required":[
        "CatalogId",
        "DatabaseName",
        "TableName",
        "PartitionValues",
        "SupportedPermissionTypes"
      ],
      "members":{
        "Region":{
          "shape":"ValueString",
          "documentation":"<p>Specified only if the base tables belong to a different Amazon Web Services Region.</p>"
        },
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The catalog ID where the partition resides.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>(Required) Specifies the name of a database that contains the partition.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>(Required) Specifies the name of a table that contains the partition.</p>"
        },
        "PartitionValues":{
          "shape":"ValueStringList",
          "documentation":"<p>(Required) A list of partition key values.</p>"
        },
        "AuditContext":{
          "shape":"AuditContext",
          "documentation":"<p>A structure containing Lake Formation audit context information.</p>"
        },
        "SupportedPermissionTypes":{
          "shape":"PermissionTypeList",
          "documentation":"<p>(Required) A list of supported permission types. </p>"
        },
        "QuerySessionContext":{
          "shape":"QuerySessionContext",
          "documentation":"<p>A structure used as a protocol between query engines and Lake Formation or Glue. Contains both a Lake Formation generated authorization identifier and information from the request's authorization context.</p>"
        }
      }
    },
    "GetUnfilteredPartitionMetadataResponse":{
      "type":"structure",
      "members":{
        "Partition":{
          "shape":"Partition",
          "documentation":"<p>A Partition object containing the partition metadata.</p>"
        },
        "AuthorizedColumns":{
          "shape":"NameStringList",
          "documentation":"<p>A list of column names that the user has been granted access to.</p>"
        },
        "IsRegisteredWithLakeFormation":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that indicates whether the partition location is registered with Lake Formation.</p>"
        }
      }
    },
    "GetUnfilteredPartitionsMetadataRequest":{
      "type":"structure",
      "required":[
        "CatalogId",
        "DatabaseName",
        "TableName",
        "SupportedPermissionTypes"
      ],
      "members":{
        "Region":{
          "shape":"ValueString",
          "documentation":"<p>Specified only if the base tables belong to a different Amazon Web Services Region.</p>"
        },
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the partitions in question reside. If none is provided, the AWS account ID is used by default. </p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the partitions reside.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table that contains the partition.</p>"
        },
        "Expression":{
          "shape":"PredicateString",
          "documentation":"<p>An expression that filters the partitions to be returned.</p> <p>The expression uses SQL syntax similar to the SQL <code>WHERE</code> filter clause. The SQL statement parser <a href=\"http://jsqlparser.sourceforge.net/home.php\">JSQLParser</a> parses the expression. </p> <p> <i>Operators</i>: The following are the operators that you can use in the <code>Expression</code> API call:</p> <dl> <dt>=</dt> <dd> <p>Checks whether the values of the two operands are equal; if yes, then the condition becomes true.</p> <p>Example: Assume 'variable a' holds 10 and 'variable b' holds 20. </p> <p>(a = b) is not true.</p> </dd> <dt>&lt; &gt;</dt> <dd> <p>Checks whether the values of two operands are equal; if the values are not equal, then the condition becomes true.</p> <p>Example: (a &lt; &gt; b) is true.</p> </dd> <dt>&gt;</dt> <dd> <p>Checks whether the value of the left operand is greater than the value of the right operand; if yes, then the condition becomes true.</p> <p>Example: (a &gt; b) is not true.</p> </dd> <dt>&lt;</dt> <dd> <p>Checks whether the value of the left operand is less than the value of the right operand; if yes, then the condition becomes true.</p> <p>Example: (a &lt; b) is true.</p> </dd> <dt>&gt;=</dt> <dd> <p>Checks whether the value of the left operand is greater than or equal to the value of the right operand; if yes, then the condition becomes true.</p> <p>Example: (a &gt;= b) is not true.</p> </dd> <dt>&lt;=</dt> <dd> <p>Checks whether the value of the left operand is less than or equal to the value of the right operand; if yes, then the condition becomes true.</p> <p>Example: (a &lt;= b) is true.</p> </dd> <dt>AND, OR, IN, BETWEEN, LIKE, NOT, IS NULL</dt> <dd> <p>Logical operators.</p> </dd> </dl> <p> <i>Supported Partition Key Types</i>: The following are the supported partition keys.</p> <ul> <li> <p> <code>string</code> </p> </li> <li> <p> <code>date</code> </p> </li> <li> <p> <code>timestamp</code> </p> </li> <li> <p> <code>int</code> </p> </li> <li> <p> <code>bigint</code> </p> </li> <li> <p> <code>long</code> </p> </li> <li> <p> <code>tinyint</code> </p> </li> <li> <p> <code>smallint</code> </p> </li> <li> <p> <code>decimal</code> </p> </li> </ul> <p>If an type is encountered that is not valid, an exception is thrown. </p>"
        },
        "AuditContext":{
          "shape":"AuditContext",
          "documentation":"<p>A structure containing Lake Formation audit context information.</p>"
        },
        "SupportedPermissionTypes":{
          "shape":"PermissionTypeList",
          "documentation":"<p>A list of supported permission types. </p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if this is not the first call to retrieve these partitions.</p>"
        },
        "Segment":{
          "shape":"Segment",
          "documentation":"<p>The segment of the table's partitions to scan in this request.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of partitions to return in a single response.</p>"
        },
        "QuerySessionContext":{
          "shape":"QuerySessionContext",
          "documentation":"<p>A structure used as a protocol between query engines and Lake Formation or Glue. Contains both a Lake Formation generated authorization identifier and information from the request's authorization context.</p>"
        }
      }
    },
    "GetUnfilteredPartitionsMetadataResponse":{
      "type":"structure",
      "members":{
        "UnfilteredPartitions":{
          "shape":"UnfilteredPartitionList",
          "documentation":"<p>A list of requested partitions.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if the returned list of partitions does not include the last one.</p>"
        }
      }
    },
    "GetUnfilteredTableMetadataRequest":{
      "type":"structure",
      "required":[
        "CatalogId",
        "DatabaseName",
        "Name",
        "SupportedPermissionTypes"
      ],
      "members":{
        "Region":{
          "shape":"ValueString",
          "documentation":"<p>Specified only if the base tables belong to a different Amazon Web Services Region.</p>"
        },
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The catalog ID where the table resides.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>(Required) Specifies the name of a database that contains the table.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>(Required) Specifies the name of a table for which you are requesting metadata.</p>"
        },
        "AuditContext":{
          "shape":"AuditContext",
          "documentation":"<p>A structure containing Lake Formation audit context information.</p>"
        },
        "SupportedPermissionTypes":{
          "shape":"PermissionTypeList",
          "documentation":"<p>Indicates the level of filtering a third-party analytical engine is capable of enforcing when calling the <code>GetUnfilteredTableMetadata</code> API operation. Accepted values are:</p> <ul> <li> <p> <code>COLUMN_PERMISSION</code> - Column permissions ensure that users can access only specific columns in the table. If there are particular columns contain sensitive data, data lake administrators can define column filters that exclude access to specific columns.</p> </li> <li> <p> <code>CELL_FILTER_PERMISSION</code> - Cell-level filtering combines column filtering (include or exclude columns) and row filter expressions to restrict access to individual elements in the table.</p> </li> <li> <p> <code>NESTED_PERMISSION</code> - Nested permissions combines cell-level filtering and nested column filtering to restrict access to columns and/or nested columns in specific rows based on row filter expressions.</p> </li> <li> <p> <code>NESTED_CELL_PERMISSION</code> - Nested cell permissions combines nested permission with nested cell-level filtering. This allows different subsets of nested columns to be restricted based on an array of row filter expressions. </p> </li> </ul> <p>Note: Each of these permission types follows a hierarchical order where each subsequent permission type includes all permission of the previous type.</p> <p>Important: If you provide a supported permission type that doesn't match the user's level of permissions on the table, then Lake Formation raises an exception. For example, if the third-party engine calling the <code>GetUnfilteredTableMetadata</code> operation can enforce only column-level filtering, and the user has nested cell filtering applied on the table, Lake Formation throws an exception, and will not return unfiltered table metadata and data access credentials.</p>"
        },
        "ParentResourceArn":{
          "shape":"ArnString",
          "documentation":"<p>The resource ARN of the view.</p>"
        },
        "RootResourceArn":{
          "shape":"ArnString",
          "documentation":"<p>The resource ARN of the root view in a chain of nested views.</p>"
        },
        "SupportedDialect":{
          "shape":"SupportedDialect",
          "documentation":"<p>A structure specifying the dialect and dialect version used by the query engine.</p>"
        },
        "Permissions":{
          "shape":"PermissionList",
          "documentation":"<p>The Lake Formation data permissions of the caller on the table. Used to authorize the call when no view context is found.</p>"
        },
        "QuerySessionContext":{
          "shape":"QuerySessionContext",
          "documentation":"<p>A structure used as a protocol between query engines and Lake Formation or Glue. Contains both a Lake Formation generated authorization identifier and information from the request's authorization context.</p>"
        }
      }
    },
    "GetUnfilteredTableMetadataResponse":{
      "type":"structure",
      "members":{
        "Table":{
          "shape":"Table",
          "documentation":"<p>A Table object containing the table metadata.</p>"
        },
        "AuthorizedColumns":{
          "shape":"NameStringList",
          "documentation":"<p>A list of column names that the user has been granted access to.</p>"
        },
        "IsRegisteredWithLakeFormation":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value that indicates whether the partition location is registered with Lake Formation.</p>"
        },
        "CellFilters":{
          "shape":"ColumnRowFilterList",
          "documentation":"<p>A list of column row filters.</p>"
        },
        "QueryAuthorizationId":{
          "shape":"HashString",
          "documentation":"<p>A cryptographically generated query identifier generated by Glue or Lake Formation.</p>"
        },
        "IsMultiDialectView":{
          "shape":"Boolean",
          "documentation":"<p>Specifies whether the view supports the SQL dialects of one or more different query engines and can therefore be read by those engines.</p>"
        },
        "ResourceArn":{
          "shape":"ArnString",
          "documentation":"<p>The resource ARN of the parent resource extracted from the request.</p>"
        },
        "IsProtected":{
          "shape":"Boolean",
          "documentation":"<p>A flag that instructs the engine not to push user-provided operations into the logical plan of the view during query planning. However, if set this flag does not guarantee that the engine will comply. Refer to the engine's documentation to understand the guarantees provided, if any.</p>"
        },
        "Permissions":{
          "shape":"PermissionList",
          "documentation":"<p>The Lake Formation data permissions of the caller on the table. Used to authorize the call when no view context is found.</p>"
        },
        "RowFilter":{
          "shape":"PredicateString",
          "documentation":"<p>The filter that applies to the table. For example when applying the filter in SQL, it would go in the <code>WHERE</code> clause and can be evaluated by using an <code>AND</code> operator with any other predicates applied by the user querying the table.</p>"
        }
      }
    },
    "GetUserDefinedFunctionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "FunctionName"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the function to be retrieved is located. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the function is located.</p>"
        },
        "FunctionName":{
          "shape":"NameString",
          "documentation":"<p>The name of the function.</p>"
        }
      }
    },
    "GetUserDefinedFunctionResponse":{
      "type":"structure",
      "members":{
        "UserDefinedFunction":{
          "shape":"UserDefinedFunction",
          "documentation":"<p>The requested function definition.</p>"
        }
      }
    },
    "GetUserDefinedFunctionsRequest":{
      "type":"structure",
      "required":["Pattern"],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the functions to be retrieved are located. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the functions are located. If none is provided, functions from all the databases across the catalog will be returned.</p>"
        },
        "Pattern":{
          "shape":"NameString",
          "documentation":"<p>An optional function-name pattern string that filters the function definitions returned.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        },
        "MaxResults":{
          "shape":"CatalogGetterPageSize",
          "documentation":"<p>The maximum number of functions to return in one response.</p>"
        }
      }
    },
    "GetUserDefinedFunctionsResponse":{
      "type":"structure",
      "members":{
        "UserDefinedFunctions":{
          "shape":"UserDefinedFunctionList",
          "documentation":"<p>A list of requested function definitions.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if the list of functions returned does not include the last requested function.</p>"
        }
      }
    },
    "GetWorkflowRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the workflow to retrieve.</p>"
        },
        "IncludeGraph":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies whether to include a graph when returning the workflow resource metadata.</p>"
        }
      }
    },
    "GetWorkflowResponse":{
      "type":"structure",
      "members":{
        "Workflow":{
          "shape":"Workflow",
          "documentation":"<p>The resource metadata for the workflow.</p>"
        }
      }
    },
    "GetWorkflowRunPropertiesRequest":{
      "type":"structure",
      "required":[
        "Name",
        "RunId"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the workflow which was run.</p>"
        },
        "RunId":{
          "shape":"IdString",
          "documentation":"<p>The ID of the workflow run whose run properties should be returned.</p>"
        }
      }
    },
    "GetWorkflowRunPropertiesResponse":{
      "type":"structure",
      "members":{
        "RunProperties":{
          "shape":"WorkflowRunProperties",
          "documentation":"<p>The workflow run properties which were set during the specified run.</p>"
        }
      }
    },
    "GetWorkflowRunRequest":{
      "type":"structure",
      "required":[
        "Name",
        "RunId"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the workflow being run.</p>"
        },
        "RunId":{
          "shape":"IdString",
          "documentation":"<p>The ID of the workflow run.</p>"
        },
        "IncludeGraph":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies whether to include the workflow graph in response or not.</p>"
        }
      }
    },
    "GetWorkflowRunResponse":{
      "type":"structure",
      "members":{
        "Run":{
          "shape":"WorkflowRun",
          "documentation":"<p>The requested workflow run metadata.</p>"
        }
      }
    },
    "GetWorkflowRunsRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the workflow whose metadata of runs should be returned.</p>"
        },
        "IncludeGraph":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies whether to include the workflow graph in response or not.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>The maximum size of the response.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of workflow runs to be included in the response.</p>"
        }
      }
    },
    "GetWorkflowRunsResponse":{
      "type":"structure",
      "members":{
        "Runs":{
          "shape":"WorkflowRuns",
          "documentation":"<p>A list of workflow run metadata objects.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if not all requested workflow runs have been returned.</p>"
        }
      }
    },
    "GlueEncryptionException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>The message describing the problem.</p>"
        }
      },
      "documentation":"<p>An encryption operation failed.</p>",
      "exception":true
    },
    "GluePolicy":{
      "type":"structure",
      "members":{
        "PolicyInJson":{
          "shape":"PolicyJsonString",
          "documentation":"<p>Contains the requested policy document, in JSON format.</p>"
        },
        "PolicyHash":{
          "shape":"HashString",
          "documentation":"<p>Contains the hash value associated with this policy.</p>"
        },
        "CreateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time at which the policy was created.</p>"
        },
        "UpdateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time at which the policy was last updated.</p>"
        }
      },
      "documentation":"<p>A structure for returning a resource policy.</p>"
    },
    "GlueRecordType":{
      "type":"string",
      "enum":[
        "DATE",
        "STRING",
        "TIMESTAMP",
        "INT",
        "FLOAT",
        "LONG",
        "BIGDECIMAL",
        "BYTE",
        "SHORT",
        "DOUBLE"
      ]
    },
    "GlueResourceArn":{
      "type":"string",
      "max":10240,
      "min":1,
      "pattern":"arn:(aws|aws-us-gov|aws-cn):glue:.*"
    },
    "GlueSchema":{
      "type":"structure",
      "members":{
        "Columns":{
          "shape":"GlueStudioSchemaColumnList",
          "documentation":"<p>Specifies the column definitions that make up a Glue schema.</p>"
        }
      },
      "documentation":"<p>Specifies a user-defined schema when a schema cannot be determined by Glue.</p>"
    },
    "GlueSchemas":{
      "type":"list",
      "member":{"shape":"GlueSchema"}
    },
    "GlueStudioColumnNameString":{
      "type":"string",
      "max":1024,
      "min":0,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "GlueStudioPathList":{
      "type":"list",
      "member":{"shape":"EnclosedInStringProperties"}
    },
    "GlueStudioSchemaColumn":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"GlueStudioColumnNameString",
          "documentation":"<p>The name of the column in the Glue Studio schema.</p>"
        },
        "Type":{
          "shape":"ColumnTypeString",
          "documentation":"<p>The hive type for this column in the Glue Studio schema.</p>"
        }
      },
      "documentation":"<p>Specifies a single column in a Glue schema definition.</p>"
    },
    "GlueStudioSchemaColumnList":{
      "type":"list",
      "member":{"shape":"GlueStudioSchemaColumn"}
    },
    "GlueTable":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName"
      ],
      "members":{
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>A database name in the Glue Data Catalog.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>A table name in the Glue Data Catalog.</p>"
        },
        "CatalogId":{
          "shape":"NameString",
          "documentation":"<p>A unique identifier for the Glue Data Catalog.</p>"
        },
        "ConnectionName":{
          "shape":"NameString",
          "documentation":"<p>The name of the connection to the Glue Data Catalog.</p>"
        },
        "AdditionalOptions":{
          "shape":"GlueTableAdditionalOptions",
          "documentation":"<p>Additional options for the table. Currently there are two keys supported:</p> <ul> <li> <p> <code>pushDownPredicate</code>: to filter on partitions without having to list and read all the files in your dataset.</p> </li> <li> <p> <code>catalogPartitionPredicate</code>: to use server-side partition pruning using partition indexes in the Glue Data Catalog.</p> </li> </ul>"
        }
      },
      "documentation":"<p>The database and table in the Glue Data Catalog that is used for input or output data.</p>"
    },
    "GlueTableAdditionalOptions":{
      "type":"map",
      "key":{"shape":"NameString"},
      "value":{"shape":"DescriptionString"},
      "max":10,
      "min":1
    },
    "GlueTables":{
      "type":"list",
      "member":{"shape":"GlueTable"},
      "max":10,
      "min":0
    },
    "GlueVersionString":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"^\\w+\\.\\w+$"
    },
    "GovernedCatalogSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data store.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The database table to read from.</p>"
        },
        "PartitionPredicate":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Partitions satisfying this predicate are deleted. Files within the retention period in these partitions are not deleted. Set to <code>\"\"</code> – empty by default.</p>"
        },
        "AdditionalOptions":{
          "shape":"S3SourceAdditionalOptions",
          "documentation":"<p>Specifies additional connection options.</p>"
        }
      },
      "documentation":"<p>Specifies the data store in the governed Glue Data Catalog.</p>"
    },
    "GovernedCatalogTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Table",
        "Database"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "PartitionKeys":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>Specifies native partitioning using a sequence of keys.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to write to.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to write to.</p>"
        },
        "SchemaChangePolicy":{
          "shape":"CatalogSchemaChangePolicy",
          "documentation":"<p>A policy that specifies update behavior for the governed catalog.</p>"
        }
      },
      "documentation":"<p>Specifies a data target that writes to Amazon S3 using the Glue Data Catalog.</p>"
    },
    "GrokClassifier":{
      "type":"structure",
      "required":[
        "Name",
        "Classification",
        "GrokPattern"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the classifier.</p>"
        },
        "Classification":{
          "shape":"Classification",
          "documentation":"<p>An identifier of the data format that the classifier matches, such as Twitter, JSON, Omniture logs, and so on.</p>"
        },
        "CreationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time that this classifier was registered.</p>"
        },
        "LastUpdated":{
          "shape":"Timestamp",
          "documentation":"<p>The time that this classifier was last updated.</p>"
        },
        "Version":{
          "shape":"VersionId",
          "documentation":"<p>The version of this classifier.</p>"
        },
        "GrokPattern":{
          "shape":"GrokPattern",
          "documentation":"<p>The grok pattern applied to a data store by this classifier. For more information, see built-in patterns in <a href=\"https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html\">Writing Custom Classifiers</a>.</p>"
        },
        "CustomPatterns":{
          "shape":"CustomPatterns",
          "documentation":"<p>Optional custom grok patterns defined by this classifier. For more information, see custom patterns in <a href=\"https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html\">Writing Custom Classifiers</a>.</p>"
        }
      },
      "documentation":"<p>A classifier that uses <code>grok</code> patterns.</p>"
    },
    "GrokPattern":{
      "type":"string",
      "max":2048,
      "min":1,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\t]*"
    },
    "HashString":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "HudiTarget":{
      "type":"structure",
      "members":{
        "Paths":{
          "shape":"PathList",
          "documentation":"<p>An array of Amazon S3 location strings for Hudi, each indicating the root folder with which the metadata files for a Hudi table resides. The Hudi folder may be located in a child folder of the root folder.</p> <p>The crawler will scan all folders underneath a path for a Hudi folder.</p>"
        },
        "ConnectionName":{
          "shape":"ConnectionName",
          "documentation":"<p>The name of the connection to use to connect to the Hudi target. If your Hudi files are stored in buckets that require VPC authorization, you can set their connection properties here.</p>"
        },
        "Exclusions":{
          "shape":"PathList",
          "documentation":"<p>A list of glob patterns used to exclude from the crawl. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html\">Catalog Tables with a Crawler</a>.</p>"
        },
        "MaximumTraversalDepth":{
          "shape":"NullableInteger",
          "documentation":"<p>The maximum depth of Amazon S3 paths that the crawler can traverse to discover the Hudi metadata folder in your Amazon S3 path. Used to limit the crawler run time.</p>"
        }
      },
      "documentation":"<p>Specifies an Apache Hudi data source.</p>"
    },
    "HudiTargetCompressionType":{
      "type":"string",
      "enum":[
        "gzip",
        "lzo",
        "uncompressed",
        "snappy"
      ]
    },
    "HudiTargetList":{
      "type":"list",
      "member":{"shape":"HudiTarget"}
    },
    "IAMRoleArn":{
      "type":"string",
      "pattern":"^arn:aws(-(cn|us-gov|iso(-[bef])?))?:iam::[0-9]{12}:role/.+"
    },
    "IcebergInput":{
      "type":"structure",
      "required":["MetadataOperation"],
      "members":{
        "MetadataOperation":{
          "shape":"MetadataOperation",
          "documentation":"<p>A required metadata operation. Can only be set to <code>CREATE</code>.</p>"
        },
        "Version":{
          "shape":"VersionString",
          "documentation":"<p>The table version for the Iceberg table. Defaults to 2.</p>"
        }
      },
      "documentation":"<p>A structure that defines an Apache Iceberg metadata table to create in the catalog.</p>"
    },
    "IcebergTarget":{
      "type":"structure",
      "members":{
        "Paths":{
          "shape":"PathList",
          "documentation":"<p>One or more Amazon S3 paths that contains Iceberg metadata folders as <code>s3://bucket/prefix</code>.</p>"
        },
        "ConnectionName":{
          "shape":"ConnectionName",
          "documentation":"<p>The name of the connection to use to connect to the Iceberg target.</p>"
        },
        "Exclusions":{
          "shape":"PathList",
          "documentation":"<p>A list of glob patterns used to exclude from the crawl. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html\">Catalog Tables with a Crawler</a>.</p>"
        },
        "MaximumTraversalDepth":{
          "shape":"NullableInteger",
          "documentation":"<p>The maximum depth of Amazon S3 paths that the crawler can traverse to discover the Iceberg metadata folder in your Amazon S3 path. Used to limit the crawler run time.</p>"
        }
      },
      "documentation":"<p>Specifies an Apache Iceberg data source where Iceberg tables are stored in Amazon S3.</p>"
    },
    "IcebergTargetList":{
      "type":"list",
      "member":{"shape":"IcebergTarget"}
    },
    "IdString":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "IdempotentParameterMismatchException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>The same unique identifier was associated with two different records.</p>",
      "exception":true
    },
    "IdleTimeout":{
      "type":"integer",
      "box":true
    },
    "IllegalBlueprintStateException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>The blueprint is in an invalid state to perform a requested operation.</p>",
      "exception":true
    },
    "IllegalSessionStateException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>The session is in an invalid state to perform a requested operation.</p>",
      "exception":true
    },
    "IllegalWorkflowStateException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>The workflow is in an invalid state to perform a requested operation.</p>",
      "exception":true
    },
    "ImportCatalogToGlueRequest":{
      "type":"structure",
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the catalog to import. Currently, this should be the Amazon Web Services account ID.</p>"
        }
      }
    },
    "ImportCatalogToGlueResponse":{
      "type":"structure",
      "members":{
      }
    },
    "ImportLabelsTaskRunProperties":{
      "type":"structure",
      "members":{
        "InputS3Path":{
          "shape":"UriString",
          "documentation":"<p>The Amazon Simple Storage Service (Amazon S3) path from where you will import the labels.</p>"
        },
        "Replace":{
          "shape":"ReplaceBoolean",
          "documentation":"<p>Indicates whether to overwrite your existing labels.</p>"
        }
      },
      "documentation":"<p>Specifies configuration properties for an importing labels task run.</p>"
    },
    "Integer":{"type":"integer"},
    "IntegerFlag":{
      "type":"integer",
      "max":1,
      "min":0
    },
    "IntegerValue":{"type":"integer"},
    "InternalServiceException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>An internal service error occurred.</p>",
      "exception":true,
      "fault":true
    },
    "InvalidInputException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        },
        "FromFederationSource":{
          "shape":"NullableBoolean",
          "documentation":"<p>Indicates whether or not the exception relates to a federated source.</p>"
        }
      },
      "documentation":"<p>The input provided was not valid.</p>",
      "exception":true
    },
    "InvalidStateException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>An error that indicates your data is in an invalid state.</p>",
      "exception":true
    },
    "IsVersionValid":{"type":"boolean"},
    "Iso8601DateTime":{
      "type":"timestamp",
      "timestampFormat":"iso8601"
    },
    "JDBCConnectionType":{
      "type":"string",
      "enum":[
        "sqlserver",
        "mysql",
        "oracle",
        "postgresql",
        "redshift"
      ]
    },
    "JDBCConnectorOptions":{
      "type":"structure",
      "members":{
        "FilterPredicate":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Extra condition clause to filter data from source. For example:</p> <p> <code>BillingCity='Mountain View'</code> </p> <p>When using a query instead of a table name, you should validate that the query works with the specified <code>filterPredicate</code>.</p>"
        },
        "PartitionColumn":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of an integer column that is used for partitioning. This option works only when it's included with <code>lowerBound</code>, <code>upperBound</code>, and <code>numPartitions</code>. This option works the same way as in the Spark SQL JDBC reader.</p>"
        },
        "LowerBound":{
          "shape":"BoxedNonNegativeLong",
          "documentation":"<p>The minimum value of <code>partitionColumn</code> that is used to decide partition stride.</p>"
        },
        "UpperBound":{
          "shape":"BoxedNonNegativeLong",
          "documentation":"<p>The maximum value of <code>partitionColumn</code> that is used to decide partition stride.</p>"
        },
        "NumPartitions":{
          "shape":"BoxedNonNegativeLong",
          "documentation":"<p>The number of partitions. This value, along with <code>lowerBound</code> (inclusive) and <code>upperBound</code> (exclusive), form partition strides for generated <code>WHERE</code> clause expressions that are used to split the <code>partitionColumn</code>.</p>"
        },
        "JobBookmarkKeys":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>The name of the job bookmark keys on which to sort.</p>"
        },
        "JobBookmarkKeysSortOrder":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies an ascending or descending sort order.</p>"
        },
        "DataTypeMapping":{
          "shape":"JDBCDataTypeMapping",
          "documentation":"<p>Custom data type mapping that builds a mapping from a JDBC data type to an Glue data type. For example, the option <code>\"dataTypeMapping\":{\"FLOAT\":\"STRING\"}</code> maps data fields of JDBC type <code>FLOAT</code> into the Java <code>String</code> type by calling the <code>ResultSet.getString()</code> method of the driver, and uses it to build the Glue record. The <code>ResultSet</code> object is implemented by each driver, so the behavior is specific to the driver you use. Refer to the documentation for your JDBC driver to understand how the driver performs the conversions.</p>"
        }
      },
      "documentation":"<p>Additional connection options for the connector.</p>"
    },
    "JDBCConnectorSource":{
      "type":"structure",
      "required":[
        "Name",
        "ConnectionName",
        "ConnectorName",
        "ConnectionType"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data source.</p>"
        },
        "ConnectionName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the connection that is associated with the connector.</p>"
        },
        "ConnectorName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of a connector that assists with accessing the data store in Glue Studio.</p>"
        },
        "ConnectionType":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The type of connection, such as marketplace.jdbc or custom.jdbc, designating a connection to a JDBC data store.</p>"
        },
        "AdditionalOptions":{
          "shape":"JDBCConnectorOptions",
          "documentation":"<p>Additional connection options for the connector.</p>"
        },
        "ConnectionTable":{
          "shape":"EnclosedInStringPropertyWithQuote",
          "documentation":"<p>The name of the table in the data source.</p>"
        },
        "Query":{
          "shape":"SqlQuery",
          "documentation":"<p>The table or SQL query to get the data from. You can specify either <code>ConnectionTable</code> or <code>query</code>, but not both.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the custom JDBC source.</p>"
        }
      },
      "documentation":"<p>Specifies a connector to a JDBC data source.</p>"
    },
    "JDBCConnectorTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "ConnectionName",
        "ConnectionTable",
        "ConnectorName",
        "ConnectionType"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "ConnectionName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the connection that is associated with the connector.</p>"
        },
        "ConnectionTable":{
          "shape":"EnclosedInStringPropertyWithQuote",
          "documentation":"<p>The name of the table in the data target.</p>"
        },
        "ConnectorName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of a connector that will be used.</p>"
        },
        "ConnectionType":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The type of connection, such as marketplace.jdbc or custom.jdbc, designating a connection to a JDBC data target.</p>"
        },
        "AdditionalOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Additional connection options for the connector.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the JDBC target.</p>"
        }
      },
      "documentation":"<p>Specifies a data target that writes to Amazon S3 in Apache Parquet columnar storage.</p>"
    },
    "JDBCDataType":{
      "type":"string",
      "enum":[
        "ARRAY",
        "BIGINT",
        "BINARY",
        "BIT",
        "BLOB",
        "BOOLEAN",
        "CHAR",
        "CLOB",
        "DATALINK",
        "DATE",
        "DECIMAL",
        "DISTINCT",
        "DOUBLE",
        "FLOAT",
        "INTEGER",
        "JAVA_OBJECT",
        "LONGNVARCHAR",
        "LONGVARBINARY",
        "LONGVARCHAR",
        "NCHAR",
        "NCLOB",
        "NULL",
        "NUMERIC",
        "NVARCHAR",
        "OTHER",
        "REAL",
        "REF",
        "REF_CURSOR",
        "ROWID",
        "SMALLINT",
        "SQLXML",
        "STRUCT",
        "TIME",
        "TIME_WITH_TIMEZONE",
        "TIMESTAMP",
        "TIMESTAMP_WITH_TIMEZONE",
        "TINYINT",
        "VARBINARY",
        "VARCHAR"
      ]
    },
    "JDBCDataTypeMapping":{
      "type":"map",
      "key":{"shape":"JDBCDataType"},
      "value":{"shape":"GlueRecordType"}
    },
    "JdbcMetadataEntry":{
      "type":"string",
      "enum":[
        "COMMENTS",
        "RAWTYPES"
      ]
    },
    "JdbcTarget":{
      "type":"structure",
      "members":{
        "ConnectionName":{
          "shape":"ConnectionName",
          "documentation":"<p>The name of the connection to use to connect to the JDBC target.</p>"
        },
        "Path":{
          "shape":"Path",
          "documentation":"<p>The path of the JDBC target.</p>"
        },
        "Exclusions":{
          "shape":"PathList",
          "documentation":"<p>A list of glob patterns used to exclude from the crawl. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html\">Catalog Tables with a Crawler</a>.</p>"
        },
        "EnableAdditionalMetadata":{
          "shape":"EnableAdditionalMetadata",
          "documentation":"<p>Specify a value of <code>RAWTYPES</code> or <code>COMMENTS</code> to enable additional metadata in table responses. <code>RAWTYPES</code> provides the native-level datatype. <code>COMMENTS</code> provides comments associated with a column or table in the database.</p> <p>If you do not need additional metadata, keep the field empty.</p>"
        }
      },
      "documentation":"<p>Specifies a JDBC data store to crawl.</p>"
    },
    "JdbcTargetList":{
      "type":"list",
      "member":{"shape":"JdbcTarget"}
    },
    "Job":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name you assign to this job definition.</p>"
        },
        "JobMode":{
          "shape":"JobMode",
          "documentation":"<p>A mode that describes how a job was created. Valid values are:</p> <ul> <li> <p> <code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p> </li> <li> <p> <code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p> </li> <li> <p> <code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p> </li> </ul> <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the job.</p>"
        },
        "LogUri":{
          "shape":"UriString",
          "documentation":"<p>This field is reserved for future use.</p>"
        },
        "Role":{
          "shape":"RoleString",
          "documentation":"<p>The name or Amazon Resource Name (ARN) of the IAM role associated with this job.</p>"
        },
        "CreatedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The time and date that this job definition was created.</p>"
        },
        "LastModifiedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The last point in time when this job definition was modified.</p>"
        },
        "ExecutionProperty":{
          "shape":"ExecutionProperty",
          "documentation":"<p>An <code>ExecutionProperty</code> specifying the maximum number of concurrent runs allowed for this job.</p>"
        },
        "Command":{
          "shape":"JobCommand",
          "documentation":"<p>The <code>JobCommand</code> that runs this job.</p>"
        },
        "DefaultArguments":{
          "shape":"GenericMap",
          "documentation":"<p>The default arguments for every run of this job, specified as name-value pairs.</p> <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p> <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job. </p> <p>For information about how to specify and consume your own Job arguments, see the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html\">Calling Glue APIs in Python</a> topic in the developer guide.</p> <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html\">Special Parameters Used by Glue</a> topic in the developer guide.</p> <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html\">Using job parameters in Ray jobs</a> in the developer guide.</p>"
        },
        "NonOverridableArguments":{
          "shape":"GenericMap",
          "documentation":"<p>Arguments for this job that are not overridden when providing job arguments in a job run, specified as name-value pairs.</p>"
        },
        "Connections":{
          "shape":"ConnectionsList",
          "documentation":"<p>The connections used for this job.</p>"
        },
        "MaxRetries":{
          "shape":"MaxRetries",
          "documentation":"<p>The maximum number of times to retry this job after a JobRun fails.</p>"
        },
        "AllocatedCapacity":{
          "shape":"IntegerValue",
          "documentation":"<p>This field is deprecated. Use <code>MaxCapacity</code> instead.</p> <p>The number of Glue data processing units (DPUs) allocated to runs of this job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"https://aws.amazon.com/glue/pricing/\">Glue pricing page</a>.</p> <p/>",
          "deprecated":true,
          "deprecatedMessage":"This property is deprecated, use MaxCapacity instead."
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The job timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status. The default is 2,880 minutes (48 hours).</p>"
        },
        "MaxCapacity":{
          "shape":"NullableDouble",
          "documentation":"<p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"https://aws.amazon.com/glue/pricing/\"> Glue pricing page</a>.</p> <p>For Glue version 2.0 or later jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p> <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p> <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p> <ul> <li> <p>When you specify a Python shell job (<code>JobCommand.Name</code>=\"pythonshell\"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p> </li> <li> <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>=\"glueetl\") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>=\"gluestreaming\"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p> </li> </ul>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p> <ul> <li> <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 84GB disk (approximately 34GB free), and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p> </li> <li> <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 128GB disk (approximately 77GB free), and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p> </li> <li> <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk (approximately 235GB free), and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in the following Amazon Web Services Regions: US East (Ohio), US East (N. Virginia), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (Ireland), and Europe (Stockholm).</p> </li> <li> <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk (approximately 487GB free), and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs, in the same Amazon Web Services Regions as supported for the <code>G.4X</code> worker type.</p> </li> <li> <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk (approximately 34GB free), and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 streaming jobs.</p> </li> <li> <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk (approximately 120GB free), and provides up to 8 Ray workers based on the autoscaler.</p> </li> </ul>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>"
        },
        "SecurityConfiguration":{
          "shape":"NameString",
          "documentation":"<p>The name of the <code>SecurityConfiguration</code> structure to be used with this job.</p>"
        },
        "NotificationProperty":{
          "shape":"NotificationProperty",
          "documentation":"<p>Specifies configuration properties of a job notification.</p>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark. </p> <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p> <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/add-job.html\">Glue version</a> in the developer guide.</p> <p>Jobs that are created without specifying a Glue version default to Glue 0.9.</p>"
        },
        "CodeGenConfigurationNodes":{
          "shape":"CodeGenConfigurationNodes",
          "documentation":"<p>The representation of a directed acyclic graph on which both the Glue Studio visual component and Glue Studio code generation is based.</p>"
        },
        "ExecutionClass":{
          "shape":"ExecutionClass",
          "documentation":"<p>Indicates whether the job is run with a standard or flexible execution class. The standard execution class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p> <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary. </p> <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>"
        },
        "SourceControlDetails":{
          "shape":"SourceControlDetails",
          "documentation":"<p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>"
        },
        "MaintenanceWindow":{
          "shape":"MaintenanceWindow",
          "documentation":"<p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p> <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>"
        }
      },
      "documentation":"<p>Specifies a job definition.</p>"
    },
    "JobBookmarkEntry":{
      "type":"structure",
      "members":{
        "JobName":{
          "shape":"JobName",
          "documentation":"<p>The name of the job in question.</p>"
        },
        "Version":{
          "shape":"IntegerValue",
          "documentation":"<p>The version of the job.</p>"
        },
        "Run":{
          "shape":"IntegerValue",
          "documentation":"<p>The run ID number.</p>"
        },
        "Attempt":{
          "shape":"IntegerValue",
          "documentation":"<p>The attempt ID number.</p>"
        },
        "PreviousRunId":{
          "shape":"RunId",
          "documentation":"<p>The unique run identifier associated with the previous job run.</p>"
        },
        "RunId":{
          "shape":"RunId",
          "documentation":"<p>The run ID number.</p>"
        },
        "JobBookmark":{
          "shape":"JsonValue",
          "documentation":"<p>The bookmark itself.</p>"
        }
      },
      "documentation":"<p>Defines a point that a job can resume processing.</p>"
    },
    "JobBookmarksEncryption":{
      "type":"structure",
      "members":{
        "JobBookmarksEncryptionMode":{
          "shape":"JobBookmarksEncryptionMode",
          "documentation":"<p>The encryption mode to use for job bookmarks data.</p>"
        },
        "KmsKeyArn":{
          "shape":"KmsKeyArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the KMS key to be used to encrypt the data.</p>"
        }
      },
      "documentation":"<p>Specifies how job bookmark data should be encrypted.</p>"
    },
    "JobBookmarksEncryptionMode":{
      "type":"string",
      "enum":[
        "DISABLED",
        "CSE-KMS"
      ]
    },
    "JobCommand":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"GenericString",
          "documentation":"<p>The name of the job command. For an Apache Spark ETL job, this must be <code>glueetl</code>. For a Python shell job, it must be <code>pythonshell</code>. For an Apache Spark streaming ETL job, this must be <code>gluestreaming</code>. For a Ray job, this must be <code>glueray</code>.</p>"
        },
        "ScriptLocation":{
          "shape":"ScriptLocationString",
          "documentation":"<p>Specifies the Amazon Simple Storage Service (Amazon S3) path to a script that runs a job.</p>"
        },
        "PythonVersion":{
          "shape":"PythonVersionString",
          "documentation":"<p>The Python version being used to run a Python shell job. Allowed values are 2 or 3.</p>"
        },
        "Runtime":{
          "shape":"RuntimeNameString",
          "documentation":"<p>In Ray jobs, Runtime is used to specify the versions of Ray, Python and additional libraries available in your environment. This field is not used in other job types. For supported runtime environment values, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/ray-jobs-section.html\">Supported Ray runtime environments</a> in the Glue Developer Guide.</p>"
        }
      },
      "documentation":"<p>Specifies code that runs when a job is run.</p>"
    },
    "JobList":{
      "type":"list",
      "member":{"shape":"Job"}
    },
    "JobMode":{
      "type":"string",
      "enum":[
        "SCRIPT",
        "VISUAL",
        "NOTEBOOK"
      ]
    },
    "JobName":{"type":"string"},
    "JobNameList":{
      "type":"list",
      "member":{"shape":"NameString"}
    },
    "JobNodeDetails":{
      "type":"structure",
      "members":{
        "JobRuns":{
          "shape":"JobRunList",
          "documentation":"<p>The information for the job runs represented by the job node.</p>"
        }
      },
      "documentation":"<p>The details of a Job node present in the workflow.</p>"
    },
    "JobRun":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"IdString",
          "documentation":"<p>The ID of this job run.</p>"
        },
        "Attempt":{
          "shape":"AttemptCount",
          "documentation":"<p>The number of the attempt to run this job.</p>"
        },
        "PreviousRunId":{
          "shape":"IdString",
          "documentation":"<p>The ID of the previous run of this job. For example, the <code>JobRunId</code> specified in the <code>StartJobRun</code> action.</p>"
        },
        "TriggerName":{
          "shape":"NameString",
          "documentation":"<p>The name of the trigger that started this job run.</p>"
        },
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the job definition being used in this run.</p>"
        },
        "JobMode":{
          "shape":"JobMode",
          "documentation":"<p>A mode that describes how a job was created. Valid values are:</p> <ul> <li> <p> <code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p> </li> <li> <p> <code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p> </li> <li> <p> <code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p> </li> </ul> <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>"
        },
        "StartedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time at which this job run was started.</p>"
        },
        "LastModifiedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The last time that this job run was modified.</p>"
        },
        "CompletedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time that this job run completed.</p>"
        },
        "JobRunState":{
          "shape":"JobRunState",
          "documentation":"<p>The current state of the job run. For more information about the statuses of jobs that have terminated abnormally, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/job-run-statuses.html\">Glue Job Run Statuses</a>.</p>"
        },
        "Arguments":{
          "shape":"GenericMap",
          "documentation":"<p>The job arguments associated with this run. For this job run, they replace the default arguments set in the job definition itself.</p> <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p> <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job. </p> <p>For information about how to specify and consume your own Job arguments, see the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html\">Calling Glue APIs in Python</a> topic in the developer guide.</p> <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html\">Special Parameters Used by Glue</a> topic in the developer guide.</p> <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html\">Using job parameters in Ray jobs</a> in the developer guide.</p>"
        },
        "ErrorMessage":{
          "shape":"ErrorString",
          "documentation":"<p>An error message associated with this job run.</p>"
        },
        "PredecessorRuns":{
          "shape":"PredecessorList",
          "documentation":"<p>A list of predecessors to this job run.</p>"
        },
        "AllocatedCapacity":{
          "shape":"IntegerValue",
          "documentation":"<p>This field is deprecated. Use <code>MaxCapacity</code> instead.</p> <p>The number of Glue data processing units (DPUs) allocated to this JobRun. From 2 to 100 DPUs can be allocated; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"https://aws.amazon.com/glue/pricing/\">Glue pricing page</a>.</p>",
          "deprecated":true,
          "deprecatedMessage":"This property is deprecated, use MaxCapacity instead."
        },
        "ExecutionTime":{
          "shape":"ExecutionTime",
          "documentation":"<p>The amount of time (in seconds) that the job run consumed resources.</p>"
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The <code>JobRun</code> timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status. This value overrides the timeout value set in the parent job.</p> <p>The maximum value for timeout for batch jobs is 7 days or 10080 minutes. The default is 2880 minutes (48 hours) for batch jobs.</p> <p>Any existing Glue jobs that have a greater timeout value are defaulted to 7 days. For instance you have specified a timeout of 20 days for a batch job, it will be stopped on the 7th day.</p> <p>Streaming jobs must have timeout values less than 7 days or 10080 minutes. When the value is left blank, the job will be restarted after 7 days based if you have not setup a maintenance window. If you have setup maintenance window, it will be restarted during the maintenance window after 7 days.</p>"
        },
        "MaxCapacity":{
          "shape":"NullableDouble",
          "documentation":"<p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"https://aws.amazon.com/glue/pricing/\"> Glue pricing page</a>.</p> <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p> <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p> <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p> <ul> <li> <p>When you specify a Python shell job (<code>JobCommand.Name</code>=\"pythonshell\"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p> </li> <li> <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>=\"glueetl\") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>=\"gluestreaming\"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p> </li> </ul>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p> <ul> <li> <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 84GB disk (approximately 34GB free), and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p> </li> <li> <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 128GB disk (approximately 77GB free), and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p> </li> <li> <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk (approximately 235GB free), and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in the following Amazon Web Services Regions: US East (Ohio), US East (N. Virginia), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (Ireland), and Europe (Stockholm).</p> </li> <li> <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk (approximately 487GB free), and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs, in the same Amazon Web Services Regions as supported for the <code>G.4X</code> worker type.</p> </li> <li> <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk (approximately 34GB free), and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 streaming jobs.</p> </li> <li> <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk (approximately 120GB free), and provides up to 8 Ray workers based on the autoscaler.</p> </li> </ul>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>"
        },
        "SecurityConfiguration":{
          "shape":"NameString",
          "documentation":"<p>The name of the <code>SecurityConfiguration</code> structure to be used with this job run.</p>"
        },
        "LogGroupName":{
          "shape":"GenericString",
          "documentation":"<p>The name of the log group for secure logging that can be server-side encrypted in Amazon CloudWatch using KMS. This name can be <code>/aws-glue/jobs/</code>, in which case the default encryption is <code>NONE</code>. If you add a role name and <code>SecurityConfiguration</code> name (in other words, <code>/aws-glue/jobs-yourRoleName-yourSecurityConfigurationName/</code>), then that security configuration is used to encrypt the log group.</p>"
        },
        "NotificationProperty":{
          "shape":"NotificationProperty",
          "documentation":"<p>Specifies configuration properties of a job run notification.</p>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark. </p> <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p> <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/add-job.html\">Glue version</a> in the developer guide.</p> <p>Jobs that are created without specifying a Glue version default to Glue 0.9.</p>"
        },
        "DPUSeconds":{
          "shape":"NullableDouble",
          "documentation":"<p>This field can be set for either job runs with execution class <code>FLEX</code> or when Auto Scaling is enabled, and represents the total time each executor ran during the lifecycle of a job run in seconds, multiplied by a DPU factor (1 for <code>G.1X</code>, 2 for <code>G.2X</code>, or 0.25 for <code>G.025X</code> workers). This value may be different than the <code>executionEngineRuntime</code> * <code>MaxCapacity</code> as in the case of Auto Scaling jobs, as the number of executors running at a given time may be less than the <code>MaxCapacity</code>. Therefore, it is possible that the value of <code>DPUSeconds</code> is less than <code>executionEngineRuntime</code> * <code>MaxCapacity</code>.</p>"
        },
        "ExecutionClass":{
          "shape":"ExecutionClass",
          "documentation":"<p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p> <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary. </p> <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>"
        },
        "MaintenanceWindow":{
          "shape":"MaintenanceWindow",
          "documentation":"<p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p> <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>"
        }
      },
      "documentation":"<p>Contains information about a job run.</p>"
    },
    "JobRunList":{
      "type":"list",
      "member":{"shape":"JobRun"}
    },
    "JobRunState":{
      "type":"string",
      "enum":[
        "STARTING",
        "RUNNING",
        "STOPPING",
        "STOPPED",
        "SUCCEEDED",
        "FAILED",
        "TIMEOUT",
        "ERROR",
        "WAITING",
        "EXPIRED"
      ]
    },
    "JobUpdate":{
      "type":"structure",
      "members":{
        "JobMode":{
          "shape":"JobMode",
          "documentation":"<p>A mode that describes how a job was created. Valid values are:</p> <ul> <li> <p> <code>SCRIPT</code> - The job was created using the Glue Studio script editor.</p> </li> <li> <p> <code>VISUAL</code> - The job was created using the Glue Studio visual editor.</p> </li> <li> <p> <code>NOTEBOOK</code> - The job was created using an interactive sessions notebook.</p> </li> </ul> <p>When the <code>JobMode</code> field is missing or null, <code>SCRIPT</code> is assigned as the default value.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>Description of the job being defined.</p>"
        },
        "LogUri":{
          "shape":"UriString",
          "documentation":"<p>This field is reserved for future use.</p>"
        },
        "Role":{
          "shape":"RoleString",
          "documentation":"<p>The name or Amazon Resource Name (ARN) of the IAM role associated with this job (required).</p>"
        },
        "ExecutionProperty":{
          "shape":"ExecutionProperty",
          "documentation":"<p>An <code>ExecutionProperty</code> specifying the maximum number of concurrent runs allowed for this job.</p>"
        },
        "Command":{
          "shape":"JobCommand",
          "documentation":"<p>The <code>JobCommand</code> that runs this job (required).</p>"
        },
        "DefaultArguments":{
          "shape":"GenericMap",
          "documentation":"<p>The default arguments for every run of this job, specified as name-value pairs.</p> <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p> <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job. </p> <p>For information about how to specify and consume your own Job arguments, see the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html\">Calling Glue APIs in Python</a> topic in the developer guide.</p> <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html\">Special Parameters Used by Glue</a> topic in the developer guide.</p> <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html\">Using job parameters in Ray jobs</a> in the developer guide.</p>"
        },
        "NonOverridableArguments":{
          "shape":"GenericMap",
          "documentation":"<p>Arguments for this job that are not overridden when providing job arguments in a job run, specified as name-value pairs.</p>"
        },
        "Connections":{
          "shape":"ConnectionsList",
          "documentation":"<p>The connections used for this job.</p>"
        },
        "MaxRetries":{
          "shape":"MaxRetries",
          "documentation":"<p>The maximum number of times to retry this job if it fails.</p>"
        },
        "AllocatedCapacity":{
          "shape":"IntegerValue",
          "documentation":"<p>This field is deprecated. Use <code>MaxCapacity</code> instead.</p> <p>The number of Glue data processing units (DPUs) to allocate to this job. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"https://aws.amazon.com/glue/pricing/\">Glue pricing page</a>.</p>",
          "deprecated":true,
          "deprecatedMessage":"This property is deprecated, use MaxCapacity instead."
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The job timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status. The default is 2,880 minutes (48 hours).</p>"
        },
        "MaxCapacity":{
          "shape":"NullableDouble",
          "documentation":"<p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"https://aws.amazon.com/glue/pricing/\"> Glue pricing page</a>.</p> <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p> <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p> <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p> <ul> <li> <p>When you specify a Python shell job (<code>JobCommand.Name</code>=\"pythonshell\"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p> </li> <li> <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>=\"glueetl\") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>=\"gluestreaming\"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p> </li> </ul>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p> <ul> <li> <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 84GB disk (approximately 34GB free), and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p> </li> <li> <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 128GB disk (approximately 77GB free), and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p> </li> <li> <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk (approximately 235GB free), and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in the following Amazon Web Services Regions: US East (Ohio), US East (N. Virginia), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (Ireland), and Europe (Stockholm).</p> </li> <li> <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk (approximately 487GB free), and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs, in the same Amazon Web Services Regions as supported for the <code>G.4X</code> worker type.</p> </li> <li> <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk (approximately 34GB free), and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 streaming jobs.</p> </li> <li> <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk (approximately 120GB free), and provides up to 8 Ray workers based on the autoscaler.</p> </li> </ul>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>"
        },
        "SecurityConfiguration":{
          "shape":"NameString",
          "documentation":"<p>The name of the <code>SecurityConfiguration</code> structure to be used with this job.</p>"
        },
        "NotificationProperty":{
          "shape":"NotificationProperty",
          "documentation":"<p>Specifies the configuration properties of a job notification.</p>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>In Spark jobs, <code>GlueVersion</code> determines the versions of Apache Spark and Python that Glue available in a job. The Python version indicates the version supported for jobs of type Spark. </p> <p>Ray jobs should set <code>GlueVersion</code> to <code>4.0</code> or greater. However, the versions of Ray, Python and additional libraries available in your Ray job are determined by the <code>Runtime</code> parameter of the Job command.</p> <p>For more information about the available Glue versions and corresponding Spark and Python versions, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/add-job.html\">Glue version</a> in the developer guide.</p> <p>Jobs that are created without specifying a Glue version default to Glue 0.9.</p>"
        },
        "CodeGenConfigurationNodes":{
          "shape":"CodeGenConfigurationNodes",
          "documentation":"<p>The representation of a directed acyclic graph on which both the Glue Studio visual component and Glue Studio code generation is based.</p>"
        },
        "ExecutionClass":{
          "shape":"ExecutionClass",
          "documentation":"<p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p> <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary. </p> <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>"
        },
        "SourceControlDetails":{
          "shape":"SourceControlDetails",
          "documentation":"<p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>"
        },
        "MaintenanceWindow":{
          "shape":"MaintenanceWindow",
          "documentation":"<p>This field specifies a day of the week and hour for a maintenance window for streaming jobs. Glue periodically performs maintenance activities. During these maintenance windows, Glue will need to restart your streaming jobs.</p> <p>Glue will restart the job within 3 hours of the specified maintenance window. For instance, if you set up the maintenance window for Monday at 10:00AM GMT, your jobs will be restarted between 10:00AM GMT to 1:00PM GMT.</p>"
        }
      },
      "documentation":"<p>Specifies information used to update an existing job definition. The previous job definition is completely overwritten by this information.</p>"
    },
    "Join":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "JoinType",
        "Columns"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"TwoInputs",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "JoinType":{
          "shape":"JoinType",
          "documentation":"<p>Specifies the type of join to be performed on the datasets.</p>"
        },
        "Columns":{
          "shape":"JoinColumns",
          "documentation":"<p>A list of the two columns to be joined.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that joins two datasets into one dataset using a comparison phrase on the specified data property keys. You can use inner, outer, left, right, left semi, and left anti joins.</p>"
    },
    "JoinColumn":{
      "type":"structure",
      "required":[
        "From",
        "Keys"
      ],
      "members":{
        "From":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The column to be joined.</p>"
        },
        "Keys":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>The key of the column to be joined.</p>"
        }
      },
      "documentation":"<p>Specifies a column to be joined.</p>"
    },
    "JoinColumns":{
      "type":"list",
      "member":{"shape":"JoinColumn"},
      "max":2,
      "min":2
    },
    "JoinType":{
      "type":"string",
      "enum":[
        "equijoin",
        "left",
        "right",
        "outer",
        "leftsemi",
        "leftanti"
      ]
    },
    "JsonClassifier":{
      "type":"structure",
      "required":[
        "Name",
        "JsonPath"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the classifier.</p>"
        },
        "CreationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time that this classifier was registered.</p>"
        },
        "LastUpdated":{
          "shape":"Timestamp",
          "documentation":"<p>The time that this classifier was last updated.</p>"
        },
        "Version":{
          "shape":"VersionId",
          "documentation":"<p>The version of this classifier.</p>"
        },
        "JsonPath":{
          "shape":"JsonPath",
          "documentation":"<p>A <code>JsonPath</code> string defining the JSON data for the classifier to classify. Glue supports a subset of JsonPath, as described in <a href=\"https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-json\">Writing JsonPath Custom Classifiers</a>.</p>"
        }
      },
      "documentation":"<p>A classifier for <code>JSON</code> content.</p>"
    },
    "JsonPath":{"type":"string"},
    "JsonValue":{"type":"string"},
    "KafkaStreamingSourceOptions":{
      "type":"structure",
      "members":{
        "BootstrapServers":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>A list of bootstrap server URLs, for example, as <code>b-1.vpc-test-2.o4q88o.c6.kafka.us-east-1.amazonaws.com:9094</code>. This option must be specified in the API call or defined in the table metadata in the Data Catalog.</p>"
        },
        "SecurityProtocol":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The protocol used to communicate with brokers. The possible values are <code>\"SSL\"</code> or <code>\"PLAINTEXT\"</code>.</p>"
        },
        "ConnectionName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the connection.</p>"
        },
        "TopicName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The topic name as specified in Apache Kafka. You must specify at least one of <code>\"topicName\"</code>, <code>\"assign\"</code> or <code>\"subscribePattern\"</code>.</p>"
        },
        "Assign":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The specific <code>TopicPartitions</code> to consume. You must specify at least one of <code>\"topicName\"</code>, <code>\"assign\"</code> or <code>\"subscribePattern\"</code>.</p>"
        },
        "SubscribePattern":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>A Java regex string that identifies the topic list to subscribe to. You must specify at least one of <code>\"topicName\"</code>, <code>\"assign\"</code> or <code>\"subscribePattern\"</code>.</p>"
        },
        "Classification":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>An optional classification.</p>"
        },
        "Delimiter":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the delimiter character.</p>"
        },
        "StartingOffsets":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The starting position in the Kafka topic to read data from. The possible values are <code>\"earliest\"</code> or <code>\"latest\"</code>. The default value is <code>\"latest\"</code>.</p>"
        },
        "EndingOffsets":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The end point when a batch query is ended. Possible values are either <code>\"latest\"</code> or a JSON string that specifies an ending offset for each <code>TopicPartition</code>.</p>"
        },
        "PollTimeoutMs":{
          "shape":"BoxedNonNegativeLong",
          "documentation":"<p>The timeout in milliseconds to poll data from Kafka in Spark job executors. The default value is <code>512</code>.</p>"
        },
        "NumRetries":{
          "shape":"BoxedNonNegativeInt",
          "documentation":"<p>The number of times to retry before failing to fetch Kafka offsets. The default value is <code>3</code>.</p>"
        },
        "RetryIntervalMs":{
          "shape":"BoxedNonNegativeLong",
          "documentation":"<p>The time in milliseconds to wait before retrying to fetch Kafka offsets. The default value is <code>10</code>.</p>"
        },
        "MaxOffsetsPerTrigger":{
          "shape":"BoxedNonNegativeLong",
          "documentation":"<p>The rate limit on the maximum number of offsets that are processed per trigger interval. The specified total number of offsets is proportionally split across <code>topicPartitions</code> of different volumes. The default value is null, which means that the consumer reads all offsets until the known latest offset.</p>"
        },
        "MinPartitions":{
          "shape":"BoxedNonNegativeInt",
          "documentation":"<p>The desired minimum number of partitions to read from Kafka. The default value is null, which means that the number of spark partitions is equal to the number of Kafka partitions.</p>"
        },
        "IncludeHeaders":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Whether to include the Kafka headers. When the option is set to \"true\", the data output will contain an additional column named \"glue_streaming_kafka_headers\" with type <code>Array[Struct(key: String, value: String)]</code>. The default value is \"false\". This option is available in Glue version 3.0 or later only.</p>"
        },
        "AddRecordTimestamp":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>When this option is set to 'true', the data output will contain an additional column named \"__src_timestamp\" that indicates the time when the corresponding record received by the topic. The default value is 'false'. This option is supported in Glue version 4.0 or later.</p>"
        },
        "EmitConsumerLagMetrics":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>When this option is set to 'true', for each batch, it will emit the metrics for the duration between the oldest record received by the topic and the time it arrives in Glue to CloudWatch. The metric's name is \"glue.driver.streaming.maxConsumerLagInMs\". The default value is 'false'. This option is supported in Glue version 4.0 or later.</p>"
        },
        "StartingTimestamp":{
          "shape":"Iso8601DateTime",
          "documentation":"<p>The timestamp of the record in the Kafka topic to start reading data from. The possible values are a timestamp string in UTC format of the pattern <code>yyyy-mm-ddTHH:MM:SSZ</code> (where Z represents a UTC timezone offset with a +/-. For example: \"2023-04-04T08:00:00+08:00\"). </p> <p>Only one of <code>StartingTimestamp</code> or <code>StartingOffsets</code> must be set.</p>"
        }
      },
      "documentation":"<p>Additional options for streaming.</p>"
    },
    "KeyList":{
      "type":"list",
      "member":{"shape":"NameString"},
      "min":1
    },
    "KeySchemaElement":{
      "type":"structure",
      "required":[
        "Name",
        "Type"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of a partition key.</p>"
        },
        "Type":{
          "shape":"ColumnTypeString",
          "documentation":"<p>The type of a partition key.</p>"
        }
      },
      "documentation":"<p>A partition key pair consisting of a name and a type.</p>"
    },
    "KeySchemaElementList":{
      "type":"list",
      "member":{"shape":"KeySchemaElement"},
      "min":1
    },
    "KeyString":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "KinesisStreamingSourceOptions":{
      "type":"structure",
      "members":{
        "EndpointUrl":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The URL of the Kinesis endpoint.</p>"
        },
        "StreamName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the Kinesis data stream.</p>"
        },
        "Classification":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>An optional classification.</p>"
        },
        "Delimiter":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the delimiter character.</p>"
        },
        "StartingPosition":{
          "shape":"StartingPosition",
          "documentation":"<p>The starting position in the Kinesis data stream to read data from. The possible values are <code>\"latest\"</code>, <code>\"trim_horizon\"</code>, <code>\"earliest\"</code>, or a timestamp string in UTC format in the pattern <code>yyyy-mm-ddTHH:MM:SSZ</code> (where <code>Z</code> represents a UTC timezone offset with a +/-. For example: \"2023-04-04T08:00:00-04:00\"). The default value is <code>\"latest\"</code>.</p> <p>Note: Using a value that is a timestamp string in UTC format for \"startingPosition\" is supported only for Glue version 4.0 or later.</p>"
        },
        "MaxFetchTimeInMs":{
          "shape":"BoxedNonNegativeLong",
          "documentation":"<p>The maximum time spent for the job executor to read records for the current batch from the Kinesis data stream, specified in milliseconds (ms). Multiple <code>GetRecords</code> API calls may be made within this time. The default value is <code>1000</code>.</p>"
        },
        "MaxFetchRecordsPerShard":{
          "shape":"BoxedNonNegativeLong",
          "documentation":"<p>The maximum number of records to fetch per shard in the Kinesis data stream per microbatch. Note: The client can exceed this limit if the streaming job has already read extra records from Kinesis (in the same get-records call). If <code>MaxFetchRecordsPerShard</code> needs to be strict then it needs to be a multiple of <code>MaxRecordPerRead</code>. The default value is <code>100000</code>.</p>"
        },
        "MaxRecordPerRead":{
          "shape":"BoxedNonNegativeLong",
          "documentation":"<p>The maximum number of records to fetch from the Kinesis data stream in each getRecords operation. The default value is <code>10000</code>.</p>"
        },
        "AddIdleTimeBetweenReads":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Adds a time delay between two consecutive getRecords operations. The default value is <code>\"False\"</code>. This option is only configurable for Glue version 2.0 and above.</p>"
        },
        "IdleTimeBetweenReadsInMs":{
          "shape":"BoxedNonNegativeLong",
          "documentation":"<p>The minimum time delay between two consecutive getRecords operations, specified in ms. The default value is <code>1000</code>. This option is only configurable for Glue version 2.0 and above.</p>"
        },
        "DescribeShardInterval":{
          "shape":"BoxedNonNegativeLong",
          "documentation":"<p>The minimum time interval between two ListShards API calls for your script to consider resharding. The default value is <code>1s</code>.</p>"
        },
        "NumRetries":{
          "shape":"BoxedNonNegativeInt",
          "documentation":"<p>The maximum number of retries for Kinesis Data Streams API requests. The default value is <code>3</code>.</p>"
        },
        "RetryIntervalMs":{
          "shape":"BoxedNonNegativeLong",
          "documentation":"<p>The cool-off time period (specified in ms) before retrying the Kinesis Data Streams API call. The default value is <code>1000</code>.</p>"
        },
        "MaxRetryIntervalMs":{
          "shape":"BoxedNonNegativeLong",
          "documentation":"<p>The maximum cool-off time period (specified in ms) between two retries of a Kinesis Data Streams API call. The default value is <code>10000</code>.</p>"
        },
        "AvoidEmptyBatches":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Avoids creating an empty microbatch job by checking for unread data in the Kinesis data stream before the batch is started. The default value is <code>\"False\"</code>.</p>"
        },
        "StreamArn":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The Amazon Resource Name (ARN) of the Kinesis data stream.</p>"
        },
        "RoleArn":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The Amazon Resource Name (ARN) of the role to assume using AWS Security Token Service (AWS STS). This role must have permissions for describe or read record operations for the Kinesis data stream. You must use this parameter when accessing a data stream in a different account. Used in conjunction with <code>\"awsSTSSessionName\"</code>.</p>"
        },
        "RoleSessionName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>An identifier for the session assuming the role using AWS STS. You must use this parameter when accessing a data stream in a different account. Used in conjunction with <code>\"awsSTSRoleARN\"</code>.</p>"
        },
        "AddRecordTimestamp":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>When this option is set to 'true', the data output will contain an additional column named \"__src_timestamp\" that indicates the time when the corresponding record received by the stream. The default value is 'false'. This option is supported in Glue version 4.0 or later.</p>"
        },
        "EmitConsumerLagMetrics":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>When this option is set to 'true', for each batch, it will emit the metrics for the duration between the oldest record received by the stream and the time it arrives in Glue to CloudWatch. The metric's name is \"glue.driver.streaming.maxConsumerLagInMs\". The default value is 'false'. This option is supported in Glue version 4.0 or later.</p>"
        },
        "StartingTimestamp":{
          "shape":"Iso8601DateTime",
          "documentation":"<p>The timestamp of the record in the Kinesis data stream to start reading data from. The possible values are a timestamp string in UTC format of the pattern <code>yyyy-mm-ddTHH:MM:SSZ</code> (where Z represents a UTC timezone offset with a +/-. For example: \"2023-04-04T08:00:00+08:00\"). </p>"
        }
      },
      "documentation":"<p>Additional options for the Amazon Kinesis streaming data source.</p>"
    },
    "KmsKeyArn":{
      "type":"string",
      "pattern":"arn:aws:kms:.*"
    },
    "LabelCount":{"type":"integer"},
    "LabelingSetGenerationTaskRunProperties":{
      "type":"structure",
      "members":{
        "OutputS3Path":{
          "shape":"UriString",
          "documentation":"<p>The Amazon Simple Storage Service (Amazon S3) path where you will generate the labeling set.</p>"
        }
      },
      "documentation":"<p>Specifies configuration properties for a labeling set generation task run.</p>"
    },
    "LakeFormationConfiguration":{
      "type":"structure",
      "members":{
        "UseLakeFormationCredentials":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies whether to use Lake Formation credentials for the crawler instead of the IAM role credentials.</p>"
        },
        "AccountId":{
          "shape":"AccountId",
          "documentation":"<p>Required for cross account crawls. For same account crawls as the target data, this can be left as null.</p>"
        }
      },
      "documentation":"<p>Specifies Lake Formation configuration settings for the crawler.</p>"
    },
    "Language":{
      "type":"string",
      "enum":[
        "PYTHON",
        "SCALA"
      ]
    },
    "LastActiveDefinition":{
      "type":"structure",
      "members":{
        "Description":{
          "shape":"Generic512CharString",
          "documentation":"<p>The description of the blueprint.</p>"
        },
        "LastModifiedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time the blueprint was last modified.</p>"
        },
        "ParameterSpec":{
          "shape":"BlueprintParameterSpec",
          "documentation":"<p>A JSON string specifying the parameters for the blueprint.</p>"
        },
        "BlueprintLocation":{
          "shape":"GenericString",
          "documentation":"<p>Specifies a path in Amazon S3 where the blueprint is published by the Glue developer.</p>"
        },
        "BlueprintServiceLocation":{
          "shape":"GenericString",
          "documentation":"<p>Specifies a path in Amazon S3 where the blueprint is copied when you create or update the blueprint.</p>"
        }
      },
      "documentation":"<p>When there are multiple versions of a blueprint and the latest version has some errors, this attribute indicates the last successful blueprint definition that is available with the service.</p>"
    },
    "LastCrawlInfo":{
      "type":"structure",
      "members":{
        "Status":{
          "shape":"LastCrawlStatus",
          "documentation":"<p>Status of the last crawl.</p>"
        },
        "ErrorMessage":{
          "shape":"DescriptionString",
          "documentation":"<p>If an error occurred, the error information about the last crawl.</p>"
        },
        "LogGroup":{
          "shape":"LogGroup",
          "documentation":"<p>The log group for the last crawl.</p>"
        },
        "LogStream":{
          "shape":"LogStream",
          "documentation":"<p>The log stream for the last crawl.</p>"
        },
        "MessagePrefix":{
          "shape":"MessagePrefix",
          "documentation":"<p>The prefix for a message about this crawl.</p>"
        },
        "StartTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time at which the crawl started.</p>"
        }
      },
      "documentation":"<p>Status and error information about the most recent crawl.</p>"
    },
    "LastCrawlStatus":{
      "type":"string",
      "enum":[
        "SUCCEEDED",
        "CANCELLED",
        "FAILED"
      ]
    },
    "LatestSchemaVersionBoolean":{"type":"boolean"},
    "LimitedPathList":{
      "type":"list",
      "member":{"shape":"LimitedStringList"}
    },
    "LimitedStringList":{
      "type":"list",
      "member":{"shape":"GenericLimitedString"}
    },
    "LineageConfiguration":{
      "type":"structure",
      "members":{
        "CrawlerLineageSettings":{
          "shape":"CrawlerLineageSettings",
          "documentation":"<p>Specifies whether data lineage is enabled for the crawler. Valid values are:</p> <ul> <li> <p>ENABLE: enables data lineage for the crawler</p> </li> <li> <p>DISABLE: disables data lineage for the crawler</p> </li> </ul>"
        }
      },
      "documentation":"<p>Specifies data lineage configuration settings for the crawler.</p>"
    },
    "ListBlueprintsRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if this is a continuation request.</p>"
        },
        "MaxResults":{
          "shape":"OrchestrationPageSize25",
          "documentation":"<p>The maximum size of a list to return.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>Filters the list by an Amazon Web Services resource tag.</p>"
        }
      }
    },
    "ListBlueprintsResponse":{
      "type":"structure",
      "members":{
        "Blueprints":{
          "shape":"BlueprintNames",
          "documentation":"<p>List of names of blueprints in the account.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if not all blueprint names have been returned.</p>"
        }
      }
    },
    "ListColumnStatisticsTaskRunsRequest":{
      "type":"structure",
      "members":{
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum size of the response.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        }
      }
    },
    "ListColumnStatisticsTaskRunsResponse":{
      "type":"structure",
      "members":{
        "ColumnStatisticsTaskRunIds":{
          "shape":"ColumnStatisticsTaskRunIdList",
          "documentation":"<p>A list of column statistics task run IDs.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if not all task run IDs have yet been returned.</p>"
        }
      }
    },
    "ListCrawlersRequest":{
      "type":"structure",
      "members":{
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum size of a list to return.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if this is a continuation request.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>Specifies to return only these tagged resources.</p>"
        }
      }
    },
    "ListCrawlersResponse":{
      "type":"structure",
      "members":{
        "CrawlerNames":{
          "shape":"CrawlerNameList",
          "documentation":"<p>The names of all crawlers in the account, or the crawlers with the specified tags.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if the returned list does not contain the last metric available.</p>"
        }
      }
    },
    "ListCrawlsRequest":{
      "type":"structure",
      "required":["CrawlerName"],
      "members":{
        "CrawlerName":{
          "shape":"NameString",
          "documentation":"<p>The name of the crawler whose runs you want to retrieve.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of results to return. The default is 20, and maximum is 100.</p>"
        },
        "Filters":{
          "shape":"CrawlsFilterList",
          "documentation":"<p>Filters the crawls by the criteria you specify in a list of <code>CrawlsFilter</code> objects.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        }
      }
    },
    "ListCrawlsResponse":{
      "type":"structure",
      "members":{
        "Crawls":{
          "shape":"CrawlerHistoryList",
          "documentation":"<p>A list of <code>CrawlerHistory</code> objects representing the crawl runs that meet your criteria.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token for paginating the returned list of tokens, returned if the current segment of the list is not the last.</p>"
        }
      }
    },
    "ListCustomEntityTypesRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A paginated token to offset the results.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of results to return.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>A list of key-value pair tags.</p>"
        }
      }
    },
    "ListCustomEntityTypesResponse":{
      "type":"structure",
      "members":{
        "CustomEntityTypes":{
          "shape":"CustomEntityTypes",
          "documentation":"<p>A list of <code>CustomEntityType</code> objects representing custom patterns.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A pagination token, if more results are available.</p>"
        }
      }
    },
    "ListDataQualityResultsRequest":{
      "type":"structure",
      "members":{
        "Filter":{
          "shape":"DataQualityResultFilterCriteria",
          "documentation":"<p>The filter criteria.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A paginated token to offset the results.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of results to return.</p>"
        }
      }
    },
    "ListDataQualityResultsResponse":{
      "type":"structure",
      "required":["Results"],
      "members":{
        "Results":{
          "shape":"DataQualityResultDescriptionList",
          "documentation":"<p>A list of <code>DataQualityResultDescription</code> objects.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A pagination token, if more results are available.</p>"
        }
      }
    },
    "ListDataQualityRuleRecommendationRunsRequest":{
      "type":"structure",
      "members":{
        "Filter":{
          "shape":"DataQualityRuleRecommendationRunFilter",
          "documentation":"<p>The filter criteria.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A paginated token to offset the results.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of results to return.</p>"
        }
      }
    },
    "ListDataQualityRuleRecommendationRunsResponse":{
      "type":"structure",
      "members":{
        "Runs":{
          "shape":"DataQualityRuleRecommendationRunList",
          "documentation":"<p>A list of <code>DataQualityRuleRecommendationRunDescription</code> objects.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A pagination token, if more results are available.</p>"
        }
      }
    },
    "ListDataQualityRulesetEvaluationRunsRequest":{
      "type":"structure",
      "members":{
        "Filter":{
          "shape":"DataQualityRulesetEvaluationRunFilter",
          "documentation":"<p>The filter criteria.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A paginated token to offset the results.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of results to return.</p>"
        }
      }
    },
    "ListDataQualityRulesetEvaluationRunsResponse":{
      "type":"structure",
      "members":{
        "Runs":{
          "shape":"DataQualityRulesetEvaluationRunList",
          "documentation":"<p>A list of <code>DataQualityRulesetEvaluationRunDescription</code> objects representing data quality ruleset runs.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A pagination token, if more results are available.</p>"
        }
      }
    },
    "ListDataQualityRulesetsRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A paginated token to offset the results.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of results to return.</p>"
        },
        "Filter":{
          "shape":"DataQualityRulesetFilterCriteria",
          "documentation":"<p>The filter criteria. </p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>A list of key-value pair tags.</p>"
        }
      }
    },
    "ListDataQualityRulesetsResponse":{
      "type":"structure",
      "members":{
        "Rulesets":{
          "shape":"DataQualityRulesetList",
          "documentation":"<p>A paginated list of rulesets for the specified list of Glue tables.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A pagination token, if more results are available.</p>"
        }
      }
    },
    "ListDevEndpointsRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if this is a continuation request.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum size of a list to return.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>Specifies to return only these tagged resources.</p>"
        }
      }
    },
    "ListDevEndpointsResponse":{
      "type":"structure",
      "members":{
        "DevEndpointNames":{
          "shape":"DevEndpointNameList",
          "documentation":"<p>The names of all the <code>DevEndpoint</code>s in the account, or the <code>DevEndpoint</code>s with the specified tags.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if the returned list does not contain the last metric available.</p>"
        }
      }
    },
    "ListJobsRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if this is a continuation request.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum size of a list to return.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>Specifies to return only these tagged resources.</p>"
        }
      }
    },
    "ListJobsResponse":{
      "type":"structure",
      "members":{
        "JobNames":{
          "shape":"JobNameList",
          "documentation":"<p>The names of all jobs in the account, or the jobs with the specified tags.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if the returned list does not contain the last metric available.</p>"
        }
      }
    },
    "ListMLTransformsRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A continuation token, if this is a continuation request.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum size of a list to return.</p>"
        },
        "Filter":{
          "shape":"TransformFilterCriteria",
          "documentation":"<p>A <code>TransformFilterCriteria</code> used to filter the machine learning transforms.</p>"
        },
        "Sort":{
          "shape":"TransformSortCriteria",
          "documentation":"<p>A <code>TransformSortCriteria</code> used to sort the machine learning transforms.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>Specifies to return only these tagged resources.</p>"
        }
      }
    },
    "ListMLTransformsResponse":{
      "type":"structure",
      "required":["TransformIds"],
      "members":{
        "TransformIds":{
          "shape":"TransformIdList",
          "documentation":"<p>The identifiers of all the machine learning transforms in the account, or the machine learning transforms with the specified tags.</p>"
        },
        "NextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A continuation token, if the returned list does not contain the last metric available.</p>"
        }
      }
    },
    "ListRegistriesInput":{
      "type":"structure",
      "members":{
        "MaxResults":{
          "shape":"MaxResultsNumber",
          "documentation":"<p>Maximum number of results required per page. If the value is not supplied, this will be defaulted to 25 per page.</p>"
        },
        "NextToken":{
          "shape":"SchemaRegistryTokenString",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        }
      }
    },
    "ListRegistriesResponse":{
      "type":"structure",
      "members":{
        "Registries":{
          "shape":"RegistryListDefinition",
          "documentation":"<p>An array of <code>RegistryDetailedListItem</code> objects containing minimal details of each registry.</p>"
        },
        "NextToken":{
          "shape":"SchemaRegistryTokenString",
          "documentation":"<p>A continuation token for paginating the returned list of tokens, returned if the current segment of the list is not the last.</p>"
        }
      }
    },
    "ListSchemaVersionsInput":{
      "type":"structure",
      "required":["SchemaId"],
      "members":{
        "SchemaId":{
          "shape":"SchemaId",
          "documentation":"<p>This is a wrapper structure to contain schema identity fields. The structure contains:</p> <ul> <li> <p>SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. Either <code>SchemaArn</code> or <code>SchemaName</code> and <code>RegistryName</code> has to be provided.</p> </li> <li> <p>SchemaId$SchemaName: The name of the schema. Either <code>SchemaArn</code> or <code>SchemaName</code> and <code>RegistryName</code> has to be provided.</p> </li> </ul>"
        },
        "MaxResults":{
          "shape":"MaxResultsNumber",
          "documentation":"<p>Maximum number of results required per page. If the value is not supplied, this will be defaulted to 25 per page.</p>"
        },
        "NextToken":{
          "shape":"SchemaRegistryTokenString",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        }
      }
    },
    "ListSchemaVersionsResponse":{
      "type":"structure",
      "members":{
        "Schemas":{
          "shape":"SchemaVersionList",
          "documentation":"<p>An array of <code>SchemaVersionList</code> objects containing details of each schema version.</p>"
        },
        "NextToken":{
          "shape":"SchemaRegistryTokenString",
          "documentation":"<p>A continuation token for paginating the returned list of tokens, returned if the current segment of the list is not the last.</p>"
        }
      }
    },
    "ListSchemasInput":{
      "type":"structure",
      "members":{
        "RegistryId":{
          "shape":"RegistryId",
          "documentation":"<p>A wrapper structure that may contain the registry name and Amazon Resource Name (ARN).</p>"
        },
        "MaxResults":{
          "shape":"MaxResultsNumber",
          "documentation":"<p>Maximum number of results required per page. If the value is not supplied, this will be defaulted to 25 per page.</p>"
        },
        "NextToken":{
          "shape":"SchemaRegistryTokenString",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        }
      }
    },
    "ListSchemasResponse":{
      "type":"structure",
      "members":{
        "Schemas":{
          "shape":"SchemaListDefinition",
          "documentation":"<p>An array of <code>SchemaListItem</code> objects containing details of each schema.</p>"
        },
        "NextToken":{
          "shape":"SchemaRegistryTokenString",
          "documentation":"<p>A continuation token for paginating the returned list of tokens, returned if the current segment of the list is not the last.</p>"
        }
      }
    },
    "ListSessionsRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"OrchestrationToken",
          "documentation":"<p>The token for the next set of results, or null if there are no more result. </p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of results. </p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>Tags belonging to the session. </p>"
        },
        "RequestOrigin":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The origin of the request. </p>"
        }
      }
    },
    "ListSessionsResponse":{
      "type":"structure",
      "members":{
        "Ids":{
          "shape":"SessionIdList",
          "documentation":"<p>Returns the ID of the session. </p>"
        },
        "Sessions":{
          "shape":"SessionList",
          "documentation":"<p>Returns the session object. </p>"
        },
        "NextToken":{
          "shape":"OrchestrationToken",
          "documentation":"<p>The token for the next set of results, or null if there are no more result. </p>"
        }
      }
    },
    "ListStatementsRequest":{
      "type":"structure",
      "required":["SessionId"],
      "members":{
        "SessionId":{
          "shape":"NameString",
          "documentation":"<p>The Session ID of the statements.</p>"
        },
        "RequestOrigin":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The origin of the request to list statements.</p>"
        },
        "NextToken":{
          "shape":"OrchestrationToken",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        }
      }
    },
    "ListStatementsResponse":{
      "type":"structure",
      "members":{
        "Statements":{
          "shape":"StatementList",
          "documentation":"<p>Returns the list of statements.</p>"
        },
        "NextToken":{
          "shape":"OrchestrationToken",
          "documentation":"<p>A continuation token, if not all statements have yet been returned.</p>"
        }
      }
    },
    "ListTableOptimizerRunsRequest":{
      "type":"structure",
      "required":[
        "CatalogId",
        "DatabaseName",
        "TableName",
        "Type"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The Catalog ID of the table.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the database in the catalog in which the table resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table.</p>"
        },
        "Type":{
          "shape":"TableOptimizerType",
          "documentation":"<p>The type of table optimizer. Currently, the only valid value is <code>compaction</code>.</p>"
        },
        "MaxResults":{
          "shape":"MaxListTableOptimizerRunsTokenResults",
          "documentation":"<p>The maximum number of optimizer runs to return on each call.</p>"
        },
        "NextToken":{
          "shape":"ListTableOptimizerRunsToken",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        }
      }
    },
    "ListTableOptimizerRunsResponse":{
      "type":"structure",
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The Catalog ID of the table.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the database in the catalog in which the table resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table.</p>"
        },
        "NextToken":{
          "shape":"ListTableOptimizerRunsToken",
          "documentation":"<p>A continuation token for paginating the returned list of optimizer runs, returned if the current segment of the list is not the last.</p>"
        },
        "TableOptimizerRuns":{
          "shape":"TableOptimizerRuns",
          "documentation":"<p>A list of the optimizer runs associated with a table.</p>"
        }
      }
    },
    "ListTableOptimizerRunsToken":{"type":"string"},
    "ListTriggersRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if this is a continuation request.</p>"
        },
        "DependentJobName":{
          "shape":"NameString",
          "documentation":"<p> The name of the job for which to retrieve triggers. The trigger that can start this job is returned. If there is no such trigger, all triggers are returned.</p>"
        },
        "MaxResults":{
          "shape":"OrchestrationPageSize200",
          "documentation":"<p>The maximum size of a list to return.</p>"
        },
        "Tags":{
          "shape":"TagsMap",
          "documentation":"<p>Specifies to return only these tagged resources.</p>"
        }
      }
    },
    "ListTriggersResponse":{
      "type":"structure",
      "members":{
        "TriggerNames":{
          "shape":"TriggerNameList",
          "documentation":"<p>The names of all triggers in the account, or the triggers with the specified tags.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if the returned list does not contain the last metric available.</p>"
        }
      }
    },
    "ListWorkflowsRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if this is a continuation request.</p>"
        },
        "MaxResults":{
          "shape":"OrchestrationPageSize25",
          "documentation":"<p>The maximum size of a list to return.</p>"
        }
      }
    },
    "ListWorkflowsResponse":{
      "type":"structure",
      "members":{
        "Workflows":{
          "shape":"WorkflowNames",
          "documentation":"<p>List of names of workflows in the account.</p>"
        },
        "NextToken":{
          "shape":"GenericString",
          "documentation":"<p>A continuation token, if not all workflow names have been returned.</p>"
        }
      }
    },
    "Location":{
      "type":"structure",
      "members":{
        "Jdbc":{
          "shape":"CodeGenNodeArgs",
          "documentation":"<p>A JDBC location.</p>"
        },
        "S3":{
          "shape":"CodeGenNodeArgs",
          "documentation":"<p>An Amazon Simple Storage Service (Amazon S3) location.</p>"
        },
        "DynamoDB":{
          "shape":"CodeGenNodeArgs",
          "documentation":"<p>An Amazon DynamoDB table location.</p>"
        }
      },
      "documentation":"<p>The location of resources.</p>"
    },
    "LocationMap":{
      "type":"map",
      "key":{"shape":"ColumnValuesString"},
      "value":{"shape":"ColumnValuesString"}
    },
    "LocationString":{
      "type":"string",
      "max":2056,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*"
    },
    "LocationStringList":{
      "type":"list",
      "member":{"shape":"LocationString"}
    },
    "LogGroup":{
      "type":"string",
      "max":512,
      "min":1,
      "pattern":"[\\.\\-_/#A-Za-z0-9]+"
    },
    "LogStream":{
      "type":"string",
      "max":512,
      "min":1,
      "pattern":"[^:*]*"
    },
    "Logical":{
      "type":"string",
      "enum":[
        "AND",
        "ANY"
      ]
    },
    "LogicalOperator":{
      "type":"string",
      "enum":["EQUALS"]
    },
    "Long":{"type":"long"},
    "LongColumnStatisticsData":{
      "type":"structure",
      "required":[
        "NumberOfNulls",
        "NumberOfDistinctValues"
      ],
      "members":{
        "MinimumValue":{
          "shape":"Long",
          "documentation":"<p>The lowest value in the column.</p>"
        },
        "MaximumValue":{
          "shape":"Long",
          "documentation":"<p>The highest value in the column.</p>"
        },
        "NumberOfNulls":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of null values in the column.</p>"
        },
        "NumberOfDistinctValues":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of distinct values in a column.</p>"
        }
      },
      "documentation":"<p>Defines column statistics supported for integer data columns.</p>"
    },
    "LongValue":{"type":"long"},
    "MLTransform":{
      "type":"structure",
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique transform ID that is generated for the machine learning transform. The ID is guaranteed to be unique and does not change.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>A user-defined name for the machine learning transform. Names are not guaranteed unique and can be changed at any time.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A user-defined, long-form description text for the machine learning transform. Descriptions are not guaranteed to be unique and can be changed at any time.</p>"
        },
        "Status":{
          "shape":"TransformStatusType",
          "documentation":"<p>The current status of the machine learning transform.</p>"
        },
        "CreatedOn":{
          "shape":"Timestamp",
          "documentation":"<p>A timestamp. The time and date that this machine learning transform was created.</p>"
        },
        "LastModifiedOn":{
          "shape":"Timestamp",
          "documentation":"<p>A timestamp. The last point in time when this machine learning transform was modified.</p>"
        },
        "InputRecordTables":{
          "shape":"GlueTables",
          "documentation":"<p>A list of Glue table definitions used by the transform.</p>"
        },
        "Parameters":{
          "shape":"TransformParameters",
          "documentation":"<p>A <code>TransformParameters</code> object. You can use parameters to tune (customize) the behavior of the machine learning transform by specifying what data it learns from and your preference on various tradeoffs (such as precious vs. recall, or accuracy vs. cost).</p>"
        },
        "EvaluationMetrics":{
          "shape":"EvaluationMetrics",
          "documentation":"<p>An <code>EvaluationMetrics</code> object. Evaluation metrics provide an estimate of the quality of your machine learning transform.</p>"
        },
        "LabelCount":{
          "shape":"LabelCount",
          "documentation":"<p>A count identifier for the labeling files generated by Glue for this transform. As you create a better transform, you can iteratively download, label, and upload the labeling file.</p>"
        },
        "Schema":{
          "shape":"TransformSchema",
          "documentation":"<p>A map of key-value pairs representing the columns and data types that this transform can run against. Has an upper bound of 100 columns.</p>"
        },
        "Role":{
          "shape":"RoleString",
          "documentation":"<p>The name or Amazon Resource Name (ARN) of the IAM role with the required permissions. The required permissions include both Glue service role permissions to Glue resources, and Amazon S3 permissions required by the transform. </p> <ul> <li> <p>This role needs Glue service role permissions to allow access to resources in Glue. See <a href=\"https://docs.aws.amazon.com/glue/latest/dg/attach-policy-iam-user.html\">Attach a Policy to IAM Users That Access Glue</a>.</p> </li> <li> <p>This role needs permission to your Amazon Simple Storage Service (Amazon S3) sources, targets, temporary directory, scripts, and any libraries used by the task run for this transform.</p> </li> </ul>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>This value determines which version of Glue this machine learning transform is compatible with. Glue 1.0 is recommended for most customers. If the value is not set, the Glue compatibility defaults to Glue 0.9. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions\">Glue Versions</a> in the developer guide.</p>"
        },
        "MaxCapacity":{
          "shape":"NullableDouble",
          "documentation":"<p>The number of Glue data processing units (DPUs) that are allocated to task runs for this transform. You can allocate from 2 to 100 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"http://aws.amazon.com/glue/pricing/\">Glue pricing page</a>. </p> <p> <code>MaxCapacity</code> is a mutually exclusive option with <code>NumberOfWorkers</code> and <code>WorkerType</code>.</p> <ul> <li> <p>If either <code>NumberOfWorkers</code> or <code>WorkerType</code> is set, then <code>MaxCapacity</code> cannot be set.</p> </li> <li> <p>If <code>MaxCapacity</code> is set then neither <code>NumberOfWorkers</code> or <code>WorkerType</code> can be set.</p> </li> <li> <p>If <code>WorkerType</code> is set, then <code>NumberOfWorkers</code> is required (and vice versa).</p> </li> <li> <p> <code>MaxCapacity</code> and <code>NumberOfWorkers</code> must both be at least 1.</p> </li> </ul> <p>When the <code>WorkerType</code> field is set to a value other than <code>Standard</code>, the <code>MaxCapacity</code> field is set automatically and becomes read-only.</p>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated when a task of this transform runs. Accepts a value of Standard, G.1X, or G.2X.</p> <ul> <li> <p>For the <code>Standard</code> worker type, each worker provides 4 vCPU, 16 GB of memory and a 50GB disk, and 2 executors per worker.</p> </li> <li> <p>For the <code>G.1X</code> worker type, each worker provides 4 vCPU, 16 GB of memory and a 64GB disk, and 1 executor per worker.</p> </li> <li> <p>For the <code>G.2X</code> worker type, each worker provides 8 vCPU, 32 GB of memory and a 128GB disk, and 1 executor per worker.</p> </li> </ul> <p> <code>MaxCapacity</code> is a mutually exclusive option with <code>NumberOfWorkers</code> and <code>WorkerType</code>.</p> <ul> <li> <p>If either <code>NumberOfWorkers</code> or <code>WorkerType</code> is set, then <code>MaxCapacity</code> cannot be set.</p> </li> <li> <p>If <code>MaxCapacity</code> is set then neither <code>NumberOfWorkers</code> or <code>WorkerType</code> can be set.</p> </li> <li> <p>If <code>WorkerType</code> is set, then <code>NumberOfWorkers</code> is required (and vice versa).</p> </li> <li> <p> <code>MaxCapacity</code> and <code>NumberOfWorkers</code> must both be at least 1.</p> </li> </ul>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>workerType</code> that are allocated when a task of the transform runs.</p> <p>If <code>WorkerType</code> is set, then <code>NumberOfWorkers</code> is required (and vice versa).</p>"
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The timeout in minutes of the machine learning transform.</p>"
        },
        "MaxRetries":{
          "shape":"NullableInteger",
          "documentation":"<p>The maximum number of times to retry after an <code>MLTaskRun</code> of the machine learning transform fails.</p>"
        },
        "TransformEncryption":{
          "shape":"TransformEncryption",
          "documentation":"<p>The encryption-at-rest settings of the transform that apply to accessing user data. Machine learning transforms can access user data encrypted in Amazon S3 using KMS.</p>"
        }
      },
      "documentation":"<p>A structure for a machine learning transform.</p>"
    },
    "MLTransformNotReadyException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>The machine learning transform is not ready to run.</p>",
      "exception":true
    },
    "MLUserDataEncryption":{
      "type":"structure",
      "required":["MlUserDataEncryptionMode"],
      "members":{
        "MlUserDataEncryptionMode":{
          "shape":"MLUserDataEncryptionModeString",
          "documentation":"<p>The encryption mode applied to user data. Valid values are:</p> <ul> <li> <p>DISABLED: encryption is disabled</p> </li> <li> <p>SSEKMS: use of server-side encryption with Key Management Service (SSE-KMS) for user data stored in Amazon S3.</p> </li> </ul>"
        },
        "KmsKeyId":{
          "shape":"NameString",
          "documentation":"<p>The ID for the customer-provided KMS key.</p>"
        }
      },
      "documentation":"<p>The encryption-at-rest settings of the transform that apply to accessing user data.</p>"
    },
    "MLUserDataEncryptionModeString":{
      "type":"string",
      "enum":[
        "DISABLED",
        "SSE-KMS"
      ]
    },
    "MaintenanceWindow":{
      "type":"string",
      "pattern":"^(Sun|Mon|Tue|Wed|Thu|Fri|Sat):([01]?[0-9]|2[0-3])$"
    },
    "ManyInputs":{
      "type":"list",
      "member":{"shape":"NodeId"},
      "min":1
    },
    "MapValue":{
      "type":"map",
      "key":{"shape":"GenericString"},
      "value":{"shape":"GenericString"},
      "max":100,
      "min":0
    },
    "Mapping":{
      "type":"structure",
      "members":{
        "ToKey":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>After the apply mapping, what the name of the column should be. Can be the same as <code>FromPath</code>.</p>"
        },
        "FromPath":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>The table or column to be modified.</p>"
        },
        "FromType":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The type of the data to be modified.</p>"
        },
        "ToType":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The data type that the data is to be modified to.</p>"
        },
        "Dropped":{
          "shape":"BoxedBoolean",
          "documentation":"<p>If true, then the column is removed.</p>"
        },
        "Children":{
          "shape":"Mappings",
          "documentation":"<p>Only applicable to nested data structures. If you want to change the parent structure, but also one of its children, you can fill out this data strucutre. It is also <code>Mapping</code>, but its <code>FromPath</code> will be the parent's <code>FromPath</code> plus the <code>FromPath</code> from this structure.</p> <p>For the children part, suppose you have the structure:</p> <p> <code>{ \"FromPath\": \"OuterStructure\", \"ToKey\": \"OuterStructure\", \"ToType\": \"Struct\", \"Dropped\": false, \"Chidlren\": [{ \"FromPath\": \"inner\", \"ToKey\": \"inner\", \"ToType\": \"Double\", \"Dropped\": false, }] }</code> </p> <p>You can specify a <code>Mapping</code> that looks like:</p> <p> <code>{ \"FromPath\": \"OuterStructure\", \"ToKey\": \"OuterStructure\", \"ToType\": \"Struct\", \"Dropped\": false, \"Chidlren\": [{ \"FromPath\": \"inner\", \"ToKey\": \"inner\", \"ToType\": \"Double\", \"Dropped\": false, }] }</code> </p>"
        }
      },
      "documentation":"<p>Specifies the mapping of data property keys.</p>"
    },
    "MappingEntry":{
      "type":"structure",
      "members":{
        "SourceTable":{
          "shape":"TableName",
          "documentation":"<p>The name of the source table.</p>"
        },
        "SourcePath":{
          "shape":"SchemaPathString",
          "documentation":"<p>The source path.</p>"
        },
        "SourceType":{
          "shape":"FieldType",
          "documentation":"<p>The source type.</p>"
        },
        "TargetTable":{
          "shape":"TableName",
          "documentation":"<p>The target table.</p>"
        },
        "TargetPath":{
          "shape":"SchemaPathString",
          "documentation":"<p>The target path.</p>"
        },
        "TargetType":{
          "shape":"FieldType",
          "documentation":"<p>The target type.</p>"
        }
      },
      "documentation":"<p>Defines a mapping.</p>"
    },
    "MappingList":{
      "type":"list",
      "member":{"shape":"MappingEntry"}
    },
    "Mappings":{
      "type":"list",
      "member":{"shape":"Mapping"}
    },
    "MaskValue":{
      "type":"string",
      "max":256,
      "min":0,
      "pattern":"[*A-Za-z0-9_-]*"
    },
    "MatchCriteria":{
      "type":"list",
      "member":{"shape":"NameString"},
      "max":10,
      "min":0
    },
    "MaxConcurrentRuns":{"type":"integer"},
    "MaxListTableOptimizerRunsTokenResults":{"type":"integer"},
    "MaxResultsNumber":{
      "type":"integer",
      "box":true,
      "max":100,
      "min":1
    },
    "MaxRetries":{"type":"integer"},
    "Merge":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Source",
        "PrimaryKeys"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"TwoInputs",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "Source":{
          "shape":"NodeId",
          "documentation":"<p>The source <code>DynamicFrame</code> that will be merged with a staging <code>DynamicFrame</code>.</p>"
        },
        "PrimaryKeys":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>The list of primary key fields to match records from the source and staging dynamic frames.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that merges a <code>DynamicFrame</code> with a staging <code>DynamicFrame</code> based on the specified primary keys to identify records. Duplicate records (records with the same primary keys) are not de-duplicated. </p>"
    },
    "MessagePrefix":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "MessageString":{"type":"string"},
    "MetadataInfo":{
      "type":"structure",
      "members":{
        "MetadataValue":{
          "shape":"MetadataValueString",
          "documentation":"<p>The metadata key’s corresponding value.</p>"
        },
        "CreatedTime":{
          "shape":"CreatedTimestamp",
          "documentation":"<p>The time at which the entry was created.</p>"
        },
        "OtherMetadataValueList":{
          "shape":"OtherMetadataValueList",
          "documentation":"<p>Other metadata belonging to the same metadata key.</p>"
        }
      },
      "documentation":"<p>A structure containing metadata information for a schema version.</p>"
    },
    "MetadataInfoMap":{
      "type":"map",
      "key":{"shape":"MetadataKeyString"},
      "value":{"shape":"MetadataInfo"}
    },
    "MetadataKeyString":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"[a-zA-Z0-9+-=._./@]+"
    },
    "MetadataKeyValuePair":{
      "type":"structure",
      "members":{
        "MetadataKey":{
          "shape":"MetadataKeyString",
          "documentation":"<p>A metadata key.</p>"
        },
        "MetadataValue":{
          "shape":"MetadataValueString",
          "documentation":"<p>A metadata key’s corresponding value.</p>"
        }
      },
      "documentation":"<p>A structure containing a key value pair for metadata.</p>"
    },
    "MetadataList":{
      "type":"list",
      "member":{"shape":"MetadataKeyValuePair"}
    },
    "MetadataOperation":{
      "type":"string",
      "enum":["CREATE"]
    },
    "MetadataValueString":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"[a-zA-Z0-9+-=._./@]+"
    },
    "MetricBasedObservation":{
      "type":"structure",
      "members":{
        "MetricName":{
          "shape":"NameString",
          "documentation":"<p>The name of the data quality metric used for generating the observation.</p>"
        },
        "MetricValues":{
          "shape":"DataQualityMetricValues",
          "documentation":"<p>An object of type <code>DataQualityMetricValues</code> representing the analysis of the data quality metric value.</p>"
        },
        "NewRules":{
          "shape":"NewRules",
          "documentation":"<p>A list of new data quality rules generated as part of the observation based on the data quality metric value.</p>"
        }
      },
      "documentation":"<p>Describes the metric based observation generated based on evaluated data quality metrics.</p>"
    },
    "MicrosoftSQLServerCatalogSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data source.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to read from.</p>"
        }
      },
      "documentation":"<p>Specifies a Microsoft SQL server data source in the Glue Data Catalog.</p>"
    },
    "MicrosoftSQLServerCatalogTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to write to.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to write to.</p>"
        }
      },
      "documentation":"<p>Specifies a target that uses Microsoft SQL.</p>"
    },
    "MillisecondsCount":{"type":"long"},
    "MongoDBTarget":{
      "type":"structure",
      "members":{
        "ConnectionName":{
          "shape":"ConnectionName",
          "documentation":"<p>The name of the connection to use to connect to the Amazon DocumentDB or MongoDB target.</p>"
        },
        "Path":{
          "shape":"Path",
          "documentation":"<p>The path of the Amazon DocumentDB or MongoDB target (database/collection).</p>"
        },
        "ScanAll":{
          "shape":"NullableBoolean",
          "documentation":"<p>Indicates whether to scan all the records, or to sample rows from the table. Scanning all the records can take a long time when the table is not a high throughput table.</p> <p>A value of <code>true</code> means to scan all records, while a value of <code>false</code> means to sample the records. If no value is specified, the value defaults to <code>true</code>.</p>"
        }
      },
      "documentation":"<p>Specifies an Amazon DocumentDB or MongoDB data store to crawl.</p>"
    },
    "MongoDBTargetList":{
      "type":"list",
      "member":{"shape":"MongoDBTarget"}
    },
    "MySQLCatalogSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data source.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to read from.</p>"
        }
      },
      "documentation":"<p>Specifies a MySQL data source in the Glue Data Catalog.</p>"
    },
    "MySQLCatalogTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to write to.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to write to.</p>"
        }
      },
      "documentation":"<p>Specifies a target that uses MySQL.</p>"
    },
    "NameString":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "NameStringList":{
      "type":"list",
      "member":{"shape":"NameString"}
    },
    "NewRules":{
      "type":"list",
      "member":{"shape":"NameString"}
    },
    "NoScheduleException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>There is no applicable schedule.</p>",
      "exception":true
    },
    "Node":{
      "type":"structure",
      "members":{
        "Type":{
          "shape":"NodeType",
          "documentation":"<p>The type of Glue component represented by the node.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the Glue component represented by the node.</p>"
        },
        "UniqueId":{
          "shape":"NameString",
          "documentation":"<p>The unique Id assigned to the node within the workflow.</p>"
        },
        "TriggerDetails":{
          "shape":"TriggerNodeDetails",
          "documentation":"<p>Details of the Trigger when the node represents a Trigger.</p>"
        },
        "JobDetails":{
          "shape":"JobNodeDetails",
          "documentation":"<p>Details of the Job when the node represents a Job.</p>"
        },
        "CrawlerDetails":{
          "shape":"CrawlerNodeDetails",
          "documentation":"<p>Details of the crawler when the node represents a crawler.</p>"
        }
      },
      "documentation":"<p>A node represents an Glue component (trigger, crawler, or job) on a workflow graph.</p>"
    },
    "NodeId":{
      "type":"string",
      "pattern":"[A-Za-z0-9_-]*"
    },
    "NodeIdList":{
      "type":"list",
      "member":{"shape":"NameString"}
    },
    "NodeList":{
      "type":"list",
      "member":{"shape":"Node"}
    },
    "NodeName":{
      "type":"string",
      "pattern":"([\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF]|[^\\r\\n])*"
    },
    "NodeType":{
      "type":"string",
      "enum":[
        "CRAWLER",
        "JOB",
        "TRIGGER"
      ]
    },
    "NonNegativeDouble":{
      "type":"double",
      "min":0.0
    },
    "NonNegativeInt":{
      "type":"integer",
      "min":0
    },
    "NonNegativeInteger":{
      "type":"integer",
      "min":0
    },
    "NonNegativeLong":{
      "type":"long",
      "min":0
    },
    "NotificationProperty":{
      "type":"structure",
      "members":{
        "NotifyDelayAfter":{
          "shape":"NotifyDelayAfter",
          "documentation":"<p>After a job run starts, the number of minutes to wait before sending a job run delay notification.</p>"
        }
      },
      "documentation":"<p>Specifies configuration properties of a notification.</p>"
    },
    "NotifyDelayAfter":{
      "type":"integer",
      "box":true,
      "min":1
    },
    "NullCheckBoxList":{
      "type":"structure",
      "members":{
        "IsEmpty":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Specifies that an empty string is considered as a null value.</p>"
        },
        "IsNullString":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Specifies that a value spelling out the word 'null' is considered as a null value.</p>"
        },
        "IsNegOne":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Specifies that an integer value of -1 is considered as a null value.</p>"
        }
      },
      "documentation":"<p>Represents whether certain values are recognized as null values for removal.</p>"
    },
    "NullValueField":{
      "type":"structure",
      "required":[
        "Value",
        "Datatype"
      ],
      "members":{
        "Value":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The value of the null placeholder.</p>"
        },
        "Datatype":{
          "shape":"Datatype",
          "documentation":"<p>The datatype of the value.</p>"
        }
      },
      "documentation":"<p>Represents a custom null value such as a zeros or other value being used as a null placeholder unique to the dataset.</p>"
    },
    "NullValueFields":{
      "type":"list",
      "member":{"shape":"NullValueField"},
      "max":50,
      "min":0
    },
    "NullableBoolean":{
      "type":"boolean",
      "box":true
    },
    "NullableDouble":{
      "type":"double",
      "box":true
    },
    "NullableInteger":{
      "type":"integer",
      "box":true
    },
    "NullableString":{
      "type":"string",
      "box":true
    },
    "OneInput":{
      "type":"list",
      "member":{"shape":"NodeId"},
      "max":1,
      "min":1
    },
    "OpenTableFormatInput":{
      "type":"structure",
      "members":{
        "IcebergInput":{
          "shape":"IcebergInput",
          "documentation":"<p>Specifies an <code>IcebergInput</code> structure that defines an Apache Iceberg metadata table.</p>"
        }
      },
      "documentation":"<p>A structure representing an open format table.</p>"
    },
    "OperationTimeoutException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>The operation timed out.</p>",
      "exception":true
    },
    "Option":{
      "type":"structure",
      "members":{
        "Value":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the value of the option.</p>"
        },
        "Label":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the label of the option.</p>"
        },
        "Description":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the description of the option.</p>"
        }
      },
      "documentation":"<p>Specifies an option value.</p>"
    },
    "OptionList":{
      "type":"list",
      "member":{"shape":"Option"}
    },
    "OracleSQLCatalogSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data source.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to read from.</p>"
        }
      },
      "documentation":"<p>Specifies an Oracle data source in the Glue Data Catalog.</p>"
    },
    "OracleSQLCatalogTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to write to.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to write to.</p>"
        }
      },
      "documentation":"<p>Specifies a target that uses Oracle SQL.</p>"
    },
    "OrchestrationArgumentsMap":{
      "type":"map",
      "key":{"shape":"OrchestrationNameString"},
      "value":{"shape":"OrchestrationArgumentsValue"},
      "max":75,
      "min":0
    },
    "OrchestrationArgumentsValue":{
      "type":"string",
      "max":4096,
      "min":0,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*"
    },
    "OrchestrationIAMRoleArn":{
      "type":"string",
      "max":1024,
      "min":1,
      "pattern":"arn:aws[^:]*:iam::[0-9]*:role/.+"
    },
    "OrchestrationNameString":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"[\\.\\-_A-Za-z0-9]+"
    },
    "OrchestrationPageSize200":{
      "type":"integer",
      "box":true,
      "max":200,
      "min":1
    },
    "OrchestrationPageSize25":{
      "type":"integer",
      "box":true,
      "max":25,
      "min":1
    },
    "OrchestrationRoleArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"arn:aws[^:]*:iam::[0-9]*:role/.+"
    },
    "OrchestrationS3Location":{
      "type":"string",
      "max":8192,
      "min":1,
      "pattern":"^s3://([^/]+)/([^/]+/)*([^/]+)$"
    },
    "OrchestrationStatementCodeString":{
      "type":"string",
      "max":68000
    },
    "OrchestrationStringList":{
      "type":"list",
      "member":{"shape":"GenericString"}
    },
    "OrchestrationToken":{
      "type":"string",
      "max":400000
    },
    "Order":{
      "type":"structure",
      "required":[
        "Column",
        "SortOrder"
      ],
      "members":{
        "Column":{
          "shape":"NameString",
          "documentation":"<p>The name of the column.</p>"
        },
        "SortOrder":{
          "shape":"IntegerFlag",
          "documentation":"<p>Indicates that the column is sorted in ascending order (<code>== 1</code>), or in descending order (<code>==0</code>).</p>"
        }
      },
      "documentation":"<p>Specifies the sort order of a sorted column.</p>"
    },
    "OrderList":{
      "type":"list",
      "member":{"shape":"Order"}
    },
    "OtherMetadataValueList":{
      "type":"list",
      "member":{"shape":"OtherMetadataValueListItem"}
    },
    "OtherMetadataValueListItem":{
      "type":"structure",
      "members":{
        "MetadataValue":{
          "shape":"MetadataValueString",
          "documentation":"<p>The metadata key’s corresponding value for the other metadata belonging to the same metadata key.</p>"
        },
        "CreatedTime":{
          "shape":"CreatedTimestamp",
          "documentation":"<p>The time at which the entry was created.</p>"
        }
      },
      "documentation":"<p>A structure containing other metadata for a schema version belonging to the same metadata key.</p>"
    },
    "PIIDetection":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "PiiType",
        "EntityTypesToDetect"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The node ID inputs to the transform.</p>"
        },
        "PiiType":{
          "shape":"PiiType",
          "documentation":"<p>Indicates the type of PIIDetection transform. </p>"
        },
        "EntityTypesToDetect":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>Indicates the types of entities the PIIDetection transform will identify as PII data. </p> <p> PII type entities include: PERSON_NAME, DATE, USA_SNN, EMAIL, USA_ITIN, USA_PASSPORT_NUMBER, PHONE_NUMBER, BANK_ACCOUNT, IP_ADDRESS, MAC_ADDRESS, USA_CPT_CODE, USA_HCPCS_CODE, USA_NATIONAL_DRUG_CODE, USA_MEDICARE_BENEFICIARY_IDENTIFIER, USA_HEALTH_INSURANCE_CLAIM_NUMBER,CREDIT_CARD,USA_NATIONAL_PROVIDER_IDENTIFIER,USA_DEA_NUMBER,USA_DRIVING_LICENSE </p>"
        },
        "OutputColumnName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Indicates the output column name that will contain any entity type detected in that row. </p>"
        },
        "SampleFraction":{
          "shape":"BoxedDoubleFraction",
          "documentation":"<p>Indicates the fraction of the data to sample when scanning for PII entities. </p>"
        },
        "ThresholdFraction":{
          "shape":"BoxedDoubleFraction",
          "documentation":"<p>Indicates the fraction of the data that must be met in order for a column to be identified as PII data. </p>"
        },
        "MaskValue":{
          "shape":"MaskValue",
          "documentation":"<p>Indicates the value that will replace the detected entity. </p>"
        }
      },
      "documentation":"<p>Specifies a transform that identifies, removes or masks PII data.</p>"
    },
    "PageSize":{
      "type":"integer",
      "box":true,
      "max":1000,
      "min":1
    },
    "PaginationToken":{"type":"string"},
    "ParamType":{
      "type":"string",
      "enum":[
        "str",
        "int",
        "float",
        "complex",
        "bool",
        "list",
        "null"
      ]
    },
    "ParametersMap":{
      "type":"map",
      "key":{"shape":"KeyString"},
      "value":{"shape":"ParametersMapValue"}
    },
    "ParametersMapValue":{
      "type":"string",
      "max":512000
    },
    "ParquetCompressionType":{
      "type":"string",
      "enum":[
        "snappy",
        "lzo",
        "gzip",
        "uncompressed",
        "none"
      ]
    },
    "Partition":{
      "type":"structure",
      "members":{
        "Values":{
          "shape":"ValueStringList",
          "documentation":"<p>The values of the partition.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database in which to create the partition.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the database table in which to create the partition.</p>"
        },
        "CreationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time at which the partition was created.</p>"
        },
        "LastAccessTime":{
          "shape":"Timestamp",
          "documentation":"<p>The last time at which the partition was accessed.</p>"
        },
        "StorageDescriptor":{
          "shape":"StorageDescriptor",
          "documentation":"<p>Provides information about the physical location where the partition is stored.</p>"
        },
        "Parameters":{
          "shape":"ParametersMap",
          "documentation":"<p>These key-value pairs define partition parameters.</p>"
        },
        "LastAnalyzedTime":{
          "shape":"Timestamp",
          "documentation":"<p>The last time at which column statistics were computed for this partition.</p>"
        },
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the partition resides.</p>"
        }
      },
      "documentation":"<p>Represents a slice of table data.</p>"
    },
    "PartitionError":{
      "type":"structure",
      "members":{
        "PartitionValues":{
          "shape":"ValueStringList",
          "documentation":"<p>The values that define the partition.</p>"
        },
        "ErrorDetail":{
          "shape":"ErrorDetail",
          "documentation":"<p>The details about the partition error.</p>"
        }
      },
      "documentation":"<p>Contains information about a partition error.</p>"
    },
    "PartitionErrors":{
      "type":"list",
      "member":{"shape":"PartitionError"}
    },
    "PartitionIndex":{
      "type":"structure",
      "required":[
        "Keys",
        "IndexName"
      ],
      "members":{
        "Keys":{
          "shape":"KeyList",
          "documentation":"<p>The keys for the partition index.</p>"
        },
        "IndexName":{
          "shape":"NameString",
          "documentation":"<p>The name of the partition index.</p>"
        }
      },
      "documentation":"<p>A structure for a partition index.</p>"
    },
    "PartitionIndexDescriptor":{
      "type":"structure",
      "required":[
        "IndexName",
        "Keys",
        "IndexStatus"
      ],
      "members":{
        "IndexName":{
          "shape":"NameString",
          "documentation":"<p>The name of the partition index.</p>"
        },
        "Keys":{
          "shape":"KeySchemaElementList",
          "documentation":"<p>A list of one or more keys, as <code>KeySchemaElement</code> structures, for the partition index.</p>"
        },
        "IndexStatus":{
          "shape":"PartitionIndexStatus",
          "documentation":"<p>The status of the partition index. </p> <p>The possible statuses are:</p> <ul> <li> <p>CREATING: The index is being created. When an index is in a CREATING state, the index or its table cannot be deleted.</p> </li> <li> <p>ACTIVE: The index creation succeeds.</p> </li> <li> <p>FAILED: The index creation fails. </p> </li> <li> <p>DELETING: The index is deleted from the list of indexes.</p> </li> </ul>"
        },
        "BackfillErrors":{
          "shape":"BackfillErrors",
          "documentation":"<p>A list of errors that can occur when registering partition indexes for an existing table.</p>"
        }
      },
      "documentation":"<p>A descriptor for a partition index in a table.</p>"
    },
    "PartitionIndexDescriptorList":{
      "type":"list",
      "member":{"shape":"PartitionIndexDescriptor"}
    },
    "PartitionIndexList":{
      "type":"list",
      "member":{"shape":"PartitionIndex"},
      "max":3
    },
    "PartitionIndexStatus":{
      "type":"string",
      "enum":[
        "CREATING",
        "ACTIVE",
        "DELETING",
        "FAILED"
      ]
    },
    "PartitionInput":{
      "type":"structure",
      "members":{
        "Values":{
          "shape":"ValueStringList",
          "documentation":"<p>The values of the partition. Although this parameter is not required by the SDK, you must specify this parameter for a valid input.</p> <p>The values for the keys for the new partition must be passed as an array of String objects that must be ordered in the same order as the partition keys appearing in the Amazon S3 prefix. Otherwise Glue will add the values to the wrong keys.</p>"
        },
        "LastAccessTime":{
          "shape":"Timestamp",
          "documentation":"<p>The last time at which the partition was accessed.</p>"
        },
        "StorageDescriptor":{
          "shape":"StorageDescriptor",
          "documentation":"<p>Provides information about the physical location where the partition is stored.</p>"
        },
        "Parameters":{
          "shape":"ParametersMap",
          "documentation":"<p>These key-value pairs define partition parameters.</p>"
        },
        "LastAnalyzedTime":{
          "shape":"Timestamp",
          "documentation":"<p>The last time at which column statistics were computed for this partition.</p>"
        }
      },
      "documentation":"<p>The structure used to create and update a partition.</p>"
    },
    "PartitionInputList":{
      "type":"list",
      "member":{"shape":"PartitionInput"},
      "max":100,
      "min":0
    },
    "PartitionList":{
      "type":"list",
      "member":{"shape":"Partition"}
    },
    "PartitionValueList":{
      "type":"structure",
      "required":["Values"],
      "members":{
        "Values":{
          "shape":"ValueStringList",
          "documentation":"<p>The list of values.</p>"
        }
      },
      "documentation":"<p>Contains a list of values defining partitions.</p>"
    },
    "Path":{"type":"string"},
    "PathList":{
      "type":"list",
      "member":{"shape":"Path"}
    },
    "Permission":{
      "type":"string",
      "enum":[
        "ALL",
        "SELECT",
        "ALTER",
        "DROP",
        "DELETE",
        "INSERT",
        "CREATE_DATABASE",
        "CREATE_TABLE",
        "DATA_LOCATION_ACCESS"
      ]
    },
    "PermissionList":{
      "type":"list",
      "member":{"shape":"Permission"}
    },
    "PermissionType":{
      "type":"string",
      "enum":[
        "COLUMN_PERMISSION",
        "CELL_FILTER_PERMISSION",
        "NESTED_PERMISSION",
        "NESTED_CELL_PERMISSION"
      ]
    },
    "PermissionTypeList":{
      "type":"list",
      "member":{"shape":"PermissionType"},
      "max":255,
      "min":1
    },
    "PermissionTypeMismatchException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>There is a mismatch between the SupportedPermissionType used in the query request and the permissions defined on the target table.</p>"
        }
      },
      "documentation":"<p>The operation timed out.</p>",
      "exception":true
    },
    "PhysicalConnectionRequirements":{
      "type":"structure",
      "members":{
        "SubnetId":{
          "shape":"NameString",
          "documentation":"<p>The subnet ID used by the connection.</p>"
        },
        "SecurityGroupIdList":{
          "shape":"SecurityGroupIdList",
          "documentation":"<p>The security group ID list used by the connection.</p>"
        },
        "AvailabilityZone":{
          "shape":"NameString",
          "documentation":"<p>The connection's Availability Zone. This field is redundant because the specified subnet implies the Availability Zone to be used. Currently the field must be populated, but it will be deprecated in the future.</p>"
        }
      },
      "documentation":"<p>Specifies the physical requirements for a connection.</p>"
    },
    "PiiType":{
      "type":"string",
      "enum":[
        "RowAudit",
        "RowMasking",
        "ColumnAudit",
        "ColumnMasking"
      ]
    },
    "PolicyJsonString":{
      "type":"string",
      "min":2
    },
    "PollingTime":{
      "type":"long",
      "box":true,
      "min":10
    },
    "PositiveInteger":{
      "type":"integer",
      "min":1
    },
    "PositiveLong":{
      "type":"long",
      "box":true,
      "min":1
    },
    "PostgreSQLCatalogSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data source.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to read from.</p>"
        }
      },
      "documentation":"<p>Specifies a PostgresSQL data source in the Glue Data Catalog.</p>"
    },
    "PostgreSQLCatalogTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to write to.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to write to.</p>"
        }
      },
      "documentation":"<p>Specifies a target that uses Postgres SQL.</p>"
    },
    "Predecessor":{
      "type":"structure",
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the job definition used by the predecessor job run.</p>"
        },
        "RunId":{
          "shape":"IdString",
          "documentation":"<p>The job-run ID of the predecessor job run.</p>"
        }
      },
      "documentation":"<p>A job run that was used in the predicate of a conditional trigger that triggered this job run.</p>"
    },
    "PredecessorList":{
      "type":"list",
      "member":{"shape":"Predecessor"}
    },
    "Predicate":{
      "type":"structure",
      "members":{
        "Logical":{
          "shape":"Logical",
          "documentation":"<p>An optional field if only one condition is listed. If multiple conditions are listed, then this field is required.</p>"
        },
        "Conditions":{
          "shape":"ConditionList",
          "documentation":"<p>A list of the conditions that determine when the trigger will fire.</p>"
        }
      },
      "documentation":"<p>Defines the predicate of the trigger, which determines when it fires.</p>"
    },
    "PredicateString":{
      "type":"string",
      "max":2048,
      "min":0,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*"
    },
    "PrincipalPermissions":{
      "type":"structure",
      "members":{
        "Principal":{
          "shape":"DataLakePrincipal",
          "documentation":"<p>The principal who is granted permissions.</p>"
        },
        "Permissions":{
          "shape":"PermissionList",
          "documentation":"<p>The permissions that are granted to the principal.</p>"
        }
      },
      "documentation":"<p>Permissions granted to a principal.</p>"
    },
    "PrincipalPermissionsList":{
      "type":"list",
      "member":{"shape":"PrincipalPermissions"}
    },
    "PrincipalType":{
      "type":"string",
      "enum":[
        "USER",
        "ROLE",
        "GROUP"
      ]
    },
    "Prob":{
      "type":"double",
      "box":true,
      "max":1,
      "min":0
    },
    "PropertyPredicate":{
      "type":"structure",
      "members":{
        "Key":{
          "shape":"ValueString",
          "documentation":"<p>The key of the property.</p>"
        },
        "Value":{
          "shape":"ValueString",
          "documentation":"<p>The value of the property.</p>"
        },
        "Comparator":{
          "shape":"Comparator",
          "documentation":"<p>The comparator used to compare this property to others.</p>"
        }
      },
      "documentation":"<p>Defines a property predicate.</p>"
    },
    "PublicKeysList":{
      "type":"list",
      "member":{"shape":"GenericString"},
      "max":5
    },
    "PutDataCatalogEncryptionSettingsRequest":{
      "type":"structure",
      "required":["DataCatalogEncryptionSettings"],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog to set the security configuration for. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DataCatalogEncryptionSettings":{
          "shape":"DataCatalogEncryptionSettings",
          "documentation":"<p>The security configuration to set.</p>"
        }
      }
    },
    "PutDataCatalogEncryptionSettingsResponse":{
      "type":"structure",
      "members":{
      }
    },
    "PutResourcePolicyRequest":{
      "type":"structure",
      "required":["PolicyInJson"],
      "members":{
        "PolicyInJson":{
          "shape":"PolicyJsonString",
          "documentation":"<p>Contains the policy document to set, in JSON format.</p>"
        },
        "ResourceArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>Do not use. For internal use only.</p>"
        },
        "PolicyHashCondition":{
          "shape":"HashString",
          "documentation":"<p>The hash value returned when the previous policy was set using <code>PutResourcePolicy</code>. Its purpose is to prevent concurrent modifications of a policy. Do not use this parameter if no previous policy has been set.</p>"
        },
        "PolicyExistsCondition":{
          "shape":"ExistCondition",
          "documentation":"<p>A value of <code>MUST_EXIST</code> is used to update a policy. A value of <code>NOT_EXIST</code> is used to create a new policy. If a value of <code>NONE</code> or a null value is used, the call does not depend on the existence of a policy.</p>"
        },
        "EnableHybrid":{
          "shape":"EnableHybridValues",
          "documentation":"<p>If <code>'TRUE'</code>, indicates that you are using both methods to grant cross-account access to Data Catalog resources:</p> <ul> <li> <p>By directly updating the resource policy with <code>PutResourePolicy</code> </p> </li> <li> <p>By using the <b>Grant permissions</b> command on the Amazon Web Services Management Console.</p> </li> </ul> <p>Must be set to <code>'TRUE'</code> if you have already used the Management Console to grant cross-account access, otherwise the call fails. Default is 'FALSE'.</p>"
        }
      }
    },
    "PutResourcePolicyResponse":{
      "type":"structure",
      "members":{
        "PolicyHash":{
          "shape":"HashString",
          "documentation":"<p>A hash of the policy that has just been set. This must be included in a subsequent call that overwrites or updates this policy.</p>"
        }
      }
    },
    "PutSchemaVersionMetadataInput":{
      "type":"structure",
      "required":["MetadataKeyValue"],
      "members":{
        "SchemaId":{
          "shape":"SchemaId",
          "documentation":"<p>The unique ID for the schema.</p>"
        },
        "SchemaVersionNumber":{
          "shape":"SchemaVersionNumber",
          "documentation":"<p>The version number of the schema.</p>"
        },
        "SchemaVersionId":{
          "shape":"SchemaVersionIdString",
          "documentation":"<p>The unique version ID of the schema version.</p>"
        },
        "MetadataKeyValue":{
          "shape":"MetadataKeyValuePair",
          "documentation":"<p>The metadata key's corresponding value.</p>"
        }
      }
    },
    "PutSchemaVersionMetadataResponse":{
      "type":"structure",
      "members":{
        "SchemaArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) for the schema.</p>"
        },
        "SchemaName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name for the schema.</p>"
        },
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name for the registry.</p>"
        },
        "LatestVersion":{
          "shape":"LatestSchemaVersionBoolean",
          "documentation":"<p>The latest version of the schema.</p>"
        },
        "VersionNumber":{
          "shape":"VersionLongNumber",
          "documentation":"<p>The version number of the schema.</p>"
        },
        "SchemaVersionId":{
          "shape":"SchemaVersionIdString",
          "documentation":"<p>The unique version ID of the schema version.</p>"
        },
        "MetadataKey":{
          "shape":"MetadataKeyString",
          "documentation":"<p>The metadata key.</p>"
        },
        "MetadataValue":{
          "shape":"MetadataValueString",
          "documentation":"<p>The value of the metadata key.</p>"
        }
      }
    },
    "PutWorkflowRunPropertiesRequest":{
      "type":"structure",
      "required":[
        "Name",
        "RunId",
        "RunProperties"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the workflow which was run.</p>"
        },
        "RunId":{
          "shape":"IdString",
          "documentation":"<p>The ID of the workflow run for which the run properties should be updated.</p>"
        },
        "RunProperties":{
          "shape":"WorkflowRunProperties",
          "documentation":"<p>The properties to put for the specified run.</p>"
        }
      }
    },
    "PutWorkflowRunPropertiesResponse":{
      "type":"structure",
      "members":{
      }
    },
    "PythonScript":{"type":"string"},
    "PythonVersionString":{
      "type":"string",
      "pattern":"^([2-3]|3[.]9)$"
    },
    "QuerySchemaVersionMetadataInput":{
      "type":"structure",
      "members":{
        "SchemaId":{
          "shape":"SchemaId",
          "documentation":"<p>A wrapper structure that may contain the schema name and Amazon Resource Name (ARN).</p>"
        },
        "SchemaVersionNumber":{
          "shape":"SchemaVersionNumber",
          "documentation":"<p>The version number of the schema.</p>"
        },
        "SchemaVersionId":{
          "shape":"SchemaVersionIdString",
          "documentation":"<p>The unique version ID of the schema version.</p>"
        },
        "MetadataList":{
          "shape":"MetadataList",
          "documentation":"<p>Search key-value pairs for metadata, if they are not provided all the metadata information will be fetched.</p>"
        },
        "MaxResults":{
          "shape":"QuerySchemaVersionMetadataMaxResults",
          "documentation":"<p>Maximum number of results required per page. If the value is not supplied, this will be defaulted to 25 per page.</p>"
        },
        "NextToken":{
          "shape":"SchemaRegistryTokenString",
          "documentation":"<p>A continuation token, if this is a continuation call.</p>"
        }
      }
    },
    "QuerySchemaVersionMetadataMaxResults":{
      "type":"integer",
      "max":50,
      "min":1
    },
    "QuerySchemaVersionMetadataResponse":{
      "type":"structure",
      "members":{
        "MetadataInfoMap":{
          "shape":"MetadataInfoMap",
          "documentation":"<p>A map of a metadata key and associated values.</p>"
        },
        "SchemaVersionId":{
          "shape":"SchemaVersionIdString",
          "documentation":"<p>The unique version ID of the schema version.</p>"
        },
        "NextToken":{
          "shape":"SchemaRegistryTokenString",
          "documentation":"<p>A continuation token for paginating the returned list of tokens, returned if the current segment of the list is not the last.</p>"
        }
      }
    },
    "QuerySessionContext":{
      "type":"structure",
      "members":{
        "QueryId":{
          "shape":"HashString",
          "documentation":"<p>A unique identifier generated by the query engine for the query.</p>"
        },
        "QueryStartTime":{
          "shape":"Timestamp",
          "documentation":"<p>A timestamp provided by the query engine for when the query started.</p>"
        },
        "ClusterId":{
          "shape":"NullableString",
          "documentation":"<p>An identifier string for the consumer cluster.</p>"
        },
        "QueryAuthorizationId":{
          "shape":"HashString",
          "documentation":"<p>A cryptographically generated query identifier generated by Glue or Lake Formation.</p>"
        },
        "AdditionalContext":{
          "shape":"AdditionalContextMap",
          "documentation":"<p>An opaque string-string map passed by the query engine.</p>"
        }
      },
      "documentation":"<p>A structure used as a protocol between query engines and Lake Formation or Glue. Contains both a Lake Formation generated authorization identifier and information from the request's authorization context.</p>"
    },
    "QuoteChar":{
      "type":"string",
      "enum":[
        "quote",
        "quillemet",
        "single_quote",
        "disabled"
      ]
    },
    "Recipe":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "RecipeReference"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the Glue Studio node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the recipe node, identified by id.</p>"
        },
        "RecipeReference":{
          "shape":"RecipeReference",
          "documentation":"<p>A reference to the DataBrew recipe used by the node.</p>"
        }
      },
      "documentation":"<p>A Glue Studio node that uses a Glue DataBrew recipe in Glue jobs.</p>"
    },
    "RecipeReference":{
      "type":"structure",
      "required":[
        "RecipeArn",
        "RecipeVersion"
      ],
      "members":{
        "RecipeArn":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The ARN of the DataBrew recipe.</p>"
        },
        "RecipeVersion":{
          "shape":"RecipeVersion",
          "documentation":"<p>The RecipeVersion of the DataBrew recipe.</p>"
        }
      },
      "documentation":"<p>A reference to a Glue DataBrew recipe.</p>"
    },
    "RecipeVersion":{
      "type":"string",
      "max":16,
      "min":1
    },
    "RecordsCount":{
      "type":"long",
      "box":true
    },
    "RecrawlBehavior":{
      "type":"string",
      "enum":[
        "CRAWL_EVERYTHING",
        "CRAWL_NEW_FOLDERS_ONLY",
        "CRAWL_EVENT_MODE"
      ]
    },
    "RecrawlPolicy":{
      "type":"structure",
      "members":{
        "RecrawlBehavior":{
          "shape":"RecrawlBehavior",
          "documentation":"<p>Specifies whether to crawl the entire dataset again or to crawl only folders that were added since the last crawler run.</p> <p>A value of <code>CRAWL_EVERYTHING</code> specifies crawling the entire dataset again.</p> <p>A value of <code>CRAWL_NEW_FOLDERS_ONLY</code> specifies crawling only folders that were added since the last crawler run.</p> <p>A value of <code>CRAWL_EVENT_MODE</code> specifies crawling only the changes identified by Amazon S3 events.</p>"
        }
      },
      "documentation":"<p>When crawling an Amazon S3 data source after the first crawl is complete, specifies whether to crawl the entire dataset again or to crawl only folders that were added since the last crawler run. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/incremental-crawls.html\">Incremental Crawls in Glue</a> in the developer guide.</p>"
    },
    "RedshiftSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the Amazon Redshift data store.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The database table to read from.</p>"
        },
        "RedshiftTmpDir":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The Amazon S3 path where temporary data can be staged when copying out of the database.</p>"
        },
        "TmpDirIAMRole":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The IAM role with permissions.</p>"
        }
      },
      "documentation":"<p>Specifies an Amazon Redshift data store.</p>"
    },
    "RedshiftTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to write to.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to write to.</p>"
        },
        "RedshiftTmpDir":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The Amazon S3 path where temporary data can be staged when copying out of the database.</p>"
        },
        "TmpDirIAMRole":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The IAM role with permissions.</p>"
        },
        "UpsertRedshiftOptions":{
          "shape":"UpsertRedshiftTargetOptions",
          "documentation":"<p>The set of options to configure an upsert operation when writing to a Redshift target.</p>"
        }
      },
      "documentation":"<p>Specifies a target that uses Amazon Redshift.</p>"
    },
    "RegisterSchemaVersionInput":{
      "type":"structure",
      "required":[
        "SchemaId",
        "SchemaDefinition"
      ],
      "members":{
        "SchemaId":{
          "shape":"SchemaId",
          "documentation":"<p>This is a wrapper structure to contain schema identity fields. The structure contains:</p> <ul> <li> <p>SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. Either <code>SchemaArn</code> or <code>SchemaName</code> and <code>RegistryName</code> has to be provided.</p> </li> <li> <p>SchemaId$SchemaName: The name of the schema. Either <code>SchemaArn</code> or <code>SchemaName</code> and <code>RegistryName</code> has to be provided.</p> </li> </ul>"
        },
        "SchemaDefinition":{
          "shape":"SchemaDefinitionString",
          "documentation":"<p>The schema definition using the <code>DataFormat</code> setting for the <code>SchemaName</code>.</p>"
        }
      }
    },
    "RegisterSchemaVersionResponse":{
      "type":"structure",
      "members":{
        "SchemaVersionId":{
          "shape":"SchemaVersionIdString",
          "documentation":"<p>The unique ID that represents the version of this schema.</p>"
        },
        "VersionNumber":{
          "shape":"VersionLongNumber",
          "documentation":"<p>The version of this schema (for sync flow only, in case this is the first version).</p>"
        },
        "Status":{
          "shape":"SchemaVersionStatus",
          "documentation":"<p>The status of the schema version.</p>"
        }
      }
    },
    "RegistryId":{
      "type":"structure",
      "members":{
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>Name of the registry. Used only for lookup. One of <code>RegistryArn</code> or <code>RegistryName</code> has to be provided. </p>"
        },
        "RegistryArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>Arn of the registry to be updated. One of <code>RegistryArn</code> or <code>RegistryName</code> has to be provided.</p>"
        }
      },
      "documentation":"<p>A wrapper structure that may contain the registry name and Amazon Resource Name (ARN).</p>"
    },
    "RegistryListDefinition":{
      "type":"list",
      "member":{"shape":"RegistryListItem"}
    },
    "RegistryListItem":{
      "type":"structure",
      "members":{
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the registry.</p>"
        },
        "RegistryArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the registry.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the registry.</p>"
        },
        "Status":{
          "shape":"RegistryStatus",
          "documentation":"<p>The status of the registry.</p>"
        },
        "CreatedTime":{
          "shape":"CreatedTimestamp",
          "documentation":"<p>The data the registry was created.</p>"
        },
        "UpdatedTime":{
          "shape":"UpdatedTimestamp",
          "documentation":"<p>The date the registry was updated.</p>"
        }
      },
      "documentation":"<p>A structure containing the details for a registry.</p>"
    },
    "RegistryStatus":{
      "type":"string",
      "enum":[
        "AVAILABLE",
        "DELETING"
      ]
    },
    "RelationalCatalogSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data source.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to read from.</p>"
        }
      },
      "documentation":"<p>Specifies a Relational database data source in the Glue Data Catalog.</p>"
    },
    "RemoveSchemaVersionMetadataInput":{
      "type":"structure",
      "required":["MetadataKeyValue"],
      "members":{
        "SchemaId":{
          "shape":"SchemaId",
          "documentation":"<p>A wrapper structure that may contain the schema name and Amazon Resource Name (ARN).</p>"
        },
        "SchemaVersionNumber":{
          "shape":"SchemaVersionNumber",
          "documentation":"<p>The version number of the schema.</p>"
        },
        "SchemaVersionId":{
          "shape":"SchemaVersionIdString",
          "documentation":"<p>The unique version ID of the schema version.</p>"
        },
        "MetadataKeyValue":{
          "shape":"MetadataKeyValuePair",
          "documentation":"<p>The value of the metadata key.</p>"
        }
      }
    },
    "RemoveSchemaVersionMetadataResponse":{
      "type":"structure",
      "members":{
        "SchemaArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the schema.</p>"
        },
        "SchemaName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the schema.</p>"
        },
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the registry.</p>"
        },
        "LatestVersion":{
          "shape":"LatestSchemaVersionBoolean",
          "documentation":"<p>The latest version of the schema.</p>"
        },
        "VersionNumber":{
          "shape":"VersionLongNumber",
          "documentation":"<p>The version number of the schema.</p>"
        },
        "SchemaVersionId":{
          "shape":"SchemaVersionIdString",
          "documentation":"<p>The version ID for the schema version.</p>"
        },
        "MetadataKey":{
          "shape":"MetadataKeyString",
          "documentation":"<p>The metadata key.</p>"
        },
        "MetadataValue":{
          "shape":"MetadataValueString",
          "documentation":"<p>The value of the metadata key.</p>"
        }
      }
    },
    "RenameField":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "SourcePath",
        "TargetPath"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "SourcePath":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>A JSON path to a variable in the data structure for the source data.</p>"
        },
        "TargetPath":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>A JSON path to a variable in the data structure for the target data.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that renames a single data property key.</p>"
    },
    "ReplaceBoolean":{"type":"boolean"},
    "ResetJobBookmarkRequest":{
      "type":"structure",
      "required":["JobName"],
      "members":{
        "JobName":{
          "shape":"JobName",
          "documentation":"<p>The name of the job in question.</p>"
        },
        "RunId":{
          "shape":"RunId",
          "documentation":"<p>The unique run identifier associated with this job run.</p>"
        }
      }
    },
    "ResetJobBookmarkResponse":{
      "type":"structure",
      "members":{
        "JobBookmarkEntry":{
          "shape":"JobBookmarkEntry",
          "documentation":"<p>The reset bookmark entry.</p>"
        }
      }
    },
    "ResourceNotReadyException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>A resource was not ready for a transaction.</p>",
      "exception":true
    },
    "ResourceNumberLimitExceededException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>A resource numerical limit was exceeded.</p>",
      "exception":true
    },
    "ResourceShareType":{
      "type":"string",
      "enum":[
        "FOREIGN",
        "ALL",
        "FEDERATED"
      ]
    },
    "ResourceType":{
      "type":"string",
      "enum":[
        "JAR",
        "FILE",
        "ARCHIVE"
      ]
    },
    "ResourceUri":{
      "type":"structure",
      "members":{
        "ResourceType":{
          "shape":"ResourceType",
          "documentation":"<p>The type of the resource.</p>"
        },
        "Uri":{
          "shape":"URI",
          "documentation":"<p>The URI for accessing the resource.</p>"
        }
      },
      "documentation":"<p>The URIs for function resources.</p>"
    },
    "ResourceUriList":{
      "type":"list",
      "member":{"shape":"ResourceUri"},
      "max":1000,
      "min":0
    },
    "ResumeWorkflowRunRequest":{
      "type":"structure",
      "required":[
        "Name",
        "RunId",
        "NodeIds"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the workflow to resume.</p>"
        },
        "RunId":{
          "shape":"IdString",
          "documentation":"<p>The ID of the workflow run to resume.</p>"
        },
        "NodeIds":{
          "shape":"NodeIdList",
          "documentation":"<p>A list of the node IDs for the nodes you want to restart. The nodes that are to be restarted must have a run attempt in the original run.</p>"
        }
      }
    },
    "ResumeWorkflowRunResponse":{
      "type":"structure",
      "members":{
        "RunId":{
          "shape":"IdString",
          "documentation":"<p>The new ID assigned to the resumed workflow run. Each resume of a workflow run will have a new run ID.</p>"
        },
        "NodeIds":{
          "shape":"NodeIdList",
          "documentation":"<p>A list of the node IDs for the nodes that were actually restarted.</p>"
        }
      }
    },
    "Role":{"type":"string"},
    "RoleArn":{
      "type":"string",
      "pattern":"arn:aws:iam::\\d{12}:role/.*"
    },
    "RoleString":{"type":"string"},
    "RowTag":{"type":"string"},
    "RulesetNames":{
      "type":"list",
      "member":{"shape":"NameString"},
      "max":10,
      "min":1
    },
    "RunId":{"type":"string"},
    "RunMetrics":{
      "type":"structure",
      "members":{
        "NumberOfBytesCompacted":{
          "shape":"MessageString",
          "documentation":"<p>The number of bytes removed by the compaction job run.</p>"
        },
        "NumberOfFilesCompacted":{
          "shape":"MessageString",
          "documentation":"<p>The number of files removed by the compaction job run.</p>"
        },
        "NumberOfDpus":{
          "shape":"MessageString",
          "documentation":"<p>The number of DPU hours consumed by the job.</p>"
        },
        "JobDurationInHour":{
          "shape":"MessageString",
          "documentation":"<p>The duration of the job in hours.</p>"
        }
      },
      "documentation":"<p>Metrics for the optimizer run.</p>"
    },
    "RunStatementRequest":{
      "type":"structure",
      "required":[
        "SessionId",
        "Code"
      ],
      "members":{
        "SessionId":{
          "shape":"NameString",
          "documentation":"<p>The Session Id of the statement to be run.</p>"
        },
        "Code":{
          "shape":"OrchestrationStatementCodeString",
          "documentation":"<p>The statement code to be run.</p>"
        },
        "RequestOrigin":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The origin of the request.</p>"
        }
      }
    },
    "RunStatementResponse":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"IntegerValue",
          "documentation":"<p>Returns the Id of the statement that was run.</p>"
        }
      }
    },
    "RuntimeNameString":{
      "type":"string",
      "max":64,
      "pattern":".*"
    },
    "S3CatalogDeltaSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the Delta Lake data source.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to read from.</p>"
        },
        "AdditionalDeltaOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Specifies additional connection options.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the Delta Lake source.</p>"
        }
      },
      "documentation":"<p>Specifies a Delta Lake data source that is registered in the Glue Data Catalog. The data source must be stored in Amazon S3.</p>"
    },
    "S3CatalogHudiSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the Hudi data source.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to read from.</p>"
        },
        "AdditionalHudiOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Specifies additional connection options.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the Hudi source.</p>"
        }
      },
      "documentation":"<p>Specifies a Hudi data source that is registered in the Glue Data Catalog. The Hudi data source must be stored in Amazon S3.</p>"
    },
    "S3CatalogSource":{
      "type":"structure",
      "required":[
        "Name",
        "Database",
        "Table"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data store.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The database to read from.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The database table to read from.</p>"
        },
        "PartitionPredicate":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Partitions satisfying this predicate are deleted. Files within the retention period in these partitions are not deleted. Set to <code>\"\"</code> – empty by default.</p>"
        },
        "AdditionalOptions":{
          "shape":"S3SourceAdditionalOptions",
          "documentation":"<p>Specifies additional connection options.</p>"
        }
      },
      "documentation":"<p>Specifies an Amazon S3 data store in the Glue Data Catalog.</p>"
    },
    "S3CatalogTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Table",
        "Database"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "PartitionKeys":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>Specifies native partitioning using a sequence of keys.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to write to.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to write to.</p>"
        },
        "SchemaChangePolicy":{
          "shape":"CatalogSchemaChangePolicy",
          "documentation":"<p>A policy that specifies update behavior for the crawler.</p>"
        }
      },
      "documentation":"<p>Specifies a data target that writes to Amazon S3 using the Glue Data Catalog.</p>"
    },
    "S3CsvSource":{
      "type":"structure",
      "required":[
        "Name",
        "Paths",
        "Separator",
        "QuoteChar"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data store.</p>"
        },
        "Paths":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>A list of the Amazon S3 paths to read from.</p>"
        },
        "CompressionType":{
          "shape":"CompressionType",
          "documentation":"<p>Specifies how the data is compressed. This is generally not necessary if the data has a standard file extension. Possible values are <code>\"gzip\"</code> and <code>\"bzip\"</code>).</p>"
        },
        "Exclusions":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>A string containing a JSON list of Unix-style glob patterns to exclude. For example, \"[\\\"**.pdf\\\"]\" excludes all PDF files. </p>"
        },
        "GroupSize":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The target group size in bytes. The default is computed based on the input data size and the size of your cluster. When there are fewer than 50,000 input files, <code>\"groupFiles\"</code> must be set to <code>\"inPartition\"</code> for this to take effect.</p>"
        },
        "GroupFiles":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Grouping files is turned on by default when the input contains more than 50,000 files. To turn on grouping with fewer than 50,000 files, set this parameter to \"inPartition\". To disable grouping when there are more than 50,000 files, set this parameter to <code>\"none\"</code>.</p>"
        },
        "Recurse":{
          "shape":"BoxedBoolean",
          "documentation":"<p>If set to true, recursively reads files in all subdirectories under the specified paths.</p>"
        },
        "MaxBand":{
          "shape":"BoxedNonNegativeInt",
          "documentation":"<p>This option controls the duration in milliseconds after which the s3 listing is likely to be consistent. Files with modification timestamps falling within the last maxBand milliseconds are tracked specially when using JobBookmarks to account for Amazon S3 eventual consistency. Most users don't need to set this option. The default is 900000 milliseconds, or 15 minutes.</p>"
        },
        "MaxFilesInBand":{
          "shape":"BoxedNonNegativeInt",
          "documentation":"<p>This option specifies the maximum number of files to save from the last maxBand seconds. If this number is exceeded, extra files are skipped and only processed in the next job run.</p>"
        },
        "AdditionalOptions":{
          "shape":"S3DirectSourceAdditionalOptions",
          "documentation":"<p>Specifies additional connection options.</p>"
        },
        "Separator":{
          "shape":"Separator",
          "documentation":"<p>Specifies the delimiter character. The default is a comma: \",\", but any other character can be specified.</p>"
        },
        "Escaper":{
          "shape":"EnclosedInStringPropertyWithQuote",
          "documentation":"<p>Specifies a character to use for escaping. This option is used only when reading CSV files. The default value is <code>none</code>. If enabled, the character which immediately follows is used as-is, except for a small set of well-known escapes (<code>\\n</code>, <code>\\r</code>, <code>\\t</code>, and <code>\\0</code>).</p>"
        },
        "QuoteChar":{
          "shape":"QuoteChar",
          "documentation":"<p>Specifies the character to use for quoting. The default is a double quote: <code>'\"'</code>. Set this to <code>-1</code> to turn off quoting entirely.</p>"
        },
        "Multiline":{
          "shape":"BoxedBoolean",
          "documentation":"<p>A Boolean value that specifies whether a single record can span multiple lines. This can occur when a field contains a quoted new-line character. You must set this option to True if any record spans multiple lines. The default value is <code>False</code>, which allows for more aggressive file-splitting during parsing.</p>"
        },
        "WithHeader":{
          "shape":"BoxedBoolean",
          "documentation":"<p>A Boolean value that specifies whether to treat the first line as a header. The default value is <code>False</code>.</p>"
        },
        "WriteHeader":{
          "shape":"BoxedBoolean",
          "documentation":"<p>A Boolean value that specifies whether to write the header to output. The default value is <code>True</code>. </p>"
        },
        "SkipFirst":{
          "shape":"BoxedBoolean",
          "documentation":"<p>A Boolean value that specifies whether to skip the first data line. The default value is <code>False</code>.</p>"
        },
        "OptimizePerformance":{
          "shape":"BooleanValue",
          "documentation":"<p>A Boolean value that specifies whether to use the advanced SIMD CSV reader along with Apache Arrow based columnar memory formats. Only available in Glue version 3.0.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the S3 CSV source.</p>"
        }
      },
      "documentation":"<p>Specifies a command-separated value (CSV) data store stored in Amazon S3.</p>"
    },
    "S3DeltaCatalogTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Table",
        "Database"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "PartitionKeys":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>Specifies native partitioning using a sequence of keys.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to write to.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to write to.</p>"
        },
        "AdditionalOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Specifies additional connection options for the connector.</p>"
        },
        "SchemaChangePolicy":{
          "shape":"CatalogSchemaChangePolicy",
          "documentation":"<p>A policy that specifies update behavior for the crawler.</p>"
        }
      },
      "documentation":"<p>Specifies a target that writes to a Delta Lake data source in the Glue Data Catalog.</p>"
    },
    "S3DeltaDirectTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Path",
        "Compression",
        "Format"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "PartitionKeys":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>Specifies native partitioning using a sequence of keys.</p>"
        },
        "Path":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The Amazon S3 path of your Delta Lake data source to write to.</p>"
        },
        "Compression":{
          "shape":"DeltaTargetCompressionType",
          "documentation":"<p>Specifies how the data is compressed. This is generally not necessary if the data has a standard file extension. Possible values are <code>\"gzip\"</code> and <code>\"bzip\"</code>).</p>"
        },
        "Format":{
          "shape":"TargetFormat",
          "documentation":"<p>Specifies the data output format for the target.</p>"
        },
        "AdditionalOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Specifies additional connection options for the connector.</p>"
        },
        "SchemaChangePolicy":{
          "shape":"DirectSchemaChangePolicy",
          "documentation":"<p>A policy that specifies update behavior for the crawler.</p>"
        }
      },
      "documentation":"<p>Specifies a target that writes to a Delta Lake data source in Amazon S3.</p>"
    },
    "S3DeltaSource":{
      "type":"structure",
      "required":[
        "Name",
        "Paths"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the Delta Lake source.</p>"
        },
        "Paths":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>A list of the Amazon S3 paths to read from.</p>"
        },
        "AdditionalDeltaOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Specifies additional connection options.</p>"
        },
        "AdditionalOptions":{
          "shape":"S3DirectSourceAdditionalOptions",
          "documentation":"<p>Specifies additional options for the connector.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the Delta Lake source.</p>"
        }
      },
      "documentation":"<p>Specifies a Delta Lake data source stored in Amazon S3.</p>"
    },
    "S3DirectSourceAdditionalOptions":{
      "type":"structure",
      "members":{
        "BoundedSize":{
          "shape":"BoxedLong",
          "documentation":"<p>Sets the upper limit for the target size of the dataset in bytes that will be processed.</p>"
        },
        "BoundedFiles":{
          "shape":"BoxedLong",
          "documentation":"<p>Sets the upper limit for the target number of files that will be processed.</p>"
        },
        "EnableSamplePath":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Sets option to enable a sample path.</p>"
        },
        "SamplePath":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>If enabled, specifies the sample path.</p>"
        }
      },
      "documentation":"<p>Specifies additional connection options for the Amazon S3 data store.</p>"
    },
    "S3DirectTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Path",
        "Format"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "PartitionKeys":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>Specifies native partitioning using a sequence of keys.</p>"
        },
        "Path":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>A single Amazon S3 path to write to.</p>"
        },
        "Compression":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies how the data is compressed. This is generally not necessary if the data has a standard file extension. Possible values are <code>\"gzip\"</code> and <code>\"bzip\"</code>).</p>"
        },
        "Format":{
          "shape":"TargetFormat",
          "documentation":"<p>Specifies the data output format for the target.</p>"
        },
        "SchemaChangePolicy":{
          "shape":"DirectSchemaChangePolicy",
          "documentation":"<p>A policy that specifies update behavior for the crawler.</p>"
        }
      },
      "documentation":"<p>Specifies a data target that writes to Amazon S3.</p>"
    },
    "S3Encryption":{
      "type":"structure",
      "members":{
        "S3EncryptionMode":{
          "shape":"S3EncryptionMode",
          "documentation":"<p>The encryption mode to use for Amazon S3 data.</p>"
        },
        "KmsKeyArn":{
          "shape":"KmsKeyArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the KMS key to be used to encrypt the data.</p>"
        }
      },
      "documentation":"<p>Specifies how Amazon Simple Storage Service (Amazon S3) data should be encrypted.</p>"
    },
    "S3EncryptionList":{
      "type":"list",
      "member":{"shape":"S3Encryption"}
    },
    "S3EncryptionMode":{
      "type":"string",
      "enum":[
        "DISABLED",
        "SSE-KMS",
        "SSE-S3"
      ]
    },
    "S3GlueParquetTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Path"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "PartitionKeys":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>Specifies native partitioning using a sequence of keys.</p>"
        },
        "Path":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>A single Amazon S3 path to write to.</p>"
        },
        "Compression":{
          "shape":"ParquetCompressionType",
          "documentation":"<p>Specifies how the data is compressed. This is generally not necessary if the data has a standard file extension. Possible values are <code>\"gzip\"</code> and <code>\"bzip\"</code>).</p>"
        },
        "SchemaChangePolicy":{
          "shape":"DirectSchemaChangePolicy",
          "documentation":"<p>A policy that specifies update behavior for the crawler.</p>"
        }
      },
      "documentation":"<p>Specifies a data target that writes to Amazon S3 in Apache Parquet columnar storage.</p>"
    },
    "S3HudiCatalogTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Table",
        "Database",
        "AdditionalOptions"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "PartitionKeys":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>Specifies native partitioning using a sequence of keys.</p>"
        },
        "Table":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the table in the database to write to.</p>"
        },
        "Database":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the database to write to.</p>"
        },
        "AdditionalOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Specifies additional connection options for the connector.</p>"
        },
        "SchemaChangePolicy":{
          "shape":"CatalogSchemaChangePolicy",
          "documentation":"<p>A policy that specifies update behavior for the crawler.</p>"
        }
      },
      "documentation":"<p>Specifies a target that writes to a Hudi data source in the Glue Data Catalog.</p>"
    },
    "S3HudiDirectTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Path",
        "Compression",
        "Format",
        "AdditionalOptions"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "Path":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The Amazon S3 path of your Hudi data source to write to.</p>"
        },
        "Compression":{
          "shape":"HudiTargetCompressionType",
          "documentation":"<p>Specifies how the data is compressed. This is generally not necessary if the data has a standard file extension. Possible values are <code>\"gzip\"</code> and <code>\"bzip\"</code>).</p>"
        },
        "PartitionKeys":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>Specifies native partitioning using a sequence of keys.</p>"
        },
        "Format":{
          "shape":"TargetFormat",
          "documentation":"<p>Specifies the data output format for the target.</p>"
        },
        "AdditionalOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Specifies additional connection options for the connector.</p>"
        },
        "SchemaChangePolicy":{
          "shape":"DirectSchemaChangePolicy",
          "documentation":"<p>A policy that specifies update behavior for the crawler.</p>"
        }
      },
      "documentation":"<p>Specifies a target that writes to a Hudi data source in Amazon S3.</p>"
    },
    "S3HudiSource":{
      "type":"structure",
      "required":[
        "Name",
        "Paths"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the Hudi source.</p>"
        },
        "Paths":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>A list of the Amazon S3 paths to read from.</p>"
        },
        "AdditionalHudiOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Specifies additional connection options.</p>"
        },
        "AdditionalOptions":{
          "shape":"S3DirectSourceAdditionalOptions",
          "documentation":"<p>Specifies additional options for the connector.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the Hudi source.</p>"
        }
      },
      "documentation":"<p>Specifies a Hudi data source stored in Amazon S3.</p>"
    },
    "S3JsonSource":{
      "type":"structure",
      "required":[
        "Name",
        "Paths"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data store.</p>"
        },
        "Paths":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>A list of the Amazon S3 paths to read from.</p>"
        },
        "CompressionType":{
          "shape":"CompressionType",
          "documentation":"<p>Specifies how the data is compressed. This is generally not necessary if the data has a standard file extension. Possible values are <code>\"gzip\"</code> and <code>\"bzip\"</code>).</p>"
        },
        "Exclusions":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>A string containing a JSON list of Unix-style glob patterns to exclude. For example, \"[\\\"**.pdf\\\"]\" excludes all PDF files. </p>"
        },
        "GroupSize":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The target group size in bytes. The default is computed based on the input data size and the size of your cluster. When there are fewer than 50,000 input files, <code>\"groupFiles\"</code> must be set to <code>\"inPartition\"</code> for this to take effect.</p>"
        },
        "GroupFiles":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Grouping files is turned on by default when the input contains more than 50,000 files. To turn on grouping with fewer than 50,000 files, set this parameter to \"inPartition\". To disable grouping when there are more than 50,000 files, set this parameter to <code>\"none\"</code>.</p>"
        },
        "Recurse":{
          "shape":"BoxedBoolean",
          "documentation":"<p>If set to true, recursively reads files in all subdirectories under the specified paths.</p>"
        },
        "MaxBand":{
          "shape":"BoxedNonNegativeInt",
          "documentation":"<p>This option controls the duration in milliseconds after which the s3 listing is likely to be consistent. Files with modification timestamps falling within the last maxBand milliseconds are tracked specially when using JobBookmarks to account for Amazon S3 eventual consistency. Most users don't need to set this option. The default is 900000 milliseconds, or 15 minutes.</p>"
        },
        "MaxFilesInBand":{
          "shape":"BoxedNonNegativeInt",
          "documentation":"<p>This option specifies the maximum number of files to save from the last maxBand seconds. If this number is exceeded, extra files are skipped and only processed in the next job run.</p>"
        },
        "AdditionalOptions":{
          "shape":"S3DirectSourceAdditionalOptions",
          "documentation":"<p>Specifies additional connection options.</p>"
        },
        "JsonPath":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>A JsonPath string defining the JSON data.</p>"
        },
        "Multiline":{
          "shape":"BoxedBoolean",
          "documentation":"<p>A Boolean value that specifies whether a single record can span multiple lines. This can occur when a field contains a quoted new-line character. You must set this option to True if any record spans multiple lines. The default value is <code>False</code>, which allows for more aggressive file-splitting during parsing.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the S3 JSON source.</p>"
        }
      },
      "documentation":"<p>Specifies a JSON data store stored in Amazon S3.</p>"
    },
    "S3ParquetSource":{
      "type":"structure",
      "required":[
        "Name",
        "Paths"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data store.</p>"
        },
        "Paths":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>A list of the Amazon S3 paths to read from.</p>"
        },
        "CompressionType":{
          "shape":"ParquetCompressionType",
          "documentation":"<p>Specifies how the data is compressed. This is generally not necessary if the data has a standard file extension. Possible values are <code>\"gzip\"</code> and <code>\"bzip\"</code>).</p>"
        },
        "Exclusions":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>A string containing a JSON list of Unix-style glob patterns to exclude. For example, \"[\\\"**.pdf\\\"]\" excludes all PDF files. </p>"
        },
        "GroupSize":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The target group size in bytes. The default is computed based on the input data size and the size of your cluster. When there are fewer than 50,000 input files, <code>\"groupFiles\"</code> must be set to <code>\"inPartition\"</code> for this to take effect.</p>"
        },
        "GroupFiles":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Grouping files is turned on by default when the input contains more than 50,000 files. To turn on grouping with fewer than 50,000 files, set this parameter to \"inPartition\". To disable grouping when there are more than 50,000 files, set this parameter to <code>\"none\"</code>.</p>"
        },
        "Recurse":{
          "shape":"BoxedBoolean",
          "documentation":"<p>If set to true, recursively reads files in all subdirectories under the specified paths.</p>"
        },
        "MaxBand":{
          "shape":"BoxedNonNegativeInt",
          "documentation":"<p>This option controls the duration in milliseconds after which the s3 listing is likely to be consistent. Files with modification timestamps falling within the last maxBand milliseconds are tracked specially when using JobBookmarks to account for Amazon S3 eventual consistency. Most users don't need to set this option. The default is 900000 milliseconds, or 15 minutes.</p>"
        },
        "MaxFilesInBand":{
          "shape":"BoxedNonNegativeInt",
          "documentation":"<p>This option specifies the maximum number of files to save from the last maxBand seconds. If this number is exceeded, extra files are skipped and only processed in the next job run.</p>"
        },
        "AdditionalOptions":{
          "shape":"S3DirectSourceAdditionalOptions",
          "documentation":"<p>Specifies additional connection options.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the S3 Parquet source.</p>"
        }
      },
      "documentation":"<p>Specifies an Apache Parquet data store stored in Amazon S3.</p>"
    },
    "S3SourceAdditionalOptions":{
      "type":"structure",
      "members":{
        "BoundedSize":{
          "shape":"BoxedLong",
          "documentation":"<p>Sets the upper limit for the target size of the dataset in bytes that will be processed.</p>"
        },
        "BoundedFiles":{
          "shape":"BoxedLong",
          "documentation":"<p>Sets the upper limit for the target number of files that will be processed.</p>"
        }
      },
      "documentation":"<p>Specifies additional connection options for the Amazon S3 data store.</p>"
    },
    "S3Target":{
      "type":"structure",
      "members":{
        "Path":{
          "shape":"Path",
          "documentation":"<p>The path to the Amazon S3 target.</p>"
        },
        "Exclusions":{
          "shape":"PathList",
          "documentation":"<p>A list of glob patterns used to exclude from the crawl. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html\">Catalog Tables with a Crawler</a>.</p>"
        },
        "ConnectionName":{
          "shape":"ConnectionName",
          "documentation":"<p>The name of a connection which allows a job or crawler to access data in Amazon S3 within an Amazon Virtual Private Cloud environment (Amazon VPC).</p>"
        },
        "SampleSize":{
          "shape":"NullableInteger",
          "documentation":"<p>Sets the number of files in each leaf folder to be crawled when crawling sample files in a dataset. If not set, all the files are crawled. A valid value is an integer between 1 and 249.</p>"
        },
        "EventQueueArn":{
          "shape":"EventQueueArn",
          "documentation":"<p>A valid Amazon SQS ARN. For example, <code>arn:aws:sqs:region:account:sqs</code>.</p>"
        },
        "DlqEventQueueArn":{
          "shape":"EventQueueArn",
          "documentation":"<p>A valid Amazon dead-letter SQS ARN. For example, <code>arn:aws:sqs:region:account:deadLetterQueue</code>.</p>"
        }
      },
      "documentation":"<p>Specifies a data store in Amazon Simple Storage Service (Amazon S3).</p>"
    },
    "S3TargetList":{
      "type":"list",
      "member":{"shape":"S3Target"}
    },
    "SampleSizePercentage":{
      "type":"double",
      "max":100,
      "min":0
    },
    "ScalaCode":{"type":"string"},
    "Schedule":{
      "type":"structure",
      "members":{
        "ScheduleExpression":{
          "shape":"CronExpression",
          "documentation":"<p>A <code>cron</code> expression used to specify the schedule (see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html\">Time-Based Schedules for Jobs and Crawlers</a>. For example, to run something every day at 12:15 UTC, you would specify: <code>cron(15 12 * * ? *)</code>.</p>"
        },
        "State":{
          "shape":"ScheduleState",
          "documentation":"<p>The state of the schedule.</p>"
        }
      },
      "documentation":"<p>A scheduling object using a <code>cron</code> statement to schedule an event.</p>"
    },
    "ScheduleState":{
      "type":"string",
      "enum":[
        "SCHEDULED",
        "NOT_SCHEDULED",
        "TRANSITIONING"
      ]
    },
    "SchedulerNotRunningException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>The specified scheduler is not running.</p>",
      "exception":true
    },
    "SchedulerRunningException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>The specified scheduler is already running.</p>",
      "exception":true
    },
    "SchedulerTransitioningException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>The specified scheduler is transitioning.</p>",
      "exception":true
    },
    "SchemaChangePolicy":{
      "type":"structure",
      "members":{
        "UpdateBehavior":{
          "shape":"UpdateBehavior",
          "documentation":"<p>The update behavior when the crawler finds a changed schema.</p>"
        },
        "DeleteBehavior":{
          "shape":"DeleteBehavior",
          "documentation":"<p>The deletion behavior when the crawler finds a deleted object.</p>"
        }
      },
      "documentation":"<p>A policy that specifies update and deletion behaviors for the crawler.</p>"
    },
    "SchemaCheckpointNumber":{
      "type":"long",
      "max":100000,
      "min":1
    },
    "SchemaColumn":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"ColumnNameString",
          "documentation":"<p>The name of the column.</p>"
        },
        "DataType":{
          "shape":"ColumnTypeString",
          "documentation":"<p>The type of data in the column.</p>"
        }
      },
      "documentation":"<p>A key-value pair representing a column and data type that this transform can run against. The <code>Schema</code> parameter of the <code>MLTransform</code> may contain up to 100 of these structures.</p>"
    },
    "SchemaDefinitionDiff":{
      "type":"string",
      "max":340000,
      "min":1,
      "pattern":".*\\S.*"
    },
    "SchemaDefinitionString":{
      "type":"string",
      "max":170000,
      "min":1,
      "pattern":".*\\S.*"
    },
    "SchemaDiffType":{
      "type":"string",
      "enum":["SYNTAX_DIFF"]
    },
    "SchemaId":{
      "type":"structure",
      "members":{
        "SchemaArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the schema. One of <code>SchemaArn</code> or <code>SchemaName</code> has to be provided.</p>"
        },
        "SchemaName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the schema. One of <code>SchemaArn</code> or <code>SchemaName</code> has to be provided.</p>"
        },
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the schema registry that contains the schema.</p>"
        }
      },
      "documentation":"<p>The unique ID of the schema in the Glue schema registry.</p>"
    },
    "SchemaListDefinition":{
      "type":"list",
      "member":{"shape":"SchemaListItem"}
    },
    "SchemaListItem":{
      "type":"structure",
      "members":{
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>the name of the registry where the schema resides.</p>"
        },
        "SchemaName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the schema.</p>"
        },
        "SchemaArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) for the schema.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description for the schema.</p>"
        },
        "SchemaStatus":{
          "shape":"SchemaStatus",
          "documentation":"<p>The status of the schema.</p>"
        },
        "CreatedTime":{
          "shape":"CreatedTimestamp",
          "documentation":"<p>The date and time that a schema was created.</p>"
        },
        "UpdatedTime":{
          "shape":"UpdatedTimestamp",
          "documentation":"<p>The date and time that a schema was updated.</p>"
        }
      },
      "documentation":"<p>An object that contains minimal details for a schema.</p>"
    },
    "SchemaPathString":{"type":"string"},
    "SchemaReference":{
      "type":"structure",
      "members":{
        "SchemaId":{
          "shape":"SchemaId",
          "documentation":"<p>A structure that contains schema identity fields. Either this or the <code>SchemaVersionId</code> has to be provided.</p>"
        },
        "SchemaVersionId":{
          "shape":"SchemaVersionIdString",
          "documentation":"<p>The unique ID assigned to a version of the schema. Either this or the <code>SchemaId</code> has to be provided.</p>"
        },
        "SchemaVersionNumber":{
          "shape":"VersionLongNumber",
          "documentation":"<p>The version number of the schema.</p>",
          "box":true
        }
      },
      "documentation":"<p>An object that references a schema stored in the Glue Schema Registry.</p>"
    },
    "SchemaRegistryNameString":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"[a-zA-Z0-9-_$#.]+"
    },
    "SchemaRegistryTokenString":{"type":"string"},
    "SchemaStatus":{
      "type":"string",
      "enum":[
        "AVAILABLE",
        "PENDING",
        "DELETING"
      ]
    },
    "SchemaValidationError":{
      "type":"string",
      "max":5000,
      "min":1
    },
    "SchemaVersionErrorItem":{
      "type":"structure",
      "members":{
        "VersionNumber":{
          "shape":"VersionLongNumber",
          "documentation":"<p>The version number of the schema.</p>"
        },
        "ErrorDetails":{
          "shape":"ErrorDetails",
          "documentation":"<p>The details of the error for the schema version.</p>"
        }
      },
      "documentation":"<p>An object that contains the error details for an operation on a schema version.</p>"
    },
    "SchemaVersionErrorList":{
      "type":"list",
      "member":{"shape":"SchemaVersionErrorItem"}
    },
    "SchemaVersionIdString":{
      "type":"string",
      "max":36,
      "min":36,
      "pattern":"[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"
    },
    "SchemaVersionList":{
      "type":"list",
      "member":{"shape":"SchemaVersionListItem"}
    },
    "SchemaVersionListItem":{
      "type":"structure",
      "members":{
        "SchemaArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the schema.</p>"
        },
        "SchemaVersionId":{
          "shape":"SchemaVersionIdString",
          "documentation":"<p>The unique identifier of the schema version.</p>"
        },
        "VersionNumber":{
          "shape":"VersionLongNumber",
          "documentation":"<p>The version number of the schema.</p>"
        },
        "Status":{
          "shape":"SchemaVersionStatus",
          "documentation":"<p>The status of the schema version.</p>"
        },
        "CreatedTime":{
          "shape":"CreatedTimestamp",
          "documentation":"<p>The date and time the schema version was created.</p>"
        }
      },
      "documentation":"<p>An object containing the details about a schema version.</p>"
    },
    "SchemaVersionNumber":{
      "type":"structure",
      "members":{
        "LatestVersion":{
          "shape":"LatestSchemaVersionBoolean",
          "documentation":"<p>The latest version available for the schema.</p>"
        },
        "VersionNumber":{
          "shape":"VersionLongNumber",
          "documentation":"<p>The version number of the schema.</p>"
        }
      },
      "documentation":"<p>A structure containing the schema version information.</p>"
    },
    "SchemaVersionStatus":{
      "type":"string",
      "enum":[
        "AVAILABLE",
        "PENDING",
        "FAILURE",
        "DELETING"
      ]
    },
    "ScriptLocationString":{
      "type":"string",
      "max":400000
    },
    "SearchPropertyPredicates":{
      "type":"list",
      "member":{"shape":"PropertyPredicate"}
    },
    "SearchTablesRequest":{
      "type":"structure",
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>A unique identifier, consisting of <code> <i>account_id</i> </code>.</p>"
        },
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, included if this is a continuation call.</p>"
        },
        "Filters":{
          "shape":"SearchPropertyPredicates",
          "documentation":"<p>A list of key-value pairs, and a comparator used to filter the search results. Returns all entities matching the predicate.</p> <p>The <code>Comparator</code> member of the <code>PropertyPredicate</code> struct is used only for time fields, and can be omitted for other field types. Also, when comparing string values, such as when <code>Key=Name</code>, a fuzzy match algorithm is used. The <code>Key</code> field (for example, the value of the <code>Name</code> field) is split on certain punctuation characters, for example, -, :, #, etc. into tokens. Then each token is exact-match compared with the <code>Value</code> member of <code>PropertyPredicate</code>. For example, if <code>Key=Name</code> and <code>Value=link</code>, tables named <code>customer-link</code> and <code>xx-link-yy</code> are returned, but <code>xxlinkyy</code> is not returned.</p>"
        },
        "SearchText":{
          "shape":"ValueString",
          "documentation":"<p>A string used for a text search.</p> <p>Specifying a value in quotes filters based on an exact match to the value.</p>"
        },
        "SortCriteria":{
          "shape":"SortCriteria",
          "documentation":"<p>A list of criteria for sorting the results by a field name, in an ascending or descending order.</p>"
        },
        "MaxResults":{
          "shape":"PageSize",
          "documentation":"<p>The maximum number of tables to return in a single response.</p>"
        },
        "ResourceShareType":{
          "shape":"ResourceShareType",
          "documentation":"<p>Allows you to specify that you want to search the tables shared with your account. The allowable values are <code>FOREIGN</code> or <code>ALL</code>. </p> <ul> <li> <p>If set to <code>FOREIGN</code>, will search the tables shared with your account. </p> </li> <li> <p>If set to <code>ALL</code>, will search the tables shared with your account, as well as the tables in yor local account. </p> </li> </ul>"
        }
      }
    },
    "SearchTablesResponse":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"Token",
          "documentation":"<p>A continuation token, present if the current list segment is not the last.</p>"
        },
        "TableList":{
          "shape":"TableList",
          "documentation":"<p>A list of the requested <code>Table</code> objects. The <code>SearchTables</code> response returns only the tables that you have access to.</p>"
        }
      }
    },
    "SecurityConfiguration":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the security configuration.</p>"
        },
        "CreatedTimeStamp":{
          "shape":"TimestampValue",
          "documentation":"<p>The time at which this security configuration was created.</p>"
        },
        "EncryptionConfiguration":{
          "shape":"EncryptionConfiguration",
          "documentation":"<p>The encryption configuration associated with this security configuration.</p>"
        }
      },
      "documentation":"<p>Specifies a security configuration.</p>"
    },
    "SecurityConfigurationList":{
      "type":"list",
      "member":{"shape":"SecurityConfiguration"}
    },
    "SecurityGroupIdList":{
      "type":"list",
      "member":{"shape":"NameString"},
      "max":50,
      "min":0
    },
    "Segment":{
      "type":"structure",
      "required":[
        "SegmentNumber",
        "TotalSegments"
      ],
      "members":{
        "SegmentNumber":{
          "shape":"NonNegativeInteger",
          "documentation":"<p>The zero-based index number of the segment. For example, if the total number of segments is 4, <code>SegmentNumber</code> values range from 0 through 3.</p>"
        },
        "TotalSegments":{
          "shape":"TotalSegmentsInteger",
          "documentation":"<p>The total number of segments.</p>"
        }
      },
      "documentation":"<p>Defines a non-overlapping region of a table's partitions, allowing multiple requests to be run in parallel.</p>"
    },
    "SelectFields":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Paths"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "Paths":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>A JSON path to a variable in the data structure.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that chooses the data property keys that you want to keep.</p>"
    },
    "SelectFromCollection":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Index"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "Index":{
          "shape":"NonNegativeInt",
          "documentation":"<p>The index for the DynamicFrame to be selected.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that chooses one <code>DynamicFrame</code> from a collection of <code>DynamicFrames</code>. The output is the selected <code>DynamicFrame</code> </p>"
    },
    "Separator":{
      "type":"string",
      "enum":[
        "comma",
        "ctrla",
        "pipe",
        "semicolon",
        "tab"
      ]
    },
    "SerDeInfo":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the SerDe.</p>"
        },
        "SerializationLibrary":{
          "shape":"NameString",
          "documentation":"<p>Usually the class that implements the SerDe. An example is <code>org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe</code>.</p>"
        },
        "Parameters":{
          "shape":"ParametersMap",
          "documentation":"<p>These key-value pairs define initialization parameters for the SerDe.</p>"
        }
      },
      "documentation":"<p>Information about a serialization/deserialization program (SerDe) that serves as an extractor and loader.</p>"
    },
    "Session":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"NameString",
          "documentation":"<p>The ID of the session.</p>"
        },
        "CreatedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The time and date when the session was created.</p>"
        },
        "Status":{
          "shape":"SessionStatus",
          "documentation":"<p>The session status. </p>"
        },
        "ErrorMessage":{
          "shape":"DescriptionString",
          "documentation":"<p>The error message displayed during the session.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>The description of the session.</p>"
        },
        "Role":{
          "shape":"OrchestrationRoleArn",
          "documentation":"<p>The name or Amazon Resource Name (ARN) of the IAM role associated with the Session.</p>"
        },
        "Command":{
          "shape":"SessionCommand",
          "documentation":"<p>The command object.See SessionCommand.</p>"
        },
        "DefaultArguments":{
          "shape":"OrchestrationArgumentsMap",
          "documentation":"<p>A map array of key-value pairs. Max is 75 pairs. </p>"
        },
        "Connections":{
          "shape":"ConnectionsList",
          "documentation":"<p>The number of connections used for the session.</p>"
        },
        "Progress":{
          "shape":"DoubleValue",
          "documentation":"<p>The code execution progress of the session.</p>"
        },
        "MaxCapacity":{
          "shape":"NullableDouble",
          "documentation":"<p>The number of Glue data processing units (DPUs) that can be allocated when the job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB memory. </p>"
        },
        "SecurityConfiguration":{
          "shape":"NameString",
          "documentation":"<p>The name of the SecurityConfiguration structure to be used with the session.</p>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>The Glue version determines the versions of Apache Spark and Python that Glue supports. The GlueVersion must be greater than 2.0.</p>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>WorkerType</code> to use for the session.</p>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated when a session runs. Accepts a value of <code>G.1X</code>, <code>G.2X</code>, <code>G.4X</code>, or <code>G.8X</code> for Spark sessions. Accepts the value <code>Z.2X</code> for Ray sessions.</p>"
        },
        "CompletedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time that this session is completed.</p>"
        },
        "ExecutionTime":{
          "shape":"NullableDouble",
          "documentation":"<p>The total time the session ran for.</p>"
        },
        "DPUSeconds":{
          "shape":"NullableDouble",
          "documentation":"<p>The DPUs consumed by the session (formula: ExecutionTime * MaxCapacity).</p>"
        },
        "IdleTimeout":{
          "shape":"IdleTimeout",
          "documentation":"<p>The number of minutes when idle before the session times out.</p>"
        }
      },
      "documentation":"<p>The period in which a remote Spark runtime environment is running.</p>"
    },
    "SessionCommand":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Specifies the name of the SessionCommand. Can be 'glueetl' or 'gluestreaming'.</p>"
        },
        "PythonVersion":{
          "shape":"PythonVersionString",
          "documentation":"<p>Specifies the Python version. The Python version indicates the version supported for jobs of type Spark.</p>"
        }
      },
      "documentation":"<p>The <code>SessionCommand</code> that runs the job.</p>"
    },
    "SessionIdList":{
      "type":"list",
      "member":{"shape":"NameString"}
    },
    "SessionList":{
      "type":"list",
      "member":{"shape":"Session"}
    },
    "SessionStatus":{
      "type":"string",
      "enum":[
        "PROVISIONING",
        "READY",
        "FAILED",
        "TIMEOUT",
        "STOPPING",
        "STOPPED"
      ]
    },
    "SkewedInfo":{
      "type":"structure",
      "members":{
        "SkewedColumnNames":{
          "shape":"NameStringList",
          "documentation":"<p>A list of names of columns that contain skewed values.</p>"
        },
        "SkewedColumnValues":{
          "shape":"ColumnValueStringList",
          "documentation":"<p>A list of values that appear so frequently as to be considered skewed.</p>"
        },
        "SkewedColumnValueLocationMaps":{
          "shape":"LocationMap",
          "documentation":"<p>A mapping of skewed values to the columns that contain them.</p>"
        }
      },
      "documentation":"<p>Specifies skewed values in a table. Skewed values are those that occur with very high frequency.</p>"
    },
    "SnowflakeNodeData":{
      "type":"structure",
      "members":{
        "SourceType":{
          "shape":"GenericLimitedString",
          "documentation":"<p>Specifies how retrieved data is specified. Valid values: <code>\"table\"</code>, <code> \"query\"</code>.</p>"
        },
        "Connection":{
          "shape":"Option",
          "documentation":"<p>Specifies a Glue Data Catalog Connection to a Snowflake endpoint.</p>"
        },
        "Schema":{
          "shape":"GenericString",
          "documentation":"<p>Specifies a Snowflake database schema for your node to use.</p>"
        },
        "Table":{
          "shape":"GenericString",
          "documentation":"<p>Specifies a Snowflake table for your node to use.</p>"
        },
        "Database":{
          "shape":"GenericString",
          "documentation":"<p>Specifies a Snowflake database for your node to use.</p>"
        },
        "TempDir":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Not currently used.</p>"
        },
        "IamRole":{
          "shape":"Option",
          "documentation":"<p>Not currently used.</p>"
        },
        "AdditionalOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Specifies additional options passed to the Snowflake connector. If options are specified elsewhere in this node, this will take precedence.</p>"
        },
        "SampleQuery":{
          "shape":"GenericString",
          "documentation":"<p>A SQL string used to retrieve data with the <code>query</code> sourcetype.</p>"
        },
        "PreAction":{
          "shape":"GenericString",
          "documentation":"<p>A SQL string run before the Snowflake connector performs its standard actions.</p>"
        },
        "PostAction":{
          "shape":"GenericString",
          "documentation":"<p>A SQL string run after the Snowflake connector performs its standard actions.</p>"
        },
        "Action":{
          "shape":"GenericString",
          "documentation":"<p>Specifies what action to take when writing to a table with preexisting data. Valid values: <code> append</code>, <code>merge</code>, <code>truncate</code>, <code>drop</code>.</p>"
        },
        "Upsert":{
          "shape":"BooleanValue",
          "documentation":"<p>Used when Action is <code>append</code>. Specifies the resolution behavior when a row already exists. If true, preexisting rows will be updated. If false, those rows will be inserted.</p>"
        },
        "MergeAction":{
          "shape":"GenericLimitedString",
          "documentation":"<p>Specifies a merge action. Valid values: <code>simple</code>, <code>custom</code>. If simple, merge behavior is defined by <code>MergeWhenMatched</code> and <code> MergeWhenNotMatched</code>. If custom, defined by <code>MergeClause</code>.</p>"
        },
        "MergeWhenMatched":{
          "shape":"GenericLimitedString",
          "documentation":"<p>Specifies how to resolve records that match preexisting data when merging. Valid values: <code> update</code>, <code>delete</code>.</p>"
        },
        "MergeWhenNotMatched":{
          "shape":"GenericLimitedString",
          "documentation":"<p>Specifies how to process records that do not match preexisting data when merging. Valid values: <code>insert</code>, <code>none</code>.</p>"
        },
        "MergeClause":{
          "shape":"GenericString",
          "documentation":"<p>A SQL statement that specifies a custom merge behavior.</p>"
        },
        "StagingTable":{
          "shape":"GenericString",
          "documentation":"<p>The name of a staging table used when performing <code>merge</code> or upsert <code>append</code> actions. Data is written to this table, then moved to <code>table</code> by a generated postaction.</p>"
        },
        "SelectedColumns":{
          "shape":"OptionList",
          "documentation":"<p>Specifies the columns combined to identify a record when detecting matches for merges and upserts. A list of structures with <code>value</code>, <code>label</code> and <code> description</code> keys. Each structure describes a column.</p>"
        },
        "AutoPushdown":{
          "shape":"BooleanValue",
          "documentation":"<p>Specifies whether automatic query pushdown is enabled. If pushdown is enabled, then when a query is run on Spark, if part of the query can be \"pushed down\" to the Snowflake server, it is pushed down. This improves performance of some queries.</p>"
        },
        "TableSchema":{
          "shape":"OptionList",
          "documentation":"<p>Manually defines the target schema for the node. A list of structures with <code>value</code> , <code>label</code> and <code>description</code> keys. Each structure defines a column.</p>"
        }
      },
      "documentation":"<p>Specifies configuration for Snowflake nodes in Glue Studio.</p>"
    },
    "SnowflakeSource":{
      "type":"structure",
      "required":[
        "Name",
        "Data"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the Snowflake data source.</p>"
        },
        "Data":{
          "shape":"SnowflakeNodeData",
          "documentation":"<p>Configuration for the Snowflake data source.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies user-defined schemas for your output data.</p>"
        }
      },
      "documentation":"<p>Specifies a Snowflake data source.</p>"
    },
    "SnowflakeTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Data"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the Snowflake target.</p>"
        },
        "Data":{
          "shape":"SnowflakeNodeData",
          "documentation":"<p>Specifies the data of the Snowflake target node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        }
      },
      "documentation":"<p>Specifies a Snowflake target.</p>"
    },
    "Sort":{
      "type":"string",
      "enum":[
        "ASC",
        "DESC"
      ]
    },
    "SortCriteria":{
      "type":"list",
      "member":{"shape":"SortCriterion"},
      "max":1,
      "min":0
    },
    "SortCriterion":{
      "type":"structure",
      "members":{
        "FieldName":{
          "shape":"ValueString",
          "documentation":"<p>The name of the field on which to sort.</p>"
        },
        "Sort":{
          "shape":"Sort",
          "documentation":"<p>An ascending or descending sort.</p>"
        }
      },
      "documentation":"<p>Specifies a field to sort by and a sort order.</p>"
    },
    "SortDirectionType":{
      "type":"string",
      "enum":[
        "DESCENDING",
        "ASCENDING"
      ]
    },
    "SourceControlAuthStrategy":{
      "type":"string",
      "enum":[
        "PERSONAL_ACCESS_TOKEN",
        "AWS_SECRETS_MANAGER"
      ]
    },
    "SourceControlDetails":{
      "type":"structure",
      "members":{
        "Provider":{
          "shape":"SourceControlProvider",
          "documentation":"<p>The provider for the remote repository.</p>"
        },
        "Repository":{
          "shape":"Generic512CharString",
          "documentation":"<p>The name of the remote repository that contains the job artifacts.</p>"
        },
        "Owner":{
          "shape":"Generic512CharString",
          "documentation":"<p>The owner of the remote repository that contains the job artifacts.</p>"
        },
        "Branch":{
          "shape":"Generic512CharString",
          "documentation":"<p>An optional branch in the remote repository.</p>"
        },
        "Folder":{
          "shape":"Generic512CharString",
          "documentation":"<p>An optional folder in the remote repository.</p>"
        },
        "LastCommitId":{
          "shape":"Generic512CharString",
          "documentation":"<p>The last commit ID for a commit in the remote repository.</p>"
        },
        "AuthStrategy":{
          "shape":"SourceControlAuthStrategy",
          "documentation":"<p>The type of authentication, which can be an authentication token stored in Amazon Web Services Secrets Manager, or a personal access token.</p>"
        },
        "AuthToken":{
          "shape":"Generic512CharString",
          "documentation":"<p>The value of an authorization token.</p>"
        }
      },
      "documentation":"<p>The details for a source control configuration for a job, allowing synchronization of job artifacts to or from a remote repository.</p>"
    },
    "SourceControlProvider":{
      "type":"string",
      "enum":[
        "GITHUB",
        "GITLAB",
        "BITBUCKET",
        "AWS_CODE_COMMIT"
      ]
    },
    "SparkConnectorSource":{
      "type":"structure",
      "required":[
        "Name",
        "ConnectionName",
        "ConnectorName",
        "ConnectionType"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data source.</p>"
        },
        "ConnectionName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the connection that is associated with the connector.</p>"
        },
        "ConnectorName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of a connector that assists with accessing the data store in Glue Studio.</p>"
        },
        "ConnectionType":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The type of connection, such as marketplace.spark or custom.spark, designating a connection to an Apache Spark data store.</p>"
        },
        "AdditionalOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Additional connection options for the connector.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies data schema for the custom spark source.</p>"
        }
      },
      "documentation":"<p>Specifies a connector to an Apache Spark data source.</p>"
    },
    "SparkConnectorTarget":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "ConnectionName",
        "ConnectorName",
        "ConnectionType"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the data target.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The nodes that are inputs to the data target.</p>"
        },
        "ConnectionName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of a connection for an Apache Spark connector.</p>"
        },
        "ConnectorName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of an Apache Spark connector.</p>"
        },
        "ConnectionType":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The type of connection, such as marketplace.spark or custom.spark, designating a connection to an Apache Spark data store.</p>"
        },
        "AdditionalOptions":{
          "shape":"AdditionalOptions",
          "documentation":"<p>Additional connection options for the connector.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the custom spark target.</p>"
        }
      },
      "documentation":"<p>Specifies a target that uses an Apache Spark connector.</p>"
    },
    "SparkSQL":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "SqlQuery",
        "SqlAliases"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"ManyInputs",
          "documentation":"<p>The data inputs identified by their node names. You can associate a table name with each input node to use in the SQL query. The name you choose must meet the Spark SQL naming restrictions.</p>"
        },
        "SqlQuery":{
          "shape":"SqlQuery",
          "documentation":"<p>A SQL query that must use Spark SQL syntax and return a single data set.</p>"
        },
        "SqlAliases":{
          "shape":"SqlAliases",
          "documentation":"<p>A list of aliases. An alias allows you to specify what name to use in the SQL for a given input. For example, you have a datasource named \"MyDataSource\". If you specify <code>From</code> as MyDataSource, and <code>Alias</code> as SqlName, then in your SQL you can do:</p> <p> <code>select * from SqlName</code> </p> <p>and that gets data from MyDataSource.</p>"
        },
        "OutputSchemas":{
          "shape":"GlueSchemas",
          "documentation":"<p>Specifies the data schema for the SparkSQL transform.</p>"
        }
      },
      "documentation":"<p>Specifies a transform where you enter a SQL query using Spark SQL syntax to transform the data. The output is a single <code>DynamicFrame</code>.</p>"
    },
    "Spigot":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Path"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "Path":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>A path in Amazon S3 where the transform will write a subset of records from the dataset to a JSON file in an Amazon S3 bucket.</p>"
        },
        "Topk":{
          "shape":"Topk",
          "documentation":"<p>Specifies a number of records to write starting from the beginning of the dataset.</p>"
        },
        "Prob":{
          "shape":"Prob",
          "documentation":"<p>The probability (a decimal value with a maximum value of 1) of picking any given record. A value of 1 indicates that each row read from the dataset should be included in the sample output.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that writes samples of the data to an Amazon S3 bucket.</p>"
    },
    "SplitFields":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "Paths"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"OneInput",
          "documentation":"<p>The data inputs identified by their node names.</p>"
        },
        "Paths":{
          "shape":"GlueStudioPathList",
          "documentation":"<p>A JSON path to a variable in the data structure.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that splits data property keys into two <code>DynamicFrames</code>. The output is a collection of <code>DynamicFrames</code>: one with selected data property keys, and one with the remaining data property keys.</p>"
    },
    "SqlAlias":{
      "type":"structure",
      "required":[
        "From",
        "Alias"
      ],
      "members":{
        "From":{
          "shape":"NodeId",
          "documentation":"<p>A table, or a column in a table.</p>"
        },
        "Alias":{
          "shape":"EnclosedInStringPropertyWithQuote",
          "documentation":"<p>A temporary name given to a table, or a column in a table.</p>"
        }
      },
      "documentation":"<p>Represents a single entry in the list of values for <code>SqlAliases</code>. </p>"
    },
    "SqlAliases":{
      "type":"list",
      "member":{"shape":"SqlAlias"}
    },
    "SqlQuery":{
      "type":"string",
      "pattern":"([\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\s])*"
    },
    "StartBlueprintRunRequest":{
      "type":"structure",
      "required":[
        "BlueprintName",
        "RoleArn"
      ],
      "members":{
        "BlueprintName":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The name of the blueprint.</p>"
        },
        "Parameters":{
          "shape":"BlueprintParameters",
          "documentation":"<p>Specifies the parameters as a <code>BlueprintParameters</code> object.</p>"
        },
        "RoleArn":{
          "shape":"OrchestrationIAMRoleArn",
          "documentation":"<p>Specifies the IAM role used to create the workflow.</p>"
        }
      }
    },
    "StartBlueprintRunResponse":{
      "type":"structure",
      "members":{
        "RunId":{
          "shape":"IdString",
          "documentation":"<p>The run ID for this blueprint run.</p>"
        }
      }
    },
    "StartColumnStatisticsTaskRunRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "Role"
      ],
      "members":{
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the database where the table resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table to generate statistics.</p>"
        },
        "ColumnNameList":{
          "shape":"ColumnNameList",
          "documentation":"<p>A list of the column names to generate statistics. If none is supplied, all column names for the table will be used by default.</p>"
        },
        "Role":{
          "shape":"NameString",
          "documentation":"<p>The IAM role that the service assumes to generate statistics.</p>"
        },
        "SampleSize":{
          "shape":"SampleSizePercentage",
          "documentation":"<p>The percentage of rows used to generate statistics. If none is supplied, the entire table will be used to generate stats.</p>"
        },
        "CatalogID":{
          "shape":"NameString",
          "documentation":"<p>The ID of the Data Catalog where the table reside. If none is supplied, the Amazon Web Services account ID is used by default.</p>"
        },
        "SecurityConfiguration":{
          "shape":"NameString",
          "documentation":"<p>Name of the security configuration that is used to encrypt CloudWatch logs for the column stats task run.</p>"
        }
      }
    },
    "StartColumnStatisticsTaskRunResponse":{
      "type":"structure",
      "members":{
        "ColumnStatisticsTaskRunId":{
          "shape":"HashString",
          "documentation":"<p>The identifier for the column statistics task run.</p>"
        }
      }
    },
    "StartCrawlerRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the crawler to start.</p>"
        }
      }
    },
    "StartCrawlerResponse":{
      "type":"structure",
      "members":{
      }
    },
    "StartCrawlerScheduleRequest":{
      "type":"structure",
      "required":["CrawlerName"],
      "members":{
        "CrawlerName":{
          "shape":"NameString",
          "documentation":"<p>Name of the crawler to schedule.</p>"
        }
      }
    },
    "StartCrawlerScheduleResponse":{
      "type":"structure",
      "members":{
      }
    },
    "StartDataQualityRuleRecommendationRunRequest":{
      "type":"structure",
      "required":[
        "DataSource",
        "Role"
      ],
      "members":{
        "DataSource":{
          "shape":"DataSource",
          "documentation":"<p>The data source (Glue table) associated with this run.</p>"
        },
        "Role":{
          "shape":"RoleString",
          "documentation":"<p>An IAM role supplied to encrypt the results of the run.</p>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of <code>G.1X</code> workers to be used in the run. The default is 5.</p>"
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The timeout for a run in minutes. This is the maximum time that a run can consume resources before it is terminated and enters <code>TIMEOUT</code> status. The default is 2,880 minutes (48 hours).</p>"
        },
        "CreatedRulesetName":{
          "shape":"NameString",
          "documentation":"<p>A name for the ruleset.</p>"
        },
        "ClientToken":{
          "shape":"HashString",
          "documentation":"<p>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.</p>"
        }
      }
    },
    "StartDataQualityRuleRecommendationRunResponse":{
      "type":"structure",
      "members":{
        "RunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run identifier associated with this run.</p>"
        }
      }
    },
    "StartDataQualityRulesetEvaluationRunRequest":{
      "type":"structure",
      "required":[
        "DataSource",
        "Role",
        "RulesetNames"
      ],
      "members":{
        "DataSource":{
          "shape":"DataSource",
          "documentation":"<p>The data source (Glue table) associated with this run.</p>"
        },
        "Role":{
          "shape":"RoleString",
          "documentation":"<p>An IAM role supplied to encrypt the results of the run.</p>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of <code>G.1X</code> workers to be used in the run. The default is 5.</p>"
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The timeout for a run in minutes. This is the maximum time that a run can consume resources before it is terminated and enters <code>TIMEOUT</code> status. The default is 2,880 minutes (48 hours).</p>"
        },
        "ClientToken":{
          "shape":"HashString",
          "documentation":"<p>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.</p>"
        },
        "AdditionalRunOptions":{
          "shape":"DataQualityEvaluationRunAdditionalRunOptions",
          "documentation":"<p>Additional run options you can specify for an evaluation run.</p>"
        },
        "RulesetNames":{
          "shape":"RulesetNames",
          "documentation":"<p>A list of ruleset names.</p>"
        },
        "AdditionalDataSources":{
          "shape":"DataSourceMap",
          "documentation":"<p>A map of reference strings to additional data sources you can specify for an evaluation run.</p>"
        }
      }
    },
    "StartDataQualityRulesetEvaluationRunResponse":{
      "type":"structure",
      "members":{
        "RunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run identifier associated with this run.</p>"
        }
      }
    },
    "StartExportLabelsTaskRunRequest":{
      "type":"structure",
      "required":[
        "TransformId",
        "OutputS3Path"
      ],
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the machine learning transform.</p>"
        },
        "OutputS3Path":{
          "shape":"UriString",
          "documentation":"<p>The Amazon S3 path where you export the labels.</p>"
        }
      }
    },
    "StartExportLabelsTaskRunResponse":{
      "type":"structure",
      "members":{
        "TaskRunId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier for the task run.</p>"
        }
      }
    },
    "StartImportLabelsTaskRunRequest":{
      "type":"structure",
      "required":[
        "TransformId",
        "InputS3Path"
      ],
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the machine learning transform.</p>"
        },
        "InputS3Path":{
          "shape":"UriString",
          "documentation":"<p>The Amazon Simple Storage Service (Amazon S3) path from where you import the labels.</p>"
        },
        "ReplaceAllLabels":{
          "shape":"ReplaceBoolean",
          "documentation":"<p>Indicates whether to overwrite your existing labels.</p>"
        }
      }
    },
    "StartImportLabelsTaskRunResponse":{
      "type":"structure",
      "members":{
        "TaskRunId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier for the task run.</p>"
        }
      }
    },
    "StartJobRunRequest":{
      "type":"structure",
      "required":["JobName"],
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the job definition to use.</p>"
        },
        "JobRunId":{
          "shape":"IdString",
          "documentation":"<p>The ID of a previous <code>JobRun</code> to retry.</p>"
        },
        "Arguments":{
          "shape":"GenericMap",
          "documentation":"<p>The job arguments associated with this run. For this job run, they replace the default arguments set in the job definition itself.</p> <p>You can specify arguments here that your own job-execution script consumes, as well as arguments that Glue itself consumes.</p> <p>Job arguments may be logged. Do not pass plaintext secrets as arguments. Retrieve secrets from a Glue Connection, Secrets Manager or other secret management mechanism if you intend to keep them within the Job. </p> <p>For information about how to specify and consume your own Job arguments, see the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html\">Calling Glue APIs in Python</a> topic in the developer guide.</p> <p>For information about the arguments you can provide to this field when configuring Spark jobs, see the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html\">Special Parameters Used by Glue</a> topic in the developer guide.</p> <p>For information about the arguments you can provide to this field when configuring Ray jobs, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/author-job-ray-job-parameters.html\">Using job parameters in Ray jobs</a> in the developer guide.</p>"
        },
        "AllocatedCapacity":{
          "shape":"IntegerValue",
          "documentation":"<p>This field is deprecated. Use <code>MaxCapacity</code> instead.</p> <p>The number of Glue data processing units (DPUs) to allocate to this JobRun. You can allocate a minimum of 2 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"https://aws.amazon.com/glue/pricing/\">Glue pricing page</a>.</p>",
          "deprecated":true,
          "deprecatedMessage":"This property is deprecated, use MaxCapacity instead."
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The <code>JobRun</code> timeout in minutes. This is the maximum time that a job run can consume resources before it is terminated and enters <code>TIMEOUT</code> status. This value overrides the timeout value set in the parent job.</p> <p>Streaming jobs do not have a timeout. The default for non-streaming jobs is 2,880 minutes (48 hours).</p>"
        },
        "MaxCapacity":{
          "shape":"NullableDouble",
          "documentation":"<p>For Glue version 1.0 or earlier jobs, using the standard worker type, the number of Glue data processing units (DPUs) that can be allocated when this job runs. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"https://aws.amazon.com/glue/pricing/\"> Glue pricing page</a>.</p> <p>For Glue version 2.0+ jobs, you cannot specify a <code>Maximum capacity</code>. Instead, you should specify a <code>Worker type</code> and the <code>Number of workers</code>.</p> <p>Do not set <code>MaxCapacity</code> if using <code>WorkerType</code> and <code>NumberOfWorkers</code>.</p> <p>The value that can be allocated for <code>MaxCapacity</code> depends on whether you are running a Python shell job, an Apache Spark ETL job, or an Apache Spark streaming ETL job:</p> <ul> <li> <p>When you specify a Python shell job (<code>JobCommand.Name</code>=\"pythonshell\"), you can allocate either 0.0625 or 1 DPU. The default is 0.0625 DPU.</p> </li> <li> <p>When you specify an Apache Spark ETL job (<code>JobCommand.Name</code>=\"glueetl\") or Apache Spark streaming ETL job (<code>JobCommand.Name</code>=\"gluestreaming\"), you can allocate from 2 to 100 DPUs. The default is 10 DPUs. This job type cannot have a fractional DPU allocation.</p> </li> </ul>"
        },
        "SecurityConfiguration":{
          "shape":"NameString",
          "documentation":"<p>The name of the <code>SecurityConfiguration</code> structure to be used with this job run.</p>"
        },
        "NotificationProperty":{
          "shape":"NotificationProperty",
          "documentation":"<p>Specifies configuration properties of a job run notification.</p>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated when a job runs. Accepts a value of G.1X, G.2X, G.4X, G.8X or G.025X for Spark jobs. Accepts the value Z.2X for Ray jobs.</p> <ul> <li> <p>For the <code>G.1X</code> worker type, each worker maps to 1 DPU (4 vCPUs, 16 GB of memory) with 84GB disk (approximately 34GB free), and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p> </li> <li> <p>For the <code>G.2X</code> worker type, each worker maps to 2 DPU (8 vCPUs, 32 GB of memory) with 128GB disk (approximately 77GB free), and provides 1 executor per worker. We recommend this worker type for workloads such as data transforms, joins, and queries, to offers a scalable and cost effective way to run most jobs.</p> </li> <li> <p>For the <code>G.4X</code> worker type, each worker maps to 4 DPU (16 vCPUs, 64 GB of memory) with 256GB disk (approximately 235GB free), and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs in the following Amazon Web Services Regions: US East (Ohio), US East (N. Virginia), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Canada (Central), Europe (Frankfurt), Europe (Ireland), and Europe (Stockholm).</p> </li> <li> <p>For the <code>G.8X</code> worker type, each worker maps to 8 DPU (32 vCPUs, 128 GB of memory) with 512GB disk (approximately 487GB free), and provides 1 executor per worker. We recommend this worker type for jobs whose workloads contain your most demanding transforms, aggregations, joins, and queries. This worker type is available only for Glue version 3.0 or later Spark ETL jobs, in the same Amazon Web Services Regions as supported for the <code>G.4X</code> worker type.</p> </li> <li> <p>For the <code>G.025X</code> worker type, each worker maps to 0.25 DPU (2 vCPUs, 4 GB of memory) with 84GB disk (approximately 34GB free), and provides 1 executor per worker. We recommend this worker type for low volume streaming jobs. This worker type is only available for Glue version 3.0 streaming jobs.</p> </li> <li> <p>For the <code>Z.2X</code> worker type, each worker maps to 2 M-DPU (8vCPUs, 64 GB of memory) with 128 GB disk (approximately 120GB free), and provides up to 8 Ray workers based on the autoscaler.</p> </li> </ul>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>workerType</code> that are allocated when a job runs.</p>"
        },
        "ExecutionClass":{
          "shape":"ExecutionClass",
          "documentation":"<p>Indicates whether the job is run with a standard or flexible execution class. The standard execution-class is ideal for time-sensitive workloads that require fast job startup and dedicated resources.</p> <p>The flexible execution class is appropriate for time-insensitive jobs whose start and completion times may vary. </p> <p>Only jobs with Glue version 3.0 and above and command type <code>glueetl</code> will be allowed to set <code>ExecutionClass</code> to <code>FLEX</code>. The flexible execution class is available for Spark jobs.</p>"
        }
      }
    },
    "StartJobRunResponse":{
      "type":"structure",
      "members":{
        "JobRunId":{
          "shape":"IdString",
          "documentation":"<p>The ID assigned to this job run.</p>"
        }
      }
    },
    "StartMLEvaluationTaskRunRequest":{
      "type":"structure",
      "required":["TransformId"],
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the machine learning transform.</p>"
        }
      }
    },
    "StartMLEvaluationTaskRunResponse":{
      "type":"structure",
      "members":{
        "TaskRunId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier associated with this run.</p>"
        }
      }
    },
    "StartMLLabelingSetGenerationTaskRunRequest":{
      "type":"structure",
      "required":[
        "TransformId",
        "OutputS3Path"
      ],
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier of the machine learning transform.</p>"
        },
        "OutputS3Path":{
          "shape":"UriString",
          "documentation":"<p>The Amazon Simple Storage Service (Amazon S3) path where you generate the labeling set.</p>"
        }
      }
    },
    "StartMLLabelingSetGenerationTaskRunResponse":{
      "type":"structure",
      "members":{
        "TaskRunId":{
          "shape":"HashString",
          "documentation":"<p>The unique run identifier that is associated with this task run.</p>"
        }
      }
    },
    "StartTriggerRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the trigger to start.</p>"
        }
      }
    },
    "StartTriggerResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the trigger that was started.</p>"
        }
      }
    },
    "StartWorkflowRunRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the workflow to start.</p>"
        },
        "RunProperties":{
          "shape":"WorkflowRunProperties",
          "documentation":"<p>The workflow run properties for the new workflow run.</p>"
        }
      }
    },
    "StartWorkflowRunResponse":{
      "type":"structure",
      "members":{
        "RunId":{
          "shape":"IdString",
          "documentation":"<p>An Id for the new run.</p>"
        }
      }
    },
    "StartingEventBatchCondition":{
      "type":"structure",
      "members":{
        "BatchSize":{
          "shape":"NullableInteger",
          "documentation":"<p>Number of events in the batch.</p>"
        },
        "BatchWindow":{
          "shape":"NullableInteger",
          "documentation":"<p>Duration of the batch window in seconds.</p>"
        }
      },
      "documentation":"<p>The batch condition that started the workflow run. Either the number of events in the batch size arrived, in which case the BatchSize member is non-zero, or the batch window expired, in which case the BatchWindow member is non-zero.</p>"
    },
    "StartingPosition":{
      "type":"string",
      "enum":[
        "latest",
        "trim_horizon",
        "earliest",
        "timestamp"
      ]
    },
    "Statement":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"IntegerValue",
          "documentation":"<p>The ID of the statement.</p>"
        },
        "Code":{
          "shape":"GenericString",
          "documentation":"<p>The execution code of the statement.</p>"
        },
        "State":{
          "shape":"StatementState",
          "documentation":"<p>The state while request is actioned.</p>"
        },
        "Output":{
          "shape":"StatementOutput",
          "documentation":"<p>The output in JSON.</p>"
        },
        "Progress":{
          "shape":"DoubleValue",
          "documentation":"<p>The code execution progress.</p>"
        },
        "StartedOn":{
          "shape":"LongValue",
          "documentation":"<p>The unix time and date that the job definition was started.</p>"
        },
        "CompletedOn":{
          "shape":"LongValue",
          "documentation":"<p>The unix time and date that the job definition was completed.</p>"
        }
      },
      "documentation":"<p>The statement or request for a particular action to occur in a session.</p>"
    },
    "StatementList":{
      "type":"list",
      "member":{"shape":"Statement"}
    },
    "StatementOutput":{
      "type":"structure",
      "members":{
        "Data":{
          "shape":"StatementOutputData",
          "documentation":"<p>The code execution output.</p>"
        },
        "ExecutionCount":{
          "shape":"IntegerValue",
          "documentation":"<p>The execution count of the output.</p>"
        },
        "Status":{
          "shape":"StatementState",
          "documentation":"<p>The status of the code execution output.</p>"
        },
        "ErrorName":{
          "shape":"GenericString",
          "documentation":"<p>The name of the error in the output.</p>"
        },
        "ErrorValue":{
          "shape":"GenericString",
          "documentation":"<p>The error value of the output.</p>"
        },
        "Traceback":{
          "shape":"OrchestrationStringList",
          "documentation":"<p>The traceback of the output.</p>"
        }
      },
      "documentation":"<p>The code execution output in JSON format.</p>"
    },
    "StatementOutputData":{
      "type":"structure",
      "members":{
        "TextPlain":{
          "shape":"GenericString",
          "documentation":"<p>The code execution output in text format.</p>"
        }
      },
      "documentation":"<p>The code execution output in JSON format.</p>"
    },
    "StatementState":{
      "type":"string",
      "enum":[
        "WAITING",
        "RUNNING",
        "AVAILABLE",
        "CANCELLING",
        "CANCELLED",
        "ERROR"
      ]
    },
    "StopColumnStatisticsTaskRunRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName"
      ],
      "members":{
        "DatabaseName":{
          "shape":"DatabaseName",
          "documentation":"<p>The name of the database where the table resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table.</p>"
        }
      }
    },
    "StopColumnStatisticsTaskRunResponse":{
      "type":"structure",
      "members":{
      }
    },
    "StopCrawlerRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the crawler to stop.</p>"
        }
      }
    },
    "StopCrawlerResponse":{
      "type":"structure",
      "members":{
      }
    },
    "StopCrawlerScheduleRequest":{
      "type":"structure",
      "required":["CrawlerName"],
      "members":{
        "CrawlerName":{
          "shape":"NameString",
          "documentation":"<p>Name of the crawler whose schedule state to set.</p>"
        }
      }
    },
    "StopCrawlerScheduleResponse":{
      "type":"structure",
      "members":{
      }
    },
    "StopSessionRequest":{
      "type":"structure",
      "required":["Id"],
      "members":{
        "Id":{
          "shape":"NameString",
          "documentation":"<p>The ID of the session to be stopped.</p>"
        },
        "RequestOrigin":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The origin of the request.</p>"
        }
      }
    },
    "StopSessionResponse":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"NameString",
          "documentation":"<p>Returns the Id of the stopped session.</p>"
        }
      }
    },
    "StopTriggerRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the trigger to stop.</p>"
        }
      }
    },
    "StopTriggerResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the trigger that was stopped.</p>"
        }
      }
    },
    "StopWorkflowRunRequest":{
      "type":"structure",
      "required":[
        "Name",
        "RunId"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the workflow to stop.</p>"
        },
        "RunId":{
          "shape":"IdString",
          "documentation":"<p>The ID of the workflow run to stop.</p>"
        }
      }
    },
    "StopWorkflowRunResponse":{
      "type":"structure",
      "members":{
      }
    },
    "StorageDescriptor":{
      "type":"structure",
      "members":{
        "Columns":{
          "shape":"ColumnList",
          "documentation":"<p>A list of the <code>Columns</code> in the table.</p>"
        },
        "Location":{
          "shape":"LocationString",
          "documentation":"<p>The physical location of the table. By default, this takes the form of the warehouse location, followed by the database location in the warehouse, followed by the table name.</p>"
        },
        "AdditionalLocations":{
          "shape":"LocationStringList",
          "documentation":"<p>A list of locations that point to the path where a Delta table is located.</p>"
        },
        "InputFormat":{
          "shape":"FormatString",
          "documentation":"<p>The input format: <code>SequenceFileInputFormat</code> (binary), or <code>TextInputFormat</code>, or a custom format.</p>"
        },
        "OutputFormat":{
          "shape":"FormatString",
          "documentation":"<p>The output format: <code>SequenceFileOutputFormat</code> (binary), or <code>IgnoreKeyTextOutputFormat</code>, or a custom format.</p>"
        },
        "Compressed":{
          "shape":"Boolean",
          "documentation":"<p> <code>True</code> if the data in the table is compressed, or <code>False</code> if not.</p>"
        },
        "NumberOfBuckets":{
          "shape":"Integer",
          "documentation":"<p>Must be specified if the table contains any dimension columns.</p>"
        },
        "SerdeInfo":{
          "shape":"SerDeInfo",
          "documentation":"<p>The serialization/deserialization (SerDe) information.</p>"
        },
        "BucketColumns":{
          "shape":"NameStringList",
          "documentation":"<p>A list of reducer grouping columns, clustering columns, and bucketing columns in the table.</p>"
        },
        "SortColumns":{
          "shape":"OrderList",
          "documentation":"<p>A list specifying the sort order of each bucket in the table.</p>"
        },
        "Parameters":{
          "shape":"ParametersMap",
          "documentation":"<p>The user-supplied properties in key-value form.</p>"
        },
        "SkewedInfo":{
          "shape":"SkewedInfo",
          "documentation":"<p>The information about values that appear frequently in a column (skewed values).</p>"
        },
        "StoredAsSubDirectories":{
          "shape":"Boolean",
          "documentation":"<p> <code>True</code> if the table data is stored in subdirectories, or <code>False</code> if not.</p>"
        },
        "SchemaReference":{
          "shape":"SchemaReference",
          "documentation":"<p>An object that references a schema stored in the Glue Schema Registry.</p> <p>When creating a table, you can pass an empty list of columns for the schema, and instead use a schema reference.</p>"
        }
      },
      "documentation":"<p>Describes the physical storage of table data.</p>"
    },
    "StreamingDataPreviewOptions":{
      "type":"structure",
      "members":{
        "PollingTime":{
          "shape":"PollingTime",
          "documentation":"<p>The polling time in milliseconds.</p>"
        },
        "RecordPollingLimit":{
          "shape":"PositiveLong",
          "documentation":"<p>The limit to the number of records polled.</p>"
        }
      },
      "documentation":"<p>Specifies options related to data preview for viewing a sample of your data.</p>"
    },
    "StringColumnStatisticsData":{
      "type":"structure",
      "required":[
        "MaximumLength",
        "AverageLength",
        "NumberOfNulls",
        "NumberOfDistinctValues"
      ],
      "members":{
        "MaximumLength":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The size of the longest string in the column.</p>"
        },
        "AverageLength":{
          "shape":"NonNegativeDouble",
          "documentation":"<p>The average string length in the column.</p>"
        },
        "NumberOfNulls":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of null values in the column.</p>"
        },
        "NumberOfDistinctValues":{
          "shape":"NonNegativeLong",
          "documentation":"<p>The number of distinct values in a column.</p>"
        }
      },
      "documentation":"<p>Defines column statistics supported for character sequence data values.</p>"
    },
    "StringList":{
      "type":"list",
      "member":{"shape":"GenericString"}
    },
    "SupportedDialect":{
      "type":"structure",
      "members":{
        "Dialect":{
          "shape":"ViewDialect",
          "documentation":"<p>The dialect of the query engine.</p>"
        },
        "DialectVersion":{
          "shape":"ViewDialectVersionString",
          "documentation":"<p>The version of the dialect of the query engine. For example, 3.0.0.</p>"
        }
      },
      "documentation":"<p>A structure specifying the dialect and dialect version used by the query engine.</p>"
    },
    "Table":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The table name. For Hive compatibility, this must be entirely lowercase.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the database where the table metadata resides. For Hive compatibility, this must be all lowercase.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the table.</p>"
        },
        "Owner":{
          "shape":"NameString",
          "documentation":"<p>The owner of the table.</p>"
        },
        "CreateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time when the table definition was created in the Data Catalog.</p>"
        },
        "UpdateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The last time that the table was updated.</p>"
        },
        "LastAccessTime":{
          "shape":"Timestamp",
          "documentation":"<p>The last time that the table was accessed. This is usually taken from HDFS, and might not be reliable.</p>"
        },
        "LastAnalyzedTime":{
          "shape":"Timestamp",
          "documentation":"<p>The last time that column statistics were computed for this table.</p>"
        },
        "Retention":{
          "shape":"NonNegativeInteger",
          "documentation":"<p>The retention time for this table.</p>"
        },
        "StorageDescriptor":{
          "shape":"StorageDescriptor",
          "documentation":"<p>A storage descriptor containing information about the physical storage of this table.</p>"
        },
        "PartitionKeys":{
          "shape":"ColumnList",
          "documentation":"<p>A list of columns by which the table is partitioned. Only primitive types are supported as partition keys.</p> <p>When you create a table used by Amazon Athena, and you do not specify any <code>partitionKeys</code>, you must at least set the value of <code>partitionKeys</code> to an empty list. For example:</p> <p> <code>\"PartitionKeys\": []</code> </p>"
        },
        "ViewOriginalText":{
          "shape":"ViewTextString",
          "documentation":"<p>Included for Apache Hive compatibility. Not used in the normal course of Glue operations. If the table is a <code>VIRTUAL_VIEW</code>, certain Athena configuration encoded in base64.</p>"
        },
        "ViewExpandedText":{
          "shape":"ViewTextString",
          "documentation":"<p>Included for Apache Hive compatibility. Not used in the normal course of Glue operations.</p>"
        },
        "TableType":{
          "shape":"TableTypeString",
          "documentation":"<p>The type of this table. Glue will create tables with the <code>EXTERNAL_TABLE</code> type. Other services, such as Athena, may create tables with additional table types. </p> <p>Glue related table types:</p> <dl> <dt>EXTERNAL_TABLE</dt> <dd> <p>Hive compatible attribute - indicates a non-Hive managed table.</p> </dd> <dt>GOVERNED</dt> <dd> <p>Used by Lake Formation. The Glue Data Catalog understands <code>GOVERNED</code>.</p> </dd> </dl>"
        },
        "Parameters":{
          "shape":"ParametersMap",
          "documentation":"<p>These key-value pairs define properties associated with the table.</p>"
        },
        "CreatedBy":{
          "shape":"NameString",
          "documentation":"<p>The person or entity who created the table.</p>"
        },
        "IsRegisteredWithLakeFormation":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the table has been registered with Lake Formation.</p>"
        },
        "TargetTable":{
          "shape":"TableIdentifier",
          "documentation":"<p>A <code>TableIdentifier</code> structure that describes a target table for resource linking.</p>"
        },
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the table resides.</p>"
        },
        "VersionId":{
          "shape":"VersionString",
          "documentation":"<p>The ID of the table version.</p>"
        },
        "FederatedTable":{
          "shape":"FederatedTable",
          "documentation":"<p>A <code>FederatedTable</code> structure that references an entity outside the Glue Data Catalog.</p>"
        },
        "ViewDefinition":{
          "shape":"ViewDefinition",
          "documentation":"<p>A structure that contains all the information that defines the view, including the dialect or dialects for the view, and the query.</p>"
        },
        "IsMultiDialectView":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies whether the view supports the SQL dialects of one or more different query engines and can therefore be read by those engines.</p>"
        }
      },
      "documentation":"<p>Represents a collection of related data organized in columns and rows.</p>"
    },
    "TableError":{
      "type":"structure",
      "members":{
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table. For Hive compatibility, this must be entirely lowercase.</p>"
        },
        "ErrorDetail":{
          "shape":"ErrorDetail",
          "documentation":"<p>The details about the error.</p>"
        }
      },
      "documentation":"<p>An error record for table operations.</p>"
    },
    "TableErrors":{
      "type":"list",
      "member":{"shape":"TableError"}
    },
    "TableIdentifier":{
      "type":"structure",
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the table resides.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database that contains the target table.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the target table.</p>"
        },
        "Region":{
          "shape":"NameString",
          "documentation":"<p>Region of the target table.</p>"
        }
      },
      "documentation":"<p>A structure that describes a target table for resource linking.</p>"
    },
    "TableInput":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The table name. For Hive compatibility, this is folded to lowercase when it is stored.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the table.</p>"
        },
        "Owner":{
          "shape":"NameString",
          "documentation":"<p>The table owner. Included for Apache Hive compatibility. Not used in the normal course of Glue operations.</p>"
        },
        "LastAccessTime":{
          "shape":"Timestamp",
          "documentation":"<p>The last time that the table was accessed.</p>"
        },
        "LastAnalyzedTime":{
          "shape":"Timestamp",
          "documentation":"<p>The last time that column statistics were computed for this table.</p>"
        },
        "Retention":{
          "shape":"NonNegativeInteger",
          "documentation":"<p>The retention time for this table.</p>"
        },
        "StorageDescriptor":{
          "shape":"StorageDescriptor",
          "documentation":"<p>A storage descriptor containing information about the physical storage of this table.</p>"
        },
        "PartitionKeys":{
          "shape":"ColumnList",
          "documentation":"<p>A list of columns by which the table is partitioned. Only primitive types are supported as partition keys.</p> <p>When you create a table used by Amazon Athena, and you do not specify any <code>partitionKeys</code>, you must at least set the value of <code>partitionKeys</code> to an empty list. For example:</p> <p> <code>\"PartitionKeys\": []</code> </p>"
        },
        "ViewOriginalText":{
          "shape":"ViewTextString",
          "documentation":"<p>Included for Apache Hive compatibility. Not used in the normal course of Glue operations. If the table is a <code>VIRTUAL_VIEW</code>, certain Athena configuration encoded in base64.</p>"
        },
        "ViewExpandedText":{
          "shape":"ViewTextString",
          "documentation":"<p>Included for Apache Hive compatibility. Not used in the normal course of Glue operations.</p>"
        },
        "TableType":{
          "shape":"TableTypeString",
          "documentation":"<p>The type of this table. Glue will create tables with the <code>EXTERNAL_TABLE</code> type. Other services, such as Athena, may create tables with additional table types. </p> <p>Glue related table types:</p> <dl> <dt>EXTERNAL_TABLE</dt> <dd> <p>Hive compatible attribute - indicates a non-Hive managed table.</p> </dd> <dt>GOVERNED</dt> <dd> <p>Used by Lake Formation. The Glue Data Catalog understands <code>GOVERNED</code>.</p> </dd> </dl>"
        },
        "Parameters":{
          "shape":"ParametersMap",
          "documentation":"<p>These key-value pairs define properties associated with the table.</p>"
        },
        "TargetTable":{
          "shape":"TableIdentifier",
          "documentation":"<p>A <code>TableIdentifier</code> structure that describes a target table for resource linking.</p>"
        }
      },
      "documentation":"<p>A structure used to define a table.</p>"
    },
    "TableList":{
      "type":"list",
      "member":{"shape":"Table"}
    },
    "TableName":{"type":"string"},
    "TableOptimizer":{
      "type":"structure",
      "members":{
        "type":{
          "shape":"TableOptimizerType",
          "documentation":"<p>The type of table optimizer. Currently, the only valid value is <code>compaction</code>.</p>"
        },
        "configuration":{
          "shape":"TableOptimizerConfiguration",
          "documentation":"<p>A <code>TableOptimizerConfiguration</code> object that was specified when creating or updating a table optimizer.</p>"
        },
        "lastRun":{
          "shape":"TableOptimizerRun",
          "documentation":"<p>A <code>TableOptimizerRun</code> object representing the last run of the table optimizer.</p>"
        }
      },
      "documentation":"<p>Contains details about an optimizer associated with a table.</p>"
    },
    "TableOptimizerConfiguration":{
      "type":"structure",
      "members":{
        "roleArn":{
          "shape":"ArnString",
          "documentation":"<p>A role passed by the caller which gives the service permission to update the resources associated with the optimizer on the caller's behalf.</p>"
        },
        "enabled":{
          "shape":"NullableBoolean",
          "documentation":"<p>Whether table optimization is enabled. </p>"
        }
      },
      "documentation":"<p>Contains details on the configuration of a table optimizer. You pass this configuration when creating or updating a table optimizer.</p>"
    },
    "TableOptimizerEventType":{
      "type":"string",
      "enum":[
        "starting",
        "completed",
        "failed",
        "in_progress"
      ]
    },
    "TableOptimizerRun":{
      "type":"structure",
      "members":{
        "eventType":{
          "shape":"TableOptimizerEventType",
          "documentation":"<p>An event type representing the status of the table optimizer run.</p>"
        },
        "startTimestamp":{
          "shape":"TableOptimizerRunTimestamp",
          "documentation":"<p>Represents the epoch timestamp at which the compaction job was started within Lake Formation.</p>"
        },
        "endTimestamp":{
          "shape":"TableOptimizerRunTimestamp",
          "documentation":"<p>Represents the epoch timestamp at which the compaction job ended.</p>"
        },
        "metrics":{
          "shape":"RunMetrics",
          "documentation":"<p>A <code>RunMetrics</code> object containing metrics for the optimizer run.</p>"
        },
        "error":{
          "shape":"MessageString",
          "documentation":"<p>An error that occured during the optimizer run.</p>"
        }
      },
      "documentation":"<p>Contains details for a table optimizer run.</p>"
    },
    "TableOptimizerRunTimestamp":{"type":"timestamp"},
    "TableOptimizerRuns":{
      "type":"list",
      "member":{"shape":"TableOptimizerRun"}
    },
    "TableOptimizerType":{
      "type":"string",
      "enum":["compaction"]
    },
    "TablePrefix":{
      "type":"string",
      "max":128,
      "min":0
    },
    "TableTypeString":{
      "type":"string",
      "max":255
    },
    "TableVersion":{
      "type":"structure",
      "members":{
        "Table":{
          "shape":"Table",
          "documentation":"<p>The table in question.</p>"
        },
        "VersionId":{
          "shape":"VersionString",
          "documentation":"<p>The ID value that identifies this table version. A <code>VersionId</code> is a string representation of an integer. Each version is incremented by 1.</p>"
        }
      },
      "documentation":"<p>Specifies a version of a table.</p>"
    },
    "TableVersionError":{
      "type":"structure",
      "members":{
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table in question.</p>"
        },
        "VersionId":{
          "shape":"VersionString",
          "documentation":"<p>The ID value of the version in question. A <code>VersionID</code> is a string representation of an integer. Each version is incremented by 1.</p>"
        },
        "ErrorDetail":{
          "shape":"ErrorDetail",
          "documentation":"<p>The details about the error.</p>"
        }
      },
      "documentation":"<p>An error record for table-version operations.</p>"
    },
    "TableVersionErrors":{
      "type":"list",
      "member":{"shape":"TableVersionError"}
    },
    "TagKey":{
      "type":"string",
      "max":128,
      "min":1
    },
    "TagKeysList":{
      "type":"list",
      "member":{"shape":"TagKey"},
      "max":50,
      "min":0
    },
    "TagResourceRequest":{
      "type":"structure",
      "required":[
        "ResourceArn",
        "TagsToAdd"
      ],
      "members":{
        "ResourceArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The ARN of the Glue resource to which to add the tags. For more information about Glue resource ARNs, see the <a href=\"https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-common.html#aws-glue-api-regex-aws-glue-arn-id\">Glue ARN string pattern</a>.</p>"
        },
        "TagsToAdd":{
          "shape":"TagsMap",
          "documentation":"<p>Tags to add to this resource.</p>"
        }
      }
    },
    "TagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "TagValue":{
      "type":"string",
      "max":256,
      "min":0
    },
    "TagsMap":{
      "type":"map",
      "key":{"shape":"TagKey"},
      "value":{"shape":"TagValue"},
      "max":50,
      "min":0
    },
    "TargetFormat":{
      "type":"string",
      "enum":[
        "json",
        "csv",
        "avro",
        "orc",
        "parquet",
        "hudi",
        "delta"
      ]
    },
    "TaskRun":{
      "type":"structure",
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier for the transform.</p>"
        },
        "TaskRunId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier for this task run.</p>"
        },
        "Status":{
          "shape":"TaskStatusType",
          "documentation":"<p>The current status of the requested task run.</p>"
        },
        "LogGroupName":{
          "shape":"GenericString",
          "documentation":"<p>The names of the log group for secure logging, associated with this task run.</p>"
        },
        "Properties":{
          "shape":"TaskRunProperties",
          "documentation":"<p>Specifies configuration properties associated with this task run.</p>"
        },
        "ErrorString":{
          "shape":"GenericString",
          "documentation":"<p>The list of error strings associated with this task run.</p>"
        },
        "StartedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The date and time that this task run started.</p>"
        },
        "LastModifiedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The last point in time that the requested task run was updated.</p>"
        },
        "CompletedOn":{
          "shape":"Timestamp",
          "documentation":"<p>The last point in time that the requested task run was completed.</p>"
        },
        "ExecutionTime":{
          "shape":"ExecutionTime",
          "documentation":"<p>The amount of time (in seconds) that the task run consumed resources.</p>"
        }
      },
      "documentation":"<p>The sampling parameters that are associated with the machine learning transform.</p>"
    },
    "TaskRunFilterCriteria":{
      "type":"structure",
      "members":{
        "TaskRunType":{
          "shape":"TaskType",
          "documentation":"<p>The type of task run.</p>"
        },
        "Status":{
          "shape":"TaskStatusType",
          "documentation":"<p>The current status of the task run.</p>"
        },
        "StartedBefore":{
          "shape":"Timestamp",
          "documentation":"<p>Filter on task runs started before this date.</p>"
        },
        "StartedAfter":{
          "shape":"Timestamp",
          "documentation":"<p>Filter on task runs started after this date.</p>"
        }
      },
      "documentation":"<p>The criteria that are used to filter the task runs for the machine learning transform.</p>"
    },
    "TaskRunList":{
      "type":"list",
      "member":{"shape":"TaskRun"}
    },
    "TaskRunProperties":{
      "type":"structure",
      "members":{
        "TaskType":{
          "shape":"TaskType",
          "documentation":"<p>The type of task run.</p>"
        },
        "ImportLabelsTaskRunProperties":{
          "shape":"ImportLabelsTaskRunProperties",
          "documentation":"<p>The configuration properties for an importing labels task run.</p>"
        },
        "ExportLabelsTaskRunProperties":{
          "shape":"ExportLabelsTaskRunProperties",
          "documentation":"<p>The configuration properties for an exporting labels task run.</p>"
        },
        "LabelingSetGenerationTaskRunProperties":{
          "shape":"LabelingSetGenerationTaskRunProperties",
          "documentation":"<p>The configuration properties for a labeling set generation task run.</p>"
        },
        "FindMatchesTaskRunProperties":{
          "shape":"FindMatchesTaskRunProperties",
          "documentation":"<p>The configuration properties for a find matches task run.</p>"
        }
      },
      "documentation":"<p>The configuration properties for the task run.</p>"
    },
    "TaskRunSortColumnType":{
      "type":"string",
      "enum":[
        "TASK_RUN_TYPE",
        "STATUS",
        "STARTED"
      ]
    },
    "TaskRunSortCriteria":{
      "type":"structure",
      "required":[
        "Column",
        "SortDirection"
      ],
      "members":{
        "Column":{
          "shape":"TaskRunSortColumnType",
          "documentation":"<p>The column to be used to sort the list of task runs for the machine learning transform.</p>"
        },
        "SortDirection":{
          "shape":"SortDirectionType",
          "documentation":"<p>The sort direction to be used to sort the list of task runs for the machine learning transform.</p>"
        }
      },
      "documentation":"<p>The sorting criteria that are used to sort the list of task runs for the machine learning transform.</p>"
    },
    "TaskStatusType":{
      "type":"string",
      "enum":[
        "STARTING",
        "RUNNING",
        "STOPPING",
        "STOPPED",
        "SUCCEEDED",
        "FAILED",
        "TIMEOUT"
      ]
    },
    "TaskType":{
      "type":"string",
      "enum":[
        "EVALUATION",
        "LABELING_SET_GENERATION",
        "IMPORT_LABELS",
        "EXPORT_LABELS",
        "FIND_MATCHES"
      ]
    },
    "Timeout":{
      "type":"integer",
      "box":true,
      "min":1
    },
    "Timestamp":{"type":"timestamp"},
    "TimestampValue":{"type":"timestamp"},
    "Token":{"type":"string"},
    "Topk":{
      "type":"integer",
      "box":true,
      "max":100,
      "min":0
    },
    "TotalSegmentsInteger":{
      "type":"integer",
      "max":10,
      "min":1
    },
    "TransactionIdString":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"[\\p{L}\\p{N}\\p{P}]*"
    },
    "TransformConfigParameter":{
      "type":"structure",
      "required":[
        "Name",
        "Type"
      ],
      "members":{
        "Name":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the name of the parameter in the config file of the dynamic transform.</p>"
        },
        "Type":{
          "shape":"ParamType",
          "documentation":"<p>Specifies the parameter type in the config file of the dynamic transform.</p>"
        },
        "ValidationRule":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the validation rule in the config file of the dynamic transform.</p>"
        },
        "ValidationMessage":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>Specifies the validation message in the config file of the dynamic transform.</p>"
        },
        "Value":{
          "shape":"EnclosedInStringProperties",
          "documentation":"<p>Specifies the value of the parameter in the config file of the dynamic transform.</p>"
        },
        "ListType":{
          "shape":"ParamType",
          "documentation":"<p>Specifies the list type of the parameter in the config file of the dynamic transform.</p>"
        },
        "IsOptional":{
          "shape":"BoxedBoolean",
          "documentation":"<p>Specifies whether the parameter is optional or not in the config file of the dynamic transform.</p>"
        }
      },
      "documentation":"<p>Specifies the parameters in the config file of the dynamic transform.</p>"
    },
    "TransformConfigParameterList":{
      "type":"list",
      "member":{"shape":"TransformConfigParameter"}
    },
    "TransformEncryption":{
      "type":"structure",
      "members":{
        "MlUserDataEncryption":{
          "shape":"MLUserDataEncryption",
          "documentation":"<p>An <code>MLUserDataEncryption</code> object containing the encryption mode and customer-provided KMS key ID.</p>"
        },
        "TaskRunSecurityConfigurationName":{
          "shape":"NameString",
          "documentation":"<p>The name of the security configuration.</p>"
        }
      },
      "documentation":"<p>The encryption-at-rest settings of the transform that apply to accessing user data. Machine learning transforms can access user data encrypted in Amazon S3 using KMS.</p> <p>Additionally, imported labels and trained transforms can now be encrypted using a customer provided KMS key.</p>"
    },
    "TransformFilterCriteria":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>A unique transform name that is used to filter the machine learning transforms.</p>"
        },
        "TransformType":{
          "shape":"TransformType",
          "documentation":"<p>The type of machine learning transform that is used to filter the machine learning transforms.</p>"
        },
        "Status":{
          "shape":"TransformStatusType",
          "documentation":"<p>Filters the list of machine learning transforms by the last known status of the transforms (to indicate whether a transform can be used or not). One of \"NOT_READY\", \"READY\", or \"DELETING\".</p>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>This value determines which version of Glue this machine learning transform is compatible with. Glue 1.0 is recommended for most customers. If the value is not set, the Glue compatibility defaults to Glue 0.9. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions\">Glue Versions</a> in the developer guide.</p>"
        },
        "CreatedBefore":{
          "shape":"Timestamp",
          "documentation":"<p>The time and date before which the transforms were created.</p>"
        },
        "CreatedAfter":{
          "shape":"Timestamp",
          "documentation":"<p>The time and date after which the transforms were created.</p>"
        },
        "LastModifiedBefore":{
          "shape":"Timestamp",
          "documentation":"<p>Filter on transforms last modified before this date.</p>"
        },
        "LastModifiedAfter":{
          "shape":"Timestamp",
          "documentation":"<p>Filter on transforms last modified after this date.</p>"
        },
        "Schema":{
          "shape":"TransformSchema",
          "documentation":"<p>Filters on datasets with a specific schema. The <code>Map&lt;Column, Type&gt;</code> object is an array of key-value pairs representing the schema this transform accepts, where <code>Column</code> is the name of a column, and <code>Type</code> is the type of the data such as an integer or string. Has an upper bound of 100 columns.</p>"
        }
      },
      "documentation":"<p>The criteria used to filter the machine learning transforms.</p>"
    },
    "TransformIdList":{
      "type":"list",
      "member":{"shape":"HashString"}
    },
    "TransformList":{
      "type":"list",
      "member":{"shape":"MLTransform"}
    },
    "TransformParameters":{
      "type":"structure",
      "required":["TransformType"],
      "members":{
        "TransformType":{
          "shape":"TransformType",
          "documentation":"<p>The type of machine learning transform.</p> <p>For information about the types of machine learning transforms, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/add-job-machine-learning-transform.html\">Creating Machine Learning Transforms</a>.</p>"
        },
        "FindMatchesParameters":{
          "shape":"FindMatchesParameters",
          "documentation":"<p>The parameters for the find matches algorithm.</p>"
        }
      },
      "documentation":"<p>The algorithm-specific parameters that are associated with the machine learning transform.</p>"
    },
    "TransformSchema":{
      "type":"list",
      "member":{"shape":"SchemaColumn"},
      "max":100
    },
    "TransformSortColumnType":{
      "type":"string",
      "enum":[
        "NAME",
        "TRANSFORM_TYPE",
        "STATUS",
        "CREATED",
        "LAST_MODIFIED"
      ]
    },
    "TransformSortCriteria":{
      "type":"structure",
      "required":[
        "Column",
        "SortDirection"
      ],
      "members":{
        "Column":{
          "shape":"TransformSortColumnType",
          "documentation":"<p>The column to be used in the sorting criteria that are associated with the machine learning transform.</p>"
        },
        "SortDirection":{
          "shape":"SortDirectionType",
          "documentation":"<p>The sort direction to be used in the sorting criteria that are associated with the machine learning transform.</p>"
        }
      },
      "documentation":"<p>The sorting criteria that are associated with the machine learning transform.</p>"
    },
    "TransformStatusType":{
      "type":"string",
      "enum":[
        "NOT_READY",
        "READY",
        "DELETING"
      ]
    },
    "TransformType":{
      "type":"string",
      "enum":["FIND_MATCHES"]
    },
    "Trigger":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the trigger.</p>"
        },
        "WorkflowName":{
          "shape":"NameString",
          "documentation":"<p>The name of the workflow associated with the trigger.</p>"
        },
        "Id":{
          "shape":"IdString",
          "documentation":"<p>Reserved for future use.</p>"
        },
        "Type":{
          "shape":"TriggerType",
          "documentation":"<p>The type of trigger that this is.</p>"
        },
        "State":{
          "shape":"TriggerState",
          "documentation":"<p>The current state of the trigger.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of this trigger.</p>"
        },
        "Schedule":{
          "shape":"GenericString",
          "documentation":"<p>A <code>cron</code> expression used to specify the schedule (see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html\">Time-Based Schedules for Jobs and Crawlers</a>. For example, to run something every day at 12:15 UTC, you would specify: <code>cron(15 12 * * ? *)</code>.</p>"
        },
        "Actions":{
          "shape":"ActionList",
          "documentation":"<p>The actions initiated by this trigger.</p>"
        },
        "Predicate":{
          "shape":"Predicate",
          "documentation":"<p>The predicate of this trigger, which defines when it will fire.</p>"
        },
        "EventBatchingCondition":{
          "shape":"EventBatchingCondition",
          "documentation":"<p>Batch condition that must be met (specified number of events received or batch time window expired) before EventBridge event trigger fires.</p>"
        }
      },
      "documentation":"<p>Information about a specific trigger.</p>"
    },
    "TriggerList":{
      "type":"list",
      "member":{"shape":"Trigger"}
    },
    "TriggerNameList":{
      "type":"list",
      "member":{"shape":"NameString"}
    },
    "TriggerNodeDetails":{
      "type":"structure",
      "members":{
        "Trigger":{
          "shape":"Trigger",
          "documentation":"<p>The information of the trigger represented by the trigger node.</p>"
        }
      },
      "documentation":"<p>The details of a Trigger node present in the workflow.</p>"
    },
    "TriggerState":{
      "type":"string",
      "enum":[
        "CREATING",
        "CREATED",
        "ACTIVATING",
        "ACTIVATED",
        "DEACTIVATING",
        "DEACTIVATED",
        "DELETING",
        "UPDATING"
      ]
    },
    "TriggerType":{
      "type":"string",
      "enum":[
        "SCHEDULED",
        "CONDITIONAL",
        "ON_DEMAND",
        "EVENT"
      ]
    },
    "TriggerUpdate":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Reserved for future use.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of this trigger.</p>"
        },
        "Schedule":{
          "shape":"GenericString",
          "documentation":"<p>A <code>cron</code> expression used to specify the schedule (see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html\">Time-Based Schedules for Jobs and Crawlers</a>. For example, to run something every day at 12:15 UTC, you would specify: <code>cron(15 12 * * ? *)</code>.</p>"
        },
        "Actions":{
          "shape":"ActionList",
          "documentation":"<p>The actions initiated by this trigger.</p>"
        },
        "Predicate":{
          "shape":"Predicate",
          "documentation":"<p>The predicate of this trigger, which defines when it will fire.</p>"
        },
        "EventBatchingCondition":{
          "shape":"EventBatchingCondition",
          "documentation":"<p>Batch condition that must be met (specified number of events received or batch time window expired) before EventBridge event trigger fires.</p>"
        }
      },
      "documentation":"<p>A structure used to provide information used to update a trigger. This object updates the previous trigger definition by overwriting it completely.</p>"
    },
    "TwoInputs":{
      "type":"list",
      "member":{"shape":"NodeId"},
      "max":2,
      "min":2
    },
    "TypeString":{
      "type":"string",
      "max":20000,
      "min":0,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "URI":{
      "type":"string",
      "max":1024,
      "min":1,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\r\\n\\t]*"
    },
    "UnfilteredPartition":{
      "type":"structure",
      "members":{
        "Partition":{
          "shape":"Partition",
          "documentation":"<p>The partition object.</p>"
        },
        "AuthorizedColumns":{
          "shape":"NameStringList",
          "documentation":"<p>The list of columns the user has permissions to access.</p>"
        },
        "IsRegisteredWithLakeFormation":{
          "shape":"Boolean",
          "documentation":"<p>A Boolean value indicating that the partition location is registered with Lake Formation.</p>"
        }
      },
      "documentation":"<p>A partition that contains unfiltered metadata.</p>"
    },
    "UnfilteredPartitionList":{
      "type":"list",
      "member":{"shape":"UnfilteredPartition"}
    },
    "Union":{
      "type":"structure",
      "required":[
        "Name",
        "Inputs",
        "UnionType"
      ],
      "members":{
        "Name":{
          "shape":"NodeName",
          "documentation":"<p>The name of the transform node.</p>"
        },
        "Inputs":{
          "shape":"TwoInputs",
          "documentation":"<p>The node ID inputs to the transform.</p>"
        },
        "UnionType":{
          "shape":"UnionType",
          "documentation":"<p>Indicates the type of Union transform. </p> <p>Specify <code>ALL</code> to join all rows from data sources to the resulting DynamicFrame. The resulting union does not remove duplicate rows.</p> <p>Specify <code>DISTINCT</code> to remove duplicate rows in the resulting DynamicFrame.</p>"
        }
      },
      "documentation":"<p>Specifies a transform that combines the rows from two or more datasets into a single result.</p>"
    },
    "UnionType":{
      "type":"string",
      "enum":[
        "ALL",
        "DISTINCT"
      ]
    },
    "UntagResourceRequest":{
      "type":"structure",
      "required":[
        "ResourceArn",
        "TagsToRemove"
      ],
      "members":{
        "ResourceArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the resource from which to remove the tags.</p>"
        },
        "TagsToRemove":{
          "shape":"TagKeysList",
          "documentation":"<p>Tags to remove from this resource.</p>"
        }
      }
    },
    "UntagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateBehavior":{
      "type":"string",
      "enum":[
        "LOG",
        "UPDATE_IN_DATABASE"
      ]
    },
    "UpdateBlueprintRequest":{
      "type":"structure",
      "required":[
        "Name",
        "BlueprintLocation"
      ],
      "members":{
        "Name":{
          "shape":"OrchestrationNameString",
          "documentation":"<p>The name of the blueprint.</p>"
        },
        "Description":{
          "shape":"Generic512CharString",
          "documentation":"<p>A description of the blueprint.</p>"
        },
        "BlueprintLocation":{
          "shape":"OrchestrationS3Location",
          "documentation":"<p>Specifies a path in Amazon S3 where the blueprint is published.</p>"
        }
      }
    },
    "UpdateBlueprintResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Returns the name of the blueprint that was updated.</p>"
        }
      }
    },
    "UpdateCatalogBehavior":{
      "type":"string",
      "enum":[
        "UPDATE_IN_DATABASE",
        "LOG"
      ]
    },
    "UpdateClassifierRequest":{
      "type":"structure",
      "members":{
        "GrokClassifier":{
          "shape":"UpdateGrokClassifierRequest",
          "documentation":"<p>A <code>GrokClassifier</code> object with updated fields.</p>"
        },
        "XMLClassifier":{
          "shape":"UpdateXMLClassifierRequest",
          "documentation":"<p>An <code>XMLClassifier</code> object with updated fields.</p>"
        },
        "JsonClassifier":{
          "shape":"UpdateJsonClassifierRequest",
          "documentation":"<p>A <code>JsonClassifier</code> object with updated fields.</p>"
        },
        "CsvClassifier":{
          "shape":"UpdateCsvClassifierRequest",
          "documentation":"<p>A <code>CsvClassifier</code> object with updated fields.</p>"
        }
      }
    },
    "UpdateClassifierResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateColumnStatisticsForPartitionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "PartitionValues",
        "ColumnStatisticsList"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the partitions in question reside. If none is supplied, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the partitions reside.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the partitions' table.</p>"
        },
        "PartitionValues":{
          "shape":"ValueStringList",
          "documentation":"<p>A list of partition values identifying the partition.</p>"
        },
        "ColumnStatisticsList":{
          "shape":"UpdateColumnStatisticsList",
          "documentation":"<p>A list of the column statistics.</p>"
        }
      }
    },
    "UpdateColumnStatisticsForPartitionResponse":{
      "type":"structure",
      "members":{
        "Errors":{
          "shape":"ColumnStatisticsErrors",
          "documentation":"<p>Error occurred during updating column statistics data.</p>"
        }
      }
    },
    "UpdateColumnStatisticsForTableRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "ColumnStatisticsList"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the partitions in question reside. If none is supplied, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the partitions reside.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the partitions' table.</p>"
        },
        "ColumnStatisticsList":{
          "shape":"UpdateColumnStatisticsList",
          "documentation":"<p>A list of the column statistics.</p>"
        }
      }
    },
    "UpdateColumnStatisticsForTableResponse":{
      "type":"structure",
      "members":{
        "Errors":{
          "shape":"ColumnStatisticsErrors",
          "documentation":"<p>List of ColumnStatisticsErrors.</p>"
        }
      }
    },
    "UpdateColumnStatisticsList":{
      "type":"list",
      "member":{"shape":"ColumnStatistics"},
      "max":25,
      "min":0
    },
    "UpdateConnectionRequest":{
      "type":"structure",
      "required":[
        "Name",
        "ConnectionInput"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the connection resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the connection definition to update.</p>"
        },
        "ConnectionInput":{
          "shape":"ConnectionInput",
          "documentation":"<p>A <code>ConnectionInput</code> object that redefines the connection in question.</p>"
        }
      }
    },
    "UpdateConnectionResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateCrawlerRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the new crawler.</p>"
        },
        "Role":{
          "shape":"Role",
          "documentation":"<p>The IAM role or Amazon Resource Name (ARN) of an IAM role that is used by the new crawler to access customer resources.</p>"
        },
        "DatabaseName":{
          "shape":"DatabaseName",
          "documentation":"<p>The Glue database where results are stored, such as: <code>arn:aws:daylight:us-east-1::database/sometable/*</code>.</p>"
        },
        "Description":{
          "shape":"DescriptionStringRemovable",
          "documentation":"<p>A description of the new crawler.</p>"
        },
        "Targets":{
          "shape":"CrawlerTargets",
          "documentation":"<p>A list of targets to crawl.</p>"
        },
        "Schedule":{
          "shape":"CronExpression",
          "documentation":"<p>A <code>cron</code> expression used to specify the schedule (see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html\">Time-Based Schedules for Jobs and Crawlers</a>. For example, to run something every day at 12:15 UTC, you would specify: <code>cron(15 12 * * ? *)</code>.</p>"
        },
        "Classifiers":{
          "shape":"ClassifierNameList",
          "documentation":"<p>A list of custom classifiers that the user has registered. By default, all built-in classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification.</p>"
        },
        "TablePrefix":{
          "shape":"TablePrefix",
          "documentation":"<p>The table prefix used for catalog tables that are created.</p>"
        },
        "SchemaChangePolicy":{
          "shape":"SchemaChangePolicy",
          "documentation":"<p>The policy for the crawler's update and deletion behavior.</p>"
        },
        "RecrawlPolicy":{
          "shape":"RecrawlPolicy",
          "documentation":"<p>A policy that specifies whether to crawl the entire dataset again, or to crawl only folders that were added since the last crawler run.</p>"
        },
        "LineageConfiguration":{
          "shape":"LineageConfiguration",
          "documentation":"<p>Specifies data lineage configuration settings for the crawler.</p>"
        },
        "LakeFormationConfiguration":{
          "shape":"LakeFormationConfiguration",
          "documentation":"<p>Specifies Lake Formation configuration settings for the crawler.</p>"
        },
        "Configuration":{
          "shape":"CrawlerConfiguration",
          "documentation":"<p>Crawler configuration information. This versioned JSON string allows users to specify aspects of a crawler's behavior. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html\">Setting crawler configuration options</a>.</p>"
        },
        "CrawlerSecurityConfiguration":{
          "shape":"CrawlerSecurityConfiguration",
          "documentation":"<p>The name of the <code>SecurityConfiguration</code> structure to be used by this crawler.</p>"
        }
      }
    },
    "UpdateCrawlerResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateCrawlerScheduleRequest":{
      "type":"structure",
      "required":["CrawlerName"],
      "members":{
        "CrawlerName":{
          "shape":"NameString",
          "documentation":"<p>The name of the crawler whose schedule to update.</p>"
        },
        "Schedule":{
          "shape":"CronExpression",
          "documentation":"<p>The updated <code>cron</code> expression used to specify the schedule (see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html\">Time-Based Schedules for Jobs and Crawlers</a>. For example, to run something every day at 12:15 UTC, you would specify: <code>cron(15 12 * * ? *)</code>.</p>"
        }
      }
    },
    "UpdateCrawlerScheduleResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateCsvClassifierRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the classifier.</p>"
        },
        "Delimiter":{
          "shape":"CsvColumnDelimiter",
          "documentation":"<p>A custom symbol to denote what separates each column entry in the row.</p>"
        },
        "QuoteSymbol":{
          "shape":"CsvQuoteSymbol",
          "documentation":"<p>A custom symbol to denote what combines content into a single column value. It must be different from the column delimiter.</p>"
        },
        "ContainsHeader":{
          "shape":"CsvHeaderOption",
          "documentation":"<p>Indicates whether the CSV file contains a header.</p>"
        },
        "Header":{
          "shape":"CsvHeader",
          "documentation":"<p>A list of strings representing column names.</p>"
        },
        "DisableValueTrimming":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies not to trim values before identifying the type of column values. The default value is true.</p>"
        },
        "AllowSingleColumn":{
          "shape":"NullableBoolean",
          "documentation":"<p>Enables the processing of files that contain only one column.</p>"
        },
        "CustomDatatypeConfigured":{
          "shape":"NullableBoolean",
          "documentation":"<p>Specifies the configuration of custom datatypes.</p>"
        },
        "CustomDatatypes":{
          "shape":"CustomDatatypes",
          "documentation":"<p>Specifies a list of supported custom datatypes.</p>"
        },
        "Serde":{
          "shape":"CsvSerdeOption",
          "documentation":"<p>Sets the SerDe for processing CSV in the classifier, which will be applied in the Data Catalog. Valid values are <code>OpenCSVSerDe</code>, <code>LazySimpleSerDe</code>, and <code>None</code>. You can specify the <code>None</code> value when you want the crawler to do the detection.</p>"
        }
      },
      "documentation":"<p>Specifies a custom CSV classifier to be updated.</p>"
    },
    "UpdateDataQualityRulesetRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the data quality ruleset.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the ruleset.</p>"
        },
        "Ruleset":{
          "shape":"DataQualityRulesetString",
          "documentation":"<p>A Data Quality Definition Language (DQDL) ruleset. For more information, see the Glue developer guide.</p>"
        }
      }
    },
    "UpdateDataQualityRulesetResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the data quality ruleset.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the ruleset.</p>"
        },
        "Ruleset":{
          "shape":"DataQualityRulesetString",
          "documentation":"<p>A Data Quality Definition Language (DQDL) ruleset. For more information, see the Glue developer guide.</p>"
        }
      }
    },
    "UpdateDatabaseRequest":{
      "type":"structure",
      "required":[
        "Name",
        "DatabaseInput"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the metadata database resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the database to update in the catalog. For Hive compatibility, this is folded to lowercase.</p>"
        },
        "DatabaseInput":{
          "shape":"DatabaseInput",
          "documentation":"<p>A <code>DatabaseInput</code> object specifying the new definition of the metadata database in the catalog.</p>"
        }
      }
    },
    "UpdateDatabaseResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateDevEndpointRequest":{
      "type":"structure",
      "required":["EndpointName"],
      "members":{
        "EndpointName":{
          "shape":"GenericString",
          "documentation":"<p>The name of the <code>DevEndpoint</code> to be updated.</p>"
        },
        "PublicKey":{
          "shape":"GenericString",
          "documentation":"<p>The public key for the <code>DevEndpoint</code> to use.</p>"
        },
        "AddPublicKeys":{
          "shape":"PublicKeysList",
          "documentation":"<p>The list of public keys for the <code>DevEndpoint</code> to use.</p>"
        },
        "DeletePublicKeys":{
          "shape":"PublicKeysList",
          "documentation":"<p>The list of public keys to be deleted from the <code>DevEndpoint</code>.</p>"
        },
        "CustomLibraries":{
          "shape":"DevEndpointCustomLibraries",
          "documentation":"<p>Custom Python or Java libraries to be loaded in the <code>DevEndpoint</code>.</p>"
        },
        "UpdateEtlLibraries":{
          "shape":"BooleanValue",
          "documentation":"<p> <code>True</code> if the list of custom libraries to be loaded in the development endpoint needs to be updated, or <code>False</code> if otherwise.</p>"
        },
        "DeleteArguments":{
          "shape":"StringList",
          "documentation":"<p>The list of argument keys to be deleted from the map of arguments used to configure the <code>DevEndpoint</code>.</p>"
        },
        "AddArguments":{
          "shape":"MapValue",
          "documentation":"<p>The map of arguments to add the map of arguments used to configure the <code>DevEndpoint</code>.</p> <p>Valid arguments are:</p> <ul> <li> <p> <code>\"--enable-glue-datacatalog\": \"\"</code> </p> </li> </ul> <p>You can specify a version of Python support for development endpoints by using the <code>Arguments</code> parameter in the <code>CreateDevEndpoint</code> or <code>UpdateDevEndpoint</code> APIs. If no arguments are provided, the version defaults to Python 2.</p>"
        }
      }
    },
    "UpdateDevEndpointResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateGrokClassifierRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the <code>GrokClassifier</code>.</p>"
        },
        "Classification":{
          "shape":"Classification",
          "documentation":"<p>An identifier of the data format that the classifier matches, such as Twitter, JSON, Omniture logs, Amazon CloudWatch Logs, and so on.</p>"
        },
        "GrokPattern":{
          "shape":"GrokPattern",
          "documentation":"<p>The grok pattern used by this classifier.</p>"
        },
        "CustomPatterns":{
          "shape":"CustomPatterns",
          "documentation":"<p>Optional custom grok patterns used by this classifier.</p>"
        }
      },
      "documentation":"<p>Specifies a grok classifier to update when passed to <code>UpdateClassifier</code>.</p>"
    },
    "UpdateJobFromSourceControlRequest":{
      "type":"structure",
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the Glue job to be synchronized to or from the remote repository.</p>"
        },
        "Provider":{
          "shape":"SourceControlProvider",
          "documentation":"<p> The provider for the remote repository. Possible values: GITHUB, AWS_CODE_COMMIT, GITLAB, BITBUCKET. </p>"
        },
        "RepositoryName":{
          "shape":"NameString",
          "documentation":"<p>The name of the remote repository that contains the job artifacts. For BitBucket providers, <code>RepositoryName</code> should include <code>WorkspaceName</code>. Use the format <code>&lt;WorkspaceName&gt;/&lt;RepositoryName&gt;</code>. </p>"
        },
        "RepositoryOwner":{
          "shape":"NameString",
          "documentation":"<p>The owner of the remote repository that contains the job artifacts.</p>"
        },
        "BranchName":{
          "shape":"NameString",
          "documentation":"<p>An optional branch in the remote repository.</p>"
        },
        "Folder":{
          "shape":"NameString",
          "documentation":"<p>An optional folder in the remote repository.</p>"
        },
        "CommitId":{
          "shape":"CommitIdString",
          "documentation":"<p>A commit ID for a commit in the remote repository.</p>"
        },
        "AuthStrategy":{
          "shape":"SourceControlAuthStrategy",
          "documentation":"<p>The type of authentication, which can be an authentication token stored in Amazon Web Services Secrets Manager, or a personal access token.</p>"
        },
        "AuthToken":{
          "shape":"AuthTokenString",
          "documentation":"<p>The value of the authorization token.</p>"
        }
      }
    },
    "UpdateJobFromSourceControlResponse":{
      "type":"structure",
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the Glue job.</p>"
        }
      }
    },
    "UpdateJobRequest":{
      "type":"structure",
      "required":[
        "JobName",
        "JobUpdate"
      ],
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the job definition to update.</p>"
        },
        "JobUpdate":{
          "shape":"JobUpdate",
          "documentation":"<p>Specifies the values with which to update the job definition. Unspecified configuration is removed or reset to default values.</p>"
        }
      }
    },
    "UpdateJobResponse":{
      "type":"structure",
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>Returns the name of the updated job definition.</p>"
        }
      }
    },
    "UpdateJsonClassifierRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the classifier.</p>"
        },
        "JsonPath":{
          "shape":"JsonPath",
          "documentation":"<p>A <code>JsonPath</code> string defining the JSON data for the classifier to classify. Glue supports a subset of JsonPath, as described in <a href=\"https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-json\">Writing JsonPath Custom Classifiers</a>.</p>"
        }
      },
      "documentation":"<p>Specifies a JSON classifier to be updated.</p>"
    },
    "UpdateMLTransformRequest":{
      "type":"structure",
      "required":["TransformId"],
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>A unique identifier that was generated when the transform was created.</p>"
        },
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The unique name that you gave the transform when you created it.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the transform. The default is an empty string.</p>"
        },
        "Parameters":{
          "shape":"TransformParameters",
          "documentation":"<p>The configuration parameters that are specific to the transform type (algorithm) used. Conditionally dependent on the transform type.</p>"
        },
        "Role":{
          "shape":"RoleString",
          "documentation":"<p>The name or Amazon Resource Name (ARN) of the IAM role with the required permissions.</p>"
        },
        "GlueVersion":{
          "shape":"GlueVersionString",
          "documentation":"<p>This value determines which version of Glue this machine learning transform is compatible with. Glue 1.0 is recommended for most customers. If the value is not set, the Glue compatibility defaults to Glue 0.9. For more information, see <a href=\"https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions\">Glue Versions</a> in the developer guide.</p>"
        },
        "MaxCapacity":{
          "shape":"NullableDouble",
          "documentation":"<p>The number of Glue data processing units (DPUs) that are allocated to task runs for this transform. You can allocate from 2 to 100 DPUs; the default is 10. A DPU is a relative measure of processing power that consists of 4 vCPUs of compute capacity and 16 GB of memory. For more information, see the <a href=\"https://aws.amazon.com/glue/pricing/\">Glue pricing page</a>. </p> <p>When the <code>WorkerType</code> field is set to a value other than <code>Standard</code>, the <code>MaxCapacity</code> field is set automatically and becomes read-only.</p>"
        },
        "WorkerType":{
          "shape":"WorkerType",
          "documentation":"<p>The type of predefined worker that is allocated when this task runs. Accepts a value of Standard, G.1X, or G.2X.</p> <ul> <li> <p>For the <code>Standard</code> worker type, each worker provides 4 vCPU, 16 GB of memory and a 50GB disk, and 2 executors per worker.</p> </li> <li> <p>For the <code>G.1X</code> worker type, each worker provides 4 vCPU, 16 GB of memory and a 64GB disk, and 1 executor per worker.</p> </li> <li> <p>For the <code>G.2X</code> worker type, each worker provides 8 vCPU, 32 GB of memory and a 128GB disk, and 1 executor per worker.</p> </li> </ul>"
        },
        "NumberOfWorkers":{
          "shape":"NullableInteger",
          "documentation":"<p>The number of workers of a defined <code>workerType</code> that are allocated when this task runs.</p>"
        },
        "Timeout":{
          "shape":"Timeout",
          "documentation":"<p>The timeout for a task run for this transform in minutes. This is the maximum time that a task run for this transform can consume resources before it is terminated and enters <code>TIMEOUT</code> status. The default is 2,880 minutes (48 hours).</p>"
        },
        "MaxRetries":{
          "shape":"NullableInteger",
          "documentation":"<p>The maximum number of times to retry a task for this transform after a task run fails.</p>"
        }
      }
    },
    "UpdateMLTransformResponse":{
      "type":"structure",
      "members":{
        "TransformId":{
          "shape":"HashString",
          "documentation":"<p>The unique identifier for the transform that was updated.</p>"
        }
      }
    },
    "UpdatePartitionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableName",
        "PartitionValueList",
        "PartitionInput"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the partition to be updated resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database in which the table in question resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table in which the partition to be updated is located.</p>"
        },
        "PartitionValueList":{
          "shape":"BoundedPartitionValueList",
          "documentation":"<p>List of partition key values that define the partition to update.</p>"
        },
        "PartitionInput":{
          "shape":"PartitionInput",
          "documentation":"<p>The new partition object to update the partition to.</p> <p>The <code>Values</code> property can't be changed. If you want to change the partition key values for a partition, delete and recreate the partition.</p>"
        }
      }
    },
    "UpdatePartitionResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateRegistryInput":{
      "type":"structure",
      "required":[
        "RegistryId",
        "Description"
      ],
      "members":{
        "RegistryId":{
          "shape":"RegistryId",
          "documentation":"<p>This is a wrapper structure that may contain the registry name and Amazon Resource Name (ARN).</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>A description of the registry. If description is not provided, this field will not be updated.</p>"
        }
      }
    },
    "UpdateRegistryResponse":{
      "type":"structure",
      "members":{
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the updated registry.</p>"
        },
        "RegistryArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource name (ARN) of the updated registry.</p>"
        }
      }
    },
    "UpdateSchemaInput":{
      "type":"structure",
      "required":["SchemaId"],
      "members":{
        "SchemaId":{
          "shape":"SchemaId",
          "documentation":"<p>This is a wrapper structure to contain schema identity fields. The structure contains:</p> <ul> <li> <p>SchemaId$SchemaArn: The Amazon Resource Name (ARN) of the schema. One of <code>SchemaArn</code> or <code>SchemaName</code> has to be provided.</p> </li> <li> <p>SchemaId$SchemaName: The name of the schema. One of <code>SchemaArn</code> or <code>SchemaName</code> has to be provided.</p> </li> </ul>"
        },
        "SchemaVersionNumber":{
          "shape":"SchemaVersionNumber",
          "documentation":"<p>Version number required for check pointing. One of <code>VersionNumber</code> or <code>Compatibility</code> has to be provided.</p>"
        },
        "Compatibility":{
          "shape":"Compatibility",
          "documentation":"<p>The new compatibility setting for the schema.</p>"
        },
        "Description":{
          "shape":"DescriptionString",
          "documentation":"<p>The new description for the schema.</p>"
        }
      }
    },
    "UpdateSchemaResponse":{
      "type":"structure",
      "members":{
        "SchemaArn":{
          "shape":"GlueResourceArn",
          "documentation":"<p>The Amazon Resource Name (ARN) of the schema.</p>"
        },
        "SchemaName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the schema.</p>"
        },
        "RegistryName":{
          "shape":"SchemaRegistryNameString",
          "documentation":"<p>The name of the registry that contains the schema.</p>"
        }
      }
    },
    "UpdateSourceControlFromJobRequest":{
      "type":"structure",
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the Glue job to be synchronized to or from the remote repository.</p>"
        },
        "Provider":{
          "shape":"SourceControlProvider",
          "documentation":"<p> The provider for the remote repository. Possible values: GITHUB, AWS_CODE_COMMIT, GITLAB, BITBUCKET. </p>"
        },
        "RepositoryName":{
          "shape":"NameString",
          "documentation":"<p>The name of the remote repository that contains the job artifacts. For BitBucket providers, <code>RepositoryName</code> should include <code>WorkspaceName</code>. Use the format <code>&lt;WorkspaceName&gt;/&lt;RepositoryName&gt;</code>. </p>"
        },
        "RepositoryOwner":{
          "shape":"NameString",
          "documentation":"<p>The owner of the remote repository that contains the job artifacts.</p>"
        },
        "BranchName":{
          "shape":"NameString",
          "documentation":"<p>An optional branch in the remote repository.</p>"
        },
        "Folder":{
          "shape":"NameString",
          "documentation":"<p>An optional folder in the remote repository.</p>"
        },
        "CommitId":{
          "shape":"CommitIdString",
          "documentation":"<p>A commit ID for a commit in the remote repository.</p>"
        },
        "AuthStrategy":{
          "shape":"SourceControlAuthStrategy",
          "documentation":"<p>The type of authentication, which can be an authentication token stored in Amazon Web Services Secrets Manager, or a personal access token.</p>"
        },
        "AuthToken":{
          "shape":"AuthTokenString",
          "documentation":"<p>The value of the authorization token.</p>"
        }
      }
    },
    "UpdateSourceControlFromJobResponse":{
      "type":"structure",
      "members":{
        "JobName":{
          "shape":"NameString",
          "documentation":"<p>The name of the Glue job.</p>"
        }
      }
    },
    "UpdateTableOptimizerRequest":{
      "type":"structure",
      "required":[
        "CatalogId",
        "DatabaseName",
        "TableName",
        "Type",
        "TableOptimizerConfiguration"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The Catalog ID of the table.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the database in the catalog in which the table resides.</p>"
        },
        "TableName":{
          "shape":"NameString",
          "documentation":"<p>The name of the table.</p>"
        },
        "Type":{
          "shape":"TableOptimizerType",
          "documentation":"<p>The type of table optimizer. Currently, the only valid value is <code>compaction</code>.</p>"
        },
        "TableOptimizerConfiguration":{
          "shape":"TableOptimizerConfiguration",
          "documentation":"<p>A <code>TableOptimizerConfiguration</code> object representing the configuration of a table optimizer.</p>"
        }
      }
    },
    "UpdateTableOptimizerResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateTableRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "TableInput"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the table resides. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database in which the table resides. For Hive compatibility, this name is entirely lowercase.</p>"
        },
        "TableInput":{
          "shape":"TableInput",
          "documentation":"<p>An updated <code>TableInput</code> object to define the metadata table in the catalog.</p>"
        },
        "SkipArchive":{
          "shape":"BooleanNullable",
          "documentation":"<p>By default, <code>UpdateTable</code> always creates an archived version of the table before updating it. However, if <code>skipArchive</code> is set to true, <code>UpdateTable</code> does not create the archived version.</p>"
        },
        "TransactionId":{
          "shape":"TransactionIdString",
          "documentation":"<p>The transaction ID at which to update the table contents. </p>"
        },
        "VersionId":{
          "shape":"VersionString",
          "documentation":"<p>The version ID at which to update the table contents. </p>"
        }
      }
    },
    "UpdateTableResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateTriggerRequest":{
      "type":"structure",
      "required":[
        "Name",
        "TriggerUpdate"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the trigger to update.</p>"
        },
        "TriggerUpdate":{
          "shape":"TriggerUpdate",
          "documentation":"<p>The new values with which to update the trigger.</p>"
        }
      }
    },
    "UpdateTriggerResponse":{
      "type":"structure",
      "members":{
        "Trigger":{
          "shape":"Trigger",
          "documentation":"<p>The resulting trigger definition.</p>"
        }
      }
    },
    "UpdateUserDefinedFunctionRequest":{
      "type":"structure",
      "required":[
        "DatabaseName",
        "FunctionName",
        "FunctionInput"
      ],
      "members":{
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog where the function to be updated is located. If none is provided, the Amazon Web Services account ID is used by default.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database where the function to be updated is located.</p>"
        },
        "FunctionName":{
          "shape":"NameString",
          "documentation":"<p>The name of the function.</p>"
        },
        "FunctionInput":{
          "shape":"UserDefinedFunctionInput",
          "documentation":"<p>A <code>FunctionInput</code> object that redefines the function in the Data Catalog.</p>"
        }
      }
    },
    "UpdateUserDefinedFunctionResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateWorkflowRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the workflow to be updated.</p>"
        },
        "Description":{
          "shape":"GenericString",
          "documentation":"<p>The description of the workflow.</p>"
        },
        "DefaultRunProperties":{
          "shape":"WorkflowRunProperties",
          "documentation":"<p>A collection of properties to be used as part of each execution of the workflow.</p>"
        },
        "MaxConcurrentRuns":{
          "shape":"NullableInteger",
          "documentation":"<p>You can use this parameter to prevent unwanted multiple updates to data, to control costs, or in some cases, to prevent exceeding the maximum number of concurrent runs of any of the component jobs. If you leave this parameter blank, there is no limit to the number of concurrent workflow runs.</p>"
        }
      }
    },
    "UpdateWorkflowResponse":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the workflow which was specified in input.</p>"
        }
      }
    },
    "UpdateXMLClassifierRequest":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the classifier.</p>"
        },
        "Classification":{
          "shape":"Classification",
          "documentation":"<p>An identifier of the data format that the classifier matches.</p>"
        },
        "RowTag":{
          "shape":"RowTag",
          "documentation":"<p>The XML tag designating the element that contains each record in an XML document being parsed. This cannot identify a self-closing element (closed by <code>/&gt;</code>). An empty row element that contains only attributes can be parsed as long as it ends with a closing tag (for example, <code>&lt;row item_a=\"A\" item_b=\"B\"&gt;&lt;/row&gt;</code> is okay, but <code>&lt;row item_a=\"A\" item_b=\"B\" /&gt;</code> is not).</p>"
        }
      },
      "documentation":"<p>Specifies an XML classifier to be updated.</p>"
    },
    "UpdatedTimestamp":{"type":"string"},
    "UpsertRedshiftTargetOptions":{
      "type":"structure",
      "members":{
        "TableLocation":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The physical location of the Redshift table.</p>"
        },
        "ConnectionName":{
          "shape":"EnclosedInStringProperty",
          "documentation":"<p>The name of the connection to use to write to Redshift.</p>"
        },
        "UpsertKeys":{
          "shape":"EnclosedInStringPropertiesMinOne",
          "documentation":"<p>The keys used to determine whether to perform an update or insert.</p>"
        }
      },
      "documentation":"<p>The options to configure an upsert operation when writing to a Redshift target .</p>"
    },
    "UriString":{"type":"string"},
    "UserDefinedFunction":{
      "type":"structure",
      "members":{
        "FunctionName":{
          "shape":"NameString",
          "documentation":"<p>The name of the function.</p>"
        },
        "DatabaseName":{
          "shape":"NameString",
          "documentation":"<p>The name of the catalog database that contains the function.</p>"
        },
        "ClassName":{
          "shape":"NameString",
          "documentation":"<p>The Java class that contains the function code.</p>"
        },
        "OwnerName":{
          "shape":"NameString",
          "documentation":"<p>The owner of the function.</p>"
        },
        "OwnerType":{
          "shape":"PrincipalType",
          "documentation":"<p>The owner type.</p>"
        },
        "CreateTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time at which the function was created.</p>"
        },
        "ResourceUris":{
          "shape":"ResourceUriList",
          "documentation":"<p>The resource URIs for the function.</p>"
        },
        "CatalogId":{
          "shape":"CatalogIdString",
          "documentation":"<p>The ID of the Data Catalog in which the function resides.</p>"
        }
      },
      "documentation":"<p>Represents the equivalent of a Hive user-defined function (<code>UDF</code>) definition.</p>"
    },
    "UserDefinedFunctionInput":{
      "type":"structure",
      "members":{
        "FunctionName":{
          "shape":"NameString",
          "documentation":"<p>The name of the function.</p>"
        },
        "ClassName":{
          "shape":"NameString",
          "documentation":"<p>The Java class that contains the function code.</p>"
        },
        "OwnerName":{
          "shape":"NameString",
          "documentation":"<p>The owner of the function.</p>"
        },
        "OwnerType":{
          "shape":"PrincipalType",
          "documentation":"<p>The owner type.</p>"
        },
        "ResourceUris":{
          "shape":"ResourceUriList",
          "documentation":"<p>The resource URIs for the function.</p>"
        }
      },
      "documentation":"<p>A structure used to create or update a user-defined function.</p>"
    },
    "UserDefinedFunctionList":{
      "type":"list",
      "member":{"shape":"UserDefinedFunction"}
    },
    "ValidationException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>A value could not be validated.</p>",
      "exception":true
    },
    "ValueString":{
      "type":"string",
      "max":1024
    },
    "ValueStringList":{
      "type":"list",
      "member":{"shape":"ValueString"}
    },
    "VersionId":{"type":"long"},
    "VersionLongNumber":{
      "type":"long",
      "max":100000,
      "min":1
    },
    "VersionMismatchException":{
      "type":"structure",
      "members":{
        "Message":{
          "shape":"MessageString",
          "documentation":"<p>A message describing the problem.</p>"
        }
      },
      "documentation":"<p>There was a version conflict.</p>",
      "exception":true
    },
    "VersionString":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
    },
    "VersionsString":{
      "type":"string",
      "max":100000,
      "min":1,
      "pattern":"[1-9][0-9]*|[1-9][0-9]*-[1-9][0-9]*"
    },
    "ViewDefinition":{
      "type":"structure",
      "members":{
        "IsProtected":{
          "shape":"NullableBoolean",
          "documentation":"<p>You can set this flag as true to instruct the engine not to push user-provided operations into the logical plan of the view during query planning. However, setting this flag does not guarantee that the engine will comply. Refer to the engine's documentation to understand the guarantees provided, if any.</p>"
        },
        "Definer":{
          "shape":"ArnString",
          "documentation":"<p>The definer of a view in SQL.</p>"
        },
        "SubObjects":{
          "shape":"ViewSubObjectsList",
          "documentation":"<p>A list of table Amazon Resource Names (ARNs).</p>"
        },
        "Representations":{
          "shape":"ViewRepresentationList",
          "documentation":"<p>A list of representations.</p>"
        }
      },
      "documentation":"<p>A structure containing details for representations.</p>"
    },
    "ViewDialect":{
      "type":"string",
      "enum":[
        "REDSHIFT",
        "ATHENA",
        "SPARK"
      ]
    },
    "ViewDialectVersionString":{
      "type":"string",
      "max":255,
      "min":1
    },
    "ViewRepresentation":{
      "type":"structure",
      "members":{
        "Dialect":{
          "shape":"ViewDialect",
          "documentation":"<p>The dialect of the query engine.</p>"
        },
        "DialectVersion":{
          "shape":"ViewDialectVersionString",
          "documentation":"<p>The version of the dialect of the query engine. For example, 3.0.0.</p>"
        },
        "ViewOriginalText":{
          "shape":"ViewTextString",
          "documentation":"<p>The <code>SELECT</code> query provided by the customer during <code>CREATE VIEW DDL</code>. This SQL is not used during a query on a view (<code>ViewExpandedText</code> is used instead). <code>ViewOriginalText</code> is used for cases like <code>SHOW CREATE VIEW</code> where users want to see the original DDL command that created the view.</p>"
        },
        "ViewExpandedText":{
          "shape":"ViewTextString",
          "documentation":"<p>The expanded SQL for the view. This SQL is used by engines while processing a query on a view. Engines may perform operations during view creation to transform <code>ViewOriginalText</code> to <code>ViewExpandedText</code>. For example:</p> <ul> <li> <p>Fully qualify identifiers: <code>SELECT * from table1 → SELECT * from db1.table1</code> </p> </li> </ul>"
        },
        "IsStale":{
          "shape":"NullableBoolean",
          "documentation":"<p>Dialects marked as stale are no longer valid and must be updated before they can be queried in their respective query engines.</p>"
        }
      },
      "documentation":"<p>A structure that contains the dialect of the view, and the query that defines the view.</p>"
    },
    "ViewRepresentationList":{
      "type":"list",
      "member":{"shape":"ViewRepresentation"},
      "max":1000,
      "min":1
    },
    "ViewSubObjectsList":{
      "type":"list",
      "member":{"shape":"ArnString"},
      "max":10,
      "min":0
    },
    "ViewTextString":{
      "type":"string",
      "max":409600
    },
    "WorkerType":{
      "type":"string",
      "enum":[
        "Standard",
        "G.1X",
        "G.2X",
        "G.025X",
        "G.4X",
        "G.8X",
        "Z.2X"
      ]
    },
    "Workflow":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the workflow.</p>"
        },
        "Description":{
          "shape":"GenericString",
          "documentation":"<p>A description of the workflow.</p>"
        },
        "DefaultRunProperties":{
          "shape":"WorkflowRunProperties",
          "documentation":"<p>A collection of properties to be used as part of each execution of the workflow. The run properties are made available to each job in the workflow. A job can modify the properties for the next jobs in the flow.</p>"
        },
        "CreatedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time when the workflow was created.</p>"
        },
        "LastModifiedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time when the workflow was last modified.</p>"
        },
        "LastRun":{
          "shape":"WorkflowRun",
          "documentation":"<p>The information about the last execution of the workflow.</p>"
        },
        "Graph":{
          "shape":"WorkflowGraph",
          "documentation":"<p>The graph representing all the Glue components that belong to the workflow as nodes and directed connections between them as edges.</p>"
        },
        "MaxConcurrentRuns":{
          "shape":"NullableInteger",
          "documentation":"<p>You can use this parameter to prevent unwanted multiple updates to data, to control costs, or in some cases, to prevent exceeding the maximum number of concurrent runs of any of the component jobs. If you leave this parameter blank, there is no limit to the number of concurrent workflow runs.</p>"
        },
        "BlueprintDetails":{
          "shape":"BlueprintDetails",
          "documentation":"<p>This structure indicates the details of the blueprint that this particular workflow is created from.</p>"
        }
      },
      "documentation":"<p>A workflow is a collection of multiple dependent Glue jobs and crawlers that are run to complete a complex ETL task. A workflow manages the execution and monitoring of all its jobs and crawlers.</p>"
    },
    "WorkflowGraph":{
      "type":"structure",
      "members":{
        "Nodes":{
          "shape":"NodeList",
          "documentation":"<p>A list of the the Glue components belong to the workflow represented as nodes.</p>"
        },
        "Edges":{
          "shape":"EdgeList",
          "documentation":"<p>A list of all the directed connections between the nodes belonging to the workflow.</p>"
        }
      },
      "documentation":"<p>A workflow graph represents the complete workflow containing all the Glue components present in the workflow and all the directed connections between them.</p>"
    },
    "WorkflowNames":{
      "type":"list",
      "member":{"shape":"NameString"},
      "max":25,
      "min":1
    },
    "WorkflowRun":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>Name of the workflow that was run.</p>"
        },
        "WorkflowRunId":{
          "shape":"IdString",
          "documentation":"<p>The ID of this workflow run.</p>"
        },
        "PreviousRunId":{
          "shape":"IdString",
          "documentation":"<p>The ID of the previous workflow run.</p>"
        },
        "WorkflowRunProperties":{
          "shape":"WorkflowRunProperties",
          "documentation":"<p>The workflow run properties which were set during the run.</p>"
        },
        "StartedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time when the workflow run was started.</p>"
        },
        "CompletedOn":{
          "shape":"TimestampValue",
          "documentation":"<p>The date and time when the workflow run completed.</p>"
        },
        "Status":{
          "shape":"WorkflowRunStatus",
          "documentation":"<p>The status of the workflow run.</p>"
        },
        "ErrorMessage":{
          "shape":"ErrorString",
          "documentation":"<p>This error message describes any error that may have occurred in starting the workflow run. Currently the only error message is \"Concurrent runs exceeded for workflow: <code>foo</code>.\"</p>"
        },
        "Statistics":{
          "shape":"WorkflowRunStatistics",
          "documentation":"<p>The statistics of the run.</p>"
        },
        "Graph":{
          "shape":"WorkflowGraph",
          "documentation":"<p>The graph representing all the Glue components that belong to the workflow as nodes and directed connections between them as edges.</p>"
        },
        "StartingEventBatchCondition":{
          "shape":"StartingEventBatchCondition",
          "documentation":"<p>The batch condition that started the workflow run.</p>"
        }
      },
      "documentation":"<p>A workflow run is an execution of a workflow providing all the runtime information.</p>"
    },
    "WorkflowRunProperties":{
      "type":"map",
      "key":{"shape":"IdString"},
      "value":{"shape":"GenericString"}
    },
    "WorkflowRunStatistics":{
      "type":"structure",
      "members":{
        "TotalActions":{
          "shape":"IntegerValue",
          "documentation":"<p>Total number of Actions in the workflow run.</p>"
        },
        "TimeoutActions":{
          "shape":"IntegerValue",
          "documentation":"<p>Total number of Actions that timed out.</p>"
        },
        "FailedActions":{
          "shape":"IntegerValue",
          "documentation":"<p>Total number of Actions that have failed.</p>"
        },
        "StoppedActions":{
          "shape":"IntegerValue",
          "documentation":"<p>Total number of Actions that have stopped.</p>"
        },
        "SucceededActions":{
          "shape":"IntegerValue",
          "documentation":"<p>Total number of Actions that have succeeded.</p>"
        },
        "RunningActions":{
          "shape":"IntegerValue",
          "documentation":"<p>Total number Actions in running state.</p>"
        },
        "ErroredActions":{
          "shape":"IntegerValue",
          "documentation":"<p>Indicates the count of job runs in the ERROR state in the workflow run.</p>"
        },
        "WaitingActions":{
          "shape":"IntegerValue",
          "documentation":"<p>Indicates the count of job runs in WAITING state in the workflow run.</p>"
        }
      },
      "documentation":"<p>Workflow run statistics provides statistics about the workflow run.</p>"
    },
    "WorkflowRunStatus":{
      "type":"string",
      "enum":[
        "RUNNING",
        "COMPLETED",
        "STOPPING",
        "STOPPED",
        "ERROR"
      ]
    },
    "WorkflowRuns":{
      "type":"list",
      "member":{"shape":"WorkflowRun"},
      "max":1000,
      "min":1
    },
    "Workflows":{
      "type":"list",
      "member":{"shape":"Workflow"},
      "max":25,
      "min":1
    },
    "XMLClassifier":{
      "type":"structure",
      "required":[
        "Name",
        "Classification"
      ],
      "members":{
        "Name":{
          "shape":"NameString",
          "documentation":"<p>The name of the classifier.</p>"
        },
        "Classification":{
          "shape":"Classification",
          "documentation":"<p>An identifier of the data format that the classifier matches.</p>"
        },
        "CreationTime":{
          "shape":"Timestamp",
          "documentation":"<p>The time that this classifier was registered.</p>"
        },
        "LastUpdated":{
          "shape":"Timestamp",
          "documentation":"<p>The time that this classifier was last updated.</p>"
        },
        "Version":{
          "shape":"VersionId",
          "documentation":"<p>The version of this classifier.</p>"
        },
        "RowTag":{
          "shape":"RowTag",
          "documentation":"<p>The XML tag designating the element that contains each record in an XML document being parsed. This can't identify a self-closing element (closed by <code>/&gt;</code>). An empty row element that contains only attributes can be parsed as long as it ends with a closing tag (for example, <code>&lt;row item_a=\"A\" item_b=\"B\"&gt;&lt;/row&gt;</code> is okay, but <code>&lt;row item_a=\"A\" item_b=\"B\" /&gt;</code> is not).</p>"
        }
      },
      "documentation":"<p>A classifier for <code>XML</code> content.</p>"
    },
    "databaseNameString":{
      "type":"string",
      "min":1
    },
    "tableNameString":{
      "type":"string",
      "min":1
    }
  },
  "documentation":"<fullname>Glue</fullname> <p>Defines the public endpoint for the Glue service.</p>"
}
