Skip to main content

lib/aws/generated/glue.ex

# WARNING: DO NOT EDIT, AUTO-GENERATED CODE!
# See https://github.com/aws-beam/aws-codegen for more details.

defmodule AWS.Glue do
  @moduledoc """
  Glue

  Defines the public endpoint for the Glue service.
  """

  alias AWS.Client
  alias AWS.Request

  @typedoc """

  ## Example:
      
      my_s_q_l_catalog_target() :: %{
        "Database" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "Table" => String.t() | atom()
      }
      
  """
  @type my_s_q_l_catalog_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_result_description() :: %{
        "DataSource" => data_source(),
        "JobName" => String.t() | atom(),
        "JobRunId" => String.t() | atom(),
        "ResultId" => String.t() | atom(),
        "StartedOn" => non_neg_integer()
      }
      
  """
  @type data_quality_result_description() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_plan_response() :: %{
        "PythonScript" => String.t() | atom(),
        "ScalaCode" => String.t() | atom()
      }
      
  """
  @type get_plan_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      view_representation_input() :: %{
        "Dialect" => list(any()),
        "DialectVersion" => String.t() | atom(),
        "ValidationConnection" => String.t() | atom(),
        "ViewExpandedText" => String.t() | atom(),
        "ViewOriginalText" => String.t() | atom()
      }
      
  """
  @type view_representation_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_table_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("Name") => String.t() | atom(),
        optional("OpenTableFormatInput") => open_table_format_input(),
        optional("PartitionIndexes") => list(partition_index()),
        optional("TableInput") => table_input(),
        optional("TransactionId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom()
      }
      
  """
  @type create_table_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_data_quality_model_result_response() :: %{
        "CompletedOn" => non_neg_integer(),
        "Model" => list(statistic_model_result())
      }
      
  """
  @type get_data_quality_model_result_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_ruleset_evaluation_run_description() :: %{
        "DataSource" => data_source(),
        "RunId" => String.t() | atom(),
        "StartedOn" => non_neg_integer(),
        "Status" => list(any())
      }
      
  """
  @type data_quality_ruleset_evaluation_run_description() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_partition_response() :: %{
        "Partition" => partition()
      }
      
  """
  @type get_partition_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      cancel_data_quality_rule_recommendation_run_request() :: %{
        required("RunId") => String.t() | atom()
      }
      
  """
  @type cancel_data_quality_rule_recommendation_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      code_gen_edge() :: %{
        "Source" => String.t() | atom(),
        "Target" => String.t() | atom(),
        "TargetParameter" => String.t() | atom()
      }
      
  """
  @type code_gen_edge() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_security_configurations_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type get_security_configurations_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      test_connection_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("ConnectionName") => String.t() | atom(),
        optional("TestConnectionInput") => test_connection_input()
      }
      
  """
  @type test_connection_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      source_configuration() :: %{
        "PaginationConfiguration" => pagination_configuration(),
        "RequestMethod" => list(any()),
        "RequestParameters" => list(connector_property()),
        "RequestPath" => String.t() | atom(),
        "ResponseConfiguration" => response_configuration()
      }
      
  """
  @type source_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      table_version() :: %{
        "Table" => table(),
        "VersionId" => String.t() | atom()
      }
      
  """
  @type table_version() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      spark_connector_source() :: %{
        "AdditionalOptions" => map(),
        "ConnectionName" => String.t() | atom(),
        "ConnectionType" => String.t() | atom(),
        "ConnectorName" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema())
      }
      
  """
  @type spark_connector_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_statements_request() :: %{
        optional("NextToken") => String.t() | atom(),
        optional("RequestOrigin") => String.t() | atom(),
        required("SessionId") => String.t() | atom()
      }
      
  """
  @type list_statements_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_statement_response() :: %{
        "Statement" => statement()
      }
      
  """
  @type get_statement_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      apply_mapping() :: %{
        "Inputs" => list(String.t() | atom()),
        "Mapping" => list(mapping()),
        "Name" => String.t() | atom()
      }
      
  """
  @type apply_mapping() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      authentication_configuration() :: %{
        "AuthenticationType" => list(any()),
        "KmsKeyArn" => String.t() | atom(),
        "OAuth2Properties" => o_auth2_properties(),
        "SecretArn" => String.t() | atom()
      }
      
  """
  @type authentication_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_classifier_request() :: %{
        optional("CsvClassifier") => create_csv_classifier_request(),
        optional("GrokClassifier") => create_grok_classifier_request(),
        optional("JsonClassifier") => create_json_classifier_request(),
        optional("XMLClassifier") => create_x_ml_classifier_request()
      }
      
  """
  @type create_classifier_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_security_configuration_request() :: %{
        required("EncryptionConfiguration") => encryption_configuration(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type create_security_configuration_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      direct_j_db_c_source() :: %{
        "ConnectionName" => String.t() | atom(),
        "ConnectionType" => list(any()),
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "RedshiftTmpDir" => String.t() | atom(),
        "Table" => String.t() | atom()
      }
      
  """
  @type direct_j_db_c_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      registry_list_item() :: %{
        "CreatedTime" => String.t() | atom(),
        "Description" => String.t() | atom(),
        "RegistryArn" => String.t() | atom(),
        "RegistryName" => String.t() | atom(),
        "Status" => list(any()),
        "UpdatedTime" => String.t() | atom()
      }
      
  """
  @type registry_list_item() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_usage_profile_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type update_usage_profile_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_trigger_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type delete_trigger_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      entity_not_found_exception() :: %{
        "FromFederationSource" => boolean(),
        "Message" => String.t() | atom()
      }
      
  """
  @type entity_not_found_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_integration_resource_property_request() :: %{
        required("ResourceArn") => String.t() | atom()
      }
      
  """
  @type delete_integration_resource_property_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_source_additional_options() :: %{
        "BoundedFiles" => float(),
        "BoundedSize" => float()
      }
      
  """
  @type s3_source_additional_options() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_glossary_request() :: %{}
      
  """
  @type delete_glossary_request() :: %{}

  @typedoc """

  ## Example:
      
      update_blueprint_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type update_blueprint_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      task_run_filter_criteria() :: %{
        "StartedAfter" => non_neg_integer(),
        "StartedBefore" => non_neg_integer(),
        "Status" => list(any()),
        "TaskRunType" => list(any())
      }
      
  """
  @type task_run_filter_criteria() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_user_defined_function_response() :: %{}
      
  """
  @type create_user_defined_function_response() :: %{}

  @typedoc """

  ## Example:
      
      streaming_data_preview_options() :: %{
        "PollingTime" => float(),
        "RecordPollingLimit" => float()
      }
      
  """
  @type streaming_data_preview_options() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      rename_field() :: %{
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "SourcePath" => list(String.t() | atom()),
        "TargetPath" => list(String.t() | atom())
      }
      
  """
  @type rename_field() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_security_configuration_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type delete_security_configuration_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      job_node_details() :: %{
        "JobRuns" => list(job_run())
      }
      
  """
  @type job_node_details() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      registry_id() :: %{
        "RegistryArn" => String.t() | atom(),
        "RegistryName" => String.t() | atom()
      }
      
  """
  @type registry_id() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      amazon_redshift_advanced_option() :: %{
        "Key" => String.t() | atom(),
        "Value" => String.t() | atom()
      }
      
  """
  @type amazon_redshift_advanced_option() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      database_input() :: %{
        "CreateTableDefaultPermissions" => list(principal_permissions()),
        "Description" => String.t() | atom(),
        "FederatedDatabase" => federated_database(),
        "LocationUri" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Parameters" => map(),
        "TargetDatabase" => database_identifier()
      }
      
  """
  @type database_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      column_importance() :: %{
        "ColumnName" => String.t() | atom(),
        "Importance" => float()
      }
      
  """
  @type column_importance() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_job_run_response() :: %{
        "JobRun" => job_run()
      }
      
  """
  @type get_job_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      union() :: %{
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "UnionType" => list(any())
      }
      
  """
  @type union() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      connections_list() :: %{
        "Connections" => list(String.t() | atom())
      }
      
  """
  @type connections_list() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_asset_request() :: %{
        optional("ClientToken") => String.t() | atom(),
        optional("Description") => String.t() | atom(),
        required("AssetTypeId") => String.t() | atom(),
        required("Forms") => map(),
        required("Identifier") => String.t() | atom(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type put_asset_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_blueprints_response() :: %{
        "Blueprints" => list(blueprint()),
        "MissingBlueprints" => list(String.t() | atom())
      }
      
  """
  @type batch_get_blueprints_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_x_ml_classifier_request() :: %{
        "Classification" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "RowTag" => String.t() | atom()
      }
      
  """
  @type create_x_ml_classifier_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_unfiltered_partitions_metadata_request() :: %{
        optional("AuditContext") => audit_context(),
        optional("Expression") => String.t() | atom(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("QuerySessionContext") => query_session_context(),
        optional("Region") => String.t() | atom(),
        optional("Segment") => segment(),
        required("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("SupportedPermissionTypes") => list(list(any())()),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type get_unfiltered_partitions_metadata_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_usage_profile_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type create_usage_profile_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_crawler_request() :: %{
        optional("Classifiers") => list(String.t() | atom()),
        optional("Configuration") => String.t() | atom(),
        optional("CrawlerSecurityConfiguration") => String.t() | atom(),
        optional("DatabaseName") => String.t() | atom(),
        optional("Description") => String.t() | atom(),
        optional("LakeFormationConfiguration") => lake_formation_configuration(),
        optional("LineageConfiguration") => lineage_configuration(),
        optional("RecrawlPolicy") => recrawl_policy(),
        optional("Role") => String.t() | atom(),
        optional("Schedule") => String.t() | atom(),
        optional("SchemaChangePolicy") => schema_change_policy(),
        optional("TablePrefix") => String.t() | atom(),
        optional("Targets") => crawler_targets(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type update_crawler_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      code_gen_node_arg() :: %{
        "Name" => String.t() | atom(),
        "Param" => boolean(),
        "Value" => String.t() | atom()
      }
      
  """
  @type code_gen_node_arg() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      integration_quota_exceeded_fault() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type integration_quota_exceeded_fault() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      ser_de_info() :: %{
        "Name" => String.t() | atom(),
        "Parameters" => map(),
        "SerializationLibrary" => String.t() | atom()
      }
      
  """
  @type ser_de_info() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_evaluation_run_additional_run_options() :: %{
        "CloudWatchMetricsEnabled" => boolean(),
        "CompositeRuleEvaluationMethod" => list(any()),
        "CustomLogGroupPrefix" => String.t() | atom(),
        "ResultsS3Prefix" => String.t() | atom()
      }
      
  """
  @type data_quality_evaluation_run_additional_run_options() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      double_column_statistics_data() :: %{
        "MaximumValue" => float(),
        "MinimumValue" => float(),
        "NumberOfDistinctValues" => float(),
        "NumberOfNulls" => float()
      }
      
  """
  @type double_column_statistics_data() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      auth_configuration() :: %{
        "AuthenticationType" => property(),
        "BasicAuthenticationProperties" => map(),
        "CustomAuthenticationProperties" => map(),
        "OAuth2Properties" => map(),
        "SecretArn" => property()
      }
      
  """
  @type auth_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_iterable_forms_response() :: %{
        "Errors" => list(item_error()),
        "Items" => list(iterable_form_item())
      }
      
  """
  @type batch_get_iterable_forms_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_delete_table_response() :: %{
        "Errors" => list(table_error())
      }
      
  """
  @type batch_delete_table_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_resource_policy_request() :: %{
        optional("EnableHybrid") => list(any()),
        optional("PolicyExistsCondition") => list(any()),
        optional("PolicyHashCondition") => String.t() | atom(),
        optional("ResourceArn") => String.t() | atom(),
        required("PolicyInJson") => String.t() | atom()
      }
      
  """
  @type put_resource_policy_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      schema_version_error_item() :: %{
        "ErrorDetails" => error_details(),
        "VersionNumber" => float()
      }
      
  """
  @type schema_version_error_item() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_table_optimizer_request() :: %{
        required("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom(),
        required("TableOptimizerConfiguration") => table_optimizer_configuration(),
        required("Type") => list(any())
      }
      
  """
  @type update_table_optimizer_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      code_gen_node() :: %{
        "Args" => list(code_gen_node_arg()),
        "Id" => String.t() | atom(),
        "LineNumber" => integer(),
        "NodeType" => String.t() | atom()
      }
      
  """
  @type code_gen_node() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_sessions_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("RequestOrigin") => String.t() | atom(),
        optional("Tags") => map()
      }
      
  """
  @type list_sessions_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      timestamp_filter() :: %{
        "RecordedAfter" => non_neg_integer(),
        "RecordedBefore" => non_neg_integer()
      }
      
  """
  @type timestamp_filter() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      catalog_target() :: %{
        "ConnectionName" => String.t() | atom(),
        "DatabaseName" => String.t() | atom(),
        "DlqEventQueueArn" => String.t() | atom(),
        "EventQueueArn" => String.t() | atom(),
        "Tables" => list(String.t() | atom())
      }
      
  """
  @type catalog_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      partition_index() :: %{
        "IndexName" => String.t() | atom(),
        "Keys" => list(String.t() | atom())
      }
      
  """
  @type partition_index() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      task_run_properties() :: %{
        "ExportLabelsTaskRunProperties" => export_labels_task_run_properties(),
        "FindMatchesTaskRunProperties" => find_matches_task_run_properties(),
        "ImportLabelsTaskRunProperties" => import_labels_task_run_properties(),
        "LabelingSetGenerationTaskRunProperties" => labeling_set_generation_task_run_properties(),
        "TaskType" => list(any())
      }
      
  """
  @type task_run_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_catalog_request() :: %{
        required("CatalogId") => String.t() | atom(),
        required("CatalogInput") => catalog_input()
      }
      
  """
  @type update_catalog_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      table_optimizer_run() :: %{
        "compactionMetrics" => compaction_metrics(),
        "compactionStrategy" => list(any()),
        "endTimestamp" => non_neg_integer(),
        "error" => String.t() | atom(),
        "eventType" => list(any()),
        "metrics" => run_metrics(),
        "orphanFileDeletionMetrics" => orphan_file_deletion_metrics(),
        "retentionMetrics" => retention_metrics(),
        "startTimestamp" => non_neg_integer()
      }
      
  """
  @type table_optimizer_run() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      filter_value() :: %{
        "Type" => list(any()),
        "Value" => list(String.t() | atom())
      }
      
  """
  @type filter_value() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      recipe_reference() :: %{
        "RecipeArn" => String.t() | atom(),
        "RecipeVersion" => String.t() | atom()
      }
      
  """
  @type recipe_reference() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      run_statement_response() :: %{
        "Id" => integer()
      }
      
  """
  @type run_statement_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_table_optimizer_request() :: %{
        required("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom(),
        required("Type") => list(any())
      }
      
  """
  @type delete_table_optimizer_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      federated_table() :: %{
        "ConnectionName" => String.t() | atom(),
        "ConnectionType" => String.t() | atom(),
        "DatabaseIdentifier" => String.t() | atom(),
        "Identifier" => String.t() | atom()
      }
      
  """
  @type federated_table() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_catalogs_response() :: %{
        "CatalogList" => list(catalog()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type get_catalogs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      merge() :: %{
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "PrimaryKeys" => list(list(String.t() | atom())()),
        "Source" => String.t() | atom()
      }
      
  """
  @type merge() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_data_quality_ruleset_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type delete_data_quality_ruleset_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_ml_transform_request() :: %{
        required("TransformId") => String.t() | atom()
      }
      
  """
  @type delete_ml_transform_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_databases_request() :: %{
        optional("AttributesToGet") => list(list(any())()),
        optional("CatalogId") => String.t() | atom(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("ResourceShareType") => list(any())
      }
      
  """
  @type get_databases_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_usage_profile_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type get_usage_profile_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_column_statistics_for_partition_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("ColumnName") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("PartitionValues") => list(String.t() | atom()),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type delete_column_statistics_for_partition_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_crawler_response() :: %{
        "Crawler" => crawler()
      }
      
  """
  @type get_crawler_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      federated_database() :: %{
        "ConnectionName" => String.t() | atom(),
        "ConnectionType" => String.t() | atom(),
        "Identifier" => String.t() | atom()
      }
      
  """
  @type federated_database() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      p_i_idetection() :: %{
        "DetectionParameters" => String.t() | atom(),
        "DetectionSensitivity" => String.t() | atom(),
        "EntityTypesToDetect" => list(String.t() | atom()),
        "Inputs" => list(String.t() | atom()),
        "MaskValue" => String.t() | atom(),
        "MatchPattern" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "NumLeftCharsToExclude" => integer(),
        "NumRightCharsToExclude" => integer(),
        "OutputColumnName" => String.t() | atom(),
        "PiiType" => list(any()),
        "RedactChar" => String.t() | atom(),
        "RedactText" => String.t() | atom(),
        "SampleFraction" => float(),
        "ThresholdFraction" => float()
      }
      
  """
  @type p_i_idetection() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      last_active_definition() :: %{
        "BlueprintLocation" => String.t() | atom(),
        "BlueprintServiceLocation" => String.t() | atom(),
        "Description" => String.t() | atom(),
        "LastModifiedOn" => non_neg_integer(),
        "ParameterSpec" => String.t() | atom()
      }
      
  """
  @type last_active_definition() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_statement_request() :: %{
        optional("RequestOrigin") => String.t() | atom(),
        required("Id") => integer(),
        required("SessionId") => String.t() | atom()
      }
      
  """
  @type get_statement_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_data_quality_ruleset_response() :: %{}
      
  """
  @type delete_data_quality_ruleset_response() :: %{}

  @typedoc """

  ## Example:
      
      get_security_configurations_response() :: %{
        "NextToken" => String.t() | atom(),
        "SecurityConfigurations" => list(security_configuration())
      }
      
  """
  @type get_security_configurations_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_data_quality_result_request() :: %{
        required("ResultId") => String.t() | atom()
      }
      
  """
  @type get_data_quality_result_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      view_validation() :: %{
        "Dialect" => list(any()),
        "DialectVersion" => String.t() | atom(),
        "Error" => error_detail(),
        "State" => list(any()),
        "UpdateTime" => non_neg_integer(),
        "ViewValidationText" => String.t() | atom()
      }
      
  """
  @type view_validation() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      describe_entity_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("DataStoreApiVersion") => String.t() | atom(),
        optional("NextToken") => String.t() | atom(),
        required("ConnectionName") => String.t() | atom(),
        required("EntityName") => String.t() | atom()
      }
      
  """
  @type describe_entity_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_grok_classifier_request() :: %{
        "Classification" => String.t() | atom(),
        "CustomPatterns" => String.t() | atom(),
        "GrokPattern" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type update_grok_classifier_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      amazon_redshift_source() :: %{
        "Data" => amazon_redshift_node_data(),
        "Name" => String.t() | atom()
      }
      
  """
  @type amazon_redshift_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      schema_id() :: %{
        "RegistryName" => String.t() | atom(),
        "SchemaArn" => String.t() | atom(),
        "SchemaName" => String.t() | atom()
      }
      
  """
  @type schema_id() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_optimization_properties_output() :: %{
        "Compaction" => map(),
        "LastUpdatedTime" => non_neg_integer(),
        "OrphanFileDeletion" => map(),
        "Retention" => map(),
        "RoleArn" => String.t() | atom()
      }
      
  """
  @type iceberg_optimization_properties_output() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_data_quality_ruleset_evaluation_runs_response() :: %{
        "NextToken" => String.t() | atom(),
        "Runs" => list(data_quality_ruleset_evaluation_run_description())
      }
      
  """
  @type list_data_quality_ruleset_evaluation_runs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_dev_endpoint_request() :: %{
        optional("AddArguments") => map(),
        optional("AddPublicKeys") => list(String.t() | atom()),
        optional("CustomLibraries") => dev_endpoint_custom_libraries(),
        optional("DeleteArguments") => list(String.t() | atom()),
        optional("DeletePublicKeys") => list(String.t() | atom()),
        optional("PublicKey") => String.t() | atom(),
        optional("UpdateEtlLibraries") => boolean(),
        required("EndpointName") => String.t() | atom()
      }
      
  """
  @type update_dev_endpoint_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      snowflake_target() :: %{
        "Data" => snowflake_node_data(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom()
      }
      
  """
  @type snowflake_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_ml_transform_response() :: %{
        "TransformId" => String.t() | atom()
      }
      
  """
  @type create_ml_transform_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_connection_response() :: %{}
      
  """
  @type delete_connection_response() :: %{}

  @typedoc """

  ## Example:
      
      batch_get_workflows_request() :: %{
        optional("IncludeGraph") => boolean(),
        required("Names") => list(String.t() | atom())
      }
      
  """
  @type batch_get_workflows_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_asset_output() :: %{
        "AssetTypeId" => String.t() | atom(),
        "Attachments" => map(),
        "CreatedAt" => non_neg_integer(),
        "Description" => String.t() | atom(),
        "Forms" => map(),
        "GlossaryTerms" => list(String.t() | atom()),
        "Id" => String.t() | atom(),
        "IterableForms" => map(),
        "Name" => String.t() | atom(),
        "UpdatedAt" => non_neg_integer()
      }
      
  """
  @type get_asset_output() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_ml_evaluation_task_run_request() :: %{
        required("TransformId") => String.t() | atom()
      }
      
  """
  @type start_ml_evaluation_task_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_crawler_response() :: %{}
      
  """
  @type create_crawler_response() :: %{}

  @typedoc """

  ## Example:
      
      create_iceberg_table_input() :: %{
        "Location" => String.t() | atom(),
        "PartitionSpec" => iceberg_partition_spec(),
        "Properties" => map(),
        "Schema" => iceberg_schema(),
        "WriteOrder" => iceberg_sort_order()
      }
      
  """
  @type create_iceberg_table_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_usage_profile_request() :: %{
        optional("Description") => String.t() | atom(),
        required("Configuration") => profile_configuration(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type update_usage_profile_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_column_statistics_for_table_response() :: %{
        "ColumnStatisticsList" => list(column_statistics()),
        "Errors" => list(column_error())
      }
      
  """
  @type get_column_statistics_for_table_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      route() :: %{
        "GroupFiltersList" => list(group_filters()),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom()
      }
      
  """
  @type route() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_triggers_response() :: %{
        "NextToken" => String.t() | atom(),
        "Triggers" => list(trigger())
      }
      
  """
  @type get_triggers_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_registry_response() :: %{
        "RegistryArn" => String.t() | atom(),
        "RegistryName" => String.t() | atom(),
        "Status" => list(any())
      }
      
  """
  @type delete_registry_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_integration_table_properties_response() :: %{}
      
  """
  @type update_integration_table_properties_response() :: %{}

  @typedoc """

  ## Example:
      
      illegal_blueprint_state_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type illegal_blueprint_state_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      integration() :: %{
        "AdditionalEncryptionContext" => map(),
        "CreateTime" => non_neg_integer(),
        "DataFilter" => String.t() | atom(),
        "Description" => String.t() | atom(),
        "Errors" => list(integration_error()),
        "IntegrationArn" => String.t() | atom(),
        "IntegrationConfig" => integration_config(),
        "IntegrationName" => String.t() | atom(),
        "KmsKeyId" => String.t() | atom(),
        "SourceArn" => String.t() | atom(),
        "Status" => list(any()),
        "Tags" => list(tag()),
        "TargetArn" => String.t() | atom()
      }
      
  """
  @type integration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      execution_property() :: %{
        "MaxConcurrentRuns" => integer()
      }
      
  """
  @type execution_property() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      describe_connection_type_response() :: %{
        "AthenaConnectionProperties" => map(),
        "AuthenticationConfiguration" => auth_configuration(),
        "Capabilities" => capabilities(),
        "ComputeEnvironmentConfigurations" => map(),
        "ConnectionOptions" => map(),
        "ConnectionProperties" => map(),
        "ConnectionType" => String.t() | atom(),
        "Description" => String.t() | atom(),
        "PhysicalConnectionRequirements" => map(),
        "PythonConnectionProperties" => map(),
        "RestConfiguration" => rest_configuration(),
        "SparkConnectionProperties" => map()
      }
      
  """
  @type describe_connection_type_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      catalog_schema_change_policy() :: %{
        "EnableUpdateCatalog" => boolean(),
        "UpdateBehavior" => list(any())
      }
      
  """
  @type catalog_schema_change_policy() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_ml_transform_response() :: %{
        "CreatedOn" => non_neg_integer(),
        "Description" => String.t() | atom(),
        "EvaluationMetrics" => evaluation_metrics(),
        "GlueVersion" => String.t() | atom(),
        "InputRecordTables" => list(glue_table()),
        "LabelCount" => integer(),
        "LastModifiedOn" => non_neg_integer(),
        "MaxCapacity" => float(),
        "MaxRetries" => integer(),
        "Name" => String.t() | atom(),
        "NumberOfWorkers" => integer(),
        "Parameters" => transform_parameters(),
        "Role" => String.t() | atom(),
        "Schema" => list(schema_column()),
        "Status" => list(any()),
        "Timeout" => integer(),
        "TransformEncryption" => transform_encryption(),
        "TransformId" => String.t() | atom(),
        "WorkerType" => list(any())
      }
      
  """
  @type get_ml_transform_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_table_optimizer() :: %{
        "catalogId" => String.t() | atom(),
        "databaseName" => String.t() | atom(),
        "tableName" => String.t() | atom(),
        "tableOptimizer" => table_optimizer()
      }
      
  """
  @type batch_table_optimizer() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      cancel_data_quality_ruleset_evaluation_run_request() :: %{
        required("RunId") => String.t() | atom()
      }
      
  """
  @type cancel_data_quality_ruleset_evaluation_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_table_optimizer_request() :: %{
        required("Entries") => list(batch_get_table_optimizer_entry())
      }
      
  """
  @type batch_get_table_optimizer_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_ml_task_run_response() :: %{
        "CompletedOn" => non_neg_integer(),
        "ErrorString" => String.t() | atom(),
        "ExecutionTime" => integer(),
        "LastModifiedOn" => non_neg_integer(),
        "LogGroupName" => String.t() | atom(),
        "Properties" => task_run_properties(),
        "StartedOn" => non_neg_integer(),
        "Status" => list(any()),
        "TaskRunId" => String.t() | atom(),
        "TransformId" => String.t() | atom()
      }
      
  """
  @type get_ml_task_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_stop_job_run_error() :: %{
        "ErrorDetail" => error_detail(),
        "JobName" => String.t() | atom(),
        "JobRunId" => String.t() | atom()
      }
      
  """
  @type batch_stop_job_run_error() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_custom_entity_types_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("Tags") => map()
      }
      
  """
  @type list_custom_entity_types_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_blueprints_request() :: %{
        optional("IncludeBlueprint") => boolean(),
        optional("IncludeParameterSpec") => boolean(),
        required("Names") => list(String.t() | atom())
      }
      
  """
  @type batch_get_blueprints_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      materialized_view_refresh_task_running_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type materialized_view_refresh_task_running_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      column_statistics_task_settings() :: %{
        "CatalogID" => String.t() | atom(),
        "ColumnNameList" => list(String.t() | atom()),
        "DatabaseName" => String.t() | atom(),
        "LastExecutionAttempt" => execution_attempt(),
        "Role" => String.t() | atom(),
        "SampleSize" => float(),
        "Schedule" => schedule(),
        "ScheduleType" => list(any()),
        "SecurityConfiguration" => String.t() | atom(),
        "SettingSource" => list(any()),
        "TableName" => String.t() | atom()
      }
      
  """
  @type column_statistics_task_settings() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_crawler_schedule_request() :: %{
        optional("Schedule") => String.t() | atom(),
        required("CrawlerName") => String.t() | atom()
      }
      
  """
  @type update_crawler_schedule_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_integration_resource_properties_request() :: %{
        optional("Filters") => list(integration_resource_property_filter()),
        optional("Marker") => String.t() | atom(),
        optional("MaxRecords") => integer()
      }
      
  """
  @type list_integration_resource_properties_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_catalog_response() :: %{}
      
  """
  @type create_catalog_response() :: %{}

  @typedoc """

  ## Example:
      
      concurrent_modification_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type concurrent_modification_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_registries_input() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type list_registries_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      throttling_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type throttling_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      session_busy_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type session_busy_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      postgre_s_q_l_catalog_target() :: %{
        "Database" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "Table" => String.t() | atom()
      }
      
  """
  @type postgre_s_q_l_catalog_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_schema_versions_diff_response() :: %{
        "Diff" => String.t() | atom()
      }
      
  """
  @type get_schema_versions_diff_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      starting_event_batch_condition() :: %{
        "BatchSize" => integer(),
        "BatchWindow" => integer()
      }
      
  """
  @type starting_event_batch_condition() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      no_schedule_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type no_schedule_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_glossary_response() :: %{
        "Description" => String.t() | atom(),
        "Id" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type update_glossary_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iterable_form_item() :: %{
        "Attachments" => map(),
        "Forms" => map(),
        "GlossaryTerms" => list(String.t() | atom()),
        "ItemId" => String.t() | atom(),
        "ItemName" => String.t() | atom()
      }
      
  """
  @type iterable_form_item() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_glue_identity_center_configuration_response() :: %{}
      
  """
  @type delete_glue_identity_center_configuration_response() :: %{}

  @typedoc """

  ## Example:
      
      ml_transform() :: %{
        "CreatedOn" => non_neg_integer(),
        "Description" => String.t() | atom(),
        "EvaluationMetrics" => evaluation_metrics(),
        "GlueVersion" => String.t() | atom(),
        "InputRecordTables" => list(glue_table()),
        "LabelCount" => integer(),
        "LastModifiedOn" => non_neg_integer(),
        "MaxCapacity" => float(),
        "MaxRetries" => integer(),
        "Name" => String.t() | atom(),
        "NumberOfWorkers" => integer(),
        "Parameters" => transform_parameters(),
        "Role" => String.t() | atom(),
        "Schema" => list(schema_column()),
        "Status" => list(any()),
        "Timeout" => integer(),
        "TransformEncryption" => transform_encryption(),
        "TransformId" => String.t() | atom(),
        "WorkerType" => list(any())
      }
      
  """
  @type ml_transform() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_column_statistics_for_partition_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("ColumnStatisticsList") => list(column_statistics()),
        required("DatabaseName") => String.t() | atom(),
        required("PartitionValues") => list(String.t() | atom()),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type update_column_statistics_for_partition_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      materialized_view_refresh_task_run() :: %{
        "CatalogId" => String.t() | atom(),
        "CreationTime" => non_neg_integer(),
        "CustomerId" => String.t() | atom(),
        "DPUSeconds" => float(),
        "DatabaseName" => String.t() | atom(),
        "EndTime" => non_neg_integer(),
        "ErrorMessage" => String.t() | atom(),
        "LastUpdated" => non_neg_integer(),
        "MaterializedViewRefreshTaskRunId" => String.t() | atom(),
        "ProcessedBytes" => float(),
        "RefreshType" => list(any()),
        "Role" => String.t() | atom(),
        "StartTime" => non_neg_integer(),
        "Status" => list(any()),
        "TableName" => String.t() | atom()
      }
      
  """
  @type materialized_view_refresh_task_run() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      decimal_column_statistics_data() :: %{
        "MaximumValue" => decimal_number(),
        "MinimumValue" => decimal_number(),
        "NumberOfDistinctValues" => float(),
        "NumberOfNulls" => float()
      }
      
  """
  @type decimal_column_statistics_data() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      oracle_s_q_l_catalog_source() :: %{
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Table" => String.t() | atom()
      }
      
  """
  @type oracle_s_q_l_catalog_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      dynamo_db_catalog_source() :: %{
        "AdditionalOptions" => d_db_e_l_t_catalog_additional_options(),
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "PitrEnabled" => boolean(),
        "Table" => String.t() | atom()
      }
      
  """
  @type dynamo_db_catalog_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      schema_change_policy() :: %{
        "DeleteBehavior" => list(any()),
        "UpdateBehavior" => list(any())
      }
      
  """
  @type schema_change_policy() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_integration_resource_property_response() :: %{
        "ResourceArn" => String.t() | atom(),
        "ResourcePropertyArn" => String.t() | atom(),
        "SourceProcessingProperties" => source_processing_properties(),
        "TargetProcessingProperties" => target_processing_properties()
      }
      
  """
  @type get_integration_resource_property_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      dynamic_transform() :: %{
        "FunctionName" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "Parameters" => list(transform_config_parameter()),
        "Path" => String.t() | atom(),
        "TransformName" => String.t() | atom(),
        "Version" => String.t() | atom()
      }
      
  """
  @type dynamic_transform() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      job_bookmark_entry() :: %{
        "Attempt" => integer(),
        "JobBookmark" => String.t() | atom(),
        "JobName" => String.t() | atom(),
        "PreviousRunId" => String.t() | atom(),
        "Run" => integer(),
        "RunId" => String.t() | atom(),
        "Version" => integer()
      }
      
  """
  @type job_bookmark_entry() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      skewed_info() :: %{
        "SkewedColumnNames" => list(String.t() | atom()),
        "SkewedColumnValueLocationMaps" => map(),
        "SkewedColumnValues" => list(String.t() | atom())
      }
      
  """
  @type skewed_info() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_stop_job_run_request() :: %{
        required("JobName") => String.t() | atom(),
        required("JobRunIds") => list(String.t() | atom())
      }
      
  """
  @type batch_stop_job_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_ml_transform_request() :: %{
        required("TransformId") => String.t() | atom()
      }
      
  """
  @type get_ml_transform_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      schema_version_list_item() :: %{
        "CreatedTime" => String.t() | atom(),
        "SchemaArn" => String.t() | atom(),
        "SchemaVersionId" => String.t() | atom(),
        "Status" => list(any()),
        "VersionNumber" => float()
      }
      
  """
  @type schema_version_list_item() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      test_connection_response() :: %{}
      
  """
  @type test_connection_response() :: %{}

  @typedoc """

  ## Example:
      
      list_triggers_response() :: %{
        "NextToken" => String.t() | atom(),
        "TriggerNames" => list(String.t() | atom())
      }
      
  """
  @type list_triggers_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_iterable_forms_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type list_iterable_forms_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      view_representation() :: %{
        "Dialect" => list(any()),
        "DialectVersion" => String.t() | atom(),
        "IsStale" => boolean(),
        "ValidationConnection" => String.t() | atom(),
        "ViewExpandedText" => String.t() | atom(),
        "ViewOriginalText" => String.t() | atom()
      }
      
  """
  @type view_representation() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      entity_configuration() :: %{
        "Schema" => map(),
        "SourceConfiguration" => source_configuration()
      }
      
  """
  @type entity_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      describe_connection_type_request() :: %{
        required("ConnectionType") => String.t() | atom()
      }
      
  """
  @type describe_connection_type_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      partition_index_descriptor() :: %{
        "BackfillErrors" => list(backfill_error()),
        "IndexName" => String.t() | atom(),
        "IndexStatus" => list(any()),
        "Keys" => list(key_schema_element())
      }
      
  """
  @type partition_index_descriptor() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_delete_table_version_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom(),
        required("VersionIds") => list(String.t() | atom())
      }
      
  """
  @type batch_delete_table_version_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      orphan_file_deletion_metrics() :: %{
        "IcebergMetrics" => iceberg_orphan_file_deletion_metrics()
      }
      
  """
  @type orphan_file_deletion_metrics() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      search_tables_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("Filters") => list(property_predicate()),
        optional("IncludeStatusDetails") => boolean(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("ResourceShareType") => list(any()),
        optional("SearchText") => String.t() | atom(),
        optional("SortCriteria") => list(sort_criterion())
      }
      
  """
  @type search_tables_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      crawler_targets() :: %{
        "CatalogTargets" => list(catalog_target()),
        "DeltaTargets" => list(delta_target()),
        "DynamoDBTargets" => list(dynamo_db_target()),
        "HudiTargets" => list(hudi_target()),
        "IcebergTargets" => list(iceberg_target()),
        "JdbcTargets" => list(jdbc_target()),
        "MongoDBTargets" => list(mongo_db_target()),
        "S3Targets" => list(s3_target())
      }
      
  """
  @type crawler_targets() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      glue_node() :: %{
        "CrawlerDetails" => crawler_node_details(),
        "JobDetails" => job_node_details(),
        "Name" => String.t() | atom(),
        "TriggerDetails" => trigger_node_details(),
        "Type" => list(any()),
        "UniqueId" => String.t() | atom()
      }
      
  """
  @type glue_node() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      access_denied_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type access_denied_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_catalog_response() :: %{}
      
  """
  @type update_catalog_response() :: %{}

  @typedoc """

  ## Example:
      
      configuration_object() :: %{
        "AllowedValues" => list(String.t() | atom()),
        "DefaultValue" => String.t() | atom(),
        "MaxValue" => String.t() | atom(),
        "MinValue" => String.t() | atom()
      }
      
  """
  @type configuration_object() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_stop_job_run_response() :: %{
        "Errors" => list(batch_stop_job_run_error()),
        "SuccessfulSubmissions" => list(batch_stop_job_run_successful_submission())
      }
      
  """
  @type batch_stop_job_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_workflow_response() :: %{
        "Workflow" => workflow()
      }
      
  """
  @type get_workflow_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      catalog_delta_source() :: %{
        "AdditionalDeltaOptions" => map(),
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "Table" => String.t() | atom()
      }
      
  """
  @type catalog_delta_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_crawler_schedule_response() :: %{}
      
  """
  @type stop_crawler_schedule_response() :: %{}

  @typedoc """

  ## Example:
      
      catalog_hudi_source() :: %{
        "AdditionalHudiOptions" => map(),
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "Table" => String.t() | atom()
      }
      
  """
  @type catalog_hudi_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_jobs_response() :: %{
        "Jobs" => list(job()),
        "JobsNotFound" => list(String.t() | atom())
      }
      
  """
  @type batch_get_jobs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      transform_parameters() :: %{
        "FindMatchesParameters" => find_matches_parameters(),
        "TransformType" => list(any())
      }
      
  """
  @type transform_parameters() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      integration_resource_property_filter() :: %{
        "Name" => String.t() | atom(),
        "Values" => list(String.t() | atom())
      }
      
  """
  @type integration_resource_property_filter() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      statement() :: %{
        "Code" => String.t() | atom(),
        "CompletedOn" => float(),
        "Id" => integer(),
        "Output" => statement_output(),
        "Progress" => float(),
        "StartedOn" => float(),
        "State" => list(any())
      }
      
  """
  @type statement() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      retention_metrics() :: %{
        "IcebergMetrics" => iceberg_retention_metrics()
      }
      
  """
  @type retention_metrics() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      d_db_e_l_t_connection_options() :: %{
        "DynamodbExport" => list(any()),
        "DynamodbS3Bucket" => String.t() | atom(),
        "DynamodbS3BucketOwner" => String.t() | atom(),
        "DynamodbS3Prefix" => String.t() | atom(),
        "DynamodbStsRoleArn" => String.t() | atom(),
        "DynamodbTableArn" => String.t() | atom(),
        "DynamodbUnnestDDBJson" => boolean()
      }
      
  """
  @type d_db_e_l_t_connection_options() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      d_q_results_publishing_options() :: %{
        "CloudWatchMetricsEnabled" => boolean(),
        "EvaluationContext" => String.t() | atom(),
        "ResultsPublishingEnabled" => boolean(),
        "ResultsS3Prefix" => String.t() | atom()
      }
      
  """
  @type d_q_results_publishing_options() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      client_credentials_properties() :: %{
        "ClientId" => connector_property(),
        "ClientSecret" => connector_property(),
        "ContentType" => list(any()),
        "RequestMethod" => list(any()),
        "Scope" => connector_property(),
        "TokenUrl" => connector_property(),
        "TokenUrlParameters" => list(connector_property())
      }
      
  """
  @type client_credentials_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_materialized_view_refresh_task_runs_response() :: %{
        "MaterializedViewRefreshTaskRuns" => list(materialized_view_refresh_task_run()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_materialized_view_refresh_task_runs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_connection_type_request() :: %{
        required("ConnectionType") => String.t() | atom()
      }
      
  """
  @type delete_connection_type_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_compaction_metrics() :: %{
        "DpuHours" => float(),
        "JobDurationInHour" => float(),
        "NumberOfBytesCompacted" => float(),
        "NumberOfDpus" => integer(),
        "NumberOfFilesCompacted" => float()
      }
      
  """
  @type iceberg_compaction_metrics() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      tag() :: %{
        "key" => String.t() | atom(),
        "value" => String.t() | atom()
      }
      
  """
  @type tag() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_data_quality_ruleset_evaluation_run_response() :: %{
        "AdditionalDataSources" => map(),
        "AdditionalRunOptions" => data_quality_evaluation_run_additional_run_options(),
        "CompletedOn" => non_neg_integer(),
        "DataSource" => data_source(),
        "ErrorString" => String.t() | atom(),
        "ExecutionTime" => integer(),
        "LastModifiedOn" => non_neg_integer(),
        "NumberOfWorkers" => integer(),
        "ResultIds" => list(String.t() | atom()),
        "Role" => String.t() | atom(),
        "RulesetNames" => list(String.t() | atom()),
        "RunId" => String.t() | atom(),
        "StartedOn" => non_neg_integer(),
        "Status" => list(any()),
        "Timeout" => integer()
      }
      
  """
  @type get_data_quality_ruleset_evaluation_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_table_versions_request() :: %{
        optional("AuditContext") => audit_context(),
        optional("CatalogId") => String.t() | atom(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type get_table_versions_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_column_statistics_task_run_response() :: %{
        "ColumnStatisticsTaskRunId" => String.t() | atom()
      }
      
  """
  @type start_column_statistics_task_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_encryption() :: %{
        "KmsKeyArn" => String.t() | atom(),
        "S3EncryptionMode" => list(any())
      }
      
  """
  @type s3_encryption() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_job_bookmark_request() :: %{
        optional("RunId") => String.t() | atom(),
        required("JobName") => String.t() | atom()
      }
      
  """
  @type get_job_bookmark_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_statements_response() :: %{
        "NextToken" => String.t() | atom(),
        "Statements" => list(statement())
      }
      
  """
  @type list_statements_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_job_from_source_control_response() :: %{
        "JobName" => String.t() | atom()
      }
      
  """
  @type update_job_from_source_control_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      target_resource_not_found() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type target_resource_not_found() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_form_types_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type list_form_types_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      federation_source_retryable_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type federation_source_retryable_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      glue_policy() :: %{
        "CreateTime" => non_neg_integer(),
        "PolicyHash" => String.t() | atom(),
        "PolicyInJson" => String.t() | atom(),
        "UpdateTime" => non_neg_integer()
      }
      
  """
  @type glue_policy() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_materialized_view_refresh_task_run_response() :: %{
        "MaterializedViewRefreshTaskRun" => materialized_view_refresh_task_run()
      }
      
  """
  @type get_materialized_view_refresh_task_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_integration_table_properties_request() :: %{
        required("ResourceArn") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type delete_integration_table_properties_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      crawler_history() :: %{
        "CrawlId" => String.t() | atom(),
        "DPUHour" => float(),
        "EndTime" => non_neg_integer(),
        "ErrorMessage" => String.t() | atom(),
        "LogGroup" => String.t() | atom(),
        "LogStream" => String.t() | atom(),
        "MessagePrefix" => String.t() | atom(),
        "StartTime" => non_neg_integer(),
        "State" => list(any()),
        "Summary" => String.t() | atom()
      }
      
  """
  @type crawler_history() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_database_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type delete_database_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_csv_classifier_request() :: %{
        "AllowSingleColumn" => boolean(),
        "ContainsHeader" => list(any()),
        "CustomDatatypeConfigured" => boolean(),
        "CustomDatatypes" => list(String.t() | atom()),
        "Delimiter" => String.t() | atom(),
        "DisableValueTrimming" => boolean(),
        "Header" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "QuoteSymbol" => String.t() | atom(),
        "Serde" => list(any())
      }
      
  """
  @type update_csv_classifier_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_glossary_terms_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        required("GlossaryIdentifier") => String.t() | atom()
      }
      
  """
  @type list_glossary_terms_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_jobs_response() :: %{
        "Jobs" => list(job()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type get_jobs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_user_defined_function_response() :: %{}
      
  """
  @type delete_user_defined_function_response() :: %{}

  @typedoc """

  ## Example:
      
      get_unfiltered_partition_metadata_request() :: %{
        optional("AuditContext") => audit_context(),
        optional("QuerySessionContext") => query_session_context(),
        optional("Region") => String.t() | atom(),
        required("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("PartitionValues") => list(String.t() | atom()),
        required("SupportedPermissionTypes") => list(list(any())()),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type get_unfiltered_partition_metadata_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      governed_catalog_source() :: %{
        "AdditionalOptions" => s3_source_additional_options(),
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "PartitionPredicate" => String.t() | atom(),
        "Table" => String.t() | atom()
      }
      
  """
  @type governed_catalog_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_schema_response() :: %{
        "SchemaArn" => String.t() | atom(),
        "SchemaName" => String.t() | atom(),
        "Status" => list(any())
      }
      
  """
  @type delete_schema_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_session_response() :: %{
        "Id" => String.t() | atom()
      }
      
  """
  @type stop_session_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      job_run() :: %{
        "AllocatedCapacity" => integer(),
        "Arguments" => map(),
        "Attempt" => integer(),
        "CompletedOn" => non_neg_integer(),
        "DPUSeconds" => float(),
        "ErrorMessage" => String.t() | atom(),
        "ExecutionClass" => list(any()),
        "ExecutionRoleSessionPolicy" => String.t() | atom(),
        "ExecutionTime" => integer(),
        "GlueVersion" => String.t() | atom(),
        "Id" => String.t() | atom(),
        "JobMode" => list(any()),
        "JobName" => String.t() | atom(),
        "JobRunQueuingEnabled" => boolean(),
        "JobRunState" => list(any()),
        "LastModifiedOn" => non_neg_integer(),
        "LogGroupName" => String.t() | atom(),
        "MaintenanceWindow" => String.t() | atom(),
        "MaxCapacity" => float(),
        "NotificationProperty" => notification_property(),
        "NumberOfWorkers" => integer(),
        "PredecessorRuns" => list(predecessor()),
        "PreviousRunId" => String.t() | atom(),
        "ProfileName" => String.t() | atom(),
        "SecurityConfiguration" => String.t() | atom(),
        "StartedOn" => non_neg_integer(),
        "StateDetail" => String.t() | atom(),
        "Timeout" => integer(),
        "TriggerName" => String.t() | atom(),
        "WorkerType" => list(any())
      }
      
  """
  @type job_run() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_data_quality_ruleset_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type create_data_quality_ruleset_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_hudi_source() :: %{
        "AdditionalHudiOptions" => map(),
        "AdditionalOptions" => s3_direct_source_additional_options(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "Paths" => list(String.t() | atom())
      }
      
  """
  @type s3_hudi_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_catalogs_request() :: %{
        optional("HasDatabases") => boolean(),
        optional("IncludeRoot") => boolean(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("ParentCatalogId") => String.t() | atom(),
        optional("Recursive") => boolean()
      }
      
  """
  @type get_catalogs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_crawlers_request() :: %{
        required("CrawlerNames") => list(String.t() | atom())
      }
      
  """
  @type batch_get_crawlers_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_asset_request() :: %{}
      
  """
  @type delete_asset_request() :: %{}

  @typedoc """

  ## Example:
      
      start_crawler_response() :: %{}
      
  """
  @type start_crawler_response() :: %{}

  @typedoc """

  ## Example:
      
      cancel_ml_task_run_response() :: %{
        "Status" => list(any()),
        "TaskRunId" => String.t() | atom(),
        "TransformId" => String.t() | atom()
      }
      
  """
  @type cancel_ml_task_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_custom_entity_type_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type get_custom_entity_type_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_workflow_request() :: %{
        optional("DefaultRunProperties") => map(),
        optional("Description") => String.t() | atom(),
        optional("MaxConcurrentRuns") => integer(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type update_workflow_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      j_w_t_bearer_properties() :: %{
        "ContentType" => list(any()),
        "JwtToken" => connector_property(),
        "RequestMethod" => list(any()),
        "TokenUrl" => connector_property(),
        "TokenUrlParameters" => list(connector_property())
      }
      
  """
  @type j_w_t_bearer_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      associate_glossary_terms_request() :: %{
        optional("ClientToken") => String.t() | atom(),
        required("GlossaryTermIdentifiers") => list(String.t() | atom())
      }
      
  """
  @type associate_glossary_terms_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_asset_response() :: %{}
      
  """
  @type delete_asset_response() :: %{}

  @typedoc """

  ## Example:
      
      catalog_properties() :: %{
        "CustomProperties" => map(),
        "DataLakeAccessProperties" => data_lake_access_properties(),
        "IcebergOptimizationProperties" => iceberg_optimization_properties()
      }
      
  """
  @type catalog_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      materialized_view_refresh_task_stopping_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type materialized_view_refresh_task_stopping_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      statement_output() :: %{
        "Data" => statement_output_data(),
        "ErrorName" => String.t() | atom(),
        "ErrorValue" => String.t() | atom(),
        "ExecutionCount" => integer(),
        "Status" => list(any()),
        "Traceback" => list(String.t() | atom())
      }
      
  """
  @type statement_output() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      recipe() :: %{
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "RecipeReference" => recipe_reference(),
        "RecipeSteps" => list(recipe_step())
      }
      
  """
  @type recipe() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_iterable_forms_response() :: %{
        "Items" => list(iterable_form_list_item()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_iterable_forms_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_registry_input() :: %{
        required("RegistryId") => registry_id()
      }
      
  """
  @type delete_registry_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_table_optimizer_runs_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        required("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom(),
        required("Type") => list(any())
      }
      
  """
  @type list_table_optimizer_runs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_partition_field() :: %{
        "FieldId" => integer(),
        "Name" => String.t() | atom(),
        "SourceId" => integer(),
        "Transform" => String.t() | atom()
      }
      
  """
  @type iceberg_partition_field() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_crawler_response() :: %{}
      
  """
  @type delete_crawler_response() :: %{}

  @typedoc """

  ## Example:
      
      iceberg_encrypted_key() :: %{
        "EncryptedById" => String.t() | atom(),
        "EncryptedKeyMetadata" => String.t() | atom(),
        "KeyId" => String.t() | atom(),
        "Properties" => map()
      }
      
  """
  @type iceberg_encrypted_key() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      predicate() :: %{
        "Conditions" => list(condition()),
        "Logical" => list(any())
      }
      
  """
  @type predicate() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      schema_version_number() :: %{
        "LatestVersion" => boolean(),
        "VersionNumber" => float()
      }
      
  """
  @type schema_version_number() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_data_quality_results_response() :: %{
        "NextToken" => String.t() | atom(),
        "Results" => list(data_quality_result_description())
      }
      
  """
  @type list_data_quality_results_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      workflow_graph() :: %{
        "Edges" => list(edge()),
        "Nodes" => list(node())
      }
      
  """
  @type workflow_graph() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_asset_type_request() :: %{}
      
  """
  @type delete_asset_type_request() :: %{}

  @typedoc """

  ## Example:
      
      list_data_quality_results_request() :: %{
        optional("Filter") => data_quality_result_filter_criteria(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type list_data_quality_results_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      dynamo_db_target() :: %{
        "Path" => String.t() | atom(),
        "scanAll" => boolean(),
        "scanRate" => float()
      }
      
  """
  @type dynamo_db_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      o_auth2_properties() :: %{
        "OAuth2ClientApplication" => o_auth2_client_application(),
        "OAuth2GrantType" => list(any()),
        "TokenUrl" => String.t() | atom(),
        "TokenUrlParametersMap" => map()
      }
      
  """
  @type o_auth2_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      basic_authentication_properties() :: %{
        "Password" => connector_property(),
        "Username" => connector_property()
      }
      
  """
  @type basic_authentication_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_workflow_run_properties_response() :: %{}
      
  """
  @type put_workflow_run_properties_response() :: %{}

  @typedoc """

  ## Example:
      
      get_data_quality_ruleset_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type get_data_quality_ruleset_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      lake_formation_configuration() :: %{
        "AccountId" => String.t() | atom(),
        "UseLakeFormationCredentials" => boolean()
      }
      
  """
  @type lake_formation_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_optimization_properties() :: %{
        "Compaction" => map(),
        "OrphanFileDeletion" => map(),
        "Retention" => map(),
        "RoleArn" => String.t() | atom()
      }
      
  """
  @type iceberg_optimization_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_partition_index_response() :: %{}
      
  """
  @type create_partition_index_response() :: %{}

  @typedoc """

  ## Example:
      
      get_form_type_response() :: %{
        "Id" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Schema" => String.t() | atom()
      }
      
  """
  @type get_form_type_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      register_schema_version_response() :: %{
        "SchemaVersionId" => String.t() | atom(),
        "Status" => list(any()),
        "VersionNumber" => float()
      }
      
  """
  @type register_schema_version_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_integration_resource_properties_response() :: %{
        "IntegrationResourcePropertyList" => list(integration_resource_property()),
        "Marker" => String.t() | atom()
      }
      
  """
  @type list_integration_resource_properties_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      view_definition_input() :: %{
        "Definer" => String.t() | atom(),
        "IsProtected" => boolean(),
        "LastRefreshType" => list(any()),
        "RefreshSeconds" => float(),
        "Representations" => list(view_representation_input()),
        "SubObjectVersionIds" => list(float()),
        "SubObjects" => list(String.t() | atom()),
        "ViewVersionId" => float(),
        "ViewVersionToken" => String.t() | atom()
      }
      
  """
  @type view_definition_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      connector_property() :: %{
        "AllowedValues" => list([String.t() | atom()]()),
        "DefaultValue" => [String.t() | atom()],
        "KeyOverride" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "PropertyLocation" => list(any()),
        "PropertyType" => list(any()),
        "Required" => boolean()
      }
      
  """
  @type connector_property() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_crawler_request() :: %{
        optional("Classifiers") => list(String.t() | atom()),
        optional("Configuration") => String.t() | atom(),
        optional("CrawlerSecurityConfiguration") => String.t() | atom(),
        optional("DatabaseName") => String.t() | atom(),
        optional("Description") => String.t() | atom(),
        optional("LakeFormationConfiguration") => lake_formation_configuration(),
        optional("LineageConfiguration") => lineage_configuration(),
        optional("RecrawlPolicy") => recrawl_policy(),
        optional("Schedule") => String.t() | atom(),
        optional("SchemaChangePolicy") => schema_change_policy(),
        optional("TablePrefix") => String.t() | atom(),
        optional("Tags") => map(),
        required("Name") => String.t() | atom(),
        required("Role") => String.t() | atom(),
        required("Targets") => crawler_targets()
      }
      
  """
  @type create_crawler_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_entity_records_response() :: %{
        "NextToken" => String.t() | atom(),
        "Records" => list(any())
      }
      
  """
  @type get_entity_records_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      catalog_iceberg_source() :: %{
        "AdditionalIcebergOptions" => map(),
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "Table" => String.t() | atom()
      }
      
  """
  @type catalog_iceberg_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_export_labels_task_run_request() :: %{
        required("OutputS3Path") => String.t() | atom(),
        required("TransformId") => String.t() | atom()
      }
      
  """
  @type start_export_labels_task_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      glue_encryption_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type glue_encryption_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      glossary_item() :: %{
        "Description" => String.t() | atom(),
        "Id" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type glossary_item() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_iceberg_direct_target() :: %{
        "AdditionalOptions" => map(),
        "AutoDataQuality" => auto_data_quality(),
        "Compression" => list(any()),
        "Format" => list(any()),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "NumberTargetPartitions" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "PartitionKeys" => list(list(String.t() | atom())()),
        "Path" => String.t() | atom(),
        "SchemaChangePolicy" => direct_schema_change_policy()
      }
      
  """
  @type s3_iceberg_direct_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_glue_identity_center_configuration_request() :: %{}
      
  """
  @type get_glue_identity_center_configuration_request() :: %{}

  @typedoc """

  ## Example:
      
      resume_workflow_run_response() :: %{
        "NodeIds" => list(String.t() | atom()),
        "RunId" => String.t() | atom()
      }
      
  """
  @type resume_workflow_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_crawler_schedule_request() :: %{
        required("CrawlerName") => String.t() | atom()
      }
      
  """
  @type start_crawler_schedule_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      resource_uri() :: %{
        "ResourceType" => list(any()),
        "Uri" => String.t() | atom()
      }
      
  """
  @type resource_uri() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      connection_input() :: %{
        "AthenaProperties" => map(),
        "AuthenticationConfiguration" => authentication_configuration_input(),
        "ConnectionProperties" => map(),
        "ConnectionType" => list(any()),
        "Description" => String.t() | atom(),
        "MatchCriteria" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "PhysicalConnectionRequirements" => physical_connection_requirements(),
        "PythonProperties" => map(),
        "SparkProperties" => map(),
        "ValidateCredentials" => boolean(),
        "ValidateForComputeEnvironments" => list(list(any())())
      }
      
  """
  @type connection_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_column_statistics_task_settings_response() :: %{}
      
  """
  @type update_column_statistics_task_settings_response() :: %{}

  @typedoc """

  ## Example:
      
      resume_workflow_run_request() :: %{
        required("Name") => String.t() | atom(),
        required("NodeIds") => list(String.t() | atom()),
        required("RunId") => String.t() | atom()
      }
      
  """
  @type resume_workflow_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_crawler_metrics_request() :: %{
        optional("CrawlerNameList") => list(String.t() | atom()),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type get_crawler_metrics_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_job_response() :: %{
        "JobName" => String.t() | atom()
      }
      
  """
  @type update_job_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      target_processing_properties() :: %{
        "ConnectionName" => String.t() | atom(),
        "EventBusArn" => String.t() | atom(),
        "KmsArn" => String.t() | atom(),
        "RoleArn" => String.t() | atom()
      }
      
  """
  @type target_processing_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_partition_response() :: %{}
      
  """
  @type create_partition_response() :: %{}

  @typedoc """

  ## Example:
      
      get_schema_response() :: %{
        "Compatibility" => list(any()),
        "CreatedTime" => String.t() | atom(),
        "DataFormat" => list(any()),
        "Description" => String.t() | atom(),
        "LatestSchemaVersion" => float(),
        "NextSchemaVersion" => float(),
        "RegistryArn" => String.t() | atom(),
        "RegistryName" => String.t() | atom(),
        "SchemaArn" => String.t() | atom(),
        "SchemaCheckpoint" => float(),
        "SchemaName" => String.t() | atom(),
        "SchemaStatus" => list(any()),
        "UpdatedTime" => String.t() | atom()
      }
      
  """
  @type get_schema_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_dev_endpoints_response() :: %{
        "DevEndpointNames" => list(String.t() | atom()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_dev_endpoints_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_glossaries_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type list_glossaries_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_import_labels_task_run_response() :: %{
        "TaskRunId" => String.t() | atom()
      }
      
  """
  @type start_import_labels_task_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      rest_configuration() :: %{
        "EntityConfigurations" => map(),
        "GlobalSourceConfiguration" => source_configuration(),
        "ValidationEndpointConfiguration" => source_configuration()
      }
      
  """
  @type rest_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_partition_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("PartitionValues") => list(String.t() | atom()),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type delete_partition_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_rule_result() :: %{
        "Description" => String.t() | atom(),
        "EvaluatedMetrics" => map(),
        "EvaluatedRule" => String.t() | atom(),
        "EvaluationMessage" => String.t() | atom(),
        "Labels" => map(),
        "Name" => String.t() | atom(),
        "Result" => list(any()),
        "RuleMetrics" => map()
      }
      
  """
  @type data_quality_rule_result() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_glossary_request() :: %{}
      
  """
  @type get_glossary_request() :: %{}

  @typedoc """

  ## Example:
      
      scheduler_transitioning_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type scheduler_transitioning_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_aggregated_metrics() :: %{
        "TotalRowsFailed" => float(),
        "TotalRowsPassed" => float(),
        "TotalRowsProcessed" => float(),
        "TotalRulesFailed" => float(),
        "TotalRulesPassed" => float(),
        "TotalRulesProcessed" => float()
      }
      
  """
  @type data_quality_aggregated_metrics() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_jobs_request() :: %{
        required("JobNames") => list(String.t() | atom())
      }
      
  """
  @type batch_get_jobs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_column_statistics_for_table_response() :: %{}
      
  """
  @type delete_column_statistics_for_table_response() :: %{}

  @typedoc """

  ## Example:
      
      grok_classifier() :: %{
        "Classification" => String.t() | atom(),
        "CreationTime" => non_neg_integer(),
        "CustomPatterns" => String.t() | atom(),
        "GrokPattern" => String.t() | atom(),
        "LastUpdated" => non_neg_integer(),
        "Name" => String.t() | atom(),
        "Version" => float()
      }
      
  """
  @type grok_classifier() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      idempotent_parameter_mismatch_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type idempotent_parameter_mismatch_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      metadata_info() :: %{
        "CreatedTime" => String.t() | atom(),
        "MetadataValue" => String.t() | atom(),
        "OtherMetadataValueList" => list(other_metadata_value_list_item())
      }
      
  """
  @type metadata_info() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      order() :: %{
        "Column" => String.t() | atom(),
        "SortOrder" => integer()
      }
      
  """
  @type order() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_user_defined_function_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("FunctionName") => String.t() | atom()
      }
      
  """
  @type delete_user_defined_function_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      physical_connection_requirements() :: %{
        "AvailabilityZone" => String.t() | atom(),
        "SecurityGroupIdList" => list(String.t() | atom()),
        "SubnetId" => String.t() | atom()
      }
      
  """
  @type physical_connection_requirements() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      resource_not_ready_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type resource_not_ready_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      column_statistics_task_run() :: %{
        "CatalogID" => String.t() | atom(),
        "ColumnNameList" => list(String.t() | atom()),
        "ColumnStatisticsTaskRunId" => String.t() | atom(),
        "ComputationType" => list(any()),
        "CreationTime" => non_neg_integer(),
        "CustomerId" => String.t() | atom(),
        "DPUSeconds" => float(),
        "DatabaseName" => String.t() | atom(),
        "EndTime" => non_neg_integer(),
        "ErrorMessage" => String.t() | atom(),
        "LastUpdated" => non_neg_integer(),
        "NumberOfWorkers" => integer(),
        "Role" => String.t() | atom(),
        "SampleSize" => float(),
        "SecurityConfiguration" => String.t() | atom(),
        "StartTime" => non_neg_integer(),
        "Status" => list(any()),
        "TableName" => String.t() | atom(),
        "WorkerType" => String.t() | atom()
      }
      
  """
  @type column_statistics_task_run() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_data_catalog_encryption_settings_response() :: %{
        "DataCatalogEncryptionSettings" => data_catalog_encryption_settings()
      }
      
  """
  @type get_data_catalog_encryption_settings_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_custom_entity_type_request() :: %{
        optional("ContextWords") => list(String.t() | atom()),
        optional("Tags") => map(),
        required("Name") => String.t() | atom(),
        required("RegexString") => String.t() | atom()
      }
      
  """
  @type create_custom_entity_type_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      dev_endpoint_custom_libraries() :: %{
        "ExtraJarsS3Path" => String.t() | atom(),
        "ExtraPythonLibsS3Path" => String.t() | atom()
      }
      
  """
  @type dev_endpoint_custom_libraries() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_csv_source() :: %{
        "AdditionalOptions" => s3_direct_source_additional_options(),
        "CompressionType" => list(any()),
        "Escaper" => String.t() | atom(),
        "Exclusions" => list(String.t() | atom()),
        "GroupFiles" => String.t() | atom(),
        "GroupSize" => String.t() | atom(),
        "MaxBand" => integer(),
        "MaxFilesInBand" => integer(),
        "Multiline" => boolean(),
        "Name" => String.t() | atom(),
        "OptimizePerformance" => boolean(),
        "OutputSchemas" => list(glue_schema()),
        "Paths" => list(String.t() | atom()),
        "QuoteChar" => list(any()),
        "Recurse" => boolean(),
        "Separator" => list(any()),
        "SkipFirst" => boolean(),
        "WithHeader" => boolean(),
        "WriteHeader" => boolean()
      }
      
  """
  @type s3_csv_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_trigger_request() :: %{
        required("Name") => String.t() | atom(),
        required("TriggerUpdate") => trigger_update()
      }
      
  """
  @type update_trigger_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_glue_identity_center_configuration_response() :: %{}
      
  """
  @type update_glue_identity_center_configuration_response() :: %{}

  @typedoc """

  ## Example:
      
      data_quality_rule_recommendation_run_description() :: %{
        "DataSource" => data_source(),
        "RunId" => String.t() | atom(),
        "StartedOn" => non_neg_integer(),
        "Status" => list(any())
      }
      
  """
  @type data_quality_rule_recommendation_run_description() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      operation_timeout_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type operation_timeout_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      d_q_stop_job_on_failure_options() :: %{
        "StopJobOnFailureTiming" => list(any())
      }
      
  """
  @type d_q_stop_job_on_failure_options() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_crawler_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type get_crawler_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      export_labels_task_run_properties() :: %{
        "OutputS3Path" => String.t() | atom()
      }
      
  """
  @type export_labels_task_run_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_blueprint_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type delete_blueprint_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      governed_catalog_target() :: %{
        "Database" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "PartitionKeys" => list(list(String.t() | atom())()),
        "SchemaChangePolicy" => catalog_schema_change_policy(),
        "Table" => String.t() | atom()
      }
      
  """
  @type governed_catalog_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_data_catalog_encryption_settings_response() :: %{}
      
  """
  @type put_data_catalog_encryption_settings_response() :: %{}

  @typedoc """

  ## Example:
      
      target_redshift_catalog() :: %{
        "CatalogArn" => String.t() | atom()
      }
      
  """
  @type target_redshift_catalog() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_dev_endpoint_response() :: %{
        "Arguments" => map(),
        "AvailabilityZone" => String.t() | atom(),
        "CreatedTimestamp" => non_neg_integer(),
        "EndpointName" => String.t() | atom(),
        "ExtraJarsS3Path" => String.t() | atom(),
        "ExtraPythonLibsS3Path" => String.t() | atom(),
        "FailureReason" => String.t() | atom(),
        "GlueVersion" => String.t() | atom(),
        "NumberOfNodes" => integer(),
        "NumberOfWorkers" => integer(),
        "RoleArn" => String.t() | atom(),
        "SecurityConfiguration" => String.t() | atom(),
        "SecurityGroupIds" => list(String.t() | atom()),
        "Status" => String.t() | atom(),
        "SubnetId" => String.t() | atom(),
        "VpcId" => String.t() | atom(),
        "WorkerType" => list(any()),
        "YarnEndpointAddress" => String.t() | atom(),
        "ZeppelinRemoteSparkInterpreterPort" => integer()
      }
      
  """
  @type create_dev_endpoint_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_integration_resource_property_response() :: %{
        "ResourceArn" => String.t() | atom(),
        "ResourcePropertyArn" => String.t() | atom(),
        "SourceProcessingProperties" => source_processing_properties(),
        "TargetProcessingProperties" => target_processing_properties()
      }
      
  """
  @type create_integration_resource_property_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_custom_entity_type_response() :: %{
        "ContextWords" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "RegexString" => String.t() | atom()
      }
      
  """
  @type get_custom_entity_type_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_workflow_request() :: %{
        optional("DefaultRunProperties") => map(),
        optional("Description") => String.t() | atom(),
        optional("MaxConcurrentRuns") => integer(),
        optional("Tags") => map(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type create_workflow_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_crawler_schedule_response() :: %{}
      
  """
  @type update_crawler_schedule_response() :: %{}

  @typedoc """

  ## Example:
      
      import_catalog_to_glue_response() :: %{}
      
  """
  @type import_catalog_to_glue_response() :: %{}

  @typedoc """

  ## Example:
      
      remove_schema_version_metadata_input() :: %{
        optional("SchemaId") => schema_id(),
        optional("SchemaVersionId") => String.t() | atom(),
        optional("SchemaVersionNumber") => schema_version_number(),
        required("MetadataKeyValue") => metadata_key_value_pair()
      }
      
  """
  @type remove_schema_version_metadata_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_column_statistics_for_table_response() :: %{
        "Errors" => list(column_statistics_error())
      }
      
  """
  @type update_column_statistics_for_table_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_ruleset_filter_criteria() :: %{
        "CreatedAfter" => non_neg_integer(),
        "CreatedBefore" => non_neg_integer(),
        "Description" => String.t() | atom(),
        "LastModifiedAfter" => non_neg_integer(),
        "LastModifiedBefore" => non_neg_integer(),
        "Name" => String.t() | atom(),
        "TargetTable" => data_quality_target_table()
      }
      
  """
  @type data_quality_ruleset_filter_criteria() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_ml_labeling_set_generation_task_run_request() :: %{
        required("OutputS3Path") => String.t() | atom(),
        required("TransformId") => String.t() | atom()
      }
      
  """
  @type start_ml_labeling_set_generation_task_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_data_quality_ruleset_evaluation_run_request() :: %{
        optional("AdditionalDataSources") => map(),
        optional("AdditionalRunOptions") => data_quality_evaluation_run_additional_run_options(),
        optional("ClientToken") => String.t() | atom(),
        optional("NumberOfWorkers") => integer(),
        optional("Timeout") => integer(),
        required("DataSource") => data_source(),
        required("Role") => String.t() | atom(),
        required("RulesetNames") => list(String.t() | atom())
      }
      
  """
  @type start_data_quality_ruleset_evaluation_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      aggregate() :: %{
        "Aggs" => list(aggregate_operation()),
        "Groups" => list(list(String.t() | atom())()),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom()
      }
      
  """
  @type aggregate() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      drop_null_fields() :: %{
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "NullCheckBoxList" => null_check_box_list(),
        "NullTextList" => list(null_value_field())
      }
      
  """
  @type drop_null_fields() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_schema_response() :: %{
        "RegistryName" => String.t() | atom(),
        "SchemaArn" => String.t() | atom(),
        "SchemaName" => String.t() | atom()
      }
      
  """
  @type update_schema_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_job_request() :: %{
        required("JobName") => String.t() | atom()
      }
      
  """
  @type delete_job_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      column_statistics_task_stopping_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type column_statistics_task_stopping_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_materialized_view_refresh_task_run_request() :: %{
        optional("FullRefresh") => boolean(),
        required("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type start_materialized_view_refresh_task_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_unfiltered_table_metadata_request() :: %{
        optional("AuditContext") => audit_context(),
        optional("ParentResourceArn") => String.t() | atom(),
        optional("Permissions") => list(list(any())()),
        optional("QuerySessionContext") => query_session_context(),
        optional("Region") => String.t() | atom(),
        optional("RootResourceArn") => String.t() | atom(),
        optional("SupportedDialect") => supported_dialect(),
        required("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("Name") => String.t() | atom(),
        required("SupportedPermissionTypes") => list(list(any())())
      }
      
  """
  @type get_unfiltered_table_metadata_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_parquet_source() :: %{
        "AdditionalOptions" => s3_direct_source_additional_options(),
        "CompressionType" => list(any()),
        "Exclusions" => list(String.t() | atom()),
        "GroupFiles" => String.t() | atom(),
        "GroupSize" => String.t() | atom(),
        "MaxBand" => integer(),
        "MaxFilesInBand" => integer(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "Paths" => list(String.t() | atom()),
        "Recurse" => boolean()
      }
      
  """
  @type s3_parquet_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      describe_inbound_integrations_request() :: %{
        optional("IntegrationArn") => String.t() | atom(),
        optional("Marker") => String.t() | atom(),
        optional("MaxRecords") => integer(),
        optional("TargetArn") => String.t() | atom()
      }
      
  """
  @type describe_inbound_integrations_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_workflow_run_response() :: %{
        "Run" => workflow_run()
      }
      
  """
  @type get_workflow_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      auto_data_quality() :: %{
        "EvaluationContext" => String.t() | atom(),
        "IsEnabled" => boolean()
      }
      
  """
  @type auto_data_quality() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_ml_task_runs_response() :: %{
        "NextToken" => String.t() | atom(),
        "TaskRuns" => list(task_run())
      }
      
  """
  @type get_ml_task_runs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      json_classifier() :: %{
        "CreationTime" => non_neg_integer(),
        "JsonPath" => String.t() | atom(),
        "LastUpdated" => non_neg_integer(),
        "Name" => String.t() | atom(),
        "Version" => float()
      }
      
  """
  @type json_classifier() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_crawler_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type start_crawler_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_column_statistics_task_settings_response() :: %{}
      
  """
  @type delete_column_statistics_task_settings_response() :: %{}

  @typedoc """

  ## Example:
      
      delete_attachment_response() :: %{
        "AssetIdentifier" => String.t() | atom()
      }
      
  """
  @type delete_attachment_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      connector_authentication_configuration() :: %{
        "AuthenticationTypes" => list(list(any())()),
        "BasicAuthenticationProperties" => basic_authentication_properties(),
        "CustomAuthenticationProperties" => custom_authentication_properties(),
        "OAuth2Properties" => connector_o_auth2_properties()
      }
      
  """
  @type connector_authentication_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      integration_config() :: %{
        "ContinuousSync" => boolean(),
        "RefreshInterval" => String.t() | atom(),
        "SourceProperties" => map()
      }
      
  """
  @type integration_config() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_schema_version_response() :: %{
        "CreatedTime" => String.t() | atom(),
        "DataFormat" => list(any()),
        "SchemaArn" => String.t() | atom(),
        "SchemaDefinition" => String.t() | atom(),
        "SchemaVersionId" => String.t() | atom(),
        "Status" => list(any()),
        "VersionNumber" => float()
      }
      
  """
  @type get_schema_version_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      microsoft_s_q_l_server_catalog_target() :: %{
        "Database" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "Table" => String.t() | atom()
      }
      
  """
  @type microsoft_s_q_l_server_catalog_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      validation_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type validation_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_custom_entity_type_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type delete_custom_entity_type_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      partition_input() :: %{
        "LastAccessTime" => non_neg_integer(),
        "LastAnalyzedTime" => non_neg_integer(),
        "Parameters" => map(),
        "StorageDescriptor" => storage_descriptor(),
        "Values" => list(String.t() | atom())
      }
      
  """
  @type partition_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_column_statistics_for_partition_response() :: %{
        "Errors" => list(column_statistics_error())
      }
      
  """
  @type update_column_statistics_for_partition_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      operation_not_supported_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type operation_not_supported_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      datapoint_inclusion_annotation() :: %{
        "InclusionAnnotation" => list(any()),
        "ProfileId" => String.t() | atom(),
        "StatisticId" => String.t() | atom()
      }
      
  """
  @type datapoint_inclusion_annotation() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_tags_request() :: %{
        required("ResourceArn") => String.t() | atom()
      }
      
  """
  @type get_tags_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      custom_entity_type() :: %{
        "ContextWords" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "RegexString" => String.t() | atom()
      }
      
  """
  @type custom_entity_type() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_dev_endpoint_response() :: %{}
      
  """
  @type update_dev_endpoint_response() :: %{}

  @typedoc """

  ## Example:
      
      update_glossary_term_response() :: %{
        "GlossaryId" => String.t() | atom(),
        "Id" => String.t() | atom(),
        "LongDescription" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "ShortDescription" => String.t() | atom()
      }
      
  """
  @type update_glossary_term_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      describe_integrations_response() :: %{
        "Integrations" => list(integration()),
        "Marker" => String.t() | atom()
      }
      
  """
  @type describe_integrations_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_entities_response() :: %{
        "Entities" => list(entity()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_entities_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_blueprint_run_request() :: %{
        required("BlueprintName") => String.t() | atom(),
        required("RunId") => String.t() | atom()
      }
      
  """
  @type get_blueprint_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_ml_transforms_request() :: %{
        optional("Filter") => transform_filter_criteria(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("Sort") => transform_sort_criteria(),
        optional("Tags") => map()
      }
      
  """
  @type list_ml_transforms_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_table_request() :: %{
        optional("AttributesToGet") => list(list(any())()),
        optional("AuditContext") => audit_context(),
        optional("CatalogId") => String.t() | atom(),
        optional("IncludeStatusDetails") => boolean(),
        optional("QueryAsOfTime") => non_neg_integer(),
        optional("TransactionId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type get_table_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_metric_values() :: %{
        "ActualValue" => float(),
        "ExpectedValue" => float(),
        "LowerLimit" => float(),
        "UpperLimit" => float()
      }
      
  """
  @type data_quality_metric_values() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_registry_input() :: %{
        optional("Description") => String.t() | atom(),
        optional("Tags") => map(),
        required("RegistryName") => String.t() | atom()
      }
      
  """
  @type create_registry_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      column_statistics_task_running_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type column_statistics_task_running_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_crawler_schedule_request() :: %{
        required("CrawlerName") => String.t() | atom()
      }
      
  """
  @type stop_crawler_schedule_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_tables_request() :: %{
        optional("AttributesToGet") => list(list(any())()),
        optional("AuditContext") => audit_context(),
        optional("CatalogId") => String.t() | atom(),
        optional("Expression") => String.t() | atom(),
        optional("IncludeStatusDetails") => boolean(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("QueryAsOfTime") => non_neg_integer(),
        optional("TransactionId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom()
      }
      
  """
  @type get_tables_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      schema_column() :: %{
        "DataType" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type schema_column() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_crawler_response() :: %{}
      
  """
  @type update_crawler_response() :: %{}

  @typedoc """

  ## Example:
      
      connector_data_source() :: %{
        "ConnectionType" => String.t() | atom(),
        "Data" => map(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema())
      }
      
  """
  @type connector_data_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_blueprint_request() :: %{
        optional("Description") => String.t() | atom(),
        optional("Tags") => map(),
        required("BlueprintLocation") => String.t() | atom(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type create_blueprint_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_blueprint_run_response() :: %{
        "RunId" => String.t() | atom()
      }
      
  """
  @type start_blueprint_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      test_connection_input() :: %{
        "AuthenticationConfiguration" => authentication_configuration_input(),
        "ConnectionProperties" => map(),
        "ConnectionType" => list(any())
      }
      
  """
  @type test_connection_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      statement_output_data() :: %{
        "TextPlain" => String.t() | atom()
      }
      
  """
  @type statement_output_data() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_entity_records_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("ConnectionName") => String.t() | atom(),
        optional("ConnectionOptions") => map(),
        optional("DataStoreApiVersion") => String.t() | atom(),
        optional("FilterPredicate") => String.t() | atom(),
        optional("NextToken") => String.t() | atom(),
        optional("OrderBy") => [String.t() | atom()],
        optional("SelectedFields") => list(String.t() | atom()),
        required("EntityName") => String.t() | atom(),
        required("Limit") => float()
      }
      
  """
  @type get_entity_records_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_classifier_response() :: %{}
      
  """
  @type update_classifier_response() :: %{}

  @typedoc """

  ## Example:
      
      capabilities() :: %{
        "SupportedAuthenticationTypes" => list(list(any())()),
        "SupportedComputeEnvironments" => list(list(any())()),
        "SupportedDataOperations" => list(list(any())())
      }
      
  """
  @type capabilities() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      form_type_item() :: %{
        "Id" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type form_type_item() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      describe_integrations_request() :: %{
        optional("Filters") => list(integration_filter()),
        optional("IntegrationIdentifier") => String.t() | atom(),
        optional("Marker") => String.t() | atom(),
        optional("MaxRecords") => integer()
      }
      
  """
  @type describe_integrations_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_glossary_request() :: %{
        optional("ClientToken") => String.t() | atom(),
        optional("Description") => String.t() | atom(),
        optional("Name") => String.t() | atom()
      }
      
  """
  @type update_glossary_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_dev_endpoint_request() :: %{
        optional("Arguments") => map(),
        optional("ExtraJarsS3Path") => String.t() | atom(),
        optional("ExtraPythonLibsS3Path") => String.t() | atom(),
        optional("GlueVersion") => String.t() | atom(),
        optional("NumberOfNodes") => integer(),
        optional("NumberOfWorkers") => integer(),
        optional("PublicKey") => String.t() | atom(),
        optional("PublicKeys") => list(String.t() | atom()),
        optional("SecurityConfiguration") => String.t() | atom(),
        optional("SecurityGroupIds") => list(String.t() | atom()),
        optional("SubnetId") => String.t() | atom(),
        optional("Tags") => map(),
        optional("WorkerType") => list(any()),
        required("EndpointName") => String.t() | atom(),
        required("RoleArn") => String.t() | atom()
      }
      
  """
  @type create_dev_endpoint_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_usage_profiles_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type list_usage_profiles_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_blueprint_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type create_blueprint_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_rule_recommendation_run_filter() :: %{
        "DataSource" => data_source(),
        "StartedAfter" => non_neg_integer(),
        "StartedBefore" => non_neg_integer()
      }
      
  """
  @type data_quality_rule_recommendation_run_filter() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_ml_transform_response() :: %{
        "TransformId" => String.t() | atom()
      }
      
  """
  @type delete_ml_transform_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_workflow_run_properties_request() :: %{
        required("Name") => String.t() | atom(),
        required("RunId") => String.t() | atom()
      }
      
  """
  @type get_workflow_run_properties_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      hudi_target() :: %{
        "ConnectionName" => String.t() | atom(),
        "Exclusions" => list(String.t() | atom()),
        "MaximumTraversalDepth" => integer(),
        "Paths" => list(String.t() | atom())
      }
      
  """
  @type hudi_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_security_configuration_response() :: %{
        "SecurityConfiguration" => security_configuration()
      }
      
  """
  @type get_security_configuration_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_crawler_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type stop_crawler_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_custom_entity_type_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type create_custom_entity_type_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_workflow_runs_response() :: %{
        "NextToken" => String.t() | atom(),
        "Runs" => list(workflow_run())
      }
      
  """
  @type get_workflow_runs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_materialized_view_refresh_task_run_request() :: %{
        required("CatalogId") => String.t() | atom(),
        required("MaterializedViewRefreshTaskRunId") => String.t() | atom()
      }
      
  """
  @type get_materialized_view_refresh_task_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_table_optimizer_response() :: %{}
      
  """
  @type delete_table_optimizer_response() :: %{}

  @typedoc """

  ## Example:
      
      update_connection_response() :: %{}
      
  """
  @type update_connection_response() :: %{}

  @typedoc """

  ## Example:
      
      timestamped_inclusion_annotation() :: %{
        "LastModifiedOn" => non_neg_integer(),
        "Value" => list(any())
      }
      
  """
  @type timestamped_inclusion_annotation() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      search_assets_output() :: %{
        "Items" => list(search_result_item()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type search_assets_output() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      search_tables_response() :: %{
        "NextToken" => String.t() | atom(),
        "TableList" => list(table())
      }
      
  """
  @type search_tables_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_data_quality_rule_recommendation_run_request() :: %{
        required("RunId") => String.t() | atom()
      }
      
  """
  @type get_data_quality_rule_recommendation_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_resource_policy_request() :: %{
        optional("ResourceArn") => String.t() | atom()
      }
      
  """
  @type get_resource_policy_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_table_response() :: %{}
      
  """
  @type delete_table_response() :: %{}

  @typedoc """

  ## Example:
      
      get_blueprint_request() :: %{
        optional("IncludeBlueprint") => boolean(),
        optional("IncludeParameterSpec") => boolean(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type get_blueprint_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_table_optimizer_request() :: %{
        required("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom(),
        required("TableOptimizerConfiguration") => table_optimizer_configuration(),
        required("Type") => list(any())
      }
      
  """
  @type create_table_optimizer_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_trigger_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type create_trigger_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_job_from_source_control_request() :: %{
        optional("AuthStrategy") => list(any()),
        optional("AuthToken") => String.t() | atom(),
        optional("BranchName") => String.t() | atom(),
        optional("CommitId") => String.t() | atom(),
        optional("Folder") => String.t() | atom(),
        optional("JobName") => String.t() | atom(),
        optional("Provider") => list(any()),
        optional("RepositoryName") => String.t() | atom(),
        optional("RepositoryOwner") => String.t() | atom()
      }
      
  """
  @type update_job_from_source_control_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      offset_configuration() :: %{
        "LimitParameter" => extracted_parameter(),
        "OffsetParameter" => extracted_parameter()
      }
      
  """
  @type offset_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      redshift_source() :: %{
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "RedshiftTmpDir" => String.t() | atom(),
        "Table" => String.t() | atom(),
        "TmpDirIAMRole" => String.t() | atom()
      }
      
  """
  @type redshift_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_stop_job_run_successful_submission() :: %{
        "JobName" => String.t() | atom(),
        "JobRunId" => String.t() | atom()
      }
      
  """
  @type batch_stop_job_run_successful_submission() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_custom_entity_types_request() :: %{
        required("Names") => list(String.t() | atom())
      }
      
  """
  @type batch_get_custom_entity_types_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_dataflow_graph_response() :: %{
        "DagEdges" => list(code_gen_edge()),
        "DagNodes" => list(code_gen_node())
      }
      
  """
  @type get_dataflow_graph_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_form_types_response() :: %{
        "Items" => list(form_type_item()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_form_types_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_workflow_run_response() :: %{}
      
  """
  @type stop_workflow_run_response() :: %{}

  @typedoc """

  ## Example:
      
      statistic_annotation() :: %{
        "InclusionAnnotation" => timestamped_inclusion_annotation(),
        "ProfileId" => String.t() | atom(),
        "StatisticId" => String.t() | atom(),
        "StatisticRecordedOn" => non_neg_integer()
      }
      
  """
  @type statistic_annotation() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_compaction_configuration() :: %{
        "deleteFileThreshold" => integer(),
        "minInputFiles" => integer(),
        "strategy" => list(any())
      }
      
  """
  @type iceberg_compaction_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      invalid_integration_state_fault() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type invalid_integration_state_fault() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      integration_resource_property() :: %{
        "ResourceArn" => String.t() | atom(),
        "ResourcePropertyArn" => String.t() | atom(),
        "SourceProcessingProperties" => source_processing_properties(),
        "TargetProcessingProperties" => target_processing_properties()
      }
      
  """
  @type integration_resource_property() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_ml_task_runs_request() :: %{
        optional("Filter") => task_run_filter_criteria(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("Sort") => task_run_sort_criteria(),
        required("TransformId") => String.t() | atom()
      }
      
  """
  @type get_ml_task_runs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_source() :: %{
        "DataQualityGlueTable" => data_quality_glue_table(),
        "GlueTable" => glue_table()
      }
      
  """
  @type data_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_target() :: %{
        "ConnectionName" => String.t() | atom(),
        "DlqEventQueueArn" => String.t() | atom(),
        "EventQueueArn" => String.t() | atom(),
        "Exclusions" => list(String.t() | atom()),
        "Path" => String.t() | atom(),
        "SampleSize" => integer()
      }
      
  """
  @type s3_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      blueprint_details() :: %{
        "BlueprintName" => String.t() | atom(),
        "RunId" => String.t() | atom()
      }
      
  """
  @type blueprint_details() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_connection_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("Tags") => map(),
        required("ConnectionInput") => connection_input()
      }
      
  """
  @type create_connection_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      integration_not_found_fault() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type integration_not_found_fault() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_catalog_delta_source() :: %{
        "AdditionalDeltaOptions" => map(),
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "Table" => String.t() | atom()
      }
      
  """
  @type s3_catalog_delta_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      mapping_entry() :: %{
        "SourcePath" => String.t() | atom(),
        "SourceTable" => String.t() | atom(),
        "SourceType" => String.t() | atom(),
        "TargetPath" => String.t() | atom(),
        "TargetTable" => String.t() | atom(),
        "TargetType" => String.t() | atom()
      }
      
  """
  @type mapping_entry() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      event_batching_condition() :: %{
        "BatchSize" => integer(),
        "BatchWindow" => integer()
      }
      
  """
  @type event_batching_condition() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_table_response() :: %{}
      
  """
  @type create_table_response() :: %{}

  @typedoc """

  ## Example:
      
      create_glossary_request() :: %{
        optional("ClientToken") => String.t() | atom(),
        optional("Description") => String.t() | atom(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type create_glossary_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_data_quality_statistic_annotations_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("ProfileId") => String.t() | atom(),
        optional("StatisticId") => String.t() | atom(),
        optional("TimestampFilter") => timestamp_filter()
      }
      
  """
  @type list_data_quality_statistic_annotations_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_workflow_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type create_workflow_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_column_statistics_task_runs_response() :: %{
        "ColumnStatisticsTaskRunIds" => list(String.t() | atom()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_column_statistics_task_runs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      register_connection_type_response() :: %{
        "ConnectionTypeArn" => String.t() | atom()
      }
      
  """
  @type register_connection_type_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_target_table() :: %{
        "CatalogId" => String.t() | atom(),
        "DatabaseName" => String.t() | atom(),
        "TableName" => String.t() | atom()
      }
      
  """
  @type data_quality_target_table() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      sort_criterion() :: %{
        "FieldName" => String.t() | atom(),
        "Sort" => list(any())
      }
      
  """
  @type sort_criterion() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_partition_indexes_response() :: %{
        "NextToken" => String.t() | atom(),
        "PartitionIndexDescriptorList" => list(partition_index_descriptor())
      }
      
  """
  @type get_partition_indexes_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_hudi_catalog_target() :: %{
        "AdditionalOptions" => map(),
        "AutoDataQuality" => auto_data_quality(),
        "Database" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "PartitionKeys" => list(list(String.t() | atom())()),
        "SchemaChangePolicy" => catalog_schema_change_policy(),
        "Table" => String.t() | atom()
      }
      
  """
  @type s3_hudi_catalog_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_partitions_request() :: %{
        optional("AuditContext") => audit_context(),
        optional("CatalogId") => String.t() | atom(),
        optional("ExcludeColumnSchema") => boolean(),
        optional("Expression") => String.t() | atom(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("QueryAsOfTime") => non_neg_integer(),
        optional("Segment") => segment(),
        optional("TransactionId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type get_partitions_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      property_predicate() :: %{
        "Comparator" => list(any()),
        "Key" => String.t() | atom(),
        "Value" => String.t() | atom()
      }
      
  """
  @type property_predicate() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_schema_version_input() :: %{
        optional("SchemaId") => schema_id(),
        optional("SchemaVersionId") => String.t() | atom(),
        optional("SchemaVersionNumber") => schema_version_number()
      }
      
  """
  @type get_schema_version_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_custom_entity_type_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type delete_custom_entity_type_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_column_statistics_task_runs_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type get_column_statistics_task_runs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_integration_resource_property_request() :: %{
        required("ResourceArn") => String.t() | atom()
      }
      
  """
  @type get_integration_resource_property_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_job_bookmark_response() :: %{
        "JobBookmarkEntry" => job_bookmark_entry()
      }
      
  """
  @type get_job_bookmark_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_workflow_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type delete_workflow_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      authorization_code_properties() :: %{
        "AuthorizationCode" => String.t() | atom(),
        "RedirectUri" => String.t() | atom()
      }
      
  """
  @type authorization_code_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_data_quality_ruleset_evaluation_run_request() :: %{
        required("RunId") => String.t() | atom()
      }
      
  """
  @type get_data_quality_ruleset_evaluation_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      internal_server_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type internal_server_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_registry_response() :: %{
        "RegistryArn" => String.t() | atom(),
        "RegistryName" => String.t() | atom()
      }
      
  """
  @type update_registry_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      already_exists_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type already_exists_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      code_gen_configuration_node() :: %{
        "S3HudiDirectTarget" => s3_hudi_direct_target(),
        "ConnectorDataSource" => connector_data_source(),
        "S3IcebergDirectTarget" => s3_iceberg_direct_target(),
        "DirectKinesisSource" => direct_kinesis_source(),
        "ConnectorDataTarget" => connector_data_target(),
        "S3CatalogDeltaSource" => s3_catalog_delta_source(),
        "EvaluateDataQuality" => evaluate_data_quality(),
        "Recipe" => recipe(),
        "PostgreSQLCatalogTarget" => postgre_s_q_l_catalog_target(),
        "SnowflakeTarget" => snowflake_target(),
        "S3DeltaSource" => s3_delta_source(),
        "MicrosoftSQLServerCatalogSource" => microsoft_s_q_l_server_catalog_source(),
        "S3GlueParquetTarget" => s3_glue_parquet_target(),
        "S3CatalogHudiSource" => s3_catalog_hudi_source(),
        "JDBCConnectorTarget" => j_db_c_connector_target(),
        "DropFields" => drop_fields(),
        "PIIDetection" => p_i_idetection(),
        "Spigot" => spigot(),
        "RenameField" => rename_field(),
        "S3HudiCatalogTarget" => s3_hudi_catalog_target(),
        "CatalogSource" => catalog_source(),
        "GovernedCatalogSource" => governed_catalog_source(),
        "CatalogHudiSource" => catalog_hudi_source(),
        "FillMissingValues" => fill_missing_values(),
        "DynamoDBELTConnectorSource" => dynamo_db_e_l_t_connector_source(),
        "CatalogIcebergSource" => catalog_iceberg_source(),
        "CatalogKafkaSource" => catalog_kafka_source(),
        "RedshiftSource" => redshift_source(),
        "SparkConnectorSource" => spark_connector_source(),
        "S3DeltaCatalogTarget" => s3_delta_catalog_target(),
        "EvaluateDataQualityMultiFrame" => evaluate_data_quality_multi_frame(),
        "SparkSQL" => spark_s_q_l(),
        "Union" => union(),
        "Merge" => merge(),
        "SnowflakeSource" => snowflake_source(),
        "Join" => join(),
        "DirectKafkaSource" => direct_kafka_source(),
        "S3IcebergCatalogTarget" => s3_iceberg_catalog_target(),
        "Aggregate" => aggregate(),
        "RedshiftTarget" => redshift_target(),
        "CatalogTarget" => basic_catalog_target(),
        "S3CatalogTarget" => s3_catalog_target(),
        "DropNullFields" => drop_null_fields(),
        "ApplyMapping" => apply_mapping(),
        "DirectJDBCSource" => direct_j_db_c_source(),
        "S3DirectTarget" => s3_direct_target(),
        "S3HudiSource" => s3_hudi_source(),
        "RelationalCatalogSource" => relational_catalog_source(),
        "PostgreSQLCatalogSource" => postgre_s_q_l_catalog_source(),
        "OracleSQLCatalogTarget" => oracle_s_q_l_catalog_target(),
        "OracleSQLCatalogSource" => oracle_s_q_l_catalog_source(),
        "SplitFields" => split_fields(),
        "MySQLCatalogSource" => my_s_q_l_catalog_source(),
        "AthenaConnectorSource" => athena_connector_source(),
        "S3CatalogSource" => s3_catalog_source(),
        "JDBCConnectorSource" => j_db_c_connector_source(),
        "DynamicTransform" => dynamic_transform(),
        "CustomCode" => custom_code(),
        "AmazonRedshiftTarget" => amazon_redshift_target(),
        "S3JsonSource" => s3_json_source(),
        "MySQLCatalogTarget" => my_s_q_l_catalog_target(),
        "AmazonRedshiftSource" => amazon_redshift_source(),
        "DynamoDBCatalogSource" => dynamo_db_catalog_source(),
        "S3DeltaDirectTarget" => s3_delta_direct_target(),
        "Filter" => filter(),
        "S3CsvSource" => s3_csv_source(),
        "CatalogDeltaSource" => catalog_delta_source(),
        "S3ExcelSource" => s3_excel_source(),
        "Route" => route(),
        "SelectFromCollection" => select_from_collection(),
        "S3CatalogIcebergSource" => s3_catalog_iceberg_source(),
        "SparkConnectorTarget" => spark_connector_target(),
        "CatalogKinesisSource" => catalog_kinesis_source(),
        "MicrosoftSQLServerCatalogTarget" => microsoft_s_q_l_server_catalog_target(),
        "DropDuplicates" => drop_duplicates(),
        "S3HyperDirectTarget" => s3_hyper_direct_target(),
        "SelectFields" => select_fields(),
        "S3ParquetSource" => s3_parquet_source(),
        "GovernedCatalogTarget" => governed_catalog_target()
      }
      
  """
  @type code_gen_configuration_node() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      schema_list_item() :: %{
        "CreatedTime" => String.t() | atom(),
        "Description" => String.t() | atom(),
        "RegistryName" => String.t() | atom(),
        "SchemaArn" => String.t() | atom(),
        "SchemaName" => String.t() | atom(),
        "SchemaStatus" => list(any()),
        "UpdatedTime" => String.t() | atom()
      }
      
  """
  @type schema_list_item() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      amazon_redshift_node_data() :: %{
        "AccessType" => String.t() | atom(),
        "Action" => String.t() | atom(),
        "AdvancedOptions" => list(amazon_redshift_advanced_option()),
        "CatalogDatabase" => option(),
        "CatalogRedshiftSchema" => String.t() | atom(),
        "CatalogRedshiftTable" => String.t() | atom(),
        "CatalogTable" => option(),
        "Connection" => option(),
        "CrawlerConnection" => String.t() | atom(),
        "IamRole" => option(),
        "MergeAction" => String.t() | atom(),
        "MergeClause" => String.t() | atom(),
        "MergeWhenMatched" => String.t() | atom(),
        "MergeWhenNotMatched" => String.t() | atom(),
        "PostAction" => String.t() | atom(),
        "PreAction" => String.t() | atom(),
        "SampleQuery" => String.t() | atom(),
        "Schema" => option(),
        "SelectedColumns" => list(option()),
        "SourceType" => String.t() | atom(),
        "StagingTable" => String.t() | atom(),
        "Table" => option(),
        "TablePrefix" => String.t() | atom(),
        "TableSchema" => list(option()),
        "TempDir" => String.t() | atom(),
        "Upsert" => boolean()
      }
      
  """
  @type amazon_redshift_node_data() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_data_quality_rule_recommendation_run_response() :: %{
        "RunId" => String.t() | atom()
      }
      
  """
  @type start_data_quality_rule_recommendation_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_session_request() :: %{
        optional("Connections") => connections_list(),
        optional("DefaultArguments") => map(),
        optional("Description") => String.t() | atom(),
        optional("GlueVersion") => String.t() | atom(),
        optional("IdleTimeout") => integer(),
        optional("MaxCapacity") => float(),
        optional("NumberOfWorkers") => integer(),
        optional("RequestOrigin") => String.t() | atom(),
        optional("SecurityConfiguration") => String.t() | atom(),
        optional("SessionType") => list(any()),
        optional("Tags") => map(),
        optional("Timeout") => integer(),
        optional("WorkerType") => list(any()),
        required("Command") => session_command(),
        required("Id") => String.t() | atom(),
        required("Role") => String.t() | atom()
      }
      
  """
  @type create_session_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      illegal_workflow_state_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type illegal_workflow_state_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      reset_job_bookmark_response() :: %{
        "JobBookmarkEntry" => job_bookmark_entry()
      }
      
  """
  @type reset_job_bookmark_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_security_configuration_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type get_security_configuration_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      connection() :: %{
        "AthenaProperties" => map(),
        "AuthenticationConfiguration" => authentication_configuration(),
        "CompatibleComputeEnvironments" => list(list(any())()),
        "ConnectionProperties" => map(),
        "ConnectionSchemaVersion" => integer(),
        "ConnectionType" => list(any()),
        "CreationTime" => non_neg_integer(),
        "Description" => String.t() | atom(),
        "LastConnectionValidationTime" => non_neg_integer(),
        "LastUpdatedBy" => String.t() | atom(),
        "LastUpdatedTime" => non_neg_integer(),
        "MatchCriteria" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "PhysicalConnectionRequirements" => physical_connection_requirements(),
        "PythonProperties" => map(),
        "SparkProperties" => map(),
        "Status" => list(any()),
        "StatusReason" => String.t() | atom()
      }
      
  """
  @type connection() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_mapping_response() :: %{
        "Mapping" => list(mapping_entry())
      }
      
  """
  @type get_mapping_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      search_attribute_filter() :: %{
        "Attribute" => String.t() | atom(),
        "Operator" => list(any()),
        "Value" => list()
      }
      
  """
  @type search_attribute_filter() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_put_data_quality_statistic_annotation_request() :: %{
        optional("ClientToken") => String.t() | atom(),
        required("InclusionAnnotations") => list(datapoint_inclusion_annotation())
      }
      
  """
  @type batch_put_data_quality_statistic_annotation_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_schema_version_metadata_input() :: %{
        optional("SchemaId") => schema_id(),
        optional("SchemaVersionId") => String.t() | atom(),
        optional("SchemaVersionNumber") => schema_version_number(),
        required("MetadataKeyValue") => metadata_key_value_pair()
      }
      
  """
  @type put_schema_version_metadata_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      column() :: %{
        "Comment" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Parameters" => map(),
        "Type" => String.t() | atom()
      }
      
  """
  @type column() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_partition_index_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("IndexName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type delete_partition_index_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_trigger_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type stop_trigger_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_integration_response() :: %{
        "AdditionalEncryptionContext" => map(),
        "CreateTime" => non_neg_integer(),
        "DataFilter" => String.t() | atom(),
        "Description" => String.t() | atom(),
        "Errors" => list(integration_error()),
        "IntegrationArn" => String.t() | atom(),
        "IntegrationConfig" => integration_config(),
        "IntegrationName" => String.t() | atom(),
        "KmsKeyId" => String.t() | atom(),
        "SourceArn" => String.t() | atom(),
        "Status" => list(any()),
        "Tags" => list(tag()),
        "TargetArn" => String.t() | atom()
      }
      
  """
  @type create_integration_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      kinesis_streaming_source_options() :: %{
        "AddIdleTimeBetweenReads" => boolean(),
        "AddRecordTimestamp" => String.t() | atom(),
        "AvoidEmptyBatches" => boolean(),
        "Classification" => String.t() | atom(),
        "Delimiter" => String.t() | atom(),
        "DescribeShardInterval" => float(),
        "EmitConsumerLagMetrics" => String.t() | atom(),
        "EndpointUrl" => String.t() | atom(),
        "FanoutConsumerARN" => String.t() | atom(),
        "IdleTimeBetweenReadsInMs" => float(),
        "MaxFetchRecordsPerShard" => float(),
        "MaxFetchTimeInMs" => float(),
        "MaxRecordPerRead" => float(),
        "MaxRetryIntervalMs" => float(),
        "NumRetries" => integer(),
        "RetryIntervalMs" => float(),
        "RoleArn" => String.t() | atom(),
        "RoleSessionName" => String.t() | atom(),
        "StartingPosition" => list(any()),
        "StartingTimestamp" => non_neg_integer(),
        "StreamArn" => String.t() | atom(),
        "StreamName" => String.t() | atom()
      }
      
  """
  @type kinesis_streaming_source_options() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_usage_profile_response() :: %{}
      
  """
  @type delete_usage_profile_response() :: %{}

  @typedoc """

  ## Example:
      
      delete_integration_request() :: %{
        required("IntegrationIdentifier") => String.t() | atom()
      }
      
  """
  @type delete_integration_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_delete_partition_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("PartitionsToDelete") => list(partition_value_list()),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type batch_delete_partition_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      condition_expression() :: %{
        "Condition" => String.t() | atom(),
        "TargetColumn" => String.t() | atom(),
        "Value" => String.t() | atom()
      }
      
  """
  @type condition_expression() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      connection_properties_configuration() :: %{
        "AdditionalRequestParameters" => list(connector_property()),
        "Url" => connector_property()
      }
      
  """
  @type connection_properties_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      integration_partition() :: %{
        "ConversionSpec" => String.t() | atom(),
        "FieldName" => String.t() | atom(),
        "FunctionSpec" => String.t() | atom()
      }
      
  """
  @type integration_partition() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_catalog_response() :: %{}
      
  """
  @type delete_catalog_response() :: %{}

  @typedoc """

  ## Example:
      
      create_ml_transform_request() :: %{
        optional("Description") => String.t() | atom(),
        optional("GlueVersion") => String.t() | atom(),
        optional("MaxCapacity") => float(),
        optional("MaxRetries") => integer(),
        optional("NumberOfWorkers") => integer(),
        optional("Tags") => map(),
        optional("Timeout") => integer(),
        optional("TransformEncryption") => transform_encryption(),
        optional("WorkerType") => list(any()),
        required("InputRecordTables") => list(glue_table()),
        required("Name") => String.t() | atom(),
        required("Parameters") => transform_parameters(),
        required("Role") => String.t() | atom()
      }
      
  """
  @type create_ml_transform_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_table_versions_response() :: %{
        "NextToken" => String.t() | atom(),
        "TableVersions" => list(table_version())
      }
      
  """
  @type get_table_versions_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_integration_table_properties_response() :: %{
        "ResourceArn" => String.t() | atom(),
        "SourceTableConfig" => source_table_config(),
        "TableName" => String.t() | atom(),
        "TargetTableConfig" => target_table_config()
      }
      
  """
  @type get_integration_table_properties_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_data_quality_result_request() :: %{
        required("ResultIds") => list(String.t() | atom())
      }
      
  """
  @type batch_get_data_quality_result_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      compaction_configuration() :: %{
        "icebergConfiguration" => iceberg_compaction_configuration()
      }
      
  """
  @type compaction_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_partition_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("PartitionInput") => partition_input(),
        required("PartitionValueList") => list(String.t() | atom()),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type update_partition_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_form_type_request() :: %{}
      
  """
  @type get_form_type_request() :: %{}

  @typedoc """

  ## Example:
      
      import_catalog_to_glue_request() :: %{
        optional("CatalogId") => String.t() | atom()
      }
      
  """
  @type import_catalog_to_glue_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      column_statistics_error() :: %{
        "ColumnStatistics" => column_statistics(),
        "Error" => error_detail()
      }
      
  """
  @type column_statistics_error() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_usage_profile_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type delete_usage_profile_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      field_definition() :: %{
        "FieldDataType" => list(any()),
        "Name" => [String.t() | atom()]
      }
      
  """
  @type field_definition() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      resource_not_found_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type resource_not_found_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      basic_authentication_credentials() :: %{
        "Password" => String.t() | atom(),
        "Username" => String.t() | atom()
      }
      
  """
  @type basic_authentication_credentials() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_asset_type_response() :: %{
        "Forms" => map(),
        "Id" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type get_asset_type_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_ml_transform_response() :: %{
        "TransformId" => String.t() | atom()
      }
      
  """
  @type update_ml_transform_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      integration_conflict_operation_fault() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type integration_conflict_operation_fault() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_table_optimizer_response() :: %{
        "Failures" => list(batch_get_table_optimizer_error()),
        "TableOptimizers" => list(batch_table_optimizer())
      }
      
  """
  @type batch_get_table_optimizer_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_update_partition_request_entry() :: %{
        "PartitionInput" => partition_input(),
        "PartitionValueList" => list(String.t() | atom())
      }
      
  """
  @type batch_update_partition_request_entry() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_column_statistics_task_settings_response() :: %{
        "ColumnStatisticsTaskSettings" => column_statistics_task_settings()
      }
      
  """
  @type get_column_statistics_task_settings_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_asset_type_response() :: %{}
      
  """
  @type delete_asset_type_response() :: %{}

  @typedoc """

  ## Example:
      
      database_identifier() :: %{
        "CatalogId" => String.t() | atom(),
        "DatabaseName" => String.t() | atom(),
        "Region" => String.t() | atom()
      }
      
  """
  @type database_identifier() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_struct_field() :: %{
        "Doc" => String.t() | atom(),
        "Id" => integer(),
        "InitialDefault" => any(),
        "Name" => String.t() | atom(),
        "Required" => boolean(),
        "Type" => any(),
        "WriteDefault" => any()
      }
      
  """
  @type iceberg_struct_field() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_ml_labeling_set_generation_task_run_response() :: %{
        "TaskRunId" => String.t() | atom()
      }
      
  """
  @type start_ml_labeling_set_generation_task_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      crawler() :: %{
        "Classifiers" => list(String.t() | atom()),
        "Configuration" => String.t() | atom(),
        "CrawlElapsedTime" => float(),
        "CrawlerSecurityConfiguration" => String.t() | atom(),
        "CreationTime" => non_neg_integer(),
        "DatabaseName" => String.t() | atom(),
        "Description" => String.t() | atom(),
        "LakeFormationConfiguration" => lake_formation_configuration(),
        "LastCrawl" => last_crawl_info(),
        "LastUpdated" => non_neg_integer(),
        "LineageConfiguration" => lineage_configuration(),
        "Name" => String.t() | atom(),
        "RecrawlPolicy" => recrawl_policy(),
        "Role" => String.t() | atom(),
        "Schedule" => schedule(),
        "SchemaChangePolicy" => schema_change_policy(),
        "State" => list(any()),
        "TablePrefix" => String.t() | atom(),
        "Targets" => crawler_targets(),
        "Version" => float()
      }
      
  """
  @type crawler() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_entities_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("ConnectionName") => String.t() | atom(),
        optional("DataStoreApiVersion") => String.t() | atom(),
        optional("NextToken") => String.t() | atom(),
        optional("ParentEntityName") => String.t() | atom()
      }
      
  """
  @type list_entities_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_databases_response() :: %{
        "DatabaseList" => list(database()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type get_databases_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_integration_resource_property_response() :: %{}
      
  """
  @type delete_integration_resource_property_response() :: %{}

  @typedoc """

  ## Example:
      
      glossary_term_item() :: %{
        "Id" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "ShortDescription" => String.t() | atom()
      }
      
  """
  @type glossary_term_item() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      view_definition() :: %{
        "Definer" => String.t() | atom(),
        "IsProtected" => boolean(),
        "LastRefreshType" => list(any()),
        "RefreshSeconds" => float(),
        "Representations" => list(view_representation()),
        "SubObjectVersionIds" => list(float()),
        "SubObjects" => list(String.t() | atom()),
        "ViewVersionId" => float(),
        "ViewVersionToken" => String.t() | atom()
      }
      
  """
  @type view_definition() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      partition_value_list() :: %{
        "Values" => list(String.t() | atom())
      }
      
  """
  @type partition_value_list() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      search_sort() :: %{
        "Attribute" => String.t() | atom(),
        "Order" => list(any())
      }
      
  """
  @type search_sort() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_asset_types_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type list_asset_types_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_form_type_response() :: %{}
      
  """
  @type delete_form_type_response() :: %{}

  @typedoc """

  ## Example:
      
      batch_delete_table_version_response() :: %{
        "Errors" => list(table_version_error())
      }
      
  """
  @type batch_delete_table_version_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_data_quality_rule_recommendation_run_response() :: %{
        "CompletedOn" => non_neg_integer(),
        "CreatedRulesetName" => String.t() | atom(),
        "DataQualitySecurityConfiguration" => String.t() | atom(),
        "DataSource" => data_source(),
        "ErrorString" => String.t() | atom(),
        "ExecutionTime" => integer(),
        "LastModifiedOn" => non_neg_integer(),
        "NumberOfWorkers" => integer(),
        "RecommendedRuleset" => String.t() | atom(),
        "Role" => String.t() | atom(),
        "RunId" => String.t() | atom(),
        "StartedOn" => non_neg_integer(),
        "Status" => list(any()),
        "Timeout" => integer()
      }
      
  """
  @type get_data_quality_rule_recommendation_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      tag_resource_request() :: %{
        required("ResourceArn") => String.t() | atom(),
        required("TagsToAdd") => map()
      }
      
  """
  @type tag_resource_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_schema_input() :: %{
        optional("Compatibility") => list(any()),
        optional("Description") => String.t() | atom(),
        optional("SchemaVersionNumber") => schema_version_number(),
        required("SchemaId") => schema_id()
      }
      
  """
  @type update_schema_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_integration_table_properties_request() :: %{
        optional("SourceTableConfig") => source_table_config(),
        optional("TargetTableConfig") => target_table_config(),
        required("ResourceArn") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type create_integration_table_properties_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_dev_endpoint_response() :: %{}
      
  """
  @type delete_dev_endpoint_response() :: %{}

  @typedoc """

  ## Example:
      
      ml_transform_not_ready_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type ml_transform_not_ready_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      j_db_c_connector_options() :: %{
        "DataTypeMapping" => map(),
        "FilterPredicate" => String.t() | atom(),
        "JobBookmarkKeys" => list(String.t() | atom()),
        "JobBookmarkKeysSortOrder" => String.t() | atom(),
        "LowerBound" => float(),
        "NumPartitions" => float(),
        "PartitionColumn" => String.t() | atom(),
        "UpperBound" => float()
      }
      
  """
  @type j_db_c_connector_options() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_classifier_request() :: %{
        optional("CsvClassifier") => update_csv_classifier_request(),
        optional("GrokClassifier") => update_grok_classifier_request(),
        optional("JsonClassifier") => update_json_classifier_request(),
        optional("XMLClassifier") => update_x_ml_classifier_request()
      }
      
  """
  @type update_classifier_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_session_request() :: %{
        optional("RequestOrigin") => String.t() | atom(),
        required("Id") => String.t() | atom()
      }
      
  """
  @type stop_session_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_crawlers_response() :: %{
        "Crawlers" => list(crawler()),
        "CrawlersNotFound" => list(String.t() | atom())
      }
      
  """
  @type batch_get_crawlers_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_blueprint_runs_response() :: %{
        "BlueprintRuns" => list(blueprint_run()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type get_blueprint_runs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      transform_encryption() :: %{
        "MlUserDataEncryption" => ml_user_data_encryption(),
        "TaskRunSecurityConfigurationName" => String.t() | atom()
      }
      
  """
  @type transform_encryption() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_import_labels_task_run_request() :: %{
        optional("ReplaceAllLabels") => boolean(),
        required("InputS3Path") => String.t() | atom(),
        required("TransformId") => String.t() | atom()
      }
      
  """
  @type start_import_labels_task_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      custom_authentication_properties() :: %{
        "AuthenticationParameters" => list(connector_property())
      }
      
  """
  @type custom_authentication_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_unfiltered_partition_metadata_response() :: %{
        "AuthorizedColumns" => list(String.t() | atom()),
        "IsRegisteredWithLakeFormation" => boolean(),
        "Partition" => partition()
      }
      
  """
  @type get_unfiltered_partition_metadata_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_catalog_request() :: %{
        required("CatalogId") => String.t() | atom()
      }
      
  """
  @type get_catalog_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      statistic_model_result() :: %{
        "ActualValue" => float(),
        "Date" => non_neg_integer(),
        "InclusionAnnotation" => list(any()),
        "LowerBound" => float(),
        "PredictedValue" => float(),
        "UpperBound" => float()
      }
      
  """
  @type statistic_model_result() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_partition_indexes_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("NextToken") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type get_partition_indexes_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_glossary_response() :: %{
        "Description" => String.t() | atom(),
        "Id" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type get_glossary_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      column_statistics_data() :: %{
        "BinaryColumnStatisticsData" => binary_column_statistics_data(),
        "BooleanColumnStatisticsData" => boolean_column_statistics_data(),
        "DateColumnStatisticsData" => date_column_statistics_data(),
        "DecimalColumnStatisticsData" => decimal_column_statistics_data(),
        "DoubleColumnStatisticsData" => double_column_statistics_data(),
        "LongColumnStatisticsData" => long_column_statistics_data(),
        "StringColumnStatisticsData" => string_column_statistics_data(),
        "Type" => list(any())
      }
      
  """
  @type column_statistics_data() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_create_partition_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("PartitionInputList") => list(partition_input()),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type batch_create_partition_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      last_crawl_info() :: %{
        "ErrorMessage" => String.t() | atom(),
        "LogGroup" => String.t() | atom(),
        "LogStream" => String.t() | atom(),
        "MessagePrefix" => String.t() | atom(),
        "StartTime" => non_neg_integer(),
        "Status" => list(any())
      }
      
  """
  @type last_crawl_info() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      import_labels_task_run_properties() :: %{
        "InputS3Path" => String.t() | atom(),
        "Replace" => boolean()
      }
      
  """
  @type import_labels_task_run_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_session_request() :: %{
        optional("RequestOrigin") => String.t() | atom(),
        required("Id") => String.t() | atom()
      }
      
  """
  @type get_session_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_tables_response() :: %{
        "NextToken" => String.t() | atom(),
        "TableList" => list(table())
      }
      
  """
  @type get_tables_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      job_command() :: %{
        "Name" => String.t() | atom(),
        "PythonVersion" => String.t() | atom(),
        "Runtime" => String.t() | atom(),
        "ScriptLocation" => String.t() | atom()
      }
      
  """
  @type job_command() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      entity() :: %{
        "Category" => String.t() | atom(),
        "CustomProperties" => map(),
        "Description" => String.t() | atom(),
        "EntityName" => String.t() | atom(),
        "IsParentEntity" => boolean(),
        "Label" => String.t() | atom()
      }
      
  """
  @type entity() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      date_column_statistics_data() :: %{
        "MaximumValue" => non_neg_integer(),
        "MinimumValue" => non_neg_integer(),
        "NumberOfDistinctValues" => float(),
        "NumberOfNulls" => float()
      }
      
  """
  @type date_column_statistics_data() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_jobs_response() :: %{
        "JobNames" => list(String.t() | atom()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_jobs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_schema_response() :: %{
        "Compatibility" => list(any()),
        "DataFormat" => list(any()),
        "Description" => String.t() | atom(),
        "LatestSchemaVersion" => float(),
        "NextSchemaVersion" => float(),
        "RegistryArn" => String.t() | atom(),
        "RegistryName" => String.t() | atom(),
        "SchemaArn" => String.t() | atom(),
        "SchemaCheckpoint" => float(),
        "SchemaName" => String.t() | atom(),
        "SchemaStatus" => list(any()),
        "SchemaVersionId" => String.t() | atom(),
        "SchemaVersionStatus" => list(any()),
        "Tags" => map()
      }
      
  """
  @type create_schema_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      check_schema_version_validity_response() :: %{
        "Error" => String.t() | atom(),
        "Valid" => boolean()
      }
      
  """
  @type check_schema_version_validity_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      run_identifier() :: %{
        "JobRunId" => String.t() | atom(),
        "RunId" => String.t() | atom()
      }
      
  """
  @type run_identifier() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_job_request() :: %{
        required("JobName") => String.t() | atom()
      }
      
  """
  @type get_job_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_glossary_term_response() :: %{}
      
  """
  @type delete_glossary_term_response() :: %{}

  @typedoc """

  ## Example:
      
      s3_delta_direct_target() :: %{
        "AdditionalOptions" => map(),
        "AutoDataQuality" => auto_data_quality(),
        "Compression" => list(any()),
        "Format" => list(any()),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "NumberTargetPartitions" => String.t() | atom(),
        "PartitionKeys" => list(list(String.t() | atom())()),
        "Path" => String.t() | atom(),
        "SchemaChangePolicy" => direct_schema_change_policy()
      }
      
  """
  @type s3_delta_direct_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_json_source() :: %{
        "AdditionalOptions" => s3_direct_source_additional_options(),
        "CompressionType" => list(any()),
        "Exclusions" => list(String.t() | atom()),
        "GroupFiles" => String.t() | atom(),
        "GroupSize" => String.t() | atom(),
        "JsonPath" => String.t() | atom(),
        "MaxBand" => integer(),
        "MaxFilesInBand" => integer(),
        "Multiline" => boolean(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "Paths" => list(String.t() | atom()),
        "Recurse" => boolean()
      }
      
  """
  @type s3_json_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      glue_table() :: %{
        "AdditionalOptions" => map(),
        "CatalogId" => String.t() | atom(),
        "ConnectionName" => String.t() | atom(),
        "DatabaseName" => String.t() | atom(),
        "TableName" => String.t() | atom()
      }
      
  """
  @type glue_table() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      oracle_s_q_l_catalog_target() :: %{
        "Database" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "Table" => String.t() | atom()
      }
      
  """
  @type oracle_s_q_l_catalog_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      modify_integration_response() :: %{
        "AdditionalEncryptionContext" => map(),
        "CreateTime" => non_neg_integer(),
        "DataFilter" => String.t() | atom(),
        "Description" => String.t() | atom(),
        "Errors" => list(integration_error()),
        "IntegrationArn" => String.t() | atom(),
        "IntegrationConfig" => integration_config(),
        "IntegrationName" => String.t() | atom(),
        "KmsKeyId" => String.t() | atom(),
        "SourceArn" => String.t() | atom(),
        "Status" => list(any()),
        "Tags" => list(tag()),
        "TargetArn" => String.t() | atom()
      }
      
  """
  @type modify_integration_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_delete_connection_response() :: %{
        "Errors" => map(),
        "Succeeded" => list(String.t() | atom())
      }
      
  """
  @type batch_delete_connection_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_column_statistics_task_run_request() :: %{
        required("ColumnStatisticsTaskRunId") => String.t() | atom()
      }
      
  """
  @type get_column_statistics_task_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      d_db_e_l_t_catalog_additional_options() :: %{
        "DynamodbExport" => String.t() | atom(),
        "DynamodbUnnestDDBJson" => boolean()
      }
      
  """
  @type d_db_e_l_t_catalog_additional_options() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_schema_input() :: %{
        optional("Compatibility") => list(any()),
        optional("Description") => String.t() | atom(),
        optional("RegistryId") => registry_id(),
        optional("SchemaDefinition") => String.t() | atom(),
        optional("Tags") => map(),
        required("DataFormat") => list(any()),
        required("SchemaName") => String.t() | atom()
      }
      
  """
  @type create_schema_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      item_error() :: %{
        "Code" => String.t() | atom(),
        "ItemIdentifier" => String.t() | atom(),
        "Message" => String.t() | atom()
      }
      
  """
  @type item_error() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_column_statistics_for_table_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("ColumnName") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type delete_column_statistics_for_table_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_hudi_direct_target() :: %{
        "AdditionalOptions" => map(),
        "AutoDataQuality" => auto_data_quality(),
        "Compression" => list(any()),
        "Format" => list(any()),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "NumberTargetPartitions" => String.t() | atom(),
        "PartitionKeys" => list(list(String.t() | atom())()),
        "Path" => String.t() | atom(),
        "SchemaChangePolicy" => direct_schema_change_policy()
      }
      
  """
  @type s3_hudi_direct_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_security_configuration_response() :: %{
        "CreatedTimestamp" => non_neg_integer(),
        "Name" => String.t() | atom()
      }
      
  """
  @type create_security_configuration_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_integration_request() :: %{
        optional("AdditionalEncryptionContext") => map(),
        optional("DataFilter") => String.t() | atom(),
        optional("Description") => String.t() | atom(),
        optional("IntegrationConfig") => integration_config(),
        optional("KmsKeyId") => String.t() | atom(),
        optional("Tags") => list(tag()),
        required("IntegrationName") => String.t() | atom(),
        required("SourceArn") => String.t() | atom(),
        required("TargetArn") => String.t() | atom()
      }
      
  """
  @type create_integration_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      find_matches_parameters() :: %{
        "AccuracyCostTradeoff" => float(),
        "EnforceProvidedLabels" => boolean(),
        "PrecisionRecallTradeoff" => float(),
        "PrimaryKeyColumnName" => String.t() | atom()
      }
      
  """
  @type find_matches_parameters() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      cancel_statement_request() :: %{
        optional("RequestOrigin") => String.t() | atom(),
        required("Id") => integer(),
        required("SessionId") => String.t() | atom()
      }
      
  """
  @type cancel_statement_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_partition_response() :: %{
        "Partitions" => list(partition()),
        "UnprocessedKeys" => list(partition_value_list())
      }
      
  """
  @type batch_get_partition_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_glossary_term_response() :: %{
        "GlossaryId" => String.t() | atom(),
        "Id" => String.t() | atom(),
        "LongDescription" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "ShortDescription" => String.t() | atom()
      }
      
  """
  @type get_glossary_term_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      materialized_view_refresh_task_not_running_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type materialized_view_refresh_task_not_running_exception() :: %{
          (String.t() | atom()) => any()
        }

  @typedoc """

  ## Example:
      
      lineage_configuration() :: %{
        "CrawlerLineageSettings" => list(any())
      }
      
  """
  @type lineage_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_column_statistics_task_settings_request() :: %{
        optional("CatalogID") => String.t() | atom(),
        optional("ColumnNameList") => list(String.t() | atom()),
        optional("SampleSize") => float(),
        optional("Schedule") => String.t() | atom(),
        optional("SecurityConfiguration") => String.t() | atom(),
        optional("Tags") => map(),
        required("DatabaseName") => String.t() | atom(),
        required("Role") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type create_column_statistics_task_settings_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      query_session_context() :: %{
        "AdditionalContext" => map(),
        "ClusterId" => String.t() | atom(),
        "QueryAuthorizationId" => String.t() | atom(),
        "QueryId" => String.t() | atom(),
        "QueryStartTime" => non_neg_integer()
      }
      
  """
  @type query_session_context() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_update_partition_failure_entry() :: %{
        "ErrorDetail" => error_detail(),
        "PartitionValueList" => list(String.t() | atom())
      }
      
  """
  @type batch_update_partition_failure_entry() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      integration_filter() :: %{
        "Name" => String.t() | atom(),
        "Values" => list(String.t() | atom())
      }
      
  """
  @type integration_filter() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      workflow() :: %{
        "BlueprintDetails" => blueprint_details(),
        "CreatedOn" => non_neg_integer(),
        "DefaultRunProperties" => map(),
        "Description" => String.t() | atom(),
        "Graph" => workflow_graph(),
        "LastModifiedOn" => non_neg_integer(),
        "LastRun" => workflow_run(),
        "MaxConcurrentRuns" => integer(),
        "Name" => String.t() | atom()
      }
      
  """
  @type workflow() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_retention_metrics() :: %{
        "DpuHours" => float(),
        "JobDurationInHour" => float(),
        "NumberOfDataFilesDeleted" => float(),
        "NumberOfDpus" => integer(),
        "NumberOfManifestFilesDeleted" => float(),
        "NumberOfManifestListsDeleted" => float()
      }
      
  """
  @type iceberg_retention_metrics() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      tag_resource_response() :: %{}
      
  """
  @type tag_resource_response() :: %{}

  @typedoc """

  ## Example:
      
      list_glossaries_response() :: %{
        "Items" => list(glossary_item()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_glossaries_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_schema_version_metadata_response() :: %{
        "LatestVersion" => boolean(),
        "MetadataKey" => String.t() | atom(),
        "MetadataValue" => String.t() | atom(),
        "RegistryName" => String.t() | atom(),
        "SchemaArn" => String.t() | atom(),
        "SchemaName" => String.t() | atom(),
        "SchemaVersionId" => String.t() | atom(),
        "VersionNumber" => float()
      }
      
  """
  @type put_schema_version_metadata_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_catalog_source() :: %{
        "AdditionalOptions" => s3_source_additional_options(),
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "PartitionPredicate" => String.t() | atom(),
        "Table" => String.t() | atom()
      }
      
  """
  @type s3_catalog_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      compaction_metrics() :: %{
        "IcebergMetrics" => iceberg_compaction_metrics()
      }
      
  """
  @type compaction_metrics() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      concurrent_runs_exceeded_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type concurrent_runs_exceeded_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_connections_filter() :: %{
        "ConnectionSchemaVersion" => integer(),
        "ConnectionType" => list(any()),
        "MatchCriteria" => list(String.t() | atom())
      }
      
  """
  @type get_connections_filter() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_partition_index_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("PartitionIndex") => partition_index(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type create_partition_index_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_catalog_import_status_response() :: %{
        "ImportStatus" => catalog_import_status()
      }
      
  """
  @type get_catalog_import_status_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_glossary_terms_response() :: %{
        "Items" => list(glossary_term_item()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_glossary_terms_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_table_version_request() :: %{
        optional("AuditContext") => audit_context(),
        optional("CatalogId") => String.t() | atom(),
        optional("VersionId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type get_table_version_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_job_response() :: %{
        "Job" => job()
      }
      
  """
  @type get_job_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_workflow_request() :: %{
        optional("IncludeGraph") => boolean(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type get_workflow_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_delete_partition_response() :: %{
        "Errors" => list(partition_error())
      }
      
  """
  @type batch_delete_partition_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_iterable_forms_request() :: %{
        required("ItemIdentifiers") => list(String.t() | atom())
      }
      
  """
  @type batch_get_iterable_forms_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_input() :: %{
        "CreateIcebergTableInput" => create_iceberg_table_input(),
        "MetadataOperation" => list(any()),
        "Version" => String.t() | atom()
      }
      
  """
  @type iceberg_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_data_quality_ruleset_request() :: %{
        optional("Description") => String.t() | atom(),
        optional("Ruleset") => String.t() | atom(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type update_data_quality_ruleset_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      response_configuration() :: %{
        "ErrorPath" => String.t() | atom(),
        "ResultPath" => String.t() | atom()
      }
      
  """
  @type response_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_hyper_direct_target() :: %{
        "AutoDataQuality" => auto_data_quality(),
        "Compression" => list(any()),
        "Format" => list(any()),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "PartitionKeys" => list(list(String.t() | atom())()),
        "Path" => String.t() | atom(),
        "SchemaChangePolicy" => direct_schema_change_policy()
      }
      
  """
  @type s3_hyper_direct_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_asset_types_response() :: %{
        "Items" => list(asset_type_item()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_asset_types_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      column_statistics_task_not_running_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type column_statistics_task_not_running_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      drop_duplicates() :: %{
        "Columns" => list(list(String.t() | atom())()),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom()
      }
      
  """
  @type drop_duplicates() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_blueprint_run_request() :: %{
        optional("Parameters") => String.t() | atom(),
        required("BlueprintName") => String.t() | atom(),
        required("RoleArn") => String.t() | atom()
      }
      
  """
  @type start_blueprint_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_glue_table() :: %{
        "AdditionalOptions" => map(),
        "CatalogId" => String.t() | atom(),
        "ConnectionName" => String.t() | atom(),
        "DatabaseName" => String.t() | atom(),
        "PreProcessingQuery" => String.t() | atom(),
        "TableName" => String.t() | atom()
      }
      
  """
  @type data_quality_glue_table() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      schema_reference() :: %{
        "SchemaId" => schema_id(),
        "SchemaVersionId" => String.t() | atom(),
        "SchemaVersionNumber" => float()
      }
      
  """
  @type schema_reference() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_trigger_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type get_trigger_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_glue_parquet_target() :: %{
        "AutoDataQuality" => auto_data_quality(),
        "Compression" => list(any()),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "NumberTargetPartitions" => String.t() | atom(),
        "PartitionKeys" => list(list(String.t() | atom())()),
        "Path" => String.t() | atom(),
        "SchemaChangePolicy" => direct_schema_change_policy()
      }
      
  """
  @type s3_glue_parquet_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      transform_config_parameter() :: %{
        "IsOptional" => boolean(),
        "ListType" => list(any()),
        "Name" => String.t() | atom(),
        "Type" => list(any()),
        "ValidationMessage" => String.t() | atom(),
        "ValidationRule" => String.t() | atom(),
        "Value" => list(String.t() | atom())
      }
      
  """
  @type transform_config_parameter() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      split_fields() :: %{
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "Paths" => list(list(String.t() | atom())())
      }
      
  """
  @type split_fields() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      other_metadata_value_list_item() :: %{
        "CreatedTime" => String.t() | atom(),
        "MetadataValue" => String.t() | atom()
      }
      
  """
  @type other_metadata_value_list_item() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      session_command() :: %{
        "Name" => String.t() | atom(),
        "PythonVersion" => String.t() | atom()
      }
      
  """
  @type session_command() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_schema_versions_input() :: %{
        required("SchemaId") => schema_id(),
        required("Versions") => String.t() | atom()
      }
      
  """
  @type delete_schema_versions_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      amazon_redshift_target() :: %{
        "Data" => amazon_redshift_node_data(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom()
      }
      
  """
  @type amazon_redshift_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_workflow_run_properties_response() :: %{
        "RunProperties" => map()
      }
      
  """
  @type get_workflow_run_properties_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_column_statistics_task_run_response() :: %{}
      
  """
  @type stop_column_statistics_task_run_response() :: %{}

  @typedoc """

  ## Example:
      
      list_crawls_request() :: %{
        optional("Filters") => list(crawls_filter()),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        required("CrawlerName") => String.t() | atom()
      }
      
  """
  @type list_crawls_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_create_partition_response() :: %{
        "Errors" => list(partition_error())
      }
      
  """
  @type batch_create_partition_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      filter_expression() :: %{
        "Negated" => boolean(),
        "Operation" => list(any()),
        "Values" => list(filter_value())
      }
      
  """
  @type filter_expression() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_dev_endpoints_request() :: %{
        required("DevEndpointNames") => list(String.t() | atom())
      }
      
  """
  @type batch_get_dev_endpoints_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_trigger_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type delete_trigger_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_session_response() :: %{
        "Session" => session()
      }
      
  """
  @type get_session_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_table_response() :: %{
        "Table" => table()
      }
      
  """
  @type get_table_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      status_details() :: %{
        "RequestedChange" => table(),
        "ViewValidations" => list(view_validation())
      }
      
  """
  @type status_details() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_catalog_import_status_request() :: %{
        optional("CatalogId") => String.t() | atom()
      }
      
  """
  @type get_catalog_import_status_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      classifier() :: %{
        "CsvClassifier" => csv_classifier(),
        "GrokClassifier" => grok_classifier(),
        "JsonClassifier" => json_classifier(),
        "XMLClassifier" => x_ml_classifier()
      }
      
  """
  @type classifier() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_triggers_request() :: %{
        optional("DependentJobName") => String.t() | atom(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type get_triggers_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      cancel_statement_response() :: %{}
      
  """
  @type cancel_statement_response() :: %{}

  @typedoc """

  ## Example:
      
      put_form_type_request() :: %{
        optional("ClientToken") => String.t() | atom(),
        required("Name") => String.t() | atom(),
        required("Schema") => String.t() | atom()
      }
      
  """
  @type put_form_type_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      table_optimizer_configuration() :: %{
        "compactionConfiguration" => compaction_configuration(),
        "enabled" => boolean(),
        "orphanFileDeletionConfiguration" => orphan_file_deletion_configuration(),
        "retentionConfiguration" => retention_configuration(),
        "roleArn" => String.t() | atom(),
        "vpcConfiguration" => list()
      }
      
  """
  @type table_optimizer_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      glue_schema() :: %{
        "Columns" => list(glue_studio_schema_column())
      }
      
  """
  @type glue_schema() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_partition_response() :: %{}
      
  """
  @type update_partition_response() :: %{}

  @typedoc """

  ## Example:
      
      update_trigger_response() :: %{
        "Trigger" => trigger()
      }
      
  """
  @type update_trigger_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      compute_environment_configuration() :: %{
        "ComputeEnvironment" => list(any()),
        "ConnectionOptionNameOverrides" => map(),
        "ConnectionOptions" => map(),
        "ConnectionPropertiesRequiredOverrides" => list([String.t() | atom()]()),
        "ConnectionPropertyNameOverrides" => map(),
        "Description" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "PhysicalConnectionPropertiesRequired" => boolean(),
        "SupportedAuthenticationTypes" => list(list(any())())
      }
      
  """
  @type compute_environment_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      csv_classifier() :: %{
        "AllowSingleColumn" => boolean(),
        "ContainsHeader" => list(any()),
        "CreationTime" => non_neg_integer(),
        "CustomDatatypeConfigured" => boolean(),
        "CustomDatatypes" => list(String.t() | atom()),
        "Delimiter" => String.t() | atom(),
        "DisableValueTrimming" => boolean(),
        "Header" => list(String.t() | atom()),
        "LastUpdated" => non_neg_integer(),
        "Name" => String.t() | atom(),
        "QuoteSymbol" => String.t() | atom(),
        "Serde" => list(any()),
        "Version" => float()
      }
      
  """
  @type csv_classifier() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_glue_identity_center_configuration_response() :: %{
        "ApplicationArn" => String.t() | atom()
      }
      
  """
  @type create_glue_identity_center_configuration_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      query_schema_version_metadata_input() :: %{
        optional("MaxResults") => integer(),
        optional("MetadataList") => list(metadata_key_value_pair()),
        optional("NextToken") => String.t() | atom(),
        optional("SchemaId") => schema_id(),
        optional("SchemaVersionId") => String.t() | atom(),
        optional("SchemaVersionNumber") => schema_version_number()
      }
      
  """
  @type query_schema_version_metadata_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      relational_catalog_source() :: %{
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Table" => String.t() | atom()
      }
      
  """
  @type relational_catalog_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_column_statistics_for_table_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("ColumnStatisticsList") => list(column_statistics()),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type update_column_statistics_for_table_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_job_runs_response() :: %{
        "JobRuns" => list(job_run()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type get_job_runs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      conflict_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type conflict_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      kafka_streaming_source_options() :: %{
        "AddRecordTimestamp" => String.t() | atom(),
        "Assign" => String.t() | atom(),
        "BootstrapServers" => String.t() | atom(),
        "Classification" => String.t() | atom(),
        "ConnectionName" => String.t() | atom(),
        "Delimiter" => String.t() | atom(),
        "EmitConsumerLagMetrics" => String.t() | atom(),
        "EndingOffsets" => String.t() | atom(),
        "IncludeHeaders" => boolean(),
        "MaxOffsetsPerTrigger" => float(),
        "MinPartitions" => integer(),
        "NumRetries" => integer(),
        "PollTimeoutMs" => float(),
        "RetryIntervalMs" => float(),
        "SecurityProtocol" => String.t() | atom(),
        "StartingOffsets" => String.t() | atom(),
        "StartingTimestamp" => non_neg_integer(),
        "SubscribePattern" => String.t() | atom(),
        "TopicName" => String.t() | atom()
      }
      
  """
  @type kafka_streaming_source_options() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      run_metrics() :: %{
        "JobDurationInHour" => String.t() | atom(),
        "NumberOfBytesCompacted" => String.t() | atom(),
        "NumberOfDpus" => String.t() | atom(),
        "NumberOfFilesCompacted" => String.t() | atom()
      }
      
  """
  @type run_metrics() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_integration_table_properties_response() :: %{}
      
  """
  @type create_integration_table_properties_response() :: %{}

  @typedoc """

  ## Example:
      
      check_schema_version_validity_input() :: %{
        required("DataFormat") => list(any()),
        required("SchemaDefinition") => String.t() | atom()
      }
      
  """
  @type check_schema_version_validity_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_schema_input() :: %{
        required("SchemaId") => schema_id()
      }
      
  """
  @type get_schema_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      kms_key_not_accessible_fault() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type kms_key_not_accessible_fault() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      source_table_config() :: %{
        "Fields" => list(String.t() | atom()),
        "FilterPredicate" => String.t() | atom(),
        "PrimaryKey" => list(String.t() | atom()),
        "RecordUpdateField" => String.t() | atom()
      }
      
  """
  @type source_table_config() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      connection_type_variant() :: %{
        "ConnectionTypeVariantName" => String.t() | atom(),
        "Description" => String.t() | atom(),
        "DisplayName" => String.t() | atom(),
        "LogoUrl" => String.t() | atom()
      }
      
  """
  @type connection_type_variant() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      illegal_session_state_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type illegal_session_state_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      catalog_source() :: %{
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "PartitionPredicate" => String.t() | atom(),
        "Table" => String.t() | atom()
      }
      
  """
  @type catalog_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      evaluate_data_quality_multi_frame() :: %{
        "AdditionalDataSources" => map(),
        "AdditionalOptions" => map(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "PublishingOptions" => d_q_results_publishing_options(),
        "Ruleset" => String.t() | atom(),
        "StopJobOnFailureOptions" => d_q_stop_job_on_failure_options()
      }
      
  """
  @type evaluate_data_quality_multi_frame() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_dev_endpoints_response() :: %{
        "DevEndpoints" => list(dev_endpoint()),
        "DevEndpointsNotFound" => list(String.t() | atom())
      }
      
  """
  @type batch_get_dev_endpoints_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      untag_resource_response() :: %{}
      
  """
  @type untag_resource_response() :: %{}

  @typedoc """

  ## Example:
      
      source_control_details() :: %{
        "AuthStrategy" => list(any()),
        "AuthToken" => String.t() | atom(),
        "Branch" => String.t() | atom(),
        "Folder" => String.t() | atom(),
        "LastCommitId" => String.t() | atom(),
        "Owner" => String.t() | atom(),
        "Provider" => list(any()),
        "Repository" => String.t() | atom()
      }
      
  """
  @type source_control_details() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_workflows_response() :: %{
        "NextToken" => String.t() | atom(),
        "Workflows" => list(String.t() | atom())
      }
      
  """
  @type list_workflows_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      notification_property() :: %{
        "NotifyDelayAfter" => integer()
      }
      
  """
  @type notification_property() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_schemas_response() :: %{
        "NextToken" => String.t() | atom(),
        "Schemas" => list(schema_list_item())
      }
      
  """
  @type list_schemas_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      retention_configuration() :: %{
        "icebergConfiguration" => iceberg_retention_configuration()
      }
      
  """
  @type retention_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      partition_error() :: %{
        "ErrorDetail" => error_detail(),
        "PartitionValues" => list(String.t() | atom())
      }
      
  """
  @type partition_error() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_update_partition_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("Entries") => list(batch_update_partition_request_entry()),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type batch_update_partition_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      security_configuration() :: %{
        "CreatedTimeStamp" => non_neg_integer(),
        "EncryptionConfiguration" => encryption_configuration(),
        "Name" => String.t() | atom()
      }
      
  """
  @type security_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_source_control_from_job_response() :: %{
        "JobName" => String.t() | atom()
      }
      
  """
  @type update_source_control_from_job_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_blueprints_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("Tags") => map()
      }
      
  """
  @type list_blueprints_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      direct_schema_change_policy() :: %{
        "Database" => String.t() | atom(),
        "EnableUpdateCatalog" => boolean(),
        "Table" => String.t() | atom(),
        "UpdateBehavior" => list(any())
      }
      
  """
  @type direct_schema_change_policy() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_classifiers_response() :: %{
        "Classifiers" => list(classifier()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type get_classifiers_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      mapping() :: %{
        "Children" => list(mapping()),
        "Dropped" => boolean(),
        "FromPath" => list(String.t() | atom()),
        "FromType" => String.t() | atom(),
        "ToKey" => String.t() | atom(),
        "ToType" => String.t() | atom()
      }
      
  """
  @type mapping() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      binary_column_statistics_data() :: %{
        "AverageLength" => float(),
        "MaximumLength" => float(),
        "NumberOfNulls" => float()
      }
      
  """
  @type binary_column_statistics_data() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      crawler_stopping_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type crawler_stopping_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      condition() :: %{
        "CrawlState" => list(any()),
        "CrawlerName" => String.t() | atom(),
        "JobName" => String.t() | atom(),
        "LogicalOperator" => list(any()),
        "State" => list(any())
      }
      
  """
  @type condition() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      federated_resource_already_exists_exception() :: %{
        "AssociatedGlueResource" => String.t() | atom(),
        "Message" => String.t() | atom()
      }
      
  """
  @type federated_resource_already_exists_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      workflow_run() :: %{
        "CompletedOn" => non_neg_integer(),
        "ErrorMessage" => String.t() | atom(),
        "Graph" => workflow_graph(),
        "Name" => String.t() | atom(),
        "PreviousRunId" => String.t() | atom(),
        "StartedOn" => non_neg_integer(),
        "StartingEventBatchCondition" => starting_event_batch_condition(),
        "Statistics" => workflow_run_statistics(),
        "Status" => list(any()),
        "WorkflowRunId" => String.t() | atom(),
        "WorkflowRunProperties" => map()
      }
      
  """
  @type workflow_run() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_resource_policy_response() :: %{
        "CreateTime" => non_neg_integer(),
        "PolicyHash" => String.t() | atom(),
        "PolicyInJson" => String.t() | atom(),
        "UpdateTime" => non_neg_integer()
      }
      
  """
  @type get_resource_policy_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_data_quality_ruleset_request() :: %{
        optional("ClientToken") => String.t() | atom(),
        optional("DataQualitySecurityConfiguration") => String.t() | atom(),
        optional("Description") => String.t() | atom(),
        optional("Tags") => map(),
        optional("TargetTable") => data_quality_target_table(),
        required("Name") => String.t() | atom(),
        required("Ruleset") => String.t() | atom()
      }
      
  """
  @type create_data_quality_ruleset_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_sort_order() :: %{
        "Fields" => list(iceberg_sort_field()),
        "OrderId" => integer()
      }
      
  """
  @type iceberg_sort_order() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_crawler_metrics_response() :: %{
        "CrawlerMetricsList" => list(crawler_metrics()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type get_crawler_metrics_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      run_statement_request() :: %{
        optional("RequestOrigin") => String.t() | atom(),
        required("Code") => String.t() | atom(),
        required("SessionId") => String.t() | atom()
      }
      
  """
  @type run_statement_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_glossary_response() :: %{
        "Description" => String.t() | atom(),
        "Id" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type create_glossary_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_job_request() :: %{
        required("JobName") => String.t() | atom(),
        required("JobUpdate") => job_update()
      }
      
  """
  @type update_job_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      null_value_field() :: %{
        "Datatype" => datatype(),
        "Value" => String.t() | atom()
      }
      
  """
  @type null_value_field() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_glossary_term_request() :: %{
        optional("ClientToken") => String.t() | atom(),
        optional("LongDescription") => String.t() | atom(),
        optional("Name") => String.t() | atom(),
        optional("ShortDescription") => String.t() | atom()
      }
      
  """
  @type update_glossary_term_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      cancel_ml_task_run_request() :: %{
        required("TaskRunId") => String.t() | atom(),
        required("TransformId") => String.t() | atom()
      }
      
  """
  @type cancel_ml_task_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_data_quality_ruleset_evaluation_run_response() :: %{
        "RunId" => String.t() | atom()
      }
      
  """
  @type start_data_quality_ruleset_evaluation_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_resource_policies_response() :: %{
        "GetResourcePoliciesResponseList" => list(glue_policy()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type get_resource_policies_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      microsoft_s_q_l_server_catalog_source() :: %{
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Table" => String.t() | atom()
      }
      
  """
  @type microsoft_s_q_l_server_catalog_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      table_status() :: %{
        "Action" => list(any()),
        "Details" => status_details(),
        "Error" => error_detail(),
        "RequestTime" => non_neg_integer(),
        "RequestedBy" => String.t() | atom(),
        "State" => list(any()),
        "UpdateTime" => non_neg_integer(),
        "UpdatedBy" => String.t() | atom()
      }
      
  """
  @type table_status() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      federated_catalog() :: %{
        "ConnectionName" => String.t() | atom(),
        "ConnectionType" => String.t() | atom(),
        "Identifier" => String.t() | atom()
      }
      
  """
  @type federated_catalog() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      edge() :: %{
        "DestinationId" => String.t() | atom(),
        "SourceId" => String.t() | atom()
      }
      
  """
  @type edge() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      table_identifier() :: %{
        "CatalogId" => String.t() | atom(),
        "DatabaseName" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Region" => String.t() | atom()
      }
      
  """
  @type table_identifier() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_job_response() :: %{
        "JobName" => String.t() | atom()
      }
      
  """
  @type delete_job_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_blueprint_request() :: %{
        optional("Description") => String.t() | atom(),
        required("BlueprintLocation") => String.t() | atom(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type update_blueprint_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_registry_response() :: %{
        "CreatedTime" => String.t() | atom(),
        "Description" => String.t() | atom(),
        "RegistryArn" => String.t() | atom(),
        "RegistryName" => String.t() | atom(),
        "Status" => list(any()),
        "UpdatedTime" => String.t() | atom()
      }
      
  """
  @type get_registry_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_blueprint_response() :: %{
        "Blueprint" => blueprint()
      }
      
  """
  @type get_blueprint_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      metric_based_observation() :: %{
        "MetricName" => String.t() | atom(),
        "MetricValues" => data_quality_metric_values(),
        "NewRules" => list(String.t() | atom()),
        "StatisticId" => String.t() | atom()
      }
      
  """
  @type metric_based_observation() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_glossary_term_request() :: %{
        optional("ClientToken") => String.t() | atom(),
        optional("LongDescription") => String.t() | atom(),
        optional("ShortDescription") => String.t() | atom(),
        required("GlossaryIdentifier") => String.t() | atom(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type create_glossary_term_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_triggers_request() :: %{
        optional("DependentJobName") => String.t() | atom(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("Tags") => map()
      }
      
  """
  @type list_triggers_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      untag_resource_request() :: %{
        required("ResourceArn") => String.t() | atom(),
        required("TagsToRemove") => list(String.t() | atom())
      }
      
  """
  @type untag_resource_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      trigger_node_details() :: %{
        "Trigger" => trigger()
      }
      
  """
  @type trigger_node_details() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_table_optimizer_response() :: %{}
      
  """
  @type create_table_optimizer_response() :: %{}

  @typedoc """

  ## Example:
      
      get_data_quality_model_response() :: %{
        "CompletedOn" => non_neg_integer(),
        "FailureReason" => String.t() | atom(),
        "StartedOn" => non_neg_integer(),
        "Status" => list(any())
      }
      
  """
  @type get_data_quality_model_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      table_optimizer() :: %{
        "configuration" => table_optimizer_configuration(),
        "configurationSource" => list(any()),
        "lastRun" => table_optimizer_run(),
        "type" => list(any())
      }
      
  """
  @type table_optimizer() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      blueprint() :: %{
        "BlueprintLocation" => String.t() | atom(),
        "BlueprintServiceLocation" => String.t() | atom(),
        "CreatedOn" => non_neg_integer(),
        "Description" => String.t() | atom(),
        "ErrorMessage" => String.t() | atom(),
        "LastActiveDefinition" => last_active_definition(),
        "LastModifiedOn" => non_neg_integer(),
        "Name" => String.t() | atom(),
        "ParameterSpec" => String.t() | atom(),
        "Status" => list(any())
      }
      
  """
  @type blueprint() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_connection_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("ConnectionInput") => connection_input(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type update_connection_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      register_connection_type_request() :: %{
        optional("Description") => String.t() | atom(),
        optional("Tags") => map(),
        required("ConnectionProperties") => connection_properties_configuration(),
        required("ConnectionType") => String.t() | atom(),
        required("ConnectorAuthenticationConfiguration") => connector_authentication_configuration(),
        required("IntegrationType") => list(any()),
        required("RestConfiguration") => rest_configuration()
      }
      
  """
  @type register_connection_type_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_attachment_request() :: %{
        optional("ItemIdentifier") => String.t() | atom(),
        optional("IterableFormName") => String.t() | atom()
      }
      
  """
  @type delete_attachment_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      column_row_filter() :: %{
        "ColumnName" => String.t() | atom(),
        "RowFilterExpression" => String.t() | atom()
      }
      
  """
  @type column_row_filter() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_column_statistics_for_table_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("ColumnNames") => list(String.t() | atom()),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type get_column_statistics_for_table_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_iceberg_table_input() :: %{
        "Updates" => list(iceberg_table_update())
      }
      
  """
  @type update_iceberg_table_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_asset_type_response() :: %{
        "Forms" => map(),
        "Id" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type put_asset_type_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      sql_alias() :: %{
        "Alias" => String.t() | atom(),
        "From" => String.t() | atom()
      }
      
  """
  @type sql_alias() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_lake_principal() :: %{
        "DataLakePrincipalIdentifier" => String.t() | atom()
      }
      
  """
  @type data_lake_principal() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_resource_policy_request() :: %{
        optional("PolicyHashCondition") => String.t() | atom(),
        optional("ResourceArn") => String.t() | atom()
      }
      
  """
  @type delete_resource_policy_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_retention_configuration() :: %{
        "cleanExpiredFiles" => boolean(),
        "numberOfSnapshotsToRetain" => integer(),
        "runRateInHours" => integer(),
        "snapshotRetentionPeriodInDays" => integer()
      }
      
  """
  @type iceberg_retention_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_schema_versions_input() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        required("SchemaId") => schema_id()
      }
      
  """
  @type list_schema_versions_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_data_quality_model_request() :: %{
        optional("StatisticId") => String.t() | atom(),
        required("ProfileId") => String.t() | atom()
      }
      
  """
  @type get_data_quality_model_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_glossary_term_request() :: %{}
      
  """
  @type delete_glossary_term_request() :: %{}

  @typedoc """

  ## Example:
      
      profile_configuration() :: %{
        "JobConfiguration" => map(),
        "SessionConfiguration" => map()
      }
      
  """
  @type profile_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_dev_endpoint_request() :: %{
        required("EndpointName") => String.t() | atom()
      }
      
  """
  @type delete_dev_endpoint_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      error_detail() :: %{
        "ErrorCode" => String.t() | atom(),
        "ErrorMessage" => String.t() | atom()
      }
      
  """
  @type error_detail() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_partition_request() :: %{
        optional("AuditContext") => audit_context(),
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("PartitionValues") => list(String.t() | atom()),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type get_partition_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_database_response() :: %{}
      
  """
  @type create_database_response() :: %{}

  @typedoc """

  ## Example:
      
      blueprint_run() :: %{
        "BlueprintName" => String.t() | atom(),
        "CompletedOn" => non_neg_integer(),
        "ErrorMessage" => String.t() | atom(),
        "Parameters" => String.t() | atom(),
        "RoleArn" => String.t() | atom(),
        "RollbackErrorMessage" => String.t() | atom(),
        "RunId" => String.t() | atom(),
        "StartedOn" => non_neg_integer(),
        "State" => list(any()),
        "WorkflowName" => String.t() | atom()
      }
      
  """
  @type blueprint_run() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_lake_access_properties_output() :: %{
        "CatalogType" => String.t() | atom(),
        "DataLakeAccess" => boolean(),
        "DataTransferRole" => String.t() | atom(),
        "KmsKey" => String.t() | atom(),
        "ManagedWorkgroupName" => String.t() | atom(),
        "ManagedWorkgroupStatus" => String.t() | atom(),
        "RedshiftDatabaseName" => String.t() | atom(),
        "StatusMessage" => String.t() | atom()
      }
      
  """
  @type data_lake_access_properties_output() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      search_result_item() :: %{
        "AssetDescription" => String.t() | atom(),
        "AssetName" => String.t() | atom(),
        "AssetTypeId" => String.t() | atom(),
        "Id" => String.t() | atom(),
        "UpdatedAt" => non_neg_integer()
      }
      
  """
  @type search_result_item() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      open_table_format_input() :: %{
        "IcebergInput" => iceberg_input()
      }
      
  """
  @type open_table_format_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      catalog_import_status() :: %{
        "ImportCompleted" => boolean(),
        "ImportTime" => non_neg_integer(),
        "ImportedBy" => String.t() | atom()
      }
      
  """
  @type catalog_import_status() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_trigger_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type start_trigger_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_user_defined_functions_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("DatabaseName") => String.t() | atom(),
        optional("FunctionType") => list(any()),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        required("Pattern") => String.t() | atom()
      }
      
  """
  @type get_user_defined_functions_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      task_run() :: %{
        "CompletedOn" => non_neg_integer(),
        "ErrorString" => String.t() | atom(),
        "ExecutionTime" => integer(),
        "LastModifiedOn" => non_neg_integer(),
        "LogGroupName" => String.t() | atom(),
        "Properties" => task_run_properties(),
        "StartedOn" => non_neg_integer(),
        "Status" => list(any()),
        "TaskRunId" => String.t() | atom(),
        "TransformId" => String.t() | atom()
      }
      
  """
  @type task_run() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_column_statistics_task_settings_request() :: %{
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type get_column_statistics_task_settings_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      unfiltered_partition() :: %{
        "AuthorizedColumns" => list(String.t() | atom()),
        "IsRegisteredWithLakeFormation" => boolean(),
        "Partition" => partition()
      }
      
  """
  @type unfiltered_partition() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_asset_type_request() :: %{}
      
  """
  @type get_asset_type_request() :: %{}

  @typedoc """

  ## Example:
      
      predecessor() :: %{
        "JobName" => String.t() | atom(),
        "RunId" => String.t() | atom()
      }
      
  """
  @type predecessor() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      session() :: %{
        "Command" => session_command(),
        "CompletedOn" => non_neg_integer(),
        "Connections" => connections_list(),
        "CreatedOn" => non_neg_integer(),
        "DPUSeconds" => float(),
        "DefaultArguments" => map(),
        "Description" => String.t() | atom(),
        "ErrorMessage" => String.t() | atom(),
        "ExecutionTime" => float(),
        "GlueVersion" => String.t() | atom(),
        "Id" => String.t() | atom(),
        "IdleTimeout" => integer(),
        "MaxCapacity" => float(),
        "NumberOfWorkers" => integer(),
        "ProfileName" => String.t() | atom(),
        "Progress" => float(),
        "Role" => String.t() | atom(),
        "SecurityConfiguration" => String.t() | atom(),
        "SessionType" => list(any()),
        "Status" => list(any()),
        "WorkerType" => list(any())
      }
      
  """
  @type session() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      workflow_run_statistics() :: %{
        "ErroredActions" => integer(),
        "FailedActions" => integer(),
        "RunningActions" => integer(),
        "StoppedActions" => integer(),
        "SucceededActions" => integer(),
        "TimeoutActions" => integer(),
        "TotalActions" => integer(),
        "WaitingActions" => integer()
      }
      
  """
  @type workflow_run_statistics() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      decimal_number() :: %{
        "Scale" => integer(),
        "UnscaledValue" => binary()
      }
      
  """
  @type decimal_number() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_data_quality_statistics_response() :: %{
        "NextToken" => String.t() | atom(),
        "Statistics" => list(statistic_summary())
      }
      
  """
  @type list_data_quality_statistics_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      authentication_configuration_input() :: %{
        "AuthenticationType" => list(any()),
        "BasicAuthenticationCredentials" => basic_authentication_credentials(),
        "CustomAuthenticationCredentials" => map(),
        "KmsKeyArn" => String.t() | atom(),
        "OAuth2Properties" => o_auth2_properties_input(),
        "SecretArn" => String.t() | atom()
      }
      
  """
  @type authentication_configuration_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_partition_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("PartitionInput") => partition_input(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type create_partition_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delta_target() :: %{
        "ConnectionName" => String.t() | atom(),
        "CreateNativeDeltaTable" => boolean(),
        "DeltaTables" => list(String.t() | atom()),
        "WriteManifest" => boolean()
      }
      
  """
  @type delta_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      jdbc_target() :: %{
        "ConnectionName" => String.t() | atom(),
        "EnableAdditionalMetadata" => list(list(any())()),
        "Exclusions" => list(String.t() | atom()),
        "Path" => String.t() | atom()
      }
      
  """
  @type jdbc_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      query_schema_version_metadata_response() :: %{
        "MetadataInfoMap" => map(),
        "NextToken" => String.t() | atom(),
        "SchemaVersionId" => String.t() | atom()
      }
      
  """
  @type query_schema_version_metadata_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      table_version_error() :: %{
        "ErrorDetail" => error_detail(),
        "TableName" => String.t() | atom(),
        "VersionId" => String.t() | atom()
      }
      
  """
  @type table_version_error() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      crawler_not_running_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type crawler_not_running_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_sessions_response() :: %{
        "Ids" => list(String.t() | atom()),
        "NextToken" => String.t() | atom(),
        "Sessions" => list(session())
      }
      
  """
  @type list_sessions_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_classifier_response() :: %{}
      
  """
  @type create_classifier_response() :: %{}

  @typedoc """

  ## Example:
      
      update_ml_transform_request() :: %{
        optional("Description") => String.t() | atom(),
        optional("GlueVersion") => String.t() | atom(),
        optional("MaxCapacity") => float(),
        optional("MaxRetries") => integer(),
        optional("Name") => String.t() | atom(),
        optional("NumberOfWorkers") => integer(),
        optional("Parameters") => transform_parameters(),
        optional("Role") => String.t() | atom(),
        optional("Timeout") => integer(),
        optional("WorkerType") => list(any()),
        required("TransformId") => String.t() | atom()
      }
      
  """
  @type update_ml_transform_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_user_defined_function_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("FunctionInput") => user_defined_function_input()
      }
      
  """
  @type create_user_defined_function_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      direct_kinesis_source() :: %{
        "DataPreviewOptions" => streaming_data_preview_options(),
        "DetectSchema" => boolean(),
        "Name" => String.t() | atom(),
        "StreamingOptions" => kinesis_streaming_source_options(),
        "WindowSize" => integer()
      }
      
  """
  @type direct_kinesis_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_schema_versions_diff_input() :: %{
        required("FirstSchemaVersionNumber") => schema_version_number(),
        required("SchemaDiffType") => list(any()),
        required("SchemaId") => schema_id(),
        required("SecondSchemaVersionNumber") => schema_version_number()
      }
      
  """
  @type get_schema_versions_diff_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      athena_connector_source() :: %{
        "ConnectionName" => String.t() | atom(),
        "ConnectionTable" => String.t() | atom(),
        "ConnectionType" => String.t() | atom(),
        "ConnectorName" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "SchemaName" => String.t() | atom()
      }
      
  """
  @type athena_connector_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_dev_endpoints_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type get_dev_endpoints_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      evaluate_data_quality() :: %{
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "Output" => list(any()),
        "PublishingOptions" => d_q_results_publishing_options(),
        "Ruleset" => String.t() | atom(),
        "StopJobOnFailureOptions" => d_q_stop_job_on_failure_options()
      }
      
  """
  @type evaluate_data_quality() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_integration_resource_property_response() :: %{
        "ResourceArn" => String.t() | atom(),
        "ResourcePropertyArn" => String.t() | atom(),
        "SourceProcessingProperties" => source_processing_properties(),
        "TargetProcessingProperties" => target_processing_properties()
      }
      
  """
  @type update_integration_resource_property_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_connections_response() :: %{
        "ConnectionList" => list(connection()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type get_connections_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      cancel_data_quality_ruleset_evaluation_run_response() :: %{}
      
  """
  @type cancel_data_quality_ruleset_evaluation_run_response() :: %{}

  @typedoc """

  ## Example:
      
      table_input() :: %{
        "Description" => String.t() | atom(),
        "LastAccessTime" => non_neg_integer(),
        "LastAnalyzedTime" => non_neg_integer(),
        "Name" => String.t() | atom(),
        "Owner" => String.t() | atom(),
        "Parameters" => map(),
        "PartitionKeys" => list(column()),
        "Retention" => integer(),
        "StorageDescriptor" => storage_descriptor(),
        "TableType" => String.t() | atom(),
        "TargetTable" => table_identifier(),
        "ViewDefinition" => view_definition_input(),
        "ViewExpandedText" => String.t() | atom(),
        "ViewOriginalText" => String.t() | atom()
      }
      
  """
  @type table_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_table_optimizer_error() :: %{
        "catalogId" => String.t() | atom(),
        "databaseName" => String.t() | atom(),
        "error" => error_detail(),
        "tableName" => String.t() | atom(),
        "type" => list(any())
      }
      
  """
  @type batch_get_table_optimizer_error() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      crawler_metrics() :: %{
        "CrawlerName" => String.t() | atom(),
        "LastRuntimeSeconds" => float(),
        "MedianRuntimeSeconds" => float(),
        "StillEstimating" => boolean(),
        "TablesCreated" => integer(),
        "TablesDeleted" => integer(),
        "TablesUpdated" => integer(),
        "TimeLeftSeconds" => float()
      }
      
  """
  @type crawler_metrics() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_form_type_request() :: %{}
      
  """
  @type delete_form_type_request() :: %{}

  @typedoc """

  ## Example:
      
      delete_connection_type_response() :: %{}
      
  """
  @type delete_connection_type_response() :: %{}

  @typedoc """

  ## Example:
      
      put_resource_policy_response() :: %{
        "PolicyHash" => String.t() | atom()
      }
      
  """
  @type put_resource_policy_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_user_defined_function_response() :: %{}
      
  """
  @type update_user_defined_function_response() :: %{}

  @typedoc """

  ## Example:
      
      j_db_c_connector_source() :: %{
        "AdditionalOptions" => j_db_c_connector_options(),
        "ConnectionName" => String.t() | atom(),
        "ConnectionTable" => String.t() | atom(),
        "ConnectionType" => String.t() | atom(),
        "ConnectorName" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "Query" => String.t() | atom()
      }
      
  """
  @type j_db_c_connector_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_database_response() :: %{}
      
  """
  @type update_database_response() :: %{}

  @typedoc """

  ## Example:
      
      data_quality_result_filter_criteria() :: %{
        "DataSource" => data_source(),
        "JobName" => String.t() | atom(),
        "JobRunId" => String.t() | atom(),
        "StartedAfter" => non_neg_integer(),
        "StartedBefore" => non_neg_integer()
      }
      
  """
  @type data_quality_result_filter_criteria() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_column_statistics_task_run_response() :: %{
        "ColumnStatisticsTaskRun" => column_statistics_task_run()
      }
      
  """
  @type get_column_statistics_task_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_column_statistics_task_run_request() :: %{
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type stop_column_statistics_task_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      storage_descriptor() :: %{
        "AdditionalLocations" => list(String.t() | atom()),
        "BucketColumns" => list(String.t() | atom()),
        "Columns" => list(column()),
        "Compressed" => boolean(),
        "InputFormat" => String.t() | atom(),
        "Location" => String.t() | atom(),
        "NumberOfBuckets" => integer(),
        "OutputFormat" => String.t() | atom(),
        "Parameters" => map(),
        "SchemaReference" => schema_reference(),
        "SerdeInfo" => ser_de_info(),
        "SkewedInfo" => skewed_info(),
        "SortColumns" => list(order()),
        "StoredAsSubDirectories" => boolean()
      }
      
  """
  @type storage_descriptor() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      orphan_file_deletion_configuration() :: %{
        "icebergConfiguration" => iceberg_orphan_file_deletion_configuration()
      }
      
  """
  @type orphan_file_deletion_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      transform_filter_criteria() :: %{
        "CreatedAfter" => non_neg_integer(),
        "CreatedBefore" => non_neg_integer(),
        "GlueVersion" => String.t() | atom(),
        "LastModifiedAfter" => non_neg_integer(),
        "LastModifiedBefore" => non_neg_integer(),
        "Name" => String.t() | atom(),
        "Schema" => list(schema_column()),
        "Status" => list(any()),
        "TransformType" => list(any())
      }
      
  """
  @type transform_filter_criteria() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_job_request() :: %{
        optional("AllocatedCapacity") => integer(),
        optional("CodeGenConfigurationNodes") => map(),
        optional("Connections") => connections_list(),
        optional("DefaultArguments") => map(),
        optional("Description") => String.t() | atom(),
        optional("ExecutionClass") => list(any()),
        optional("ExecutionProperty") => execution_property(),
        optional("GlueVersion") => String.t() | atom(),
        optional("JobMode") => list(any()),
        optional("JobRunQueuingEnabled") => boolean(),
        optional("LogUri") => String.t() | atom(),
        optional("MaintenanceWindow") => String.t() | atom(),
        optional("MaxCapacity") => float(),
        optional("MaxRetries") => integer(),
        optional("NonOverridableArguments") => map(),
        optional("NotificationProperty") => notification_property(),
        optional("NumberOfWorkers") => integer(),
        optional("SecurityConfiguration") => String.t() | atom(),
        optional("SourceControlDetails") => source_control_details(),
        optional("Tags") => map(),
        optional("Timeout") => integer(),
        optional("WorkerType") => list(any()),
        required("Command") => job_command(),
        required("Name") => String.t() | atom(),
        required("Role") => String.t() | atom()
      }
      
  """
  @type create_job_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_data_quality_rule_recommendation_runs_request() :: %{
        optional("Filter") => data_quality_rule_recommendation_run_filter(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type list_data_quality_rule_recommendation_runs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_form_type_response() :: %{
        "Id" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Schema" => String.t() | atom()
      }
      
  """
  @type put_form_type_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      field() :: %{
        "CustomProperties" => map(),
        "Description" => String.t() | atom(),
        "FieldName" => String.t() | atom(),
        "FieldType" => list(any()),
        "IsCreateable" => boolean(),
        "IsDefaultOnCreate" => boolean(),
        "IsFilterable" => boolean(),
        "IsNullable" => boolean(),
        "IsPartitionable" => boolean(),
        "IsPrimaryKey" => boolean(),
        "IsRetrievable" => boolean(),
        "IsUpdateable" => boolean(),
        "IsUpsertable" => boolean(),
        "Label" => String.t() | atom(),
        "NativeDataType" => [String.t() | atom()],
        "ParentField" => [String.t() | atom()],
        "SupportedFilterOperators" => list(list(any())()),
        "SupportedValues" => list([String.t() | atom()]())
      }
      
  """
  @type field() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      connection_password_encryption() :: %{
        "AwsKmsKeyId" => String.t() | atom(),
        "ReturnConnectionPasswordEncrypted" => boolean()
      }
      
  """
  @type connection_password_encryption() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_triggers_response() :: %{
        "Triggers" => list(trigger()),
        "TriggersNotFound" => list(String.t() | atom())
      }
      
  """
  @type batch_get_triggers_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_database_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("Tags") => map(),
        required("DatabaseInput") => database_input()
      }
      
  """
  @type create_database_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      reset_job_bookmark_request() :: %{
        optional("RunId") => String.t() | atom(),
        required("JobName") => String.t() | atom()
      }
      
  """
  @type reset_job_bookmark_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_partition_response() :: %{}
      
  """
  @type delete_partition_response() :: %{}

  @typedoc """

  ## Example:
      
      start_job_run_request() :: %{
        optional("AllocatedCapacity") => integer(),
        optional("Arguments") => map(),
        optional("ExecutionClass") => list(any()),
        optional("ExecutionRoleSessionPolicy") => String.t() | atom(),
        optional("JobRunId") => String.t() | atom(),
        optional("JobRunQueuingEnabled") => boolean(),
        optional("MaxCapacity") => float(),
        optional("NotificationProperty") => notification_property(),
        optional("NumberOfWorkers") => integer(),
        optional("SecurityConfiguration") => String.t() | atom(),
        optional("Timeout") => integer(),
        optional("WorkerType") => list(any()),
        required("JobName") => String.t() | atom()
      }
      
  """
  @type start_job_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_integration_table_properties_request() :: %{
        required("ResourceArn") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type get_integration_table_properties_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      trigger() :: %{
        "Actions" => list(action()),
        "Description" => String.t() | atom(),
        "EventBatchingCondition" => event_batching_condition(),
        "Id" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Predicate" => predicate(),
        "Schedule" => String.t() | atom(),
        "State" => list(any()),
        "Type" => list(any()),
        "WorkflowName" => String.t() | atom()
      }
      
  """
  @type trigger() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_trigger_response() :: %{
        "Trigger" => trigger()
      }
      
  """
  @type get_trigger_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      fill_missing_values() :: %{
        "FilledPath" => String.t() | atom(),
        "ImputedPath" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom()
      }
      
  """
  @type fill_missing_values() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_partitions_response() :: %{
        "NextToken" => String.t() | atom(),
        "Partitions" => list(partition())
      }
      
  """
  @type get_partitions_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_data_quality_profile_annotation_request() :: %{
        required("InclusionAnnotation") => list(any()),
        required("ProfileId") => String.t() | atom()
      }
      
  """
  @type put_data_quality_profile_annotation_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_column_statistics_task_runs_response() :: %{
        "ColumnStatisticsTaskRuns" => list(column_statistics_task_run()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type get_column_statistics_task_runs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      snowflake_source() :: %{
        "Data" => snowflake_node_data(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema())
      }
      
  """
  @type snowflake_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_partition_index_response() :: %{}
      
  """
  @type delete_partition_index_response() :: %{}

  @typedoc """

  ## Example:
      
      create_connection_response() :: %{
        "CreateConnectionStatus" => list(any())
      }
      
  """
  @type create_connection_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      partition() :: %{
        "CatalogId" => String.t() | atom(),
        "CreationTime" => non_neg_integer(),
        "DatabaseName" => String.t() | atom(),
        "LastAccessTime" => non_neg_integer(),
        "LastAnalyzedTime" => non_neg_integer(),
        "Parameters" => map(),
        "StorageDescriptor" => storage_descriptor(),
        "TableName" => String.t() | atom(),
        "Values" => list(String.t() | atom())
      }
      
  """
  @type partition() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      find_matches_metrics() :: %{
        "AreaUnderPRCurve" => float(),
        "ColumnImportances" => list(column_importance()),
        "ConfusionMatrix" => confusion_matrix(),
        "F1" => float(),
        "Precision" => float(),
        "Recall" => float()
      }
      
  """
  @type find_matches_metrics() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_column_statistics_for_partition_response() :: %{
        "ColumnStatisticsList" => list(column_statistics()),
        "Errors" => list(column_error())
      }
      
  """
  @type get_column_statistics_for_partition_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_result() :: %{
        "AggregatedMetrics" => data_quality_aggregated_metrics(),
        "AnalyzerResults" => list(data_quality_analyzer_result()),
        "CompletedOn" => non_neg_integer(),
        "DataSource" => data_source(),
        "EvaluationContext" => String.t() | atom(),
        "JobName" => String.t() | atom(),
        "JobRunId" => String.t() | atom(),
        "Observations" => list(data_quality_observation()),
        "ProfileId" => String.t() | atom(),
        "ResultId" => String.t() | atom(),
        "RuleResults" => list(data_quality_rule_result()),
        "RulesetEvaluationRunId" => String.t() | atom(),
        "RulesetName" => String.t() | atom(),
        "Score" => float(),
        "StartedOn" => non_neg_integer()
      }
      
  """
  @type data_quality_result() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_unfiltered_partitions_metadata_response() :: %{
        "NextToken" => String.t() | atom(),
        "UnfilteredPartitions" => list(unfiltered_partition())
      }
      
  """
  @type get_unfiltered_partitions_metadata_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_schema_input() :: %{
        required("SchemaId") => schema_id()
      }
      
  """
  @type delete_schema_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_jobs_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type get_jobs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      supported_dialect() :: %{
        "Dialect" => list(any()),
        "DialectVersion" => String.t() | atom()
      }
      
  """
  @type supported_dialect() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_data_quality_rulesets_response() :: %{
        "NextToken" => String.t() | atom(),
        "Rulesets" => list(data_quality_ruleset_list_details())
      }
      
  """
  @type list_data_quality_rulesets_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_glossary_response() :: %{}
      
  """
  @type delete_glossary_response() :: %{}

  @typedoc """

  ## Example:
      
      create_grok_classifier_request() :: %{
        "Classification" => String.t() | atom(),
        "CustomPatterns" => String.t() | atom(),
        "GrokPattern" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type create_grok_classifier_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_orphan_file_deletion_metrics() :: %{
        "DpuHours" => float(),
        "JobDurationInHour" => float(),
        "NumberOfDpus" => integer(),
        "NumberOfOrphanFilesDeleted" => float()
      }
      
  """
  @type iceberg_orphan_file_deletion_metrics() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_connection_types_response() :: %{
        "ConnectionTypes" => list(connection_type_brief()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_connection_types_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_glossary_term_request() :: %{}
      
  """
  @type get_glossary_term_request() :: %{}

  @typedoc """

  ## Example:
      
      delete_session_request() :: %{
        optional("RequestOrigin") => String.t() | atom(),
        required("Id") => String.t() | atom()
      }
      
  """
  @type delete_session_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_job_run_request() :: %{
        optional("PredecessorsIncluded") => boolean(),
        required("JobName") => String.t() | atom(),
        required("RunId") => String.t() | atom()
      }
      
  """
  @type get_job_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_trigger_request() :: %{
        optional("Description") => String.t() | atom(),
        optional("EventBatchingCondition") => event_batching_condition(),
        optional("Predicate") => predicate(),
        optional("Schedule") => String.t() | atom(),
        optional("StartOnCreation") => boolean(),
        optional("Tags") => map(),
        optional("WorkflowName") => String.t() | atom(),
        required("Actions") => list(action()),
        required("Name") => String.t() | atom(),
        required("Type") => list(any())
      }
      
  """
  @type create_trigger_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_resource_policy_response() :: %{}
      
  """
  @type delete_resource_policy_response() :: %{}

  @typedoc """

  ## Example:
      
      property() :: %{
        "AllowedValues" => list(allowed_value()),
        "DataOperationScopes" => list(list(any())()),
        "DefaultValue" => [String.t() | atom()],
        "Description" => String.t() | atom(),
        "KeyOverride" => [String.t() | atom()],
        "Name" => String.t() | atom(),
        "PropertyLocation" => list(any()),
        "PropertyTypes" => list(list(any())()),
        "Required" => boolean()
      }
      
  """
  @type property() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      cursor_configuration() :: %{
        "LimitParameter" => extracted_parameter(),
        "NextPage" => extracted_parameter()
      }
      
  """
  @type cursor_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_job_runs_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        required("JobName") => String.t() | atom()
      }
      
  """
  @type get_job_runs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_session_endpoint_request() :: %{
        required("SessionId") => String.t() | atom()
      }
      
  """
  @type get_session_endpoint_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_workflow_runs_request() :: %{
        optional("IncludeGraph") => boolean(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type get_workflow_runs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_connection_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("ConnectionName") => String.t() | atom()
      }
      
  """
  @type delete_connection_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_crawler_response() :: %{}
      
  """
  @type stop_crawler_response() :: %{}

  @typedoc """

  ## Example:
      
      list_crawlers_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("Tags") => map()
      }
      
  """
  @type list_crawlers_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_workflows_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type list_workflows_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_session_response() :: %{
        "Id" => String.t() | atom()
      }
      
  """
  @type delete_session_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      register_schema_version_input() :: %{
        required("SchemaDefinition") => String.t() | atom(),
        required("SchemaId") => schema_id()
      }
      
  """
  @type register_schema_version_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      internal_service_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type internal_service_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_encryption() :: %{
        "DataQualityEncryptionMode" => list(any()),
        "KmsKeyArn" => String.t() | atom()
      }
      
  """
  @type data_quality_encryption() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      user_defined_function_input() :: %{
        "ClassName" => String.t() | atom(),
        "FunctionName" => String.t() | atom(),
        "FunctionType" => list(any()),
        "OwnerName" => String.t() | atom(),
        "OwnerType" => list(any()),
        "ResourceUris" => list(resource_uri())
      }
      
  """
  @type user_defined_function_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_csv_classifier_request() :: %{
        "AllowSingleColumn" => boolean(),
        "ContainsHeader" => list(any()),
        "CustomDatatypeConfigured" => boolean(),
        "CustomDatatypes" => list(String.t() | atom()),
        "Delimiter" => String.t() | atom(),
        "DisableValueTrimming" => boolean(),
        "Header" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "QuoteSymbol" => String.t() | atom(),
        "Serde" => list(any())
      }
      
  """
  @type create_csv_classifier_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      cloud_watch_encryption() :: %{
        "CloudWatchEncryptionMode" => list(any()),
        "KmsKeyArn" => String.t() | atom()
      }
      
  """
  @type cloud_watch_encryption() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_sort_field() :: %{
        "Direction" => list(any()),
        "NullOrder" => list(any()),
        "SourceId" => integer(),
        "Transform" => String.t() | atom()
      }
      
  """
  @type iceberg_sort_field() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_custom_entity_types_response() :: %{
        "CustomEntityTypes" => list(custom_entity_type()),
        "CustomEntityTypesNotFound" => list(String.t() | atom())
      }
      
  """
  @type batch_get_custom_entity_types_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_data_quality_result_response() :: %{
        "Results" => list(data_quality_result()),
        "ResultsNotFound" => list(String.t() | atom())
      }
      
  """
  @type batch_get_data_quality_result_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_dataflow_graph_request() :: %{
        optional("PythonScript") => String.t() | atom()
      }
      
  """
  @type get_dataflow_graph_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      annotation_error() :: %{
        "FailureReason" => String.t() | atom(),
        "ProfileId" => String.t() | atom(),
        "StatisticId" => String.t() | atom()
      }
      
  """
  @type annotation_error() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      catalog() :: %{
        "AllowFullTableExternalDataAccess" => list(any()),
        "CatalogId" => String.t() | atom(),
        "CatalogProperties" => catalog_properties_output(),
        "CreateDatabaseDefaultPermissions" => list(principal_permissions()),
        "CreateTableDefaultPermissions" => list(principal_permissions()),
        "CreateTime" => non_neg_integer(),
        "Description" => String.t() | atom(),
        "FederatedCatalog" => federated_catalog(),
        "Name" => String.t() | atom(),
        "Parameters" => map(),
        "ResourceArn" => String.t() | atom(),
        "TargetRedshiftCatalog" => target_redshift_catalog(),
        "UpdateTime" => non_neg_integer()
      }
      
  """
  @type catalog() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_delete_table_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("TransactionId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TablesToDelete") => list(String.t() | atom())
      }
      
  """
  @type batch_delete_table_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      describe_entity_response() :: %{
        "Fields" => list(field()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type describe_entity_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      invalid_input_exception() :: %{
        "FromFederationSource" => boolean(),
        "Message" => String.t() | atom()
      }
      
  """
  @type invalid_input_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_data_quality_statistics_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("ProfileId") => String.t() | atom(),
        optional("StatisticId") => String.t() | atom(),
        optional("TimestampFilter") => timestamp_filter()
      }
      
  """
  @type list_data_quality_statistics_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      find_matches_task_run_properties() :: %{
        "JobId" => String.t() | atom(),
        "JobName" => String.t() | atom(),
        "JobRunId" => String.t() | atom()
      }
      
  """
  @type find_matches_task_run_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_catalog_encryption_settings() :: %{
        "ConnectionPasswordEncryption" => connection_password_encryption(),
        "EncryptionAtRest" => encryption_at_rest()
      }
      
  """
  @type data_catalog_encryption_settings() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      spark_connector_target() :: %{
        "AdditionalOptions" => map(),
        "ConnectionName" => String.t() | atom(),
        "ConnectionType" => String.t() | atom(),
        "ConnectorName" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema())
      }
      
  """
  @type spark_connector_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      long_column_statistics_data() :: %{
        "MaximumValue" => float(),
        "MinimumValue" => float(),
        "NumberOfDistinctValues" => float(),
        "NumberOfNulls" => float()
      }
      
  """
  @type long_column_statistics_data() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      database() :: %{
        "CatalogId" => String.t() | atom(),
        "CreateTableDefaultPermissions" => list(principal_permissions()),
        "CreateTime" => non_neg_integer(),
        "Description" => String.t() | atom(),
        "FederatedDatabase" => federated_database(),
        "LocationUri" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Parameters" => map(),
        "TargetDatabase" => database_identifier()
      }
      
  """
  @type database() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_column_statistics_task_settings_request() :: %{
        optional("CatalogID") => String.t() | atom(),
        optional("ColumnNameList") => list(String.t() | atom()),
        optional("Role") => String.t() | atom(),
        optional("SampleSize") => float(),
        optional("Schedule") => String.t() | atom(),
        optional("SecurityConfiguration") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type update_column_statistics_task_settings_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      search_map_filter() :: %{
        "Attribute" => String.t() | atom(),
        "Key" => String.t() | atom(),
        "Value" => list()
      }
      
  """
  @type search_map_filter() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_table_optimizer_response() :: %{}
      
  """
  @type update_table_optimizer_response() :: %{}

  @typedoc """

  ## Example:
      
      null_check_box_list() :: %{
        "IsEmpty" => boolean(),
        "IsNegOne" => boolean(),
        "IsNullString" => boolean()
      }
      
  """
  @type null_check_box_list() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_source_control_from_job_request() :: %{
        optional("AuthStrategy") => list(any()),
        optional("AuthToken") => String.t() | atom(),
        optional("BranchName") => String.t() | atom(),
        optional("CommitId") => String.t() | atom(),
        optional("Folder") => String.t() | atom(),
        optional("JobName") => String.t() | atom(),
        optional("Provider") => list(any()),
        optional("RepositoryName") => String.t() | atom(),
        optional("RepositoryOwner") => String.t() | atom()
      }
      
  """
  @type update_source_control_from_job_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_integration_table_properties_response() :: %{}
      
  """
  @type delete_integration_table_properties_response() :: %{}

  @typedoc """

  ## Example:
      
      create_script_request() :: %{
        optional("DagEdges") => list(code_gen_edge()),
        optional("DagNodes") => list(code_gen_node()),
        optional("Language") => list(any())
      }
      
  """
  @type create_script_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      join() :: %{
        "Columns" => list(join_column()),
        "Inputs" => list(String.t() | atom()),
        "JoinType" => list(any()),
        "Name" => String.t() | atom()
      }
      
  """
  @type join() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_direct_source_additional_options() :: %{
        "BoundedFiles" => float(),
        "BoundedSize" => float(),
        "EnableSamplePath" => boolean(),
        "SamplePath" => String.t() | atom()
      }
      
  """
  @type s3_direct_source_additional_options() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      backfill_error() :: %{
        "Code" => list(any()),
        "Partitions" => list(partition_value_list())
      }
      
  """
  @type backfill_error() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      target_table_config() :: %{
        "PartitionSpec" => list(integration_partition()),
        "TargetTableName" => String.t() | atom(),
        "UnnestSpec" => list(any())
      }
      
  """
  @type target_table_config() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_registry_response() :: %{
        "Description" => String.t() | atom(),
        "RegistryArn" => String.t() | atom(),
        "RegistryName" => String.t() | atom(),
        "Tags" => map()
      }
      
  """
  @type create_registry_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_catalog_iceberg_source() :: %{
        "AdditionalIcebergOptions" => map(),
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "Table" => String.t() | atom()
      }
      
  """
  @type s3_catalog_iceberg_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_column_statistics_task_settings_request() :: %{
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type delete_column_statistics_task_settings_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_workflow_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type delete_workflow_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      job_update() :: %{
        "AllocatedCapacity" => integer(),
        "CodeGenConfigurationNodes" => map(),
        "Command" => job_command(),
        "Connections" => connections_list(),
        "DefaultArguments" => map(),
        "Description" => String.t() | atom(),
        "ExecutionClass" => list(any()),
        "ExecutionProperty" => execution_property(),
        "GlueVersion" => String.t() | atom(),
        "JobMode" => list(any()),
        "JobRunQueuingEnabled" => boolean(),
        "LogUri" => String.t() | atom(),
        "MaintenanceWindow" => String.t() | atom(),
        "MaxCapacity" => float(),
        "MaxRetries" => integer(),
        "NonOverridableArguments" => map(),
        "NotificationProperty" => notification_property(),
        "NumberOfWorkers" => integer(),
        "Role" => String.t() | atom(),
        "SecurityConfiguration" => String.t() | atom(),
        "SourceControlDetails" => source_control_details(),
        "Timeout" => integer(),
        "WorkerType" => list(any())
      }
      
  """
  @type job_update() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_data_quality_rule_recommendation_run_request() :: %{
        optional("ClientToken") => String.t() | atom(),
        optional("CreatedRulesetName") => String.t() | atom(),
        optional("DataQualitySecurityConfiguration") => String.t() | atom(),
        optional("NumberOfWorkers") => integer(),
        optional("Timeout") => integer(),
        required("DataSource") => data_source(),
        required("Role") => String.t() | atom()
      }
      
  """
  @type start_data_quality_rule_recommendation_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      scheduler_running_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type scheduler_running_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      usage_profile_definition() :: %{
        "CreatedOn" => non_neg_integer(),
        "Description" => String.t() | atom(),
        "LastModifiedOn" => non_neg_integer(),
        "Name" => String.t() | atom()
      }
      
  """
  @type usage_profile_definition() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_crawlers_response() :: %{
        "CrawlerNames" => list(String.t() | atom()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_crawlers_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_x_ml_classifier_request() :: %{
        "Classification" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "RowTag" => String.t() | atom()
      }
      
  """
  @type update_x_ml_classifier_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_data_quality_ruleset_response() :: %{
        "Description" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Ruleset" => String.t() | atom()
      }
      
  """
  @type update_data_quality_ruleset_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      crawl() :: %{
        "CompletedOn" => non_neg_integer(),
        "ErrorMessage" => String.t() | atom(),
        "LogGroup" => String.t() | atom(),
        "LogStream" => String.t() | atom(),
        "StartedOn" => non_neg_integer(),
        "State" => list(any())
      }
      
  """
  @type crawl() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      o_auth2_credentials() :: %{
        "AccessToken" => String.t() | atom(),
        "JwtToken" => String.t() | atom(),
        "RefreshToken" => String.t() | atom(),
        "UserManagedClientApplicationClientSecret" => String.t() | atom()
      }
      
  """
  @type o_auth2_credentials() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_integration_resource_property_request() :: %{
        optional("SourceProcessingProperties") => source_processing_properties(),
        optional("TargetProcessingProperties") => target_processing_properties(),
        required("ResourceArn") => String.t() | atom()
      }
      
  """
  @type update_integration_resource_property_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_blueprint_run_response() :: %{
        "BlueprintRun" => blueprint_run()
      }
      
  """
  @type get_blueprint_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_data_quality_rule_recommendation_runs_response() :: %{
        "NextToken" => String.t() | atom(),
        "Runs" => list(data_quality_rule_recommendation_run_description())
      }
      
  """
  @type list_data_quality_rule_recommendation_runs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      job() :: %{
        "AllocatedCapacity" => integer(),
        "CodeGenConfigurationNodes" => map(),
        "Command" => job_command(),
        "Connections" => connections_list(),
        "CreatedOn" => non_neg_integer(),
        "DefaultArguments" => map(),
        "Description" => String.t() | atom(),
        "ExecutionClass" => list(any()),
        "ExecutionProperty" => execution_property(),
        "GlueVersion" => String.t() | atom(),
        "JobMode" => list(any()),
        "JobRunQueuingEnabled" => boolean(),
        "LastModifiedOn" => non_neg_integer(),
        "LogUri" => String.t() | atom(),
        "MaintenanceWindow" => String.t() | atom(),
        "MaxCapacity" => float(),
        "MaxRetries" => integer(),
        "Name" => String.t() | atom(),
        "NonOverridableArguments" => map(),
        "NotificationProperty" => notification_property(),
        "NumberOfWorkers" => integer(),
        "ProfileName" => String.t() | atom(),
        "Role" => String.t() | atom(),
        "SecurityConfiguration" => String.t() | atom(),
        "SourceControlDetails" => source_control_details(),
        "Timeout" => integer(),
        "WorkerType" => list(any())
      }
      
  """
  @type job() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_dev_endpoint_request() :: %{
        required("EndpointName") => String.t() | atom()
      }
      
  """
  @type get_dev_endpoint_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      my_s_q_l_catalog_source() :: %{
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Table" => String.t() | atom()
      }
      
  """
  @type my_s_q_l_catalog_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_data_quality_ruleset_evaluation_runs_request() :: %{
        optional("Filter") => data_quality_ruleset_evaluation_run_filter(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type list_data_quality_ruleset_evaluation_runs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      version_mismatch_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type version_mismatch_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_connection_types_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type list_connection_types_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      integration_error() :: %{
        "ErrorCode" => String.t() | atom(),
        "ErrorMessage" => String.t() | atom()
      }
      
  """
  @type integration_error() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      j_db_c_connector_target() :: %{
        "AdditionalOptions" => map(),
        "ConnectionName" => String.t() | atom(),
        "ConnectionTable" => String.t() | atom(),
        "ConnectionType" => String.t() | atom(),
        "ConnectorName" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema())
      }
      
  """
  @type j_db_c_connector_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      table() :: %{
        "CatalogId" => String.t() | atom(),
        "CreateTime" => non_neg_integer(),
        "CreatedBy" => String.t() | atom(),
        "DatabaseName" => String.t() | atom(),
        "Description" => String.t() | atom(),
        "FederatedTable" => federated_table(),
        "IcebergTableMetadata" => iceberg_table_metadata(),
        "IsMaterializedView" => boolean(),
        "IsMultiDialectView" => boolean(),
        "IsRegisteredWithLakeFormation" => boolean(),
        "LastAccessTime" => non_neg_integer(),
        "LastAnalyzedTime" => non_neg_integer(),
        "Name" => String.t() | atom(),
        "Owner" => String.t() | atom(),
        "Parameters" => map(),
        "PartitionKeys" => list(column()),
        "Retention" => integer(),
        "Status" => table_status(),
        "StorageDescriptor" => storage_descriptor(),
        "TableType" => String.t() | atom(),
        "TargetTable" => table_identifier(),
        "UpdateTime" => non_neg_integer(),
        "VersionId" => String.t() | atom(),
        "ViewDefinition" => view_definition(),
        "ViewExpandedText" => String.t() | atom(),
        "ViewOriginalText" => String.t() | atom()
      }
      
  """
  @type table() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_data_catalog_encryption_settings_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DataCatalogEncryptionSettings") => data_catalog_encryption_settings()
      }
      
  """
  @type put_data_catalog_encryption_settings_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      select_fields() :: %{
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "Paths" => list(list(String.t() | atom())())
      }
      
  """
  @type select_fields() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_delta_catalog_target() :: %{
        "AdditionalOptions" => map(),
        "AutoDataQuality" => auto_data_quality(),
        "Database" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "PartitionKeys" => list(list(String.t() | atom())()),
        "SchemaChangePolicy" => catalog_schema_change_policy(),
        "Table" => String.t() | atom()
      }
      
  """
  @type s3_delta_catalog_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      transform_sort_criteria() :: %{
        "Column" => list(any()),
        "SortDirection" => list(any())
      }
      
  """
  @type transform_sort_criteria() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      location() :: %{
        "DynamoDB" => list(code_gen_node_arg()),
        "Jdbc" => list(code_gen_node_arg()),
        "S3" => list(code_gen_node_arg())
      }
      
  """
  @type location() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      search_assets_input() :: %{
        optional("FilterClause") => list(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("SearchText") => String.t() | atom(),
        optional("Sort") => search_sort()
      }
      
  """
  @type search_assets_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      x_ml_classifier() :: %{
        "Classification" => String.t() | atom(),
        "CreationTime" => non_neg_integer(),
        "LastUpdated" => non_neg_integer(),
        "Name" => String.t() | atom(),
        "RowTag" => String.t() | atom(),
        "Version" => float()
      }
      
  """
  @type x_ml_classifier() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_classifier_response() :: %{
        "Classifier" => classifier()
      }
      
  """
  @type get_classifier_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_job_run_response() :: %{
        "JobRunId" => String.t() | atom()
      }
      
  """
  @type start_job_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      option() :: %{
        "Description" => String.t() | atom(),
        "Label" => String.t() | atom(),
        "Value" => String.t() | atom()
      }
      
  """
  @type option() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_catalog_request() :: %{
        optional("Tags") => map(),
        required("CatalogInput") => catalog_input(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type create_catalog_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      encryption_configuration() :: %{
        "CloudWatchEncryption" => cloud_watch_encryption(),
        "DataQualityEncryption" => data_quality_encryption(),
        "JobBookmarksEncryption" => job_bookmarks_encryption(),
        "S3Encryption" => list(s3_encryption())
      }
      
  """
  @type encryption_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_script_response() :: %{
        "PythonScript" => String.t() | atom(),
        "ScalaCode" => String.t() | atom()
      }
      
  """
  @type create_script_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_delta_source() :: %{
        "AdditionalDeltaOptions" => map(),
        "AdditionalOptions" => s3_direct_source_additional_options(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "Paths" => list(String.t() | atom())
      }
      
  """
  @type s3_delta_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      connector_authorization_code_properties() :: %{
        "AuthorizationCode" => connector_property(),
        "AuthorizationCodeUrl" => connector_property(),
        "ClientId" => connector_property(),
        "ClientSecret" => connector_property(),
        "ContentType" => list(any()),
        "Prompt" => connector_property(),
        "RedirectUri" => connector_property(),
        "RequestMethod" => list(any()),
        "Scope" => connector_property(),
        "TokenUrl" => connector_property(),
        "TokenUrlParameters" => list(connector_property())
      }
      
  """
  @type connector_authorization_code_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      dynamo_db_e_l_t_connector_source() :: %{
        "ConnectionOptions" => d_db_e_l_t_connection_options(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema())
      }
      
  """
  @type dynamo_db_e_l_t_connector_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_data_catalog_encryption_settings_request() :: %{
        optional("CatalogId") => String.t() | atom()
      }
      
  """
  @type get_data_catalog_encryption_settings_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      mongo_db_target() :: %{
        "ConnectionName" => String.t() | atom(),
        "Path" => String.t() | atom(),
        "ScanAll" => boolean()
      }
      
  """
  @type mongo_db_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_glue_identity_center_configuration_request() :: %{}
      
  """
  @type delete_glue_identity_center_configuration_request() :: %{}

  @typedoc """

  ## Example:
      
      user_defined_function() :: %{
        "CatalogId" => String.t() | atom(),
        "ClassName" => String.t() | atom(),
        "CreateTime" => non_neg_integer(),
        "DatabaseName" => String.t() | atom(),
        "FunctionName" => String.t() | atom(),
        "FunctionType" => list(any()),
        "OwnerName" => String.t() | atom(),
        "OwnerType" => list(any()),
        "ResourceUris" => list(resource_uri())
      }
      
  """
  @type user_defined_function() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_workflow_run_properties_request() :: %{
        required("Name") => String.t() | atom(),
        required("RunId") => String.t() | atom(),
        required("RunProperties") => map()
      }
      
  """
  @type put_workflow_run_properties_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_job_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type create_job_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      spigot() :: %{
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "Path" => String.t() | atom(),
        "Prob" => float(),
        "Topk" => integer()
      }
      
  """
  @type spigot() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_data_quality_profile_annotation_response() :: %{}
      
  """
  @type put_data_quality_profile_annotation_response() :: %{}

  @typedoc """

  ## Example:
      
      o_auth2_properties_input() :: %{
        "AuthorizationCodeProperties" => authorization_code_properties(),
        "OAuth2ClientApplication" => o_auth2_client_application(),
        "OAuth2Credentials" => o_auth2_credentials(),
        "OAuth2GrantType" => list(any()),
        "TokenUrl" => String.t() | atom(),
        "TokenUrlParametersMap" => map()
      }
      
  """
  @type o_auth2_properties_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_trigger_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type start_trigger_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_classifier_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type get_classifier_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_asset_type_request() :: %{
        optional("ClientToken") => String.t() | atom(),
        required("Forms") => map(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type put_asset_type_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_table_optimizer_request() :: %{
        required("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom(),
        required("Type") => list(any())
      }
      
  """
  @type get_table_optimizer_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_catalog_response() :: %{
        "Catalog" => catalog()
      }
      
  """
  @type get_catalog_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_classifier_response() :: %{}
      
  """
  @type delete_classifier_response() :: %{}

  @typedoc """

  ## Example:
      
      recipe_step() :: %{
        "Action" => recipe_action(),
        "ConditionExpressions" => list(condition_expression())
      }
      
  """
  @type recipe_step() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_dev_endpoint_response() :: %{
        "DevEndpoint" => dev_endpoint()
      }
      
  """
  @type get_dev_endpoint_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_crawlers_response() :: %{
        "Crawlers" => list(crawler()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type get_crawlers_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      session_endpoint() :: %{
        "AuthToken" => String.t() | atom(),
        "AuthTokenExpirationTime" => non_neg_integer(),
        "Url" => String.t() | atom()
      }
      
  """
  @type session_endpoint() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      allowed_value() :: %{
        "Description" => String.t() | atom(),
        "Value" => String.t() | atom()
      }
      
  """
  @type allowed_value() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_connections_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("Filter") => get_connections_filter(),
        optional("HidePassword") => boolean(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type get_connections_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_unfiltered_table_metadata_response() :: %{
        "AuthorizedColumns" => list(String.t() | atom()),
        "CellFilters" => list(column_row_filter()),
        "IsMaterializedView" => boolean(),
        "IsMultiDialectView" => boolean(),
        "IsProtected" => boolean(),
        "IsRegisteredWithLakeFormation" => boolean(),
        "Permissions" => list(list(any())()),
        "QueryAuthorizationId" => String.t() | atom(),
        "ResourceArn" => String.t() | atom(),
        "RowFilter" => String.t() | atom(),
        "Table" => table()
      }
      
  """
  @type get_unfiltered_table_metadata_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_lake_access_properties() :: %{
        "CatalogType" => String.t() | atom(),
        "DataLakeAccess" => boolean(),
        "DataTransferRole" => String.t() | atom(),
        "KmsKey" => String.t() | atom()
      }
      
  """
  @type data_lake_access_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      asset_form_entry() :: %{
        "Content" => String.t() | atom(),
        "FormTypeId" => String.t() | atom()
      }
      
  """
  @type asset_form_entry() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_direct_target() :: %{
        "AutoDataQuality" => auto_data_quality(),
        "Compression" => String.t() | atom(),
        "Format" => list(any()),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "NumberTargetPartitions" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "PartitionKeys" => list(list(String.t() | atom())()),
        "Path" => String.t() | atom(),
        "SchemaChangePolicy" => direct_schema_change_policy()
      }
      
  """
  @type s3_direct_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_workflow_run_request() :: %{
        optional("IncludeGraph") => boolean(),
        required("Name") => String.t() | atom(),
        required("RunId") => String.t() | atom()
      }
      
  """
  @type get_workflow_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      redshift_target() :: %{
        "Database" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "RedshiftTmpDir" => String.t() | atom(),
        "Table" => String.t() | atom(),
        "TmpDirIAMRole" => String.t() | atom(),
        "UpsertRedshiftOptions" => upsert_redshift_target_options()
      }
      
  """
  @type redshift_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      column_error() :: %{
        "ColumnName" => String.t() | atom(),
        "Error" => error_detail()
      }
      
  """
  @type column_error() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_ml_transforms_response() :: %{
        "NextToken" => String.t() | atom(),
        "Transforms" => list(ml_transform())
      }
      
  """
  @type get_ml_transforms_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_dev_endpoints_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("Tags") => map()
      }
      
  """
  @type list_dev_endpoints_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_registries_response() :: %{
        "NextToken" => String.t() | atom(),
        "Registries" => list(registry_list_item())
      }
      
  """
  @type list_registries_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_database_response() :: %{}
      
  """
  @type delete_database_response() :: %{}

  @typedoc """

  ## Example:
      
      invalid_state_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type invalid_state_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      confusion_matrix() :: %{
        "NumFalseNegatives" => float(),
        "NumFalsePositives" => float(),
        "NumTrueNegatives" => float(),
        "NumTruePositives" => float()
      }
      
  """
  @type confusion_matrix() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_schema() :: %{
        "Fields" => list(iceberg_struct_field()),
        "IdentifierFieldIds" => list(integer()),
        "SchemaId" => integer(),
        "Type" => list(any())
      }
      
  """
  @type iceberg_schema() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      metadata_key_value_pair() :: %{
        "MetadataKey" => String.t() | atom(),
        "MetadataValue" => String.t() | atom()
      }
      
  """
  @type metadata_key_value_pair() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      evaluation_metrics() :: %{
        "FindMatchesMetrics" => find_matches_metrics(),
        "TransformType" => list(any())
      }
      
  """
  @type evaluation_metrics() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_integration_resource_property_request() :: %{
        optional("SourceProcessingProperties") => source_processing_properties(),
        optional("Tags") => list(tag()),
        optional("TargetProcessingProperties") => target_processing_properties(),
        required("ResourceArn") => String.t() | atom()
      }
      
  """
  @type create_integration_resource_property_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_table_version_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom(),
        required("VersionId") => String.t() | atom()
      }
      
  """
  @type delete_table_version_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      action() :: %{
        "Arguments" => map(),
        "CrawlerName" => String.t() | atom(),
        "JobName" => String.t() | atom(),
        "NotificationProperty" => notification_property(),
        "SecurityConfiguration" => String.t() | atom(),
        "Timeout" => integer()
      }
      
  """
  @type action() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      connector_data_target() :: %{
        "ConnectionType" => String.t() | atom(),
        "Data" => map(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom()
      }
      
  """
  @type connector_data_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_usage_profile_response() :: %{
        "Configuration" => profile_configuration(),
        "CreatedOn" => non_neg_integer(),
        "Description" => String.t() | atom(),
        "LastModifiedOn" => non_neg_integer(),
        "Name" => String.t() | atom()
      }
      
  """
  @type get_usage_profile_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_glue_identity_center_configuration_response() :: %{
        "ApplicationArn" => String.t() | atom(),
        "InstanceArn" => String.t() | atom(),
        "Scopes" => list(String.t() | atom()),
        "UserBackgroundSessionsEnabled" => boolean()
      }
      
  """
  @type get_glue_identity_center_configuration_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      column_statistics() :: %{
        "AnalyzedTime" => non_neg_integer(),
        "ColumnName" => String.t() | atom(),
        "ColumnType" => String.t() | atom(),
        "StatisticsData" => column_statistics_data()
      }
      
  """
  @type column_statistics() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_schema_by_definition_input() :: %{
        required("SchemaDefinition") => String.t() | atom(),
        required("SchemaId") => schema_id()
      }
      
  """
  @type get_schema_by_definition_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_excel_source() :: %{
        "AdditionalOptions" => s3_direct_source_additional_options(),
        "CompressionType" => list(any()),
        "Exclusions" => list(String.t() | atom()),
        "GroupFiles" => String.t() | atom(),
        "GroupSize" => String.t() | atom(),
        "MaxBand" => integer(),
        "MaxFilesInBand" => integer(),
        "Name" => String.t() | atom(),
        "NumberRows" => float(),
        "OutputSchemas" => list(glue_schema()),
        "Paths" => list(String.t() | atom()),
        "Recurse" => boolean(),
        "SkipFooter" => integer()
      }
      
  """
  @type s3_excel_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      glue_studio_schema_column() :: %{
        "GlueStudioType" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Type" => String.t() | atom()
      }
      
  """
  @type glue_studio_schema_column() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      disassociate_glossary_terms_response() :: %{
        "AssetIdentifier" => String.t() | atom(),
        "GlossaryTerms" => list(String.t() | atom())
      }
      
  """
  @type disassociate_glossary_terms_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_data_quality_ruleset_response() :: %{
        "CreatedOn" => non_neg_integer(),
        "DataQualitySecurityConfiguration" => String.t() | atom(),
        "Description" => String.t() | atom(),
        "LastModifiedOn" => non_neg_integer(),
        "Name" => String.t() | atom(),
        "RecommendationRunId" => String.t() | atom(),
        "Ruleset" => String.t() | atom(),
        "TargetTable" => data_quality_target_table()
      }
      
  """
  @type get_data_quality_ruleset_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_workflow_run_response() :: %{
        "RunId" => String.t() | atom()
      }
      
  """
  @type start_workflow_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      recipe_action() :: %{
        "Operation" => String.t() | atom(),
        "Parameters" => map()
      }
      
  """
  @type recipe_action() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_mapping_request() :: %{
        optional("Location") => location(),
        optional("Sinks") => list(catalog_entry()),
        required("Source") => catalog_entry()
      }
      
  """
  @type get_mapping_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_update_partition_response() :: %{
        "Errors" => list(batch_update_partition_failure_entry())
      }
      
  """
  @type batch_update_partition_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      join_column() :: %{
        "From" => String.t() | atom(),
        "Keys" => list(list(String.t() | atom())())
      }
      
  """
  @type join_column() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_column_statistics_for_partition_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("ColumnNames") => list(String.t() | atom()),
        required("DatabaseName") => String.t() | atom(),
        required("PartitionValues") => list(String.t() | atom()),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type get_column_statistics_for_partition_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_integration_response() :: %{
        "AdditionalEncryptionContext" => map(),
        "CreateTime" => non_neg_integer(),
        "DataFilter" => String.t() | atom(),
        "Description" => String.t() | atom(),
        "Errors" => list(integration_error()),
        "IntegrationArn" => String.t() | atom(),
        "IntegrationName" => String.t() | atom(),
        "KmsKeyId" => String.t() | atom(),
        "SourceArn" => String.t() | atom(),
        "Status" => list(any()),
        "Tags" => list(tag()),
        "TargetArn" => String.t() | atom()
      }
      
  """
  @type delete_integration_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_data_quality_model_result_request() :: %{
        required("ProfileId") => String.t() | atom(),
        required("StatisticId") => String.t() | atom()
      }
      
  """
  @type get_data_quality_model_result_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_column_statistics_task_run_schedule_response() :: %{}
      
  """
  @type stop_column_statistics_task_run_schedule_response() :: %{}

  @typedoc """

  ## Example:
      
      crawler_running_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type crawler_running_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      select_from_collection() :: %{
        "Index" => integer(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom()
      }
      
  """
  @type select_from_collection() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      custom_code() :: %{
        "ClassName" => String.t() | atom(),
        "Code" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema())
      }
      
  """
  @type custom_code() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_glue_identity_center_configuration_request() :: %{
        optional("Scopes") => list(String.t() | atom()),
        optional("UserBackgroundSessionsEnabled") => boolean(),
        required("InstanceArn") => String.t() | atom()
      }
      
  """
  @type create_glue_identity_center_configuration_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_materialized_view_refresh_task_run_response() :: %{
        "MaterializedViewRefreshTaskRunId" => String.t() | atom()
      }
      
  """
  @type start_materialized_view_refresh_task_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_crawlers_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type get_crawlers_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      boolean_column_statistics_data() :: %{
        "NumberOfFalses" => float(),
        "NumberOfNulls" => float(),
        "NumberOfTrues" => float()
      }
      
  """
  @type boolean_column_statistics_data() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_schema_by_definition_response() :: %{
        "CreatedTime" => String.t() | atom(),
        "DataFormat" => list(any()),
        "SchemaArn" => String.t() | atom(),
        "SchemaVersionId" => String.t() | atom(),
        "Status" => list(any())
      }
      
  """
  @type get_schema_by_definition_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_json_classifier_request() :: %{
        "JsonPath" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type create_json_classifier_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_integration_table_properties_request() :: %{
        optional("SourceTableConfig") => source_table_config(),
        optional("TargetTableConfig") => target_table_config(),
        required("ResourceArn") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type update_integration_table_properties_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_crawls_response() :: %{
        "Crawls" => list(crawler_history()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_crawls_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_classifier_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type delete_classifier_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_table_optimizer_response() :: %{
        "CatalogId" => String.t() | atom(),
        "DatabaseName" => String.t() | atom(),
        "TableName" => String.t() | atom(),
        "TableOptimizer" => table_optimizer()
      }
      
  """
  @type get_table_optimizer_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_table_optimizer_runs_response() :: %{
        "CatalogId" => String.t() | atom(),
        "DatabaseName" => String.t() | atom(),
        "NextToken" => String.t() | atom(),
        "TableName" => String.t() | atom(),
        "TableOptimizerRuns" => list(table_optimizer_run())
      }
      
  """
  @type list_table_optimizer_runs_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      labeling_set_generation_task_run_properties() :: %{
        "OutputS3Path" => String.t() | atom()
      }
      
  """
  @type labeling_set_generation_task_run_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_materialized_view_refresh_task_run_response() :: %{}
      
  """
  @type stop_materialized_view_refresh_task_run_response() :: %{}

  @typedoc """

  ## Example:
      
      job_bookmarks_encryption() :: %{
        "JobBookmarksEncryptionMode" => list(any()),
        "KmsKeyArn" => String.t() | atom()
      }
      
  """
  @type job_bookmarks_encryption() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_column_statistics_task_run_schedule_request() :: %{
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type stop_column_statistics_task_run_schedule_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      pagination_configuration() :: %{
        "CursorConfiguration" => cursor_configuration(),
        "OffsetConfiguration" => offset_configuration()
      }
      
  """
  @type pagination_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      response_extraction_mapping() :: %{
        "ContentPath" => String.t() | atom(),
        "HeaderKey" => String.t() | atom()
      }
      
  """
  @type response_extraction_mapping() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      catalog_kinesis_source() :: %{
        "DataPreviewOptions" => streaming_data_preview_options(),
        "Database" => String.t() | atom(),
        "DetectSchema" => boolean(),
        "Name" => String.t() | atom(),
        "StreamingOptions" => kinesis_streaming_source_options(),
        "Table" => String.t() | atom(),
        "WindowSize" => integer()
      }
      
  """
  @type catalog_kinesis_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      remove_schema_version_metadata_response() :: %{
        "LatestVersion" => boolean(),
        "MetadataKey" => String.t() | atom(),
        "MetadataValue" => String.t() | atom(),
        "RegistryName" => String.t() | atom(),
        "SchemaArn" => String.t() | atom(),
        "SchemaName" => String.t() | atom(),
        "SchemaVersionId" => String.t() | atom(),
        "VersionNumber" => float()
      }
      
  """
  @type remove_schema_version_metadata_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_user_defined_function_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("FunctionInput") => user_defined_function_input(),
        required("FunctionName") => String.t() | atom()
      }
      
  """
  @type update_user_defined_function_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      permission_type_mismatch_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type permission_type_mismatch_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      resource_number_limit_exceeded_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type resource_number_limit_exceeded_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      datatype() :: %{
        "Id" => String.t() | atom(),
        "Label" => String.t() | atom()
      }
      
  """
  @type datatype() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_classifiers_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type get_classifiers_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_blueprint_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type delete_blueprint_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      condition_check_failure_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type condition_check_failure_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_ml_transforms_response() :: %{
        "NextToken" => String.t() | atom(),
        "TransformIds" => list(String.t() | atom())
      }
      
  """
  @type list_ml_transforms_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_database_response() :: %{
        "Database" => database()
      }
      
  """
  @type get_database_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_table_version_response() :: %{}
      
  """
  @type delete_table_version_response() :: %{}

  @typedoc """

  ## Example:
      
      start_column_statistics_task_run_request() :: %{
        optional("CatalogID") => String.t() | atom(),
        optional("ColumnNameList") => list(String.t() | atom()),
        optional("SampleSize") => float(),
        optional("SecurityConfiguration") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("Role") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type start_column_statistics_task_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      ml_user_data_encryption() :: %{
        "KmsKeyId" => String.t() | atom(),
        "MlUserDataEncryptionMode" => list(any())
      }
      
  """
  @type ml_user_data_encryption() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_connection_request() :: %{
        optional("ApplyOverrideForComputeEnvironment") => list(any()),
        optional("CatalogId") => String.t() | atom(),
        optional("HidePassword") => boolean(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type get_connection_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_ruleset_evaluation_run_filter() :: %{
        "DataSource" => data_source(),
        "RulesetName" => String.t() | atom(),
        "StartedAfter" => non_neg_integer(),
        "StartedBefore" => non_neg_integer()
      }
      
  """
  @type data_quality_ruleset_evaluation_run_filter() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      basic_catalog_target() :: %{
        "Database" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "PartitionKeys" => list(list(String.t() | atom())()),
        "Table" => String.t() | atom()
      }
      
  """
  @type basic_catalog_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      key_schema_element() :: %{
        "Name" => String.t() | atom(),
        "Type" => String.t() | atom()
      }
      
  """
  @type key_schema_element() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_iceberg_input() :: %{
        "UpdateIcebergTableInput" => update_iceberg_table_input()
      }
      
  """
  @type update_iceberg_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      error_details() :: %{
        "ErrorCode" => String.t() | atom(),
        "ErrorMessage" => String.t() | atom()
      }
      
  """
  @type error_details() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_column_statistics_task_run_schedule_request() :: %{
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type start_column_statistics_task_run_schedule_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      audit_context() :: %{
        "AdditionalAuditContext" => String.t() | atom(),
        "AllColumnsRequested" => boolean(),
        "RequestedColumns" => list(String.t() | atom())
      }
      
  """
  @type audit_context() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_glossary_term_response() :: %{
        "GlossaryId" => String.t() | atom(),
        "Id" => String.t() | atom(),
        "LongDescription" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "ShortDescription" => String.t() | atom()
      }
      
  """
  @type create_glossary_term_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_attachment_response() :: %{
        "AssetIdentifier" => String.t() | atom(),
        "AttachmentName" => String.t() | atom(),
        "FormTypeId" => String.t() | atom(),
        "ItemIdentifier" => String.t() | atom(),
        "IterableFormName" => String.t() | atom()
      }
      
  """
  @type put_attachment_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      scheduler_not_running_exception() :: %{
        "Message" => String.t() | atom()
      }
      
  """
  @type scheduler_not_running_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_crawler_schedule_response() :: %{}
      
  """
  @type start_crawler_schedule_response() :: %{}

  @typedoc """

  ## Example:
      
      put_asset_response() :: %{
        "CreatedAt" => non_neg_integer(),
        "Description" => String.t() | atom(),
        "Forms" => map(),
        "Id" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type put_asset_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_json_classifier_request() :: %{
        "JsonPath" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type update_json_classifier_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_table_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("TransactionId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type delete_table_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_custom_entity_types_response() :: %{
        "CustomEntityTypes" => list(custom_entity_type()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_custom_entity_types_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_materialized_view_refresh_task_runs_request() :: %{
        optional("DatabaseName") => String.t() | atom(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("TableName") => String.t() | atom(),
        required("CatalogId") => String.t() | atom()
      }
      
  """
  @type list_materialized_view_refresh_task_runs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_iceberg_catalog_target() :: %{
        "AdditionalOptions" => map(),
        "AutoDataQuality" => auto_data_quality(),
        "Database" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "PartitionKeys" => list(list(String.t() | atom())()),
        "SchemaChangePolicy" => catalog_schema_change_policy(),
        "Table" => String.t() | atom()
      }
      
  """
  @type s3_iceberg_catalog_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      spark_s_q_l() :: %{
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "SqlAliases" => list(sql_alias()),
        "SqlQuery" => String.t() | atom()
      }
      
  """
  @type spark_s_q_l() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_orphan_file_deletion_configuration() :: %{
        "location" => String.t() | atom(),
        "orphanFileRetentionPeriodInDays" => integer(),
        "runRateInHours" => integer()
      }
      
  """
  @type iceberg_orphan_file_deletion_configuration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_table_version_response() :: %{
        "TableVersion" => table_version()
      }
      
  """
  @type get_table_version_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      extracted_parameter() :: %{
        "DefaultValue" => String.t() | atom(),
        "Key" => String.t() | atom(),
        "PropertyLocation" => list(any()),
        "Value" => response_extraction_mapping()
      }
      
  """
  @type extracted_parameter() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      group_filters() :: %{
        "Filters" => list(filter_expression()),
        "GroupName" => String.t() | atom(),
        "LogicalOperator" => list(any())
      }
      
  """
  @type group_filters() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_ruleset_list_details() :: %{
        "CreatedOn" => non_neg_integer(),
        "Description" => String.t() | atom(),
        "LastModifiedOn" => non_neg_integer(),
        "Name" => String.t() | atom(),
        "RecommendationRunId" => String.t() | atom(),
        "RuleCount" => integer(),
        "TargetTable" => data_quality_target_table()
      }
      
  """
  @type data_quality_ruleset_list_details() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      string_column_statistics_data() :: %{
        "AverageLength" => float(),
        "MaximumLength" => float(),
        "NumberOfDistinctValues" => float(),
        "NumberOfNulls" => float()
      }
      
  """
  @type string_column_statistics_data() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      describe_inbound_integrations_response() :: %{
        "InboundIntegrations" => list(inbound_integration()),
        "Marker" => String.t() | atom()
      }
      
  """
  @type describe_inbound_integrations_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_database_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type get_database_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      crawler_node_details() :: %{
        "Crawls" => list(crawl())
      }
      
  """
  @type crawler_node_details() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_workflow_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type update_workflow_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_dashboard_url_request() :: %{
        optional("RequestOrigin") => String.t() | atom(),
        required("ResourceId") => String.t() | atom(),
        required("ResourceType") => list(any())
      }
      
  """
  @type get_dashboard_url_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      recrawl_policy() :: %{
        "RecrawlBehavior" => list(any())
      }
      
  """
  @type recrawl_policy() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_connection_response() :: %{
        "Connection" => connection()
      }
      
  """
  @type get_connection_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      disassociate_glossary_terms_request() :: %{
        optional("ClientToken") => String.t() | atom(),
        required("GlossaryTermIdentifiers") => list(String.t() | atom())
      }
      
  """
  @type disassociate_glossary_terms_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_table_update() :: %{
        "Action" => list(any()),
        "EncryptionKey" => iceberg_encrypted_key(),
        "KeyId" => String.t() | atom(),
        "Location" => String.t() | atom(),
        "PartitionSpec" => iceberg_partition_spec(),
        "Properties" => map(),
        "Schema" => iceberg_schema(),
        "SortOrder" => iceberg_sort_order()
      }
      
  """
  @type iceberg_table_update() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      segment() :: %{
        "SegmentNumber" => integer(),
        "TotalSegments" => integer()
      }
      
  """
  @type segment() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      put_attachment_request() :: %{
        optional("ClientToken") => String.t() | atom(),
        optional("ItemIdentifier") => String.t() | atom(),
        optional("IterableFormName") => String.t() | atom(),
        required("AttachmentName") => String.t() | atom(),
        required("Content") => String.t() | atom(),
        required("FormTypeId") => String.t() | atom()
      }
      
  """
  @type put_attachment_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iterable_form_entry() :: %{
        "FormTypeId" => String.t() | atom()
      }
      
  """
  @type iterable_form_entry() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_security_configuration_response() :: %{}
      
  """
  @type delete_security_configuration_response() :: %{}

  @typedoc """

  ## Example:
      
      get_user_defined_functions_response() :: %{
        "NextToken" => String.t() | atom(),
        "UserDefinedFunctions" => list(user_defined_function())
      }
      
  """
  @type get_user_defined_functions_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      aggregate_operation() :: %{
        "AggFunc" => list(any()),
        "Column" => list(String.t() | atom())
      }
      
  """
  @type aggregate_operation() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_table_response() :: %{}
      
  """
  @type update_table_response() :: %{}

  @typedoc """

  ## Example:
      
      get_data_quality_result_response() :: %{
        "AggregatedMetrics" => data_quality_aggregated_metrics(),
        "AnalyzerResults" => list(data_quality_analyzer_result()),
        "CompletedOn" => non_neg_integer(),
        "DataSource" => data_source(),
        "EvaluationContext" => String.t() | atom(),
        "JobName" => String.t() | atom(),
        "JobRunId" => String.t() | atom(),
        "Observations" => list(data_quality_observation()),
        "ProfileId" => String.t() | atom(),
        "ResultId" => String.t() | atom(),
        "RuleResults" => list(data_quality_rule_result()),
        "RulesetEvaluationRunId" => String.t() | atom(),
        "RulesetName" => String.t() | atom(),
        "Score" => float(),
        "StartedOn" => non_neg_integer()
      }
      
  """
  @type get_data_quality_result_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      drop_fields() :: %{
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "Paths" => list(list(String.t() | atom())())
      }
      
  """
  @type drop_fields() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      source_processing_properties() :: %{
        "RoleArn" => String.t() | atom()
      }
      
  """
  @type source_processing_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_workflow_run_request() :: %{
        optional("RunProperties") => map(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type start_workflow_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_catalog_hudi_source() :: %{
        "AdditionalHudiOptions" => map(),
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "OutputSchemas" => list(glue_schema()),
        "Table" => String.t() | atom()
      }
      
  """
  @type s3_catalog_hudi_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      snowflake_node_data() :: %{
        "Action" => String.t() | atom(),
        "AdditionalOptions" => map(),
        "AutoPushdown" => boolean(),
        "Connection" => option(),
        "Database" => String.t() | atom(),
        "IamRole" => option(),
        "MergeAction" => String.t() | atom(),
        "MergeClause" => String.t() | atom(),
        "MergeWhenMatched" => String.t() | atom(),
        "MergeWhenNotMatched" => String.t() | atom(),
        "PostAction" => String.t() | atom(),
        "PreAction" => String.t() | atom(),
        "SampleQuery" => String.t() | atom(),
        "Schema" => String.t() | atom(),
        "SelectedColumns" => list(option()),
        "SourceType" => String.t() | atom(),
        "StagingTable" => String.t() | atom(),
        "Table" => String.t() | atom(),
        "TableSchema" => list(option()),
        "TempDir" => String.t() | atom(),
        "Upsert" => boolean()
      }
      
  """
  @type snowflake_node_data() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_column_statistics_task_runs_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type list_column_statistics_task_runs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_user_defined_function_response() :: %{
        "UserDefinedFunction" => user_defined_function()
      }
      
  """
  @type get_user_defined_function_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_target() :: %{
        "ConnectionName" => String.t() | atom(),
        "Exclusions" => list(String.t() | atom()),
        "MaximumTraversalDepth" => integer(),
        "Paths" => list(String.t() | atom())
      }
      
  """
  @type iceberg_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      inbound_integration() :: %{
        "CreateTime" => non_neg_integer(),
        "Errors" => list(integration_error()),
        "IntegrationArn" => String.t() | atom(),
        "IntegrationConfig" => integration_config(),
        "SourceArn" => String.t() | atom(),
        "Status" => list(any()),
        "TargetArn" => String.t() | atom()
      }
      
  """
  @type inbound_integration() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_resource_policies_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom()
      }
      
  """
  @type get_resource_policies_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_table_metadata() :: %{
        "CurrentSchemaId" => integer(),
        "DefaultSortOrderId" => integer(),
        "DefaultSpecId" => integer(),
        "FormatVersion" => String.t() | atom(),
        "LastColumnId" => integer(),
        "LastPartitionId" => integer(),
        "Location" => String.t() | atom(),
        "PartitionSpecs" => list(iceberg_partition_spec()),
        "Properties" => map(),
        "Schemas" => list(iceberg_schema()),
        "SortOrders" => list(iceberg_sort_order()),
        "TableUuid" => String.t() | atom()
      }
      
  """
  @type iceberg_table_metadata() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_schemas_input() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("RegistryId") => registry_id()
      }
      
  """
  @type list_schemas_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_column_statistics_for_partition_response() :: %{}
      
  """
  @type delete_column_statistics_for_partition_response() :: %{}

  @typedoc """

  ## Example:
      
      batch_delete_connection_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("ConnectionNameList") => list(String.t() | atom())
      }
      
  """
  @type batch_delete_connection_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      modify_integration_request() :: %{
        optional("DataFilter") => String.t() | atom(),
        optional("Description") => String.t() | atom(),
        optional("IntegrationConfig") => integration_config(),
        optional("IntegrationName") => String.t() | atom(),
        required("IntegrationIdentifier") => String.t() | atom()
      }
      
  """
  @type modify_integration_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_observation() :: %{
        "Description" => String.t() | atom(),
        "MetricBasedObservation" => metric_based_observation()
      }
      
  """
  @type data_quality_observation() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iterable_form_list_item() :: %{
        "Description" => String.t() | atom(),
        "GlossaryTerms" => list(String.t() | atom()),
        "ItemId" => String.t() | atom(),
        "ItemName" => String.t() | atom()
      }
      
  """
  @type iterable_form_list_item() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      s3_catalog_target() :: %{
        "AutoDataQuality" => auto_data_quality(),
        "Database" => String.t() | atom(),
        "Inputs" => list(String.t() | atom()),
        "Name" => String.t() | atom(),
        "PartitionKeys" => list(list(String.t() | atom())()),
        "SchemaChangePolicy" => catalog_schema_change_policy(),
        "Table" => String.t() | atom()
      }
      
  """
  @type s3_catalog_target() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_usage_profiles_response() :: %{
        "NextToken" => String.t() | atom(),
        "Profiles" => list(usage_profile_definition())
      }
      
  """
  @type list_usage_profiles_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      associate_glossary_terms_response() :: %{
        "AssetIdentifier" => String.t() | atom(),
        "GlossaryTerms" => list(String.t() | atom())
      }
      
  """
  @type associate_glossary_terms_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_table_optimizer_entry() :: %{
        "catalogId" => String.t() | atom(),
        "databaseName" => String.t() | atom(),
        "tableName" => String.t() | atom(),
        "type" => list(any())
      }
      
  """
  @type batch_get_table_optimizer_entry() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_put_data_quality_statistic_annotation_response() :: %{
        "FailedInclusionAnnotations" => list(annotation_error())
      }
      
  """
  @type batch_put_data_quality_statistic_annotation_response() :: %{
          (String.t() | atom()) => any()
        }

  @typedoc """

  ## Example:
      
      get_user_defined_function_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("FunctionName") => String.t() | atom()
      }
      
  """
  @type get_user_defined_function_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_column_statistics_task_settings_response() :: %{}
      
  """
  @type create_column_statistics_task_settings_response() :: %{}

  @typedoc """

  ## Example:
      
      list_jobs_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("Tags") => map()
      }
      
  """
  @type list_jobs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      execution_attempt() :: %{
        "ColumnStatisticsTaskRunId" => String.t() | atom(),
        "ErrorMessage" => String.t() | atom(),
        "ExecutionTimestamp" => non_neg_integer(),
        "Status" => list(any())
      }
      
  """
  @type execution_attempt() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_ml_task_run_request() :: %{
        required("TaskRunId") => String.t() | atom(),
        required("TransformId") => String.t() | atom()
      }
      
  """
  @type get_ml_task_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      crawls_filter() :: %{
        "FieldName" => list(any()),
        "FieldValue" => String.t() | atom(),
        "FilterOperator" => list(any())
      }
      
  """
  @type crawls_filter() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      connector_o_auth2_properties() :: %{
        "AuthorizationCodeProperties" => connector_authorization_code_properties(),
        "ClientCredentialsProperties" => client_credentials_properties(),
        "JWTBearerProperties" => j_w_t_bearer_properties(),
        "OAuth2GrantType" => list(any())
      }
      
  """
  @type connector_o_auth2_properties() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_asset_input() :: %{}
      
  """
  @type get_asset_input() :: %{}

  @typedoc """

  ## Example:
      
      task_run_sort_criteria() :: %{
        "Column" => list(any()),
        "SortDirection" => list(any())
      }
      
  """
  @type task_run_sort_criteria() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      statistic_summary() :: %{
        "ColumnsReferenced" => list(String.t() | atom()),
        "DoubleValue" => float(),
        "EvaluationLevel" => list(any()),
        "InclusionAnnotation" => timestamped_inclusion_annotation(),
        "ProfileId" => String.t() | atom(),
        "RecordedOn" => non_neg_integer(),
        "ReferencedDatasets" => list(String.t() | atom()),
        "RunIdentifier" => run_identifier(),
        "StatisticId" => String.t() | atom(),
        "StatisticName" => String.t() | atom(),
        "StatisticProperties" => map()
      }
      
  """
  @type statistic_summary() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      catalog_input() :: %{
        "AllowFullTableExternalDataAccess" => list(any()),
        "CatalogProperties" => catalog_properties(),
        "CreateDatabaseDefaultPermissions" => list(principal_permissions()),
        "CreateTableDefaultPermissions" => list(principal_permissions()),
        "Description" => String.t() | atom(),
        "FederatedCatalog" => federated_catalog(),
        "OverwriteChildResourcePermissionsWithDefault" => list(any()),
        "Parameters" => map(),
        "TargetRedshiftCatalog" => target_redshift_catalog()
      }
      
  """
  @type catalog_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_partition_request() :: %{
        optional("AuditContext") => audit_context(),
        optional("CatalogId") => String.t() | atom(),
        optional("QuerySessionContext") => query_session_context(),
        required("DatabaseName") => String.t() | atom(),
        required("PartitionsToGet") => list(partition_value_list()),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type batch_get_partition_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_ml_evaluation_task_run_response() :: %{
        "TaskRunId" => String.t() | atom()
      }
      
  """
  @type start_ml_evaluation_task_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_ml_transforms_request() :: %{
        optional("Filter") => transform_filter_criteria(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("Sort") => transform_sort_criteria()
      }
      
  """
  @type get_ml_transforms_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_registry_input() :: %{
        required("Description") => String.t() | atom(),
        required("RegistryId") => registry_id()
      }
      
  """
  @type update_registry_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      catalog_kafka_source() :: %{
        "DataPreviewOptions" => streaming_data_preview_options(),
        "Database" => String.t() | atom(),
        "DetectSchema" => boolean(),
        "Name" => String.t() | atom(),
        "StreamingOptions" => kafka_streaming_source_options(),
        "Table" => String.t() | atom(),
        "WindowSize" => integer()
      }
      
  """
  @type catalog_kafka_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      postgre_s_q_l_catalog_source() :: %{
        "Database" => String.t() | atom(),
        "Name" => String.t() | atom(),
        "Table" => String.t() | atom()
      }
      
  """
  @type postgre_s_q_l_catalog_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_blueprint_runs_request() :: %{
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        required("BlueprintName") => String.t() | atom()
      }
      
  """
  @type get_blueprint_runs_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      filter() :: %{
        "Filters" => list(filter_expression()),
        "Inputs" => list(String.t() | atom()),
        "LogicalOperator" => list(any()),
        "Name" => String.t() | atom()
      }
      
  """
  @type filter() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      encryption_at_rest() :: %{
        "CatalogEncryptionMode" => list(any()),
        "CatalogEncryptionServiceRole" => String.t() | atom(),
        "SseAwsKmsKeyId" => String.t() | atom()
      }
      
  """
  @type encryption_at_rest() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_export_labels_task_run_response() :: %{
        "TaskRunId" => String.t() | atom()
      }
      
  """
  @type start_export_labels_task_run_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      principal_permissions() :: %{
        "Permissions" => list(list(any())()),
        "Principal" => data_lake_principal()
      }
      
  """
  @type principal_permissions() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_trigger_response() :: %{
        "Name" => String.t() | atom()
      }
      
  """
  @type stop_trigger_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_glue_identity_center_configuration_request() :: %{
        optional("Scopes") => list(String.t() | atom()),
        optional("UserBackgroundSessionsEnabled") => boolean()
      }
      
  """
  @type update_glue_identity_center_configuration_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_plan_request() :: %{
        optional("AdditionalPlanOptionsMap") => map(),
        optional("Language") => list(any()),
        optional("Location") => location(),
        optional("Sinks") => list(catalog_entry()),
        required("Mapping") => list(mapping_entry()),
        required("Source") => catalog_entry()
      }
      
  """
  @type get_plan_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_open_table_format_input() :: %{
        "UpdateIcebergInput" => update_iceberg_input()
      }
      
  """
  @type update_open_table_format_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_schema_versions_response() :: %{
        "SchemaVersionErrors" => list(schema_version_error_item())
      }
      
  """
  @type delete_schema_versions_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      direct_kafka_source() :: %{
        "DataPreviewOptions" => streaming_data_preview_options(),
        "DetectSchema" => boolean(),
        "Name" => String.t() | atom(),
        "StreamingOptions" => kafka_streaming_source_options(),
        "WindowSize" => integer()
      }
      
  """
  @type direct_kafka_source() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      start_column_statistics_task_run_schedule_response() :: %{}
      
  """
  @type start_column_statistics_task_run_schedule_response() :: %{}

  @typedoc """

  ## Example:
      
      stop_workflow_run_request() :: %{
        required("Name") => String.t() | atom(),
        required("RunId") => String.t() | atom()
      }
      
  """
  @type stop_workflow_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      table_error() :: %{
        "ErrorDetail" => error_detail(),
        "TableName" => String.t() | atom()
      }
      
  """
  @type table_error() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      upsert_redshift_target_options() :: %{
        "ConnectionName" => String.t() | atom(),
        "TableLocation" => String.t() | atom(),
        "UpsertKeys" => list(String.t() | atom())
      }
      
  """
  @type upsert_redshift_target_options() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_catalog_request() :: %{
        required("CatalogId") => String.t() | atom()
      }
      
  """
  @type delete_catalog_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      federation_source_exception() :: %{
        "FederationSourceErrorCode" => list(any()),
        "Message" => String.t() | atom()
      }
      
  """
  @type federation_source_exception() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      catalog_properties_output() :: %{
        "CustomProperties" => map(),
        "DataLakeAccessProperties" => data_lake_access_properties_output(),
        "IcebergOptimizationProperties" => iceberg_optimization_properties_output()
      }
      
  """
  @type catalog_properties_output() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      asset_type_form_reference() :: %{
        "FormTypeIdentifier" => String.t() | atom()
      }
      
  """
  @type asset_type_form_reference() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      batch_get_workflows_response() :: %{
        "MissingWorkflows" => list(String.t() | atom()),
        "Workflows" => list(workflow())
      }
      
  """
  @type batch_get_workflows_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      connection_type_brief() :: %{
        "Capabilities" => capabilities(),
        "Categories" => list([String.t() | atom()]()),
        "ConnectionType" => list(any()),
        "ConnectionTypeVariants" => list(connection_type_variant()),
        "Description" => String.t() | atom(),
        "DisplayName" => String.t() | atom(),
        "LogoUrl" => String.t() | atom(),
        "Vendor" => String.t() | atom()
      }
      
  """
  @type connection_type_brief() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      delete_crawler_request() :: %{
        required("Name") => String.t() | atom()
      }
      
  """
  @type delete_crawler_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      cancel_data_quality_rule_recommendation_run_response() :: %{}
      
  """
  @type cancel_data_quality_rule_recommendation_run_response() :: %{}

  @typedoc """

  ## Example:
      
      batch_get_triggers_request() :: %{
        required("TriggerNames") => list(String.t() | atom())
      }
      
  """
  @type batch_get_triggers_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      asset_type_item() :: %{
        "Id" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type asset_type_item() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_registry_input() :: %{
        required("RegistryId") => registry_id()
      }
      
  """
  @type get_registry_input() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      trigger_update() :: %{
        "Actions" => list(action()),
        "Description" => String.t() | atom(),
        "EventBatchingCondition" => event_batching_condition(),
        "Name" => String.t() | atom(),
        "Predicate" => predicate(),
        "Schedule" => String.t() | atom()
      }
      
  """
  @type trigger_update() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_usage_profile_request() :: %{
        optional("Description") => String.t() | atom(),
        optional("Tags") => map(),
        required("Configuration") => profile_configuration(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type create_usage_profile_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_dev_endpoints_response() :: %{
        "DevEndpoints" => list(dev_endpoint()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type get_dev_endpoints_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_schema_versions_response() :: %{
        "NextToken" => String.t() | atom(),
        "Schemas" => list(schema_version_list_item())
      }
      
  """
  @type list_schema_versions_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      stop_materialized_view_refresh_task_run_request() :: %{
        required("CatalogId") => String.t() | atom(),
        required("DatabaseName") => String.t() | atom(),
        required("TableName") => String.t() | atom()
      }
      
  """
  @type stop_materialized_view_refresh_task_run_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      o_auth2_client_application() :: %{
        "AWSManagedClientApplicationReference" => String.t() | atom(),
        "UserManagedClientApplicationClientId" => String.t() | atom()
      }
      
  """
  @type o_auth2_client_application() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_session_endpoint_response() :: %{
        "SparkConnect" => session_endpoint()
      }
      
  """
  @type get_session_endpoint_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      schedule() :: %{
        "ScheduleExpression" => String.t() | atom(),
        "State" => list(any())
      }
      
  """
  @type schedule() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      dev_endpoint() :: %{
        "Arguments" => map(),
        "AvailabilityZone" => String.t() | atom(),
        "CreatedTimestamp" => non_neg_integer(),
        "EndpointName" => String.t() | atom(),
        "ExtraJarsS3Path" => String.t() | atom(),
        "ExtraPythonLibsS3Path" => String.t() | atom(),
        "FailureReason" => String.t() | atom(),
        "GlueVersion" => String.t() | atom(),
        "LastModifiedTimestamp" => non_neg_integer(),
        "LastUpdateStatus" => String.t() | atom(),
        "NumberOfNodes" => integer(),
        "NumberOfWorkers" => integer(),
        "PrivateAddress" => String.t() | atom(),
        "PublicAddress" => String.t() | atom(),
        "PublicKey" => String.t() | atom(),
        "PublicKeys" => list(String.t() | atom()),
        "RoleArn" => String.t() | atom(),
        "SecurityConfiguration" => String.t() | atom(),
        "SecurityGroupIds" => list(String.t() | atom()),
        "Status" => String.t() | atom(),
        "SubnetId" => String.t() | atom(),
        "VpcId" => String.t() | atom(),
        "WorkerType" => list(any()),
        "YarnEndpointAddress" => String.t() | atom(),
        "ZeppelinRemoteSparkInterpreterPort" => integer()
      }
      
  """
  @type dev_endpoint() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_table_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        optional("Force") => boolean(),
        optional("Name") => String.t() | atom(),
        optional("SkipArchive") => boolean(),
        optional("TableInput") => table_input(),
        optional("TransactionId") => String.t() | atom(),
        optional("UpdateOpenTableFormatInput") => update_open_table_format_input(),
        optional("VersionId") => String.t() | atom(),
        optional("ViewUpdateAction") => list(any()),
        required("DatabaseName") => String.t() | atom()
      }
      
  """
  @type update_table_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      update_database_request() :: %{
        optional("CatalogId") => String.t() | atom(),
        required("DatabaseInput") => database_input(),
        required("Name") => String.t() | atom()
      }
      
  """
  @type update_database_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_dashboard_url_response() :: %{
        "Url" => String.t() | atom()
      }
      
  """
  @type get_dashboard_url_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      iceberg_partition_spec() :: %{
        "Fields" => list(iceberg_partition_field()),
        "SpecId" => integer()
      }
      
  """
  @type iceberg_partition_spec() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_data_quality_rulesets_request() :: %{
        optional("Filter") => data_quality_ruleset_filter_criteria(),
        optional("MaxResults") => integer(),
        optional("NextToken") => String.t() | atom(),
        optional("Tags") => map()
      }
      
  """
  @type list_data_quality_rulesets_request() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_data_quality_statistic_annotations_response() :: %{
        "Annotations" => list(statistic_annotation()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_data_quality_statistic_annotations_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      catalog_entry() :: %{
        "DatabaseName" => String.t() | atom(),
        "TableName" => String.t() | atom()
      }
      
  """
  @type catalog_entry() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      create_session_response() :: %{
        "Session" => session()
      }
      
  """
  @type create_session_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      list_blueprints_response() :: %{
        "Blueprints" => list(String.t() | atom()),
        "NextToken" => String.t() | atom()
      }
      
  """
  @type list_blueprints_response() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      data_quality_analyzer_result() :: %{
        "Description" => String.t() | atom(),
        "EvaluatedMetrics" => map(),
        "EvaluationMessage" => String.t() | atom(),
        "Name" => String.t() | atom()
      }
      
  """
  @type data_quality_analyzer_result() :: %{(String.t() | atom()) => any()}

  @typedoc """

  ## Example:
      
      get_tags_response() :: %{
        "Tags" => map()
      }
      
  """
  @type get_tags_response() :: %{(String.t() | atom()) => any()}

  @type associate_glossary_terms_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type batch_create_partition_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type batch_delete_connection_errors() ::
          internal_service_exception() | operation_timeout_exception()

  @type batch_delete_partition_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type batch_delete_table_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | resource_not_ready_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type batch_delete_table_version_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type batch_get_blueprints_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type batch_get_crawlers_errors() :: invalid_input_exception() | operation_timeout_exception()

  @type batch_get_custom_entity_types_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type batch_get_data_quality_result_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type batch_get_dev_endpoints_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | access_denied_exception()

  @type batch_get_iterable_forms_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | entity_not_found_exception()

  @type batch_get_jobs_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type batch_get_partition_errors() ::
          federation_source_exception()
          | invalid_state_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | entity_not_found_exception()

  @type batch_get_table_optimizer_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | entity_not_found_exception()

  @type batch_get_triggers_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type batch_get_workflows_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type batch_put_data_quality_statistic_annotation_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | entity_not_found_exception()

  @type batch_stop_job_run_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type batch_update_partition_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type cancel_data_quality_rule_recommendation_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type cancel_data_quality_ruleset_evaluation_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type cancel_ml_task_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type cancel_statement_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | illegal_session_state_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type check_schema_version_validity_errors() ::
          invalid_input_exception() | internal_service_exception() | access_denied_exception()

  @type create_blueprint_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()

  @type create_catalog_errors() ::
          federation_source_exception()
          | resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | federated_resource_already_exists_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | access_denied_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type create_classifier_errors() ::
          invalid_input_exception() | already_exists_exception() | operation_timeout_exception()

  @type create_column_statistics_task_settings_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | already_exists_exception()
          | column_statistics_task_running_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type create_connection_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()

  @type create_crawler_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | already_exists_exception()
          | operation_timeout_exception()

  @type create_custom_entity_type_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | idempotent_parameter_mismatch_exception()
          | access_denied_exception()

  @type create_data_quality_ruleset_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()

  @type create_database_errors() ::
          federation_source_exception()
          | resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | federated_resource_already_exists_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | concurrent_modification_exception()

  @type create_dev_endpoint_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | validation_exception()
          | operation_timeout_exception()
          | idempotent_parameter_mismatch_exception()
          | access_denied_exception()

  @type create_glossary_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()

  @type create_glossary_term_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type create_glue_identity_center_configuration_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | concurrent_modification_exception()

  @type create_integration_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | kms_key_not_accessible_fault()
          | conflict_exception()
          | integration_conflict_operation_fault()
          | resource_not_found_exception()
          | internal_server_exception()
          | validation_exception()
          | access_denied_exception()
          | integration_quota_exceeded_fault()
          | entity_not_found_exception()

  @type create_integration_resource_property_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | conflict_exception()
          | resource_not_found_exception()
          | internal_server_exception()
          | validation_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type create_integration_table_properties_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | resource_not_found_exception()
          | internal_server_exception()
          | validation_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type create_job_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | idempotent_parameter_mismatch_exception()
          | concurrent_modification_exception()

  @type create_ml_transform_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | idempotent_parameter_mismatch_exception()
          | access_denied_exception()

  @type create_partition_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type create_partition_index_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type create_registry_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | access_denied_exception()
          | concurrent_modification_exception()

  @type create_schema_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | access_denied_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type create_script_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type create_security_configuration_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()

  @type create_session_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_not_supported_exception()
          | validation_exception()
          | operation_timeout_exception()
          | idempotent_parameter_mismatch_exception()
          | access_denied_exception()

  @type create_table_errors() ::
          federation_source_exception()
          | resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | resource_not_ready_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type create_table_optimizer_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | validation_exception()
          | access_denied_exception()
          | throttling_exception()
          | entity_not_found_exception()

  @type create_trigger_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | idempotent_parameter_mismatch_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type create_usage_profile_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_not_supported_exception()
          | operation_timeout_exception()

  @type create_user_defined_function_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type create_workflow_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | concurrent_modification_exception()

  @type delete_asset_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()

  @type delete_asset_type_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()

  @type delete_attachment_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type delete_blueprint_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type delete_catalog_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | access_denied_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type delete_classifier_errors() :: operation_timeout_exception() | entity_not_found_exception()

  @type delete_column_statistics_for_partition_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type delete_column_statistics_for_table_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type delete_column_statistics_task_settings_errors() ::
          invalid_input_exception() | operation_timeout_exception() | entity_not_found_exception()

  @type delete_connection_errors() :: operation_timeout_exception() | entity_not_found_exception()

  @type delete_connection_type_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | validation_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type delete_crawler_errors() ::
          crawler_running_exception()
          | operation_timeout_exception()
          | scheduler_transitioning_exception()
          | entity_not_found_exception()

  @type delete_custom_entity_type_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type delete_data_quality_ruleset_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type delete_database_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | federation_source_retryable_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type delete_dev_endpoint_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type delete_form_type_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | conflict_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()

  @type delete_glossary_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | conflict_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()

  @type delete_glossary_term_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()

  @type delete_glue_identity_center_configuration_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type delete_integration_errors() ::
          invalid_state_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | conflict_exception()
          | integration_conflict_operation_fault()
          | internal_server_exception()
          | integration_not_found_fault()
          | invalid_integration_state_fault()
          | validation_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type delete_integration_resource_property_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | resource_not_found_exception()
          | internal_server_exception()
          | validation_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type delete_integration_table_properties_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | resource_not_found_exception()
          | internal_server_exception()
          | validation_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type delete_job_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type delete_ml_transform_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type delete_partition_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type delete_partition_index_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | conflict_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type delete_registry_errors() ::
          invalid_input_exception()
          | access_denied_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type delete_resource_policy_errors() ::
          condition_check_failure_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type delete_schema_errors() ::
          invalid_input_exception()
          | access_denied_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type delete_schema_versions_errors() ::
          invalid_input_exception()
          | access_denied_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type delete_security_configuration_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type delete_session_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | illegal_session_state_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | concurrent_modification_exception()

  @type delete_table_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | resource_not_ready_exception()
          | federation_source_retryable_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type delete_table_optimizer_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | entity_not_found_exception()

  @type delete_table_version_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type delete_trigger_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | concurrent_modification_exception()

  @type delete_usage_profile_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_not_supported_exception()
          | operation_timeout_exception()

  @type delete_user_defined_function_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type delete_workflow_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | concurrent_modification_exception()

  @type describe_connection_type_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | validation_exception()
          | access_denied_exception()

  @type describe_entity_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | validation_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type describe_inbound_integrations_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | internal_server_exception()
          | integration_not_found_fault()
          | operation_not_supported_exception()
          | validation_exception()
          | target_resource_not_found()
          | access_denied_exception()
          | entity_not_found_exception()

  @type describe_integrations_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | internal_server_exception()
          | integration_not_found_fault()
          | validation_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type disassociate_glossary_terms_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type get_asset_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | entity_not_found_exception()

  @type get_asset_type_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | entity_not_found_exception()

  @type get_blueprint_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_blueprint_run_errors() ::
          internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_blueprint_runs_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_catalog_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_catalog_import_status_errors() ::
          internal_service_exception() | operation_timeout_exception()

  @type get_catalogs_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_classifier_errors() :: operation_timeout_exception() | entity_not_found_exception()

  @type get_classifiers_errors() :: operation_timeout_exception()

  @type get_column_statistics_for_partition_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type get_column_statistics_for_table_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type get_column_statistics_task_run_errors() ::
          invalid_input_exception() | operation_timeout_exception() | entity_not_found_exception()

  @type get_column_statistics_task_runs_errors() :: operation_timeout_exception()

  @type get_column_statistics_task_settings_errors() ::
          invalid_input_exception() | operation_timeout_exception() | entity_not_found_exception()

  @type get_connection_errors() ::
          invalid_input_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type get_connections_errors() ::
          invalid_input_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type get_crawler_errors() :: operation_timeout_exception() | entity_not_found_exception()

  @type get_crawler_metrics_errors() :: operation_timeout_exception()

  @type get_crawlers_errors() :: operation_timeout_exception()

  @type get_custom_entity_type_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_dashboard_url_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_not_supported_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_data_catalog_encryption_settings_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type get_data_quality_model_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_data_quality_model_result_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_data_quality_result_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_data_quality_rule_recommendation_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_data_quality_ruleset_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_data_quality_ruleset_evaluation_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_database_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | entity_not_found_exception()

  @type get_databases_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | entity_not_found_exception()

  @type get_dataflow_graph_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type get_dev_endpoint_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_dev_endpoints_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_entity_records_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | validation_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_form_type_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | entity_not_found_exception()

  @type get_glossary_errors() ::
          internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | entity_not_found_exception()

  @type get_glossary_term_errors() ::
          internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | entity_not_found_exception()

  @type get_glue_identity_center_configuration_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type get_integration_resource_property_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | resource_not_found_exception()
          | internal_server_exception()
          | validation_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_integration_table_properties_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | resource_not_found_exception()
          | internal_server_exception()
          | validation_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_job_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_job_bookmark_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | validation_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_job_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_job_runs_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_jobs_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_mapping_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_materialized_view_refresh_task_run_errors() ::
          invalid_input_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_ml_task_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_ml_task_runs_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_ml_transform_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_ml_transforms_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_partition_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | entity_not_found_exception()

  @type get_partition_indexes_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | conflict_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_partitions_errors() ::
          federation_source_exception()
          | invalid_state_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | resource_not_ready_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | entity_not_found_exception()

  @type get_plan_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type get_registry_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_resource_policies_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()

  @type get_resource_policy_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_schema_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_schema_by_definition_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_schema_version_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_schema_versions_diff_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_security_configuration_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_security_configurations_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_session_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_session_endpoint_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | illegal_session_state_exception()
          | operation_not_supported_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_statement_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | illegal_session_state_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type get_table_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | resource_not_ready_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | entity_not_found_exception()

  @type get_table_optimizer_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | entity_not_found_exception()

  @type get_table_version_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type get_table_versions_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type get_tables_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | entity_not_found_exception()

  @type get_tags_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_trigger_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_triggers_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_unfiltered_partition_metadata_errors() ::
          federation_source_exception()
          | permission_type_mismatch_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | entity_not_found_exception()

  @type get_unfiltered_partitions_metadata_errors() ::
          federation_source_exception()
          | permission_type_mismatch_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | entity_not_found_exception()

  @type get_unfiltered_table_metadata_errors() ::
          federation_source_exception()
          | permission_type_mismatch_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | entity_not_found_exception()

  @type get_usage_profile_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_not_supported_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_user_defined_function_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type get_user_defined_functions_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type get_workflow_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_workflow_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_workflow_run_properties_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type get_workflow_runs_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type import_catalog_to_glue_errors() ::
          internal_service_exception() | operation_timeout_exception()

  @type list_asset_types_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()

  @type list_blueprints_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type list_column_statistics_task_runs_errors() :: operation_timeout_exception()

  @type list_connection_types_errors() :: internal_service_exception() | access_denied_exception()

  @type list_crawlers_errors() :: operation_timeout_exception()

  @type list_crawls_errors() ::
          invalid_input_exception() | operation_timeout_exception() | entity_not_found_exception()

  @type list_custom_entity_types_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type list_data_quality_results_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type list_data_quality_rule_recommendation_runs_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type list_data_quality_ruleset_evaluation_runs_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type list_data_quality_rulesets_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type list_data_quality_statistic_annotations_errors() ::
          invalid_input_exception() | internal_service_exception()

  @type list_data_quality_statistics_errors() ::
          invalid_input_exception() | internal_service_exception() | entity_not_found_exception()

  @type list_dev_endpoints_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type list_entities_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | validation_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type list_form_types_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()

  @type list_glossaries_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()

  @type list_glossary_terms_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()

  @type list_integration_resource_properties_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | resource_not_found_exception()
          | internal_server_exception()
          | validation_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type list_iterable_forms_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | entity_not_found_exception()

  @type list_jobs_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type list_materialized_view_refresh_task_runs_errors() ::
          invalid_input_exception() | operation_timeout_exception() | access_denied_exception()

  @type list_ml_transforms_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type list_registries_errors() ::
          invalid_input_exception() | internal_service_exception() | access_denied_exception()

  @type list_schema_versions_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type list_schemas_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type list_sessions_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | access_denied_exception()

  @type list_statements_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | illegal_session_state_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type list_table_optimizer_runs_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | validation_exception()
          | access_denied_exception()
          | throttling_exception()
          | entity_not_found_exception()

  @type list_triggers_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type list_usage_profiles_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_not_supported_exception()
          | operation_timeout_exception()

  @type list_workflows_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type modify_integration_errors() ::
          invalid_state_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | conflict_exception()
          | integration_conflict_operation_fault()
          | internal_server_exception()
          | integration_not_found_fault()
          | invalid_integration_state_fault()
          | validation_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type put_asset_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type put_asset_type_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()

  @type put_attachment_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type put_data_catalog_encryption_settings_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type put_data_quality_profile_annotation_errors() ::
          invalid_input_exception() | internal_service_exception() | entity_not_found_exception()

  @type put_form_type_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()

  @type put_resource_policy_errors() ::
          condition_check_failure_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type put_schema_version_metadata_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | already_exists_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type put_workflow_run_properties_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type query_schema_version_metadata_errors() ::
          invalid_input_exception() | access_denied_exception() | entity_not_found_exception()

  @type register_connection_type_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | validation_exception()
          | operation_timeout_exception()
          | access_denied_exception()

  @type register_schema_version_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type remove_schema_version_metadata_errors() ::
          invalid_input_exception() | access_denied_exception() | entity_not_found_exception()

  @type reset_job_bookmark_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type resume_workflow_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | concurrent_runs_exceeded_exception()
          | illegal_workflow_state_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type run_statement_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | illegal_session_state_exception()
          | operation_not_supported_exception()
          | validation_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | session_busy_exception()
          | entity_not_found_exception()

  @type search_assets_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | throttling_exception()

  @type search_tables_errors() ::
          invalid_input_exception() | internal_service_exception() | operation_timeout_exception()

  @type start_blueprint_run_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | illegal_blueprint_state_exception()
          | entity_not_found_exception()

  @type start_column_statistics_task_run_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | column_statistics_task_running_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type start_column_statistics_task_run_schedule_errors() ::
          invalid_input_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type start_crawler_errors() ::
          crawler_running_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type start_crawler_schedule_errors() ::
          scheduler_running_exception()
          | operation_timeout_exception()
          | scheduler_transitioning_exception()
          | no_schedule_exception()
          | entity_not_found_exception()

  @type start_data_quality_rule_recommendation_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | conflict_exception()
          | operation_timeout_exception()

  @type start_data_quality_ruleset_evaluation_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | conflict_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type start_export_labels_task_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type start_import_labels_task_run_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type start_job_run_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | concurrent_runs_exceeded_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type start_materialized_view_refresh_task_run_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | materialized_view_refresh_task_running_exception()
          | entity_not_found_exception()

  @type start_ml_evaluation_task_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | concurrent_runs_exceeded_exception()
          | ml_transform_not_ready_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type start_ml_labeling_set_generation_task_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | concurrent_runs_exceeded_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type start_trigger_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | concurrent_runs_exceeded_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type start_workflow_run_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | concurrent_runs_exceeded_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type stop_column_statistics_task_run_errors() ::
          column_statistics_task_not_running_exception()
          | column_statistics_task_stopping_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type stop_column_statistics_task_run_schedule_errors() ::
          invalid_input_exception() | operation_timeout_exception() | entity_not_found_exception()

  @type stop_crawler_errors() ::
          crawler_not_running_exception()
          | crawler_stopping_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type stop_crawler_schedule_errors() ::
          scheduler_not_running_exception()
          | operation_timeout_exception()
          | scheduler_transitioning_exception()
          | entity_not_found_exception()

  @type stop_materialized_view_refresh_task_run_errors() ::
          invalid_input_exception()
          | materialized_view_refresh_task_not_running_exception()
          | operation_timeout_exception()
          | materialized_view_refresh_task_stopping_exception()
          | access_denied_exception()

  @type stop_session_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | illegal_session_state_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | concurrent_modification_exception()

  @type stop_trigger_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type stop_workflow_run_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | illegal_workflow_state_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type tag_resource_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type test_connection_errors() ::
          federation_source_exception()
          | resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | conflict_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type untag_resource_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type update_blueprint_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | concurrent_modification_exception()
          | illegal_blueprint_state_exception()
          | entity_not_found_exception()

  @type update_catalog_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | access_denied_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type update_classifier_errors() ::
          version_mismatch_exception()
          | invalid_input_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type update_column_statistics_for_partition_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type update_column_statistics_for_table_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type update_column_statistics_task_settings_errors() ::
          version_mismatch_exception()
          | invalid_input_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type update_connection_errors() ::
          invalid_input_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type update_crawler_errors() ::
          crawler_running_exception()
          | version_mismatch_exception()
          | invalid_input_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type update_crawler_schedule_errors() ::
          version_mismatch_exception()
          | invalid_input_exception()
          | operation_timeout_exception()
          | scheduler_transitioning_exception()
          | entity_not_found_exception()

  @type update_data_quality_ruleset_errors() ::
          resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | idempotent_parameter_mismatch_exception()
          | entity_not_found_exception()

  @type update_database_errors() ::
          federation_source_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type update_dev_endpoint_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | validation_exception()
          | operation_timeout_exception()
          | entity_not_found_exception()

  @type update_glossary_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type update_glossary_term_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type update_glue_identity_center_configuration_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type update_integration_resource_property_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | resource_not_found_exception()
          | internal_server_exception()
          | validation_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type update_integration_table_properties_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | resource_not_found_exception()
          | internal_server_exception()
          | validation_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type update_job_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type update_job_from_source_control_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | validation_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type update_ml_transform_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type update_partition_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type update_registry_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type update_schema_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | access_denied_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type update_source_control_from_job_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | validation_exception()
          | operation_timeout_exception()
          | access_denied_exception()
          | entity_not_found_exception()

  @type update_table_errors() ::
          federation_source_exception()
          | resource_number_limit_exceeded_exception()
          | invalid_input_exception()
          | internal_service_exception()
          | already_exists_exception()
          | operation_timeout_exception()
          | resource_not_ready_exception()
          | glue_encryption_exception()
          | federation_source_retryable_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type update_table_optimizer_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | validation_exception()
          | access_denied_exception()
          | throttling_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type update_trigger_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type update_usage_profile_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_not_supported_exception()
          | operation_timeout_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  @type update_user_defined_function_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | glue_encryption_exception()
          | entity_not_found_exception()

  @type update_workflow_errors() ::
          invalid_input_exception()
          | internal_service_exception()
          | operation_timeout_exception()
          | concurrent_modification_exception()
          | entity_not_found_exception()

  def metadata do
    %{
      api_version: "2017-03-31",
      content_type: "application/x-amz-json-1.1",
      credential_scope: nil,
      endpoint_prefix: "glue",
      global?: false,
      hostname: nil,
      protocol: "json",
      service_id: "Glue",
      signature_version: "v4",
      signing_name: "glue",
      target_prefix: "AWSGlue"
    }
  end

  @doc """
  Associates one or more glossary terms with an asset in Glue Data Catalog.
  """
  @spec associate_glossary_terms(map(), associate_glossary_terms_request(), list()) ::
          {:ok, associate_glossary_terms_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, associate_glossary_terms_errors()}
  def associate_glossary_terms(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "AssociateGlossaryTerms", input, options)
  end

  @doc """
  Creates one or more partitions in a batch operation.
  """
  @spec batch_create_partition(map(), batch_create_partition_request(), list()) ::
          {:ok, batch_create_partition_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_create_partition_errors()}
  def batch_create_partition(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchCreatePartition", input, options)
  end

  @doc """
  Deletes a list of connection definitions from the Data Catalog.
  """
  @spec batch_delete_connection(map(), batch_delete_connection_request(), list()) ::
          {:ok, batch_delete_connection_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_delete_connection_errors()}
  def batch_delete_connection(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchDeleteConnection", input, options)
  end

  @doc """
  Deletes one or more partitions in a batch operation.
  """
  @spec batch_delete_partition(map(), batch_delete_partition_request(), list()) ::
          {:ok, batch_delete_partition_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_delete_partition_errors()}
  def batch_delete_partition(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchDeletePartition", input, options)
  end

  @doc """
  Deletes multiple tables at once.

  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.

  To ensure the immediate deletion of all related resources, before calling
  `BatchDeleteTable`, use `DeleteTableVersion` or
  `BatchDeleteTableVersion`, and `DeletePartition` or
  `BatchDeletePartition`, to delete any resources that belong to the
  table.
  """
  @spec batch_delete_table(map(), batch_delete_table_request(), list()) ::
          {:ok, batch_delete_table_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_delete_table_errors()}
  def batch_delete_table(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchDeleteTable", input, options)
  end

  @doc """
  Deletes a specified batch of versions of a table.
  """
  @spec batch_delete_table_version(map(), batch_delete_table_version_request(), list()) ::
          {:ok, batch_delete_table_version_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_delete_table_version_errors()}
  def batch_delete_table_version(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchDeleteTableVersion", input, options)
  end

  @doc """
  Retrieves information about a list of blueprints.
  """
  @spec batch_get_blueprints(map(), batch_get_blueprints_request(), list()) ::
          {:ok, batch_get_blueprints_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_get_blueprints_errors()}
  def batch_get_blueprints(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchGetBlueprints", input, options)
  end

  @doc """
  Returns a list of resource metadata for a given list of crawler names.

  After calling the `ListCrawlers` 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.
  """
  @spec batch_get_crawlers(map(), batch_get_crawlers_request(), list()) ::
          {:ok, batch_get_crawlers_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_get_crawlers_errors()}
  def batch_get_crawlers(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchGetCrawlers", input, options)
  end

  @doc """
  Retrieves the details for the custom patterns specified by a list of names.
  """
  @spec batch_get_custom_entity_types(map(), batch_get_custom_entity_types_request(), list()) ::
          {:ok, batch_get_custom_entity_types_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_get_custom_entity_types_errors()}
  def batch_get_custom_entity_types(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchGetCustomEntityTypes", input, options)
  end

  @doc """
  Retrieves a list of data quality results for the specified result IDs.
  """
  @spec batch_get_data_quality_result(map(), batch_get_data_quality_result_request(), list()) ::
          {:ok, batch_get_data_quality_result_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_get_data_quality_result_errors()}
  def batch_get_data_quality_result(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchGetDataQualityResult", input, options)
  end

  @doc """
  Returns a list of resource metadata for a given list of development endpoint
  names.

  After
  calling the `ListDevEndpoints` 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.
  """
  @spec batch_get_dev_endpoints(map(), batch_get_dev_endpoints_request(), list()) ::
          {:ok, batch_get_dev_endpoints_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_get_dev_endpoints_errors()}
  def batch_get_dev_endpoints(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchGetDevEndpoints", input, options)
  end

  @doc """
  Retrieves multiple items from an iterable form on an asset in Glue Data Catalog
  in a single request.
  """
  @spec batch_get_iterable_forms(map(), batch_get_iterable_forms_request(), list()) ::
          {:ok, batch_get_iterable_forms_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_get_iterable_forms_errors()}
  def batch_get_iterable_forms(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchGetIterableForms", input, options)
  end

  @doc """
  Returns a list of resource metadata for a given list of job names.

  After calling the `ListJobs` 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.
  """
  @spec batch_get_jobs(map(), batch_get_jobs_request(), list()) ::
          {:ok, batch_get_jobs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_get_jobs_errors()}
  def batch_get_jobs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchGetJobs", input, options)
  end

  @doc """
  Retrieves partitions in a batch request.
  """
  @spec batch_get_partition(map(), batch_get_partition_request(), list()) ::
          {:ok, batch_get_partition_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_get_partition_errors()}
  def batch_get_partition(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchGetPartition", input, options)
  end

  @doc """
  Returns the configuration for the specified table optimizers.
  """
  @spec batch_get_table_optimizer(map(), batch_get_table_optimizer_request(), list()) ::
          {:ok, batch_get_table_optimizer_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_get_table_optimizer_errors()}
  def batch_get_table_optimizer(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchGetTableOptimizer", input, options)
  end

  @doc """
  Returns a list of resource metadata for a given list of trigger names.

  After calling the `ListTriggers` 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.
  """
  @spec batch_get_triggers(map(), batch_get_triggers_request(), list()) ::
          {:ok, batch_get_triggers_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_get_triggers_errors()}
  def batch_get_triggers(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchGetTriggers", input, options)
  end

  @doc """
  Returns a list of resource metadata for a given list of workflow names.

  After calling the `ListWorkflows` 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.
  """
  @spec batch_get_workflows(map(), batch_get_workflows_request(), list()) ::
          {:ok, batch_get_workflows_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_get_workflows_errors()}
  def batch_get_workflows(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchGetWorkflows", input, options)
  end

  @doc """
  Annotate datapoints over time for a specific data quality statistic.

  The API requires both profileID and statisticID as part of the
  InclusionAnnotation input.
  The API only works for a single statisticId across multiple profiles.
  """
  @spec batch_put_data_quality_statistic_annotation(
          map(),
          batch_put_data_quality_statistic_annotation_request(),
          list()
        ) ::
          {:ok, batch_put_data_quality_statistic_annotation_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_put_data_quality_statistic_annotation_errors()}
  def batch_put_data_quality_statistic_annotation(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchPutDataQualityStatisticAnnotation", input, options)
  end

  @doc """
  Stops one or more job runs for a specified job definition.
  """
  @spec batch_stop_job_run(map(), batch_stop_job_run_request(), list()) ::
          {:ok, batch_stop_job_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_stop_job_run_errors()}
  def batch_stop_job_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchStopJobRun", input, options)
  end

  @doc """
  Updates one or more partitions in a batch operation.
  """
  @spec batch_update_partition(map(), batch_update_partition_request(), list()) ::
          {:ok, batch_update_partition_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, batch_update_partition_errors()}
  def batch_update_partition(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "BatchUpdatePartition", input, options)
  end

  @doc """
  Cancels the specified recommendation run that was being used to generate rules.
  """
  @spec cancel_data_quality_rule_recommendation_run(
          map(),
          cancel_data_quality_rule_recommendation_run_request(),
          list()
        ) ::
          {:ok, cancel_data_quality_rule_recommendation_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, cancel_data_quality_rule_recommendation_run_errors()}
  def cancel_data_quality_rule_recommendation_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CancelDataQualityRuleRecommendationRun", input, options)
  end

  @doc """
  Cancels a run where a ruleset is being evaluated against a data source.
  """
  @spec cancel_data_quality_ruleset_evaluation_run(
          map(),
          cancel_data_quality_ruleset_evaluation_run_request(),
          list()
        ) ::
          {:ok, cancel_data_quality_ruleset_evaluation_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, cancel_data_quality_ruleset_evaluation_run_errors()}
  def cancel_data_quality_ruleset_evaluation_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CancelDataQualityRulesetEvaluationRun", input, options)
  end

  @doc """
  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 `CancelMLTaskRun` with a task
  run's parent transform's `TransformID` and the task run's `TaskRunId`.
  """
  @spec cancel_ml_task_run(map(), cancel_ml_task_run_request(), list()) ::
          {:ok, cancel_ml_task_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, cancel_ml_task_run_errors()}
  def cancel_ml_task_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CancelMLTaskRun", input, options)
  end

  @doc """
  Cancels the statement.
  """
  @spec cancel_statement(map(), cancel_statement_request(), list()) ::
          {:ok, cancel_statement_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, cancel_statement_errors()}
  def cancel_statement(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CancelStatement", input, options)
  end

  @doc """
  Validates the supplied schema.

  This call has no side effects, it simply validates using the supplied schema
  using `DataFormat` as the format. Since it does not take a schema set name, no
  compatibility checks are performed.
  """
  @spec check_schema_version_validity(map(), check_schema_version_validity_input(), list()) ::
          {:ok, check_schema_version_validity_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, check_schema_version_validity_errors()}
  def check_schema_version_validity(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CheckSchemaVersionValidity", input, options)
  end

  @doc """
  Registers a blueprint with Glue.
  """
  @spec create_blueprint(map(), create_blueprint_request(), list()) ::
          {:ok, create_blueprint_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_blueprint_errors()}
  def create_blueprint(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateBlueprint", input, options)
  end

  @doc """
  Creates a new catalog in the Glue Data Catalog.
  """
  @spec create_catalog(map(), create_catalog_request(), list()) ::
          {:ok, create_catalog_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_catalog_errors()}
  def create_catalog(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateCatalog", input, options)
  end

  @doc """
  Creates a classifier in the user's account.

  This can be a `GrokClassifier`, an
  `XMLClassifier`, a `JsonClassifier`, or a `CsvClassifier`,
  depending on which field of the request is present.
  """
  @spec create_classifier(map(), create_classifier_request(), list()) ::
          {:ok, create_classifier_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_classifier_errors()}
  def create_classifier(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateClassifier", input, options)
  end

  @doc """
  Creates settings for a column statistics task.
  """
  @spec create_column_statistics_task_settings(
          map(),
          create_column_statistics_task_settings_request(),
          list()
        ) ::
          {:ok, create_column_statistics_task_settings_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_column_statistics_task_settings_errors()}
  def create_column_statistics_task_settings(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateColumnStatisticsTaskSettings", input, options)
  end

  @doc """
  Creates a connection definition in the Data Catalog.

  Connections used for creating federated resources require the IAM
  `glue:PassConnection` permission.
  """
  @spec create_connection(map(), create_connection_request(), list()) ::
          {:ok, create_connection_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_connection_errors()}
  def create_connection(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateConnection", input, options)
  end

  @doc """
  Creates a new crawler with specified targets, role, configuration, and optional
  schedule.

  At least one crawl target must be specified, in the `s3Targets` field, the
  `jdbcTargets` field, or the `DynamoDBTargets` field.
  """
  @spec create_crawler(map(), create_crawler_request(), list()) ::
          {:ok, create_crawler_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_crawler_errors()}
  def create_crawler(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateCrawler", input, options)
  end

  @doc """
  Creates a custom pattern that is used to detect sensitive data across the
  columns and rows of your structured data.

  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.
  """
  @spec create_custom_entity_type(map(), create_custom_entity_type_request(), list()) ::
          {:ok, create_custom_entity_type_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_custom_entity_type_errors()}
  def create_custom_entity_type(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateCustomEntityType", input, options)
  end

  @doc """
  Creates a data quality ruleset with DQDL rules applied to a specified Glue
  table.

  You create the ruleset using the Data Quality Definition Language (DQDL). For
  more information, see the Glue developer guide.
  """
  @spec create_data_quality_ruleset(map(), create_data_quality_ruleset_request(), list()) ::
          {:ok, create_data_quality_ruleset_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_data_quality_ruleset_errors()}
  def create_data_quality_ruleset(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateDataQualityRuleset", input, options)
  end

  @doc """
  Creates a new database in a Data Catalog.
  """
  @spec create_database(map(), create_database_request(), list()) ::
          {:ok, create_database_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_database_errors()}
  def create_database(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateDatabase", input, options)
  end

  @doc """
  Creates a new development endpoint.
  """
  @spec create_dev_endpoint(map(), create_dev_endpoint_request(), list()) ::
          {:ok, create_dev_endpoint_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_dev_endpoint_errors()}
  def create_dev_endpoint(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateDevEndpoint", input, options)
  end

  @doc """
  Creates a business glossary in Glue Data Catalog.

  A glossary is a container for glossary terms that define business concepts.
  """
  @spec create_glossary(map(), create_glossary_request(), list()) ::
          {:ok, create_glossary_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_glossary_errors()}
  def create_glossary(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateGlossary", input, options)
  end

  @doc """
  Creates a glossary term within a business glossary in Glue Data Catalog.
  """
  @spec create_glossary_term(map(), create_glossary_term_request(), list()) ::
          {:ok, create_glossary_term_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_glossary_term_errors()}
  def create_glossary_term(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateGlossaryTerm", input, options)
  end

  @doc """
  Creates a new Glue Identity Center configuration to enable integration between
  Glue and Amazon Web Services IAM
  Identity Center for authentication and authorization.
  """
  @spec create_glue_identity_center_configuration(
          map(),
          create_glue_identity_center_configuration_request(),
          list()
        ) ::
          {:ok, create_glue_identity_center_configuration_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_glue_identity_center_configuration_errors()}
  def create_glue_identity_center_configuration(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateGlueIdentityCenterConfiguration", input, options)
  end

  @doc """
  Creates a Zero-ETL integration in the caller's account between two resources
  with Amazon Resource Names (ARNs): the `SourceArn` and `TargetArn`.
  """
  @spec create_integration(map(), create_integration_request(), list()) ::
          {:ok, create_integration_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_integration_errors()}
  def create_integration(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateIntegration", input, options)
  end

  @doc """
  This API can be used for setting up the `ResourceProperty` of the Glue
  connection (for the source) or Glue database ARN (for the target).

  These properties can include the role to access the connection or database. To
  set both source and target properties the same API needs to be invoked with the
  Glue connection ARN as `ResourceArn` with `SourceProcessingProperties` and the
  Glue database ARN as `ResourceArn` with `TargetProcessingProperties`
  respectively.
  """
  @spec create_integration_resource_property(
          map(),
          create_integration_resource_property_request(),
          list()
        ) ::
          {:ok, create_integration_resource_property_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_integration_resource_property_errors()}
  def create_integration_resource_property(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateIntegrationResourceProperty", input, options)
  end

  @doc """
  This API is used to provide optional override properties for the the tables that
  need to be replicated.

  These properties can include properties for filtering and partitioning for the
  source and target tables. To set both source and target properties the same API
  need to be invoked with the Glue connection ARN as `ResourceArn` with
  `SourceTableConfig`, and the Glue database ARN as `ResourceArn` with
  `TargetTableConfig` respectively.
  """
  @spec create_integration_table_properties(
          map(),
          create_integration_table_properties_request(),
          list()
        ) ::
          {:ok, create_integration_table_properties_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_integration_table_properties_errors()}
  def create_integration_table_properties(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateIntegrationTableProperties", input, options)
  end

  @doc """
  Creates a new job definition.
  """
  @spec create_job(map(), create_job_request(), list()) ::
          {:ok, create_job_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_job_errors()}
  def create_job(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateJob", input, options)
  end

  @doc """
  Creates an Glue machine learning transform.

  This operation creates the transform and
  all the necessary parameters to train it.

  Call this operation as the first step in the process of using a machine learning
  transform
  (such as the `FindMatches` transform) for deduplicating data. You can provide an
  optional `Description`, in addition to the parameters that you want to use for
  your
  algorithm.

  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 `Role`, and optionally,
  `AllocatedCapacity`, `Timeout`, and `MaxRetries`. For more
  information, see
  [Jobs](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html).
  """
  @spec create_ml_transform(map(), create_ml_transform_request(), list()) ::
          {:ok, create_ml_transform_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_ml_transform_errors()}
  def create_ml_transform(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateMLTransform", input, options)
  end

  @doc """
  Creates a new partition.
  """
  @spec create_partition(map(), create_partition_request(), list()) ::
          {:ok, create_partition_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_partition_errors()}
  def create_partition(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreatePartition", input, options)
  end

  @doc """
  Creates a specified partition index in an existing table.
  """
  @spec create_partition_index(map(), create_partition_index_request(), list()) ::
          {:ok, create_partition_index_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_partition_index_errors()}
  def create_partition_index(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreatePartitionIndex", input, options)
  end

  @doc """
  Creates a new registry which may be used to hold a collection of schemas.
  """
  @spec create_registry(map(), create_registry_input(), list()) ::
          {:ok, create_registry_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_registry_errors()}
  def create_registry(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateRegistry", input, options)
  end

  @doc """
  Creates a new schema set and registers the schema definition.

  Returns an error if the schema set already exists without actually registering
  the version.

  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 `RegisterSchemaVersion` API is used.

  When this API is called without a `RegistryId`, this will create an entry for a
  "default-registry" in the registry database tables, if it is not already
  present.
  """
  @spec create_schema(map(), create_schema_input(), list()) ::
          {:ok, create_schema_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_schema_errors()}
  def create_schema(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateSchema", input, options)
  end

  @doc """
  Transforms a directed acyclic graph (DAG) into code.
  """
  @spec create_script(map(), create_script_request(), list()) ::
          {:ok, create_script_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_script_errors()}
  def create_script(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateScript", input, options)
  end

  @doc """
  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 [Encrypting Data Written by Crawlers, Jobs, and Development
  Endpoints](https://docs.aws.amazon.com/glue/latest/dg/encryption-security-configuration.html).
  """
  @spec create_security_configuration(map(), create_security_configuration_request(), list()) ::
          {:ok, create_security_configuration_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_security_configuration_errors()}
  def create_security_configuration(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateSecurityConfiguration", input, options)
  end

  @doc """
  Creates a new session.
  """
  @spec create_session(map(), create_session_request(), list()) ::
          {:ok, create_session_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_session_errors()}
  def create_session(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateSession", input, options)
  end

  @doc """
  Creates a new table definition in the Data Catalog.
  """
  @spec create_table(map(), create_table_request(), list()) ::
          {:ok, create_table_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_table_errors()}
  def create_table(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateTable", input, options)
  end

  @doc """
  Creates a new table optimizer for a specific function.
  """
  @spec create_table_optimizer(map(), create_table_optimizer_request(), list()) ::
          {:ok, create_table_optimizer_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_table_optimizer_errors()}
  def create_table_optimizer(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateTableOptimizer", input, options)
  end

  @doc """
  Creates a new trigger.

  Job arguments may be logged. Do not pass plaintext secrets as arguments.
  Retrieve secrets from a Glue Connection, Amazon Web Services Secrets Manager or
  other secret management mechanism if you intend to keep them within the Job.
  """
  @spec create_trigger(map(), create_trigger_request(), list()) ::
          {:ok, create_trigger_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_trigger_errors()}
  def create_trigger(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateTrigger", input, options)
  end

  @doc """
  Creates an Glue usage profile.
  """
  @spec create_usage_profile(map(), create_usage_profile_request(), list()) ::
          {:ok, create_usage_profile_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_usage_profile_errors()}
  def create_usage_profile(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateUsageProfile", input, options)
  end

  @doc """
  Creates a new function definition in the Data Catalog.
  """
  @spec create_user_defined_function(map(), create_user_defined_function_request(), list()) ::
          {:ok, create_user_defined_function_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_user_defined_function_errors()}
  def create_user_defined_function(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateUserDefinedFunction", input, options)
  end

  @doc """
  Creates a new workflow.
  """
  @spec create_workflow(map(), create_workflow_request(), list()) ::
          {:ok, create_workflow_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, create_workflow_errors()}
  def create_workflow(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "CreateWorkflow", input, options)
  end

  @doc """
  Deletes an asset from Glue Data Catalog.
  """
  @spec delete_asset(map(), delete_asset_request(), list()) ::
          {:ok, delete_asset_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_asset_errors()}
  def delete_asset(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteAsset", input, options)
  end

  @doc """
  Deletes an asset type from Glue Data Catalog.
  """
  @spec delete_asset_type(map(), delete_asset_type_request(), list()) ::
          {:ok, delete_asset_type_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_asset_type_errors()}
  def delete_asset_type(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteAssetType", input, options)
  end

  @doc """
  Deletes a form attachment from an asset in Glue Data Catalog.
  """
  @spec delete_attachment(map(), delete_attachment_request(), list()) ::
          {:ok, delete_attachment_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_attachment_errors()}
  def delete_attachment(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteAttachment", input, options)
  end

  @doc """
  Deletes an existing blueprint.
  """
  @spec delete_blueprint(map(), delete_blueprint_request(), list()) ::
          {:ok, delete_blueprint_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_blueprint_errors()}
  def delete_blueprint(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteBlueprint", input, options)
  end

  @doc """
  Removes the specified catalog from the Glue Data Catalog.

  After completing this operation, you no longer have access to the databases,
  tables (and all table versions and partitions that might belong to the tables)
  and the user-defined functions in the deleted catalog. Glue deletes these
  "orphaned" resources asynchronously in a timely manner, at the discretion of the
  service.

  To ensure the immediate deletion of all related resources before calling the
  `DeleteCatalog` operation, use `DeleteTableVersion` (or
  `BatchDeleteTableVersion`), `DeletePartition` (or `BatchDeletePartition`),
  `DeleteTable` (or `BatchDeleteTable`), `DeleteUserDefinedFunction` and
  `DeleteDatabase` to delete any resources that belong to the catalog.
  """
  @spec delete_catalog(map(), delete_catalog_request(), list()) ::
          {:ok, delete_catalog_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_catalog_errors()}
  def delete_catalog(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteCatalog", input, options)
  end

  @doc """
  Removes a classifier from the Data Catalog.
  """
  @spec delete_classifier(map(), delete_classifier_request(), list()) ::
          {:ok, delete_classifier_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_classifier_errors()}
  def delete_classifier(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteClassifier", input, options)
  end

  @doc """
  Delete the partition column statistics of a column.

  The Identity and Access Management (IAM) permission required for this operation
  is `DeletePartition`.
  """
  @spec delete_column_statistics_for_partition(
          map(),
          delete_column_statistics_for_partition_request(),
          list()
        ) ::
          {:ok, delete_column_statistics_for_partition_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_column_statistics_for_partition_errors()}
  def delete_column_statistics_for_partition(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteColumnStatisticsForPartition", input, options)
  end

  @doc """
  Retrieves table statistics of columns.

  The Identity and Access Management (IAM) permission required for this operation
  is `DeleteTable`.
  """
  @spec delete_column_statistics_for_table(
          map(),
          delete_column_statistics_for_table_request(),
          list()
        ) ::
          {:ok, delete_column_statistics_for_table_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_column_statistics_for_table_errors()}
  def delete_column_statistics_for_table(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteColumnStatisticsForTable", input, options)
  end

  @doc """
  Deletes settings for a column statistics task.
  """
  @spec delete_column_statistics_task_settings(
          map(),
          delete_column_statistics_task_settings_request(),
          list()
        ) ::
          {:ok, delete_column_statistics_task_settings_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_column_statistics_task_settings_errors()}
  def delete_column_statistics_task_settings(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteColumnStatisticsTaskSettings", input, options)
  end

  @doc """
  Deletes a connection from the Data Catalog.
  """
  @spec delete_connection(map(), delete_connection_request(), list()) ::
          {:ok, delete_connection_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_connection_errors()}
  def delete_connection(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteConnection", input, options)
  end

  @doc """
  Deletes a custom connection type in Glue.

  The connection type must exist and be registered before it can be deleted. This
  operation supports cleanup of connection type resources and helps maintain
  proper lifecycle management of custom connection types.
  """
  @spec delete_connection_type(map(), delete_connection_type_request(), list()) ::
          {:ok, delete_connection_type_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_connection_type_errors()}
  def delete_connection_type(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteConnectionType", input, options)
  end

  @doc """
  Removes a specified crawler from the Glue Data Catalog, unless the crawler state
  is
  `RUNNING`.
  """
  @spec delete_crawler(map(), delete_crawler_request(), list()) ::
          {:ok, delete_crawler_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_crawler_errors()}
  def delete_crawler(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteCrawler", input, options)
  end

  @doc """
  Deletes a custom pattern by specifying its name.
  """
  @spec delete_custom_entity_type(map(), delete_custom_entity_type_request(), list()) ::
          {:ok, delete_custom_entity_type_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_custom_entity_type_errors()}
  def delete_custom_entity_type(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteCustomEntityType", input, options)
  end

  @doc """
  Deletes a data quality ruleset.
  """
  @spec delete_data_quality_ruleset(map(), delete_data_quality_ruleset_request(), list()) ::
          {:ok, delete_data_quality_ruleset_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_data_quality_ruleset_errors()}
  def delete_data_quality_ruleset(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteDataQualityRuleset", input, options)
  end

  @doc """
  Removes a specified database from a Data Catalog.

  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.

  To ensure the immediate deletion of all related resources, before calling
  `DeleteDatabase`, use `DeleteTableVersion` or
  `BatchDeleteTableVersion`, `DeletePartition` or
  `BatchDeletePartition`, `DeleteUserDefinedFunction`, and
  `DeleteTable` or `BatchDeleteTable`, to delete any resources that
  belong to the database.
  """
  @spec delete_database(map(), delete_database_request(), list()) ::
          {:ok, delete_database_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_database_errors()}
  def delete_database(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteDatabase", input, options)
  end

  @doc """
  Deletes a specified development endpoint.
  """
  @spec delete_dev_endpoint(map(), delete_dev_endpoint_request(), list()) ::
          {:ok, delete_dev_endpoint_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_dev_endpoint_errors()}
  def delete_dev_endpoint(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteDevEndpoint", input, options)
  end

  @doc """
  Deletes a form type from Glue Data Catalog.

  A form type cannot be deleted if it is still referenced by an asset type.
  """
  @spec delete_form_type(map(), delete_form_type_request(), list()) ::
          {:ok, delete_form_type_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_form_type_errors()}
  def delete_form_type(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteFormType", input, options)
  end

  @doc """
  Deletes a business glossary from Glue Data Catalog.

  A glossary cannot be deleted if it still contains glossary terms.
  """
  @spec delete_glossary(map(), delete_glossary_request(), list()) ::
          {:ok, delete_glossary_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_glossary_errors()}
  def delete_glossary(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteGlossary", input, options)
  end

  @doc """
  Deletes a glossary term from Glue Data Catalog.
  """
  @spec delete_glossary_term(map(), delete_glossary_term_request(), list()) ::
          {:ok, delete_glossary_term_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_glossary_term_errors()}
  def delete_glossary_term(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteGlossaryTerm", input, options)
  end

  @doc """
  Deletes the existing Glue Identity Center configuration, removing the
  integration between Glue and
  Amazon Web Services IAM Identity Center.
  """
  @spec delete_glue_identity_center_configuration(
          map(),
          delete_glue_identity_center_configuration_request(),
          list()
        ) ::
          {:ok, delete_glue_identity_center_configuration_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_glue_identity_center_configuration_errors()}
  def delete_glue_identity_center_configuration(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteGlueIdentityCenterConfiguration", input, options)
  end

  @doc """
  Deletes the specified Zero-ETL integration.
  """
  @spec delete_integration(map(), delete_integration_request(), list()) ::
          {:ok, delete_integration_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_integration_errors()}
  def delete_integration(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteIntegration", input, options)
  end

  @doc """
  This API is used for deleting the `ResourceProperty` of the Glue connection (for
  the source) or Glue database ARN (for the target).
  """
  @spec delete_integration_resource_property(
          map(),
          delete_integration_resource_property_request(),
          list()
        ) ::
          {:ok, delete_integration_resource_property_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_integration_resource_property_errors()}
  def delete_integration_resource_property(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteIntegrationResourceProperty", input, options)
  end

  @doc """
  Deletes the table properties that have been created for the tables that need to
  be replicated.
  """
  @spec delete_integration_table_properties(
          map(),
          delete_integration_table_properties_request(),
          list()
        ) ::
          {:ok, delete_integration_table_properties_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_integration_table_properties_errors()}
  def delete_integration_table_properties(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteIntegrationTableProperties", input, options)
  end

  @doc """
  Deletes a specified job definition.

  If the job definition
  is not found, no exception is thrown.
  """
  @spec delete_job(map(), delete_job_request(), list()) ::
          {:ok, delete_job_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_job_errors()}
  def delete_job(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteJob", input, options)
  end

  @doc """
  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
  `DeleteMLTransforms`. However, any Glue jobs that still reference the deleted
  transform will no longer succeed.
  """
  @spec delete_ml_transform(map(), delete_ml_transform_request(), list()) ::
          {:ok, delete_ml_transform_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_ml_transform_errors()}
  def delete_ml_transform(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteMLTransform", input, options)
  end

  @doc """
  Deletes a specified partition.
  """
  @spec delete_partition(map(), delete_partition_request(), list()) ::
          {:ok, delete_partition_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_partition_errors()}
  def delete_partition(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeletePartition", input, options)
  end

  @doc """
  Deletes a specified partition index from an existing table.
  """
  @spec delete_partition_index(map(), delete_partition_index_request(), list()) ::
          {:ok, delete_partition_index_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_partition_index_errors()}
  def delete_partition_index(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeletePartitionIndex", input, options)
  end

  @doc """
  Delete the entire registry including schema and all of its versions.

  To get the status of the delete operation, you can call the `GetRegistry` API
  after the asynchronous call. Deleting a registry will deactivate all online
  operations for the registry such as the `UpdateRegistry`, `CreateSchema`,
  `UpdateSchema`, and `RegisterSchemaVersion` APIs.
  """
  @spec delete_registry(map(), delete_registry_input(), list()) ::
          {:ok, delete_registry_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_registry_errors()}
  def delete_registry(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteRegistry", input, options)
  end

  @doc """
  Deletes a specified policy.
  """
  @spec delete_resource_policy(map(), delete_resource_policy_request(), list()) ::
          {:ok, delete_resource_policy_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_resource_policy_errors()}
  def delete_resource_policy(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteResourcePolicy", input, options)
  end

  @doc """
  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 `GetSchema` API after
  the asynchronous call. Deleting a registry will deactivate all online operations
  for the schema, such as the `GetSchemaByDefinition`, and `RegisterSchemaVersion`
  APIs.
  """
  @spec delete_schema(map(), delete_schema_input(), list()) ::
          {:ok, delete_schema_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_schema_errors()}
  def delete_schema(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteSchema", input, options)
  end

  @doc """
  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 `GetSchemaVersions` API after this call will list the
  status of the deleted versions.

  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 `DeleteSchemaCheckpoint` API before using this
  API.

  You cannot use the `DeleteSchemaVersions` API to delete the first schema version
  in the schema set. The first schema version can only be deleted by the
  `DeleteSchema` API. This operation will also delete the attached
  `SchemaVersionMetadata` under the schema versions. Hard deletes will be enforced
  on the database.

  If the compatibility mode forbids deleting of a version that is necessary, such
  as BACKWARDS_FULL, an error is returned.
  """
  @spec delete_schema_versions(map(), delete_schema_versions_input(), list()) ::
          {:ok, delete_schema_versions_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_schema_versions_errors()}
  def delete_schema_versions(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteSchemaVersions", input, options)
  end

  @doc """
  Deletes a specified security configuration.
  """
  @spec delete_security_configuration(map(), delete_security_configuration_request(), list()) ::
          {:ok, delete_security_configuration_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_security_configuration_errors()}
  def delete_security_configuration(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteSecurityConfiguration", input, options)
  end

  @doc """
  Deletes the session.
  """
  @spec delete_session(map(), delete_session_request(), list()) ::
          {:ok, delete_session_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_session_errors()}
  def delete_session(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteSession", input, options)
  end

  @doc """
  Removes a table definition from the Data Catalog.

  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.

  To ensure the immediate deletion of all related resources, before calling
  `DeleteTable`, use `DeleteTableVersion` or
  `BatchDeleteTableVersion`, and `DeletePartition` or
  `BatchDeletePartition`, to delete any resources that belong to the
  table.
  """
  @spec delete_table(map(), delete_table_request(), list()) ::
          {:ok, delete_table_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_table_errors()}
  def delete_table(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteTable", input, options)
  end

  @doc """
  Deletes an optimizer and all associated metadata for a table.

  The optimization will no longer be performed on the table.
  """
  @spec delete_table_optimizer(map(), delete_table_optimizer_request(), list()) ::
          {:ok, delete_table_optimizer_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_table_optimizer_errors()}
  def delete_table_optimizer(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteTableOptimizer", input, options)
  end

  @doc """
  Deletes a specified version of a table.
  """
  @spec delete_table_version(map(), delete_table_version_request(), list()) ::
          {:ok, delete_table_version_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_table_version_errors()}
  def delete_table_version(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteTableVersion", input, options)
  end

  @doc """
  Deletes a specified trigger.

  If the trigger is not found, no
  exception is thrown.
  """
  @spec delete_trigger(map(), delete_trigger_request(), list()) ::
          {:ok, delete_trigger_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_trigger_errors()}
  def delete_trigger(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteTrigger", input, options)
  end

  @doc """
  Deletes the Glue specified usage profile.
  """
  @spec delete_usage_profile(map(), delete_usage_profile_request(), list()) ::
          {:ok, delete_usage_profile_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_usage_profile_errors()}
  def delete_usage_profile(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteUsageProfile", input, options)
  end

  @doc """
  Deletes an existing function definition from the Data Catalog.
  """
  @spec delete_user_defined_function(map(), delete_user_defined_function_request(), list()) ::
          {:ok, delete_user_defined_function_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_user_defined_function_errors()}
  def delete_user_defined_function(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteUserDefinedFunction", input, options)
  end

  @doc """
  Deletes a workflow.
  """
  @spec delete_workflow(map(), delete_workflow_request(), list()) ::
          {:ok, delete_workflow_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, delete_workflow_errors()}
  def delete_workflow(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DeleteWorkflow", input, options)
  end

  @doc """
  The `DescribeConnectionType` API provides full details of the supported options
  for a given connection type in Glue.

  The response includes authentication configuration details that show supported
  authentication types and properties, and RestConfiguration for custom REST-based
  connection types registered via `RegisterConnectionType`.

  See also: `ListConnectionTypes`, `RegisterConnectionType`,
  `DeleteConnectionType`
  """
  @spec describe_connection_type(map(), describe_connection_type_request(), list()) ::
          {:ok, describe_connection_type_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, describe_connection_type_errors()}
  def describe_connection_type(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DescribeConnectionType", input, options)
  end

  @doc """
  Provides details regarding the entity used with the connection type, with a
  description of the data model for each field in the selected entity.

  The response includes all the fields which make up the entity.
  """
  @spec describe_entity(map(), describe_entity_request(), list()) ::
          {:ok, describe_entity_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, describe_entity_errors()}
  def describe_entity(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DescribeEntity", input, options)
  end

  @doc """
  Returns a list of inbound integrations for the specified integration.
  """
  @spec describe_inbound_integrations(map(), describe_inbound_integrations_request(), list()) ::
          {:ok, describe_inbound_integrations_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, describe_inbound_integrations_errors()}
  def describe_inbound_integrations(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DescribeInboundIntegrations", input, options)
  end

  @doc """
  The API is used to retrieve a list of integrations.
  """
  @spec describe_integrations(map(), describe_integrations_request(), list()) ::
          {:ok, describe_integrations_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, describe_integrations_errors()}
  def describe_integrations(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DescribeIntegrations", input, options)
  end

  @doc """
  Removes the association of one or more glossary terms from an asset in Glue Data
  Catalog.
  """
  @spec disassociate_glossary_terms(map(), disassociate_glossary_terms_request(), list()) ::
          {:ok, disassociate_glossary_terms_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, disassociate_glossary_terms_errors()}
  def disassociate_glossary_terms(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "DisassociateGlossaryTerms", input, options)
  end

  @doc """
  Retrieves the metadata for an asset in Glue Data Catalog, including its forms,
  additional attachments, and associated glossary terms.
  """
  @spec get_asset(map(), get_asset_input(), list()) ::
          {:ok, get_asset_output(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_asset_errors()}
  def get_asset(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetAsset", input, options)
  end

  @doc """
  Retrieves an asset type in Glue Data Catalog by its identifier.
  """
  @spec get_asset_type(map(), get_asset_type_request(), list()) ::
          {:ok, get_asset_type_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_asset_type_errors()}
  def get_asset_type(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetAssetType", input, options)
  end

  @doc """
  Retrieves the details of a blueprint.
  """
  @spec get_blueprint(map(), get_blueprint_request(), list()) ::
          {:ok, get_blueprint_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_blueprint_errors()}
  def get_blueprint(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetBlueprint", input, options)
  end

  @doc """
  Retrieves the details of a blueprint run.
  """
  @spec get_blueprint_run(map(), get_blueprint_run_request(), list()) ::
          {:ok, get_blueprint_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_blueprint_run_errors()}
  def get_blueprint_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetBlueprintRun", input, options)
  end

  @doc """
  Retrieves the details of blueprint runs for a specified blueprint.
  """
  @spec get_blueprint_runs(map(), get_blueprint_runs_request(), list()) ::
          {:ok, get_blueprint_runs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_blueprint_runs_errors()}
  def get_blueprint_runs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetBlueprintRuns", input, options)
  end

  @doc """
  The name of the Catalog to retrieve.

  This should be all lowercase.
  """
  @spec get_catalog(map(), get_catalog_request(), list()) ::
          {:ok, get_catalog_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_catalog_errors()}
  def get_catalog(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetCatalog", input, options)
  end

  @doc """
  Retrieves the status of a migration operation.
  """
  @spec get_catalog_import_status(map(), get_catalog_import_status_request(), list()) ::
          {:ok, get_catalog_import_status_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_catalog_import_status_errors()}
  def get_catalog_import_status(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetCatalogImportStatus", input, options)
  end

  @doc """
  Retrieves all catalogs defined in a catalog in the Glue Data Catalog.

  For a Redshift-federated catalog use case, this operation returns the list of
  catalogs mapped to Redshift databases in the Redshift namespace catalog.
  """
  @spec get_catalogs(map(), get_catalogs_request(), list()) ::
          {:ok, get_catalogs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_catalogs_errors()}
  def get_catalogs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetCatalogs", input, options)
  end

  @doc """
  Retrieve a classifier by name.
  """
  @spec get_classifier(map(), get_classifier_request(), list()) ::
          {:ok, get_classifier_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_classifier_errors()}
  def get_classifier(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetClassifier", input, options)
  end

  @doc """
  Lists all classifier objects in the Data Catalog.
  """
  @spec get_classifiers(map(), get_classifiers_request(), list()) ::
          {:ok, get_classifiers_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_classifiers_errors()}
  def get_classifiers(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetClassifiers", input, options)
  end

  @doc """
  Retrieves partition statistics of columns.

  The Identity and Access Management (IAM) permission required for this operation
  is `GetPartition`.
  """
  @spec get_column_statistics_for_partition(
          map(),
          get_column_statistics_for_partition_request(),
          list()
        ) ::
          {:ok, get_column_statistics_for_partition_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_column_statistics_for_partition_errors()}
  def get_column_statistics_for_partition(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetColumnStatisticsForPartition", input, options)
  end

  @doc """
  Retrieves table statistics of columns.

  The Identity and Access Management (IAM) permission required for this operation
  is `GetTable`.
  """
  @spec get_column_statistics_for_table(map(), get_column_statistics_for_table_request(), list()) ::
          {:ok, get_column_statistics_for_table_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_column_statistics_for_table_errors()}
  def get_column_statistics_for_table(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetColumnStatisticsForTable", input, options)
  end

  @doc """
  Get the associated metadata/information for a task run, given a task run ID.
  """
  @spec get_column_statistics_task_run(map(), get_column_statistics_task_run_request(), list()) ::
          {:ok, get_column_statistics_task_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_column_statistics_task_run_errors()}
  def get_column_statistics_task_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetColumnStatisticsTaskRun", input, options)
  end

  @doc """
  Retrieves information about all runs associated with the specified table.
  """
  @spec get_column_statistics_task_runs(map(), get_column_statistics_task_runs_request(), list()) ::
          {:ok, get_column_statistics_task_runs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_column_statistics_task_runs_errors()}
  def get_column_statistics_task_runs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetColumnStatisticsTaskRuns", input, options)
  end

  @doc """
  Gets settings for a column statistics task.
  """
  @spec get_column_statistics_task_settings(
          map(),
          get_column_statistics_task_settings_request(),
          list()
        ) ::
          {:ok, get_column_statistics_task_settings_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_column_statistics_task_settings_errors()}
  def get_column_statistics_task_settings(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetColumnStatisticsTaskSettings", input, options)
  end

  @doc """
  Retrieves a connection definition from the Data Catalog.
  """
  @spec get_connection(map(), get_connection_request(), list()) ::
          {:ok, get_connection_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_connection_errors()}
  def get_connection(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetConnection", input, options)
  end

  @doc """
  Retrieves a list of connection definitions from the Data Catalog.
  """
  @spec get_connections(map(), get_connections_request(), list()) ::
          {:ok, get_connections_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_connections_errors()}
  def get_connections(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetConnections", input, options)
  end

  @doc """
  Retrieves metadata for a specified crawler.
  """
  @spec get_crawler(map(), get_crawler_request(), list()) ::
          {:ok, get_crawler_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_crawler_errors()}
  def get_crawler(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetCrawler", input, options)
  end

  @doc """
  Retrieves metrics about specified crawlers.
  """
  @spec get_crawler_metrics(map(), get_crawler_metrics_request(), list()) ::
          {:ok, get_crawler_metrics_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_crawler_metrics_errors()}
  def get_crawler_metrics(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetCrawlerMetrics", input, options)
  end

  @doc """
  Retrieves metadata for all crawlers defined in the customer
  account.
  """
  @spec get_crawlers(map(), get_crawlers_request(), list()) ::
          {:ok, get_crawlers_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_crawlers_errors()}
  def get_crawlers(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetCrawlers", input, options)
  end

  @doc """
  Retrieves the details of a custom pattern by specifying its name.
  """
  @spec get_custom_entity_type(map(), get_custom_entity_type_request(), list()) ::
          {:ok, get_custom_entity_type_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_custom_entity_type_errors()}
  def get_custom_entity_type(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetCustomEntityType", input, options)
  end

  @doc """
  Retrieves the URL for the Spark monitoring dashboard for a Glue resource.
  """
  @spec get_dashboard_url(map(), get_dashboard_url_request(), list()) ::
          {:ok, get_dashboard_url_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_dashboard_url_errors()}
  def get_dashboard_url(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetDashboardUrl", input, options)
  end

  @doc """
  Retrieves the security configuration for a specified catalog.
  """
  @spec get_data_catalog_encryption_settings(
          map(),
          get_data_catalog_encryption_settings_request(),
          list()
        ) ::
          {:ok, get_data_catalog_encryption_settings_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_data_catalog_encryption_settings_errors()}
  def get_data_catalog_encryption_settings(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetDataCatalogEncryptionSettings", input, options)
  end

  @doc """
  Retrieve the training status of the model along with more information
  (CompletedOn, StartedOn, FailureReason).
  """
  @spec get_data_quality_model(map(), get_data_quality_model_request(), list()) ::
          {:ok, get_data_quality_model_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_data_quality_model_errors()}
  def get_data_quality_model(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetDataQualityModel", input, options)
  end

  @doc """
  Retrieve a statistic's predictions for a given Profile ID.
  """
  @spec get_data_quality_model_result(map(), get_data_quality_model_result_request(), list()) ::
          {:ok, get_data_quality_model_result_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_data_quality_model_result_errors()}
  def get_data_quality_model_result(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetDataQualityModelResult", input, options)
  end

  @doc """
  Retrieves the result of a data quality rule evaluation.
  """
  @spec get_data_quality_result(map(), get_data_quality_result_request(), list()) ::
          {:ok, get_data_quality_result_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_data_quality_result_errors()}
  def get_data_quality_result(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetDataQualityResult", input, options)
  end

  @doc """
  Gets the specified recommendation run that was used to generate rules.
  """
  @spec get_data_quality_rule_recommendation_run(
          map(),
          get_data_quality_rule_recommendation_run_request(),
          list()
        ) ::
          {:ok, get_data_quality_rule_recommendation_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_data_quality_rule_recommendation_run_errors()}
  def get_data_quality_rule_recommendation_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetDataQualityRuleRecommendationRun", input, options)
  end

  @doc """
  Returns an existing ruleset by identifier or name.
  """
  @spec get_data_quality_ruleset(map(), get_data_quality_ruleset_request(), list()) ::
          {:ok, get_data_quality_ruleset_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_data_quality_ruleset_errors()}
  def get_data_quality_ruleset(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetDataQualityRuleset", input, options)
  end

  @doc """
  Retrieves a specific run where a ruleset is evaluated against a data source.
  """
  @spec get_data_quality_ruleset_evaluation_run(
          map(),
          get_data_quality_ruleset_evaluation_run_request(),
          list()
        ) ::
          {:ok, get_data_quality_ruleset_evaluation_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_data_quality_ruleset_evaluation_run_errors()}
  def get_data_quality_ruleset_evaluation_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetDataQualityRulesetEvaluationRun", input, options)
  end

  @doc """
  Retrieves the definition of a specified database.
  """
  @spec get_database(map(), get_database_request(), list()) ::
          {:ok, get_database_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_database_errors()}
  def get_database(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetDatabase", input, options)
  end

  @doc """
  Retrieves all databases defined in a given Data Catalog.
  """
  @spec get_databases(map(), get_databases_request(), list()) ::
          {:ok, get_databases_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_databases_errors()}
  def get_databases(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetDatabases", input, options)
  end

  @doc """
  Transforms a Python script into a directed acyclic graph (DAG).
  """
  @spec get_dataflow_graph(map(), get_dataflow_graph_request(), list()) ::
          {:ok, get_dataflow_graph_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_dataflow_graph_errors()}
  def get_dataflow_graph(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetDataflowGraph", input, options)
  end

  @doc """
  Retrieves information about a specified development endpoint.

  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.
  """
  @spec get_dev_endpoint(map(), get_dev_endpoint_request(), list()) ::
          {:ok, get_dev_endpoint_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_dev_endpoint_errors()}
  def get_dev_endpoint(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetDevEndpoint", input, options)
  end

  @doc """
  Retrieves all the development endpoints in this Amazon Web Services account.

  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.
  """
  @spec get_dev_endpoints(map(), get_dev_endpoints_request(), list()) ::
          {:ok, get_dev_endpoints_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_dev_endpoints_errors()}
  def get_dev_endpoints(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetDevEndpoints", input, options)
  end

  @doc """
  This API is used to query preview data from a given connection type or from a
  native Amazon S3 based Glue Data Catalog.

  Returns records as an array of JSON blobs. Each record is formatted using
  Jackson JsonNode based on the field type defined by the `DescribeEntity` API.

  Spark connectors generate schemas according to the same data type mapping as in
  the `DescribeEntity` API. Spark connectors convert data to the appropriate data
  types matching the schema when returning rows.
  """
  @spec get_entity_records(map(), get_entity_records_request(), list()) ::
          {:ok, get_entity_records_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_entity_records_errors()}
  def get_entity_records(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetEntityRecords", input, options)
  end

  @doc """
  Retrieves a form type in Glue Data Catalog by its identifier.
  """
  @spec get_form_type(map(), get_form_type_request(), list()) ::
          {:ok, get_form_type_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_form_type_errors()}
  def get_form_type(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetFormType", input, options)
  end

  @doc """
  Retrieves a business glossary in Glue Data Catalog by its identifier.
  """
  @spec get_glossary(map(), get_glossary_request(), list()) ::
          {:ok, get_glossary_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_glossary_errors()}
  def get_glossary(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetGlossary", input, options)
  end

  @doc """
  Retrieves a glossary term in Glue Data Catalog by its identifier.
  """
  @spec get_glossary_term(map(), get_glossary_term_request(), list()) ::
          {:ok, get_glossary_term_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_glossary_term_errors()}
  def get_glossary_term(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetGlossaryTerm", input, options)
  end

  @doc """
  Retrieves the current Glue Identity Center configuration details, including the
  associated Identity Center instance and
  application information.
  """
  @spec get_glue_identity_center_configuration(
          map(),
          get_glue_identity_center_configuration_request(),
          list()
        ) ::
          {:ok, get_glue_identity_center_configuration_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_glue_identity_center_configuration_errors()}
  def get_glue_identity_center_configuration(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetGlueIdentityCenterConfiguration", input, options)
  end

  @doc """
  This API is used for fetching the `ResourceProperty` of the Glue connection (for
  the source) or Glue database ARN (for the target)
  """
  @spec get_integration_resource_property(
          map(),
          get_integration_resource_property_request(),
          list()
        ) ::
          {:ok, get_integration_resource_property_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_integration_resource_property_errors()}
  def get_integration_resource_property(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetIntegrationResourceProperty", input, options)
  end

  @doc """
  This API is used to retrieve optional override properties for the tables that
  need to be replicated.

  These properties can include properties for filtering and partition for source
  and target tables.
  """
  @spec get_integration_table_properties(
          map(),
          get_integration_table_properties_request(),
          list()
        ) ::
          {:ok, get_integration_table_properties_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_integration_table_properties_errors()}
  def get_integration_table_properties(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetIntegrationTableProperties", input, options)
  end

  @doc """
  Retrieves an existing job definition.
  """
  @spec get_job(map(), get_job_request(), list()) ::
          {:ok, get_job_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_job_errors()}
  def get_job(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetJob", input, options)
  end

  @doc """
  Returns information on a job bookmark entry.

  For more information about enabling and using job bookmarks, see:

    *

  [Tracking processed data using job bookmarks](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuations.html)

    *

  [Job parameters used by Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)

    *

  [Job structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-Job)
  """
  @spec get_job_bookmark(map(), get_job_bookmark_request(), list()) ::
          {:ok, get_job_bookmark_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_job_bookmark_errors()}
  def get_job_bookmark(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetJobBookmark", input, options)
  end

  @doc """
  Retrieves the metadata for a given job run.

  Job run history is accessible for 365 days for your workflow and job run.
  """
  @spec get_job_run(map(), get_job_run_request(), list()) ::
          {:ok, get_job_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_job_run_errors()}
  def get_job_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetJobRun", input, options)
  end

  @doc """
  Retrieves metadata for all runs of a given job definition.

  `GetJobRuns` returns the job runs in chronological order, with the newest jobs
  returned first.
  """
  @spec get_job_runs(map(), get_job_runs_request(), list()) ::
          {:ok, get_job_runs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_job_runs_errors()}
  def get_job_runs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetJobRuns", input, options)
  end

  @doc """
  Retrieves all current job definitions.
  """
  @spec get_jobs(map(), get_jobs_request(), list()) ::
          {:ok, get_jobs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_jobs_errors()}
  def get_jobs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetJobs", input, options)
  end

  @doc """
  Creates mappings.
  """
  @spec get_mapping(map(), get_mapping_request(), list()) ::
          {:ok, get_mapping_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_mapping_errors()}
  def get_mapping(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetMapping", input, options)
  end

  @doc """
  Get the associated metadata/information for a task run, given a task run ID.
  """
  @spec get_materialized_view_refresh_task_run(
          map(),
          get_materialized_view_refresh_task_run_request(),
          list()
        ) ::
          {:ok, get_materialized_view_refresh_task_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_materialized_view_refresh_task_run_errors()}
  def get_materialized_view_refresh_task_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetMaterializedViewRefreshTaskRun", input, options)
  end

  @doc """
  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
  `GetMLTaskRun` with the `TaskRunID` and its parent transform's
  `TransformID`.
  """
  @spec get_ml_task_run(map(), get_ml_task_run_request(), list()) ::
          {:ok, get_ml_task_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_ml_task_run_errors()}
  def get_ml_task_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetMLTaskRun", input, options)
  end

  @doc """
  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
  `GetMLTaskRuns` with their parent transform's `TransformID` and other
  optional parameters as documented in this section.

  This operation returns a list of historic runs and must be paginated.
  """
  @spec get_ml_task_runs(map(), get_ml_task_runs_request(), list()) ::
          {:ok, get_ml_task_runs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_ml_task_runs_errors()}
  def get_ml_task_runs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetMLTaskRuns", input, options)
  end

  @doc """
  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 `GetMLTransform`.
  """
  @spec get_ml_transform(map(), get_ml_transform_request(), list()) ::
          {:ok, get_ml_transform_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_ml_transform_errors()}
  def get_ml_transform(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetMLTransform", input, options)
  end

  @doc """
  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 `GetMLTransforms`.
  """
  @spec get_ml_transforms(map(), get_ml_transforms_request(), list()) ::
          {:ok, get_ml_transforms_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_ml_transforms_errors()}
  def get_ml_transforms(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetMLTransforms", input, options)
  end

  @doc """
  Retrieves information about a specified partition.
  """
  @spec get_partition(map(), get_partition_request(), list()) ::
          {:ok, get_partition_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_partition_errors()}
  def get_partition(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetPartition", input, options)
  end

  @doc """
  Retrieves the partition indexes associated with a table.
  """
  @spec get_partition_indexes(map(), get_partition_indexes_request(), list()) ::
          {:ok, get_partition_indexes_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_partition_indexes_errors()}
  def get_partition_indexes(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetPartitionIndexes", input, options)
  end

  @doc """
  Retrieves information about the partitions in a table.
  """
  @spec get_partitions(map(), get_partitions_request(), list()) ::
          {:ok, get_partitions_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_partitions_errors()}
  def get_partitions(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetPartitions", input, options)
  end

  @doc """
  Gets code to perform a specified mapping.
  """
  @spec get_plan(map(), get_plan_request(), list()) ::
          {:ok, get_plan_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_plan_errors()}
  def get_plan(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetPlan", input, options)
  end

  @doc """
  Describes the specified registry in detail.
  """
  @spec get_registry(map(), get_registry_input(), list()) ::
          {:ok, get_registry_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_registry_errors()}
  def get_registry(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetRegistry", input, options)
  end

  @doc """
  Retrieves the resource policies set on individual resources by Resource Access
  Manager
  during cross-account permission grants.

  Also retrieves the Data Catalog resource
  policy.

  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.
  """
  @spec get_resource_policies(map(), get_resource_policies_request(), list()) ::
          {:ok, get_resource_policies_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_resource_policies_errors()}
  def get_resource_policies(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetResourcePolicies", input, options)
  end

  @doc """
  Retrieves a specified resource policy.
  """
  @spec get_resource_policy(map(), get_resource_policy_request(), list()) ::
          {:ok, get_resource_policy_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_resource_policy_errors()}
  def get_resource_policy(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetResourcePolicy", input, options)
  end

  @doc """
  Describes the specified schema in detail.
  """
  @spec get_schema(map(), get_schema_input(), list()) ::
          {:ok, get_schema_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_schema_errors()}
  def get_schema(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetSchema", input, options)
  end

  @doc """
  Retrieves a schema by the `SchemaDefinition`.

  The schema definition is sent to the Schema Registry, canonicalized, and hashed.
  If the hash is matched within the scope of the `SchemaName` 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 `Deleted`
  statuses will not be included in the results.
  """
  @spec get_schema_by_definition(map(), get_schema_by_definition_input(), list()) ::
          {:ok, get_schema_by_definition_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_schema_by_definition_errors()}
  def get_schema_by_definition(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetSchemaByDefinition", input, options)
  end

  @doc """
  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.
  """
  @spec get_schema_version(map(), get_schema_version_input(), list()) ::
          {:ok, get_schema_version_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_schema_version_errors()}
  def get_schema_version(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetSchemaVersion", input, options)
  end

  @doc """
  Fetches the schema version difference in the specified difference type between
  two stored schema versions in the Schema Registry.

  This API allows you to compare two schema versions between two schema
  definitions under the same schema.
  """
  @spec get_schema_versions_diff(map(), get_schema_versions_diff_input(), list()) ::
          {:ok, get_schema_versions_diff_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_schema_versions_diff_errors()}
  def get_schema_versions_diff(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetSchemaVersionsDiff", input, options)
  end

  @doc """
  Retrieves a specified security configuration.
  """
  @spec get_security_configuration(map(), get_security_configuration_request(), list()) ::
          {:ok, get_security_configuration_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_security_configuration_errors()}
  def get_security_configuration(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetSecurityConfiguration", input, options)
  end

  @doc """
  Retrieves a list of all security configurations.
  """
  @spec get_security_configurations(map(), get_security_configurations_request(), list()) ::
          {:ok, get_security_configurations_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_security_configurations_errors()}
  def get_security_configurations(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetSecurityConfigurations", input, options)
  end

  @doc """
  Retrieves the session.
  """
  @spec get_session(map(), get_session_request(), list()) ::
          {:ok, get_session_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_session_errors()}
  def get_session(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetSession", input, options)
  end

  @doc """
  Returns the Spark Connect endpoint URL and authentication token for an
  interactive session.
  """
  @spec get_session_endpoint(map(), get_session_endpoint_request(), list()) ::
          {:ok, get_session_endpoint_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_session_endpoint_errors()}
  def get_session_endpoint(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetSessionEndpoint", input, options)
  end

  @doc """
  Retrieves the statement.
  """
  @spec get_statement(map(), get_statement_request(), list()) ::
          {:ok, get_statement_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_statement_errors()}
  def get_statement(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetStatement", input, options)
  end

  @doc """
  Retrieves the `Table` definition in a Data Catalog for
  a specified table.
  """
  @spec get_table(map(), get_table_request(), list()) ::
          {:ok, get_table_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_table_errors()}
  def get_table(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetTable", input, options)
  end

  @doc """
  Returns the configuration of all optimizers associated with a specified table.
  """
  @spec get_table_optimizer(map(), get_table_optimizer_request(), list()) ::
          {:ok, get_table_optimizer_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_table_optimizer_errors()}
  def get_table_optimizer(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetTableOptimizer", input, options)
  end

  @doc """
  Retrieves a specified version of a table.
  """
  @spec get_table_version(map(), get_table_version_request(), list()) ::
          {:ok, get_table_version_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_table_version_errors()}
  def get_table_version(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetTableVersion", input, options)
  end

  @doc """
  Retrieves a list of strings that identify available versions of
  a specified table.
  """
  @spec get_table_versions(map(), get_table_versions_request(), list()) ::
          {:ok, get_table_versions_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_table_versions_errors()}
  def get_table_versions(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetTableVersions", input, options)
  end

  @doc """
  Retrieves the definitions of some or all of the tables in a given
  `Database`.
  """
  @spec get_tables(map(), get_tables_request(), list()) ::
          {:ok, get_tables_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_tables_errors()}
  def get_tables(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetTables", input, options)
  end

  @doc """
  Retrieves a list of tags associated with a resource.
  """
  @spec get_tags(map(), get_tags_request(), list()) ::
          {:ok, get_tags_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_tags_errors()}
  def get_tags(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetTags", input, options)
  end

  @doc """
  Retrieves the definition of a trigger.
  """
  @spec get_trigger(map(), get_trigger_request(), list()) ::
          {:ok, get_trigger_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_trigger_errors()}
  def get_trigger(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetTrigger", input, options)
  end

  @doc """
  Gets all the triggers associated with a job.
  """
  @spec get_triggers(map(), get_triggers_request(), list()) ::
          {:ok, get_triggers_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_triggers_errors()}
  def get_triggers(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetTriggers", input, options)
  end

  @doc """
  Retrieves partition metadata from the Data Catalog that contains unfiltered
  metadata.

  For IAM authorization, the public IAM action associated with this API is
  `glue:GetPartition`.
  """
  @spec get_unfiltered_partition_metadata(
          map(),
          get_unfiltered_partition_metadata_request(),
          list()
        ) ::
          {:ok, get_unfiltered_partition_metadata_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_unfiltered_partition_metadata_errors()}
  def get_unfiltered_partition_metadata(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetUnfilteredPartitionMetadata", input, options)
  end

  @doc """
  Retrieves partition metadata from the Data Catalog that contains unfiltered
  metadata.

  For IAM authorization, the public IAM action associated with this API is
  `glue:GetPartitions`.
  """
  @spec get_unfiltered_partitions_metadata(
          map(),
          get_unfiltered_partitions_metadata_request(),
          list()
        ) ::
          {:ok, get_unfiltered_partitions_metadata_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_unfiltered_partitions_metadata_errors()}
  def get_unfiltered_partitions_metadata(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetUnfilteredPartitionsMetadata", input, options)
  end

  @doc """
  Allows a third-party analytical engine to retrieve unfiltered table metadata
  from the Data Catalog.

  For IAM authorization, the public IAM action associated with this API is
  `glue:GetTable`.
  """
  @spec get_unfiltered_table_metadata(map(), get_unfiltered_table_metadata_request(), list()) ::
          {:ok, get_unfiltered_table_metadata_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_unfiltered_table_metadata_errors()}
  def get_unfiltered_table_metadata(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetUnfilteredTableMetadata", input, options)
  end

  @doc """
  Retrieves information about the specified Glue usage profile.
  """
  @spec get_usage_profile(map(), get_usage_profile_request(), list()) ::
          {:ok, get_usage_profile_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_usage_profile_errors()}
  def get_usage_profile(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetUsageProfile", input, options)
  end

  @doc """
  Retrieves a specified function definition from the Data Catalog.
  """
  @spec get_user_defined_function(map(), get_user_defined_function_request(), list()) ::
          {:ok, get_user_defined_function_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_user_defined_function_errors()}
  def get_user_defined_function(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetUserDefinedFunction", input, options)
  end

  @doc """
  Retrieves multiple function definitions from the Data Catalog.
  """
  @spec get_user_defined_functions(map(), get_user_defined_functions_request(), list()) ::
          {:ok, get_user_defined_functions_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_user_defined_functions_errors()}
  def get_user_defined_functions(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetUserDefinedFunctions", input, options)
  end

  @doc """
  Retrieves resource metadata for a workflow.
  """
  @spec get_workflow(map(), get_workflow_request(), list()) ::
          {:ok, get_workflow_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_workflow_errors()}
  def get_workflow(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetWorkflow", input, options)
  end

  @doc """
  Retrieves the metadata for a given workflow run.

  Job run history is accessible for 90 days for your workflow and job run.
  """
  @spec get_workflow_run(map(), get_workflow_run_request(), list()) ::
          {:ok, get_workflow_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_workflow_run_errors()}
  def get_workflow_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetWorkflowRun", input, options)
  end

  @doc """
  Retrieves the workflow run properties which were set during the run.
  """
  @spec get_workflow_run_properties(map(), get_workflow_run_properties_request(), list()) ::
          {:ok, get_workflow_run_properties_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_workflow_run_properties_errors()}
  def get_workflow_run_properties(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetWorkflowRunProperties", input, options)
  end

  @doc """
  Retrieves metadata for all runs of a given workflow.
  """
  @spec get_workflow_runs(map(), get_workflow_runs_request(), list()) ::
          {:ok, get_workflow_runs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, get_workflow_runs_errors()}
  def get_workflow_runs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "GetWorkflowRuns", input, options)
  end

  @doc """
  Imports an existing Amazon Athena Data Catalog to Glue.
  """
  @spec import_catalog_to_glue(map(), import_catalog_to_glue_request(), list()) ::
          {:ok, import_catalog_to_glue_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, import_catalog_to_glue_errors()}
  def import_catalog_to_glue(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ImportCatalogToGlue", input, options)
  end

  @doc """
  Lists the asset types defined in Glue Data Catalog.
  """
  @spec list_asset_types(map(), list_asset_types_request(), list()) ::
          {:ok, list_asset_types_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_asset_types_errors()}
  def list_asset_types(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListAssetTypes", input, options)
  end

  @doc """
  Lists all the blueprint names in an account.
  """
  @spec list_blueprints(map(), list_blueprints_request(), list()) ::
          {:ok, list_blueprints_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_blueprints_errors()}
  def list_blueprints(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListBlueprints", input, options)
  end

  @doc """
  List all task runs for a particular account.
  """
  @spec list_column_statistics_task_runs(
          map(),
          list_column_statistics_task_runs_request(),
          list()
        ) ::
          {:ok, list_column_statistics_task_runs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_column_statistics_task_runs_errors()}
  def list_column_statistics_task_runs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListColumnStatisticsTaskRuns", input, options)
  end

  @doc """
  The `ListConnectionTypes` API provides a discovery mechanism to learn available
  connection types in Glue.

  The response contains a list of connection types with high-level details of what
  is supported for each connection type, including both built-in connection types
  and custom connection types registered via `RegisterConnectionType`. The
  connection types listed are the set of supported options for the
  `ConnectionType` value in the `CreateConnection` API.

  See also: `DescribeConnectionType`, `RegisterConnectionType`,
  `DeleteConnectionType`
  """
  @spec list_connection_types(map(), list_connection_types_request(), list()) ::
          {:ok, list_connection_types_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_connection_types_errors()}
  def list_connection_types(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListConnectionTypes", input, options)
  end

  @doc """
  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.

  This operation takes the optional `Tags` field, which you can use as a filter on
  the response so that tagged resources can be retrieved as a group. If you choose
  to use tags
  filtering, only resources with the tag are retrieved.
  """
  @spec list_crawlers(map(), list_crawlers_request(), list()) ::
          {:ok, list_crawlers_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_crawlers_errors()}
  def list_crawlers(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListCrawlers", input, options)
  end

  @doc """
  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.

  You may use this API to:

    *
  Retrive all the crawls of a specified crawler.

    *
  Retrieve all the crawls of a specified crawler within a limited count.

    *
  Retrieve all the crawls of a specified crawler in a specific time range.

    *
  Retrieve all the crawls of a specified crawler with a particular state, crawl
  ID, or DPU hour value.
  """
  @spec list_crawls(map(), list_crawls_request(), list()) ::
          {:ok, list_crawls_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_crawls_errors()}
  def list_crawls(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListCrawls", input, options)
  end

  @doc """
  Lists all the custom patterns that have been created.
  """
  @spec list_custom_entity_types(map(), list_custom_entity_types_request(), list()) ::
          {:ok, list_custom_entity_types_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_custom_entity_types_errors()}
  def list_custom_entity_types(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListCustomEntityTypes", input, options)
  end

  @doc """
  Returns all data quality execution results for your account.
  """
  @spec list_data_quality_results(map(), list_data_quality_results_request(), list()) ::
          {:ok, list_data_quality_results_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_data_quality_results_errors()}
  def list_data_quality_results(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListDataQualityResults", input, options)
  end

  @doc """
  Lists the recommendation runs meeting the filter criteria.
  """
  @spec list_data_quality_rule_recommendation_runs(
          map(),
          list_data_quality_rule_recommendation_runs_request(),
          list()
        ) ::
          {:ok, list_data_quality_rule_recommendation_runs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_data_quality_rule_recommendation_runs_errors()}
  def list_data_quality_rule_recommendation_runs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListDataQualityRuleRecommendationRuns", input, options)
  end

  @doc """
  Lists all the runs meeting the filter criteria, where a ruleset is evaluated
  against a data source.
  """
  @spec list_data_quality_ruleset_evaluation_runs(
          map(),
          list_data_quality_ruleset_evaluation_runs_request(),
          list()
        ) ::
          {:ok, list_data_quality_ruleset_evaluation_runs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_data_quality_ruleset_evaluation_runs_errors()}
  def list_data_quality_ruleset_evaluation_runs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListDataQualityRulesetEvaluationRuns", input, options)
  end

  @doc """
  Returns a paginated list of rulesets for the specified list of Glue tables.
  """
  @spec list_data_quality_rulesets(map(), list_data_quality_rulesets_request(), list()) ::
          {:ok, list_data_quality_rulesets_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_data_quality_rulesets_errors()}
  def list_data_quality_rulesets(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListDataQualityRulesets", input, options)
  end

  @doc """
  Retrieve annotations for a data quality statistic.
  """
  @spec list_data_quality_statistic_annotations(
          map(),
          list_data_quality_statistic_annotations_request(),
          list()
        ) ::
          {:ok, list_data_quality_statistic_annotations_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_data_quality_statistic_annotations_errors()}
  def list_data_quality_statistic_annotations(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListDataQualityStatisticAnnotations", input, options)
  end

  @doc """
  Retrieves a list of data quality statistics.
  """
  @spec list_data_quality_statistics(map(), list_data_quality_statistics_request(), list()) ::
          {:ok, list_data_quality_statistics_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_data_quality_statistics_errors()}
  def list_data_quality_statistics(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListDataQualityStatistics", input, options)
  end

  @doc """
  Retrieves the names of all `DevEndpoint` resources in this Amazon Web Services
  account, or the
  resources with the specified tag.

  This operation allows you to see which resources are
  available in your account, and their names.

  This operation takes the optional `Tags` field, which you can use as a filter on
  the response so that tagged resources can be retrieved as a group. If you choose
  to use tags
  filtering, only resources with the tag are retrieved.
  """
  @spec list_dev_endpoints(map(), list_dev_endpoints_request(), list()) ::
          {:ok, list_dev_endpoints_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_dev_endpoints_errors()}
  def list_dev_endpoints(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListDevEndpoints", input, options)
  end

  @doc """
  Returns the available entities supported by the connection type.
  """
  @spec list_entities(map(), list_entities_request(), list()) ::
          {:ok, list_entities_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_entities_errors()}
  def list_entities(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListEntities", input, options)
  end

  @doc """
  Lists the form types defined in Glue Data Catalog.
  """
  @spec list_form_types(map(), list_form_types_request(), list()) ::
          {:ok, list_form_types_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_form_types_errors()}
  def list_form_types(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListFormTypes", input, options)
  end

  @doc """
  Lists business glossaries in Glue Data Catalog.
  """
  @spec list_glossaries(map(), list_glossaries_request(), list()) ::
          {:ok, list_glossaries_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_glossaries_errors()}
  def list_glossaries(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListGlossaries", input, options)
  end

  @doc """
  Lists glossary terms within a business glossary in Glue Data Catalog.
  """
  @spec list_glossary_terms(map(), list_glossary_terms_request(), list()) ::
          {:ok, list_glossary_terms_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_glossary_terms_errors()}
  def list_glossary_terms(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListGlossaryTerms", input, options)
  end

  @doc """
  List integration resource properties for a single customer.

  It supports the filters, maxRecords and markers.
  """
  @spec list_integration_resource_properties(
          map(),
          list_integration_resource_properties_request(),
          list()
        ) ::
          {:ok, list_integration_resource_properties_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_integration_resource_properties_errors()}
  def list_integration_resource_properties(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListIntegrationResourceProperties", input, options)
  end

  @doc """
  Lists the items in an iterable form on an asset in Glue Data Catalog.

  For example, lists the columns of a table asset.
  """
  @spec list_iterable_forms(map(), list_iterable_forms_request(), list()) ::
          {:ok, list_iterable_forms_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_iterable_forms_errors()}
  def list_iterable_forms(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListIterableForms", input, options)
  end

  @doc """
  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.

  This operation takes the optional `Tags` field, which you can use as a filter on
  the response so that tagged resources can be retrieved as a group. If you choose
  to use tags
  filtering, only resources with the tag are retrieved.
  """
  @spec list_jobs(map(), list_jobs_request(), list()) ::
          {:ok, list_jobs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_jobs_errors()}
  def list_jobs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListJobs", input, options)
  end

  @doc """
  List all task runs for a particular account.
  """
  @spec list_materialized_view_refresh_task_runs(
          map(),
          list_materialized_view_refresh_task_runs_request(),
          list()
        ) ::
          {:ok, list_materialized_view_refresh_task_runs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_materialized_view_refresh_task_runs_errors()}
  def list_materialized_view_refresh_task_runs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListMaterializedViewRefreshTaskRuns", input, options)
  end

  @doc """
  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 `Tags` 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.
  """
  @spec list_ml_transforms(map(), list_ml_transforms_request(), list()) ::
          {:ok, list_ml_transforms_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_ml_transforms_errors()}
  def list_ml_transforms(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListMLTransforms", input, options)
  end

  @doc """
  Returns a list of registries that you have created, with minimal registry
  information.

  Registries in the `Deleting` status will not be included in the results. Empty
  results will be returned if there are no registries available.
  """
  @spec list_registries(map(), list_registries_input(), list()) ::
          {:ok, list_registries_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_registries_errors()}
  def list_registries(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListRegistries", input, options)
  end

  @doc """
  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.
  """
  @spec list_schema_versions(map(), list_schema_versions_input(), list()) ::
          {:ok, list_schema_versions_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_schema_versions_errors()}
  def list_schema_versions(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListSchemaVersions", input, options)
  end

  @doc """
  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.

  When the `RegistryId` is not provided, all the schemas across registries will be
  part of the API response.
  """
  @spec list_schemas(map(), list_schemas_input(), list()) ::
          {:ok, list_schemas_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_schemas_errors()}
  def list_schemas(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListSchemas", input, options)
  end

  @doc """
  Retrieve a list of sessions.
  """
  @spec list_sessions(map(), list_sessions_request(), list()) ::
          {:ok, list_sessions_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_sessions_errors()}
  def list_sessions(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListSessions", input, options)
  end

  @doc """
  Lists statements for the session.
  """
  @spec list_statements(map(), list_statements_request(), list()) ::
          {:ok, list_statements_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_statements_errors()}
  def list_statements(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListStatements", input, options)
  end

  @doc """
  Lists the history of previous optimizer runs for a specific table.
  """
  @spec list_table_optimizer_runs(map(), list_table_optimizer_runs_request(), list()) ::
          {:ok, list_table_optimizer_runs_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_table_optimizer_runs_errors()}
  def list_table_optimizer_runs(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListTableOptimizerRuns", input, options)
  end

  @doc """
  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.

  This operation takes the optional `Tags` field, which you can use as a filter on
  the response so that tagged resources can be retrieved as a group. If you choose
  to use tags
  filtering, only resources with the tag are retrieved.
  """
  @spec list_triggers(map(), list_triggers_request(), list()) ::
          {:ok, list_triggers_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_triggers_errors()}
  def list_triggers(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListTriggers", input, options)
  end

  @doc """
  List all the Glue usage profiles.
  """
  @spec list_usage_profiles(map(), list_usage_profiles_request(), list()) ::
          {:ok, list_usage_profiles_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_usage_profiles_errors()}
  def list_usage_profiles(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListUsageProfiles", input, options)
  end

  @doc """
  Lists names of workflows created in the account.
  """
  @spec list_workflows(map(), list_workflows_request(), list()) ::
          {:ok, list_workflows_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, list_workflows_errors()}
  def list_workflows(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ListWorkflows", input, options)
  end

  @doc """
  Modifies a Zero-ETL integration in the caller's account.
  """
  @spec modify_integration(map(), modify_integration_request(), list()) ::
          {:ok, modify_integration_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, modify_integration_errors()}
  def modify_integration(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ModifyIntegration", input, options)
  end

  @doc """
  Creates or updates an asset in Glue Data Catalog.

  If the asset already exists, this operation updates it; otherwise, a new asset
  is created.
  """
  @spec put_asset(map(), put_asset_request(), list()) ::
          {:ok, put_asset_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, put_asset_errors()}
  def put_asset(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "PutAsset", input, options)
  end

  @doc """
  Creates or updates an asset type in Glue Data Catalog.

  An asset type defines the structure of assets by specifying which forms they
  include. If an asset type with the given name already exists, it is updated.
  """
  @spec put_asset_type(map(), put_asset_type_request(), list()) ::
          {:ok, put_asset_type_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, put_asset_type_errors()}
  def put_asset_type(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "PutAssetType", input, options)
  end

  @doc """
  Attaches a form to an asset or an iterable form item in Glue Data Catalog.

  If an attachment with the same name already exists, it is overwritten.
  """
  @spec put_attachment(map(), put_attachment_request(), list()) ::
          {:ok, put_attachment_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, put_attachment_errors()}
  def put_attachment(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "PutAttachment", input, options)
  end

  @doc """
  Sets the security configuration for a specified catalog.

  After the configuration has been
  set, the specified encryption is applied to every catalog write thereafter.
  """
  @spec put_data_catalog_encryption_settings(
          map(),
          put_data_catalog_encryption_settings_request(),
          list()
        ) ::
          {:ok, put_data_catalog_encryption_settings_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, put_data_catalog_encryption_settings_errors()}
  def put_data_catalog_encryption_settings(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "PutDataCatalogEncryptionSettings", input, options)
  end

  @doc """
  Annotate all datapoints for a Profile.
  """
  @spec put_data_quality_profile_annotation(
          map(),
          put_data_quality_profile_annotation_request(),
          list()
        ) ::
          {:ok, put_data_quality_profile_annotation_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, put_data_quality_profile_annotation_errors()}
  def put_data_quality_profile_annotation(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "PutDataQualityProfileAnnotation", input, options)
  end

  @doc """
  Creates or updates a form type in Glue Data Catalog.

  A form type defines the schema for structured metadata that can be attached to
  assets.
  """
  @spec put_form_type(map(), put_form_type_request(), list()) ::
          {:ok, put_form_type_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, put_form_type_errors()}
  def put_form_type(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "PutFormType", input, options)
  end

  @doc """
  Sets the Data Catalog resource policy for access control.
  """
  @spec put_resource_policy(map(), put_resource_policy_request(), list()) ::
          {:ok, put_resource_policy_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, put_resource_policy_errors()}
  def put_resource_policy(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "PutResourcePolicy", input, options)
  end

  @doc """
  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.
  """
  @spec put_schema_version_metadata(map(), put_schema_version_metadata_input(), list()) ::
          {:ok, put_schema_version_metadata_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, put_schema_version_metadata_errors()}
  def put_schema_version_metadata(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "PutSchemaVersionMetadata", input, options)
  end

  @doc """
  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.
  """
  @spec put_workflow_run_properties(map(), put_workflow_run_properties_request(), list()) ::
          {:ok, put_workflow_run_properties_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, put_workflow_run_properties_errors()}
  def put_workflow_run_properties(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "PutWorkflowRunProperties", input, options)
  end

  @doc """
  Queries for the schema version metadata information.
  """
  @spec query_schema_version_metadata(map(), query_schema_version_metadata_input(), list()) ::
          {:ok, query_schema_version_metadata_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, query_schema_version_metadata_errors()}
  def query_schema_version_metadata(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "QuerySchemaVersionMetadata", input, options)
  end

  @doc """
  Registers a custom connection type in Glue based on the configuration provided.

  This operation enables customers to configure custom connectors for any data
  source with REST-based APIs, eliminating the need for building custom Lambda
  connectors.

  The registered connection type stores details about how requests and responses
  are interpreted by REST sources, including connection properties, authentication
  configuration, and REST configuration with entity definitions. Once registered,
  customers can create connections using this connection type and work with them
  the same way as natively supported Glue connectors.

  Supports multiple authentication types including Basic, OAuth2 (Client
  Credentials, JWT Bearer, Authorization Code), and Custom Auth configurations.
  """
  @spec register_connection_type(map(), register_connection_type_request(), list()) ::
          {:ok, register_connection_type_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, register_connection_type_errors()}
  def register_connection_type(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "RegisterConnectionType", input, options)
  end

  @doc """
  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.

  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 `GetSchemaVersion` API with the `SchemaVersionId` to
  check compatibility modes.

  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.
  """
  @spec register_schema_version(map(), register_schema_version_input(), list()) ::
          {:ok, register_schema_version_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, register_schema_version_errors()}
  def register_schema_version(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "RegisterSchemaVersion", input, options)
  end

  @doc """
  Removes a key value pair from the schema version metadata for the specified
  schema version ID.
  """
  @spec remove_schema_version_metadata(map(), remove_schema_version_metadata_input(), list()) ::
          {:ok, remove_schema_version_metadata_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, remove_schema_version_metadata_errors()}
  def remove_schema_version_metadata(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "RemoveSchemaVersionMetadata", input, options)
  end

  @doc """
  Resets a bookmark entry.

  For more information about enabling and using job bookmarks, see:

    *

  [Tracking processed data using job bookmarks](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuations.html)

    *

  [Job parameters used by Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)

    *

  [Job structure](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-Job)
  """
  @spec reset_job_bookmark(map(), reset_job_bookmark_request(), list()) ::
          {:ok, reset_job_bookmark_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, reset_job_bookmark_errors()}
  def reset_job_bookmark(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ResetJobBookmark", input, options)
  end

  @doc """
  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.
  """
  @spec resume_workflow_run(map(), resume_workflow_run_request(), list()) ::
          {:ok, resume_workflow_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, resume_workflow_run_errors()}
  def resume_workflow_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "ResumeWorkflowRun", input, options)
  end

  @doc """
  Executes the statement.
  """
  @spec run_statement(map(), run_statement_request(), list()) ::
          {:ok, run_statement_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, run_statement_errors()}
  def run_statement(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "RunStatement", input, options)
  end

  @doc """
  Searches for assets in Glue Data Catalog using full-text search, filters,
  sorting, and aggregations.

  Returns matching assets with relevance-ranked results.
  """
  @spec search_assets(map(), search_assets_input(), list()) ::
          {:ok, search_assets_output(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, search_assets_errors()}
  def search_assets(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "SearchAssets", input, options)
  end

  @doc """
  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.

  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.
  """
  @spec search_tables(map(), search_tables_request(), list()) ::
          {:ok, search_tables_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, search_tables_errors()}
  def search_tables(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "SearchTables", input, options)
  end

  @doc """
  Starts a new run of the specified blueprint.
  """
  @spec start_blueprint_run(map(), start_blueprint_run_request(), list()) ::
          {:ok, start_blueprint_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_blueprint_run_errors()}
  def start_blueprint_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartBlueprintRun", input, options)
  end

  @doc """
  Starts a column statistics task run, for a specified table and columns.
  """
  @spec start_column_statistics_task_run(
          map(),
          start_column_statistics_task_run_request(),
          list()
        ) ::
          {:ok, start_column_statistics_task_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_column_statistics_task_run_errors()}
  def start_column_statistics_task_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartColumnStatisticsTaskRun", input, options)
  end

  @doc """
  Starts a column statistics task run schedule.
  """
  @spec start_column_statistics_task_run_schedule(
          map(),
          start_column_statistics_task_run_schedule_request(),
          list()
        ) ::
          {:ok, start_column_statistics_task_run_schedule_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_column_statistics_task_run_schedule_errors()}
  def start_column_statistics_task_run_schedule(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartColumnStatisticsTaskRunSchedule", input, options)
  end

  @doc """
  Starts a crawl using the specified crawler, regardless
  of what is scheduled.

  If the crawler is already running, returns a
  [CrawlerRunningException](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-exceptions.html#aws-glue-api-exceptions-CrawlerRunningException).
  """
  @spec start_crawler(map(), start_crawler_request(), list()) ::
          {:ok, start_crawler_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_crawler_errors()}
  def start_crawler(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartCrawler", input, options)
  end

  @doc """
  Changes the schedule state of the specified crawler to
  `SCHEDULED`, unless the crawler is already running or the
  schedule state is already `SCHEDULED`.
  """
  @spec start_crawler_schedule(map(), start_crawler_schedule_request(), list()) ::
          {:ok, start_crawler_schedule_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_crawler_schedule_errors()}
  def start_crawler_schedule(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartCrawlerSchedule", input, options)
  end

  @doc """
  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.

  Recommendation runs are automatically deleted after 90 days.
  """
  @spec start_data_quality_rule_recommendation_run(
          map(),
          start_data_quality_rule_recommendation_run_request(),
          list()
        ) ::
          {:ok, start_data_quality_rule_recommendation_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_data_quality_rule_recommendation_run_errors()}
  def start_data_quality_rule_recommendation_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartDataQualityRuleRecommendationRun", input, options)
  end

  @doc """
  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
  `GetDataQualityResult` API.
  """
  @spec start_data_quality_ruleset_evaluation_run(
          map(),
          start_data_quality_ruleset_evaluation_run_request(),
          list()
        ) ::
          {:ok, start_data_quality_ruleset_evaluation_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_data_quality_ruleset_evaluation_run_errors()}
  def start_data_quality_ruleset_evaluation_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartDataQualityRulesetEvaluationRun", input, options)
  end

  @doc """
  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 `StartExportLabelsTaskRun` 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
  `TransformId` whose labels you want to export and an Amazon Simple Storage
  Service (Amazon S3) path to export the labels to. The operation returns a
  `TaskRunId`. You can check on the status of your task run by calling the
  `GetMLTaskRun` API.
  """
  @spec start_export_labels_task_run(map(), start_export_labels_task_run_request(), list()) ::
          {:ok, start_export_labels_task_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_export_labels_task_run_errors()}
  def start_export_labels_task_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartExportLabelsTaskRun", input, options)
  end

  @doc """
  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
  `StartMLLabelingSetGenerationTaskRun` call and that ultimately results in
  improving the quality of your machine learning transform.

  After the `StartMLLabelingSetGenerationTaskRun` 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
  `FindMatches` 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
  `StartImportLabelsTaskRun`. After `StartImportLabelsTaskRun` finishes,
  all future runs of the machine learning transform use the new and improved
  labels and perform
  a higher-quality transformation.

  By default, `StartMLLabelingSetGenerationTaskRun` continually learns from and
  combines all labels that you upload unless you set `Replace` to true. If you set
  `Replace` to true, `StartImportLabelsTaskRun` 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.

  You can check on the status of your task run by calling the `GetMLTaskRun`
  operation.
  """
  @spec start_import_labels_task_run(map(), start_import_labels_task_run_request(), list()) ::
          {:ok, start_import_labels_task_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_import_labels_task_run_errors()}
  def start_import_labels_task_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartImportLabelsTaskRun", input, options)
  end

  @doc """
  Starts a job run using a job definition.
  """
  @spec start_job_run(map(), start_job_run_request(), list()) ::
          {:ok, start_job_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_job_run_errors()}
  def start_job_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartJobRun", input, options)
  end

  @doc """
  Starts a materialized view refresh task run, for a specified table and columns.
  """
  @spec start_materialized_view_refresh_task_run(
          map(),
          start_materialized_view_refresh_task_run_request(),
          list()
        ) ::
          {:ok, start_materialized_view_refresh_task_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_materialized_view_refresh_task_run_errors()}
  def start_materialized_view_refresh_task_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartMaterializedViewRefreshTaskRun", input, options)
  end

  @doc """
  Starts a task to estimate the quality of the transform.

  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.

  Returns a unique identifier for the run. You can call `GetMLTaskRun` to get more
  information about the stats of the `EvaluationTaskRun`.
  """
  @spec start_ml_evaluation_task_run(map(), start_ml_evaluation_task_run_request(), list()) ::
          {:ok, start_ml_evaluation_task_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_ml_evaluation_task_run_errors()}
  def start_ml_evaluation_task_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartMLEvaluationTaskRun", input, options)
  end

  @doc """
  Starts the active learning workflow for your machine learning transform to
  improve the
  transform's quality by generating label sets and adding labels.

  When the `StartMLLabelingSetGenerationTaskRun` finishes, Glue will have
  generated a "labeling set" or a set of questions for humans to answer.

  In the case of the `FindMatches` 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, you can upload your labels with a call
  to
  `StartImportLabelsTaskRun`. After `StartImportLabelsTaskRun` finishes,
  all future runs of the machine learning transform will use the new and improved
  labels and
  perform a higher-quality transformation.

  Note: The role used to write the generated labeling set to the `OutputS3Path` is
  the role
  associated with the Machine Learning Transform, specified in the
  `CreateMLTransform` API.
  """
  @spec start_ml_labeling_set_generation_task_run(
          map(),
          start_ml_labeling_set_generation_task_run_request(),
          list()
        ) ::
          {:ok, start_ml_labeling_set_generation_task_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_ml_labeling_set_generation_task_run_errors()}
  def start_ml_labeling_set_generation_task_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartMLLabelingSetGenerationTaskRun", input, options)
  end

  @doc """
  Starts an existing trigger.

  See [Triggering Jobs](https://docs.aws.amazon.com/glue/latest/dg/trigger-job.html) for
  information about how different types of trigger are
  started.
  """
  @spec start_trigger(map(), start_trigger_request(), list()) ::
          {:ok, start_trigger_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_trigger_errors()}
  def start_trigger(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartTrigger", input, options)
  end

  @doc """
  Starts a new run of the specified workflow.
  """
  @spec start_workflow_run(map(), start_workflow_run_request(), list()) ::
          {:ok, start_workflow_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, start_workflow_run_errors()}
  def start_workflow_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StartWorkflowRun", input, options)
  end

  @doc """
  Stops a task run for the specified table.
  """
  @spec stop_column_statistics_task_run(map(), stop_column_statistics_task_run_request(), list()) ::
          {:ok, stop_column_statistics_task_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, stop_column_statistics_task_run_errors()}
  def stop_column_statistics_task_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StopColumnStatisticsTaskRun", input, options)
  end

  @doc """
  Stops a column statistics task run schedule.
  """
  @spec stop_column_statistics_task_run_schedule(
          map(),
          stop_column_statistics_task_run_schedule_request(),
          list()
        ) ::
          {:ok, stop_column_statistics_task_run_schedule_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, stop_column_statistics_task_run_schedule_errors()}
  def stop_column_statistics_task_run_schedule(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StopColumnStatisticsTaskRunSchedule", input, options)
  end

  @doc """
  If the specified crawler is running, stops the crawl.
  """
  @spec stop_crawler(map(), stop_crawler_request(), list()) ::
          {:ok, stop_crawler_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, stop_crawler_errors()}
  def stop_crawler(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StopCrawler", input, options)
  end

  @doc """
  Sets the schedule state of the specified crawler to
  `NOT_SCHEDULED`, but does not stop the crawler if it is
  already running.
  """
  @spec stop_crawler_schedule(map(), stop_crawler_schedule_request(), list()) ::
          {:ok, stop_crawler_schedule_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, stop_crawler_schedule_errors()}
  def stop_crawler_schedule(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StopCrawlerSchedule", input, options)
  end

  @doc """
  Stops a materialized view refresh task run, for a specified table and columns.
  """
  @spec stop_materialized_view_refresh_task_run(
          map(),
          stop_materialized_view_refresh_task_run_request(),
          list()
        ) ::
          {:ok, stop_materialized_view_refresh_task_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, stop_materialized_view_refresh_task_run_errors()}
  def stop_materialized_view_refresh_task_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StopMaterializedViewRefreshTaskRun", input, options)
  end

  @doc """
  Stops the session.
  """
  @spec stop_session(map(), stop_session_request(), list()) ::
          {:ok, stop_session_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, stop_session_errors()}
  def stop_session(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StopSession", input, options)
  end

  @doc """
  Stops a specified trigger.
  """
  @spec stop_trigger(map(), stop_trigger_request(), list()) ::
          {:ok, stop_trigger_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, stop_trigger_errors()}
  def stop_trigger(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StopTrigger", input, options)
  end

  @doc """
  Stops the execution of the specified workflow run.
  """
  @spec stop_workflow_run(map(), stop_workflow_run_request(), list()) ::
          {:ok, stop_workflow_run_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, stop_workflow_run_errors()}
  def stop_workflow_run(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "StopWorkflowRun", input, options)
  end

  @doc """
  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 [Amazon Web Services Tags in Glue](https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html).
  """
  @spec tag_resource(map(), tag_resource_request(), list()) ::
          {:ok, tag_resource_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, tag_resource_errors()}
  def tag_resource(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "TagResource", input, options)
  end

  @doc """
  Tests a connection to a service to validate the service credentials that you
  provide.

  You can either provide an existing connection name or a `TestConnectionInput`
  for testing a non-existing connection input. Providing both at the same time
  will cause an error.

  If the action is successful, the service sends back an HTTP 200 response.
  """
  @spec test_connection(map(), test_connection_request(), list()) ::
          {:ok, test_connection_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, test_connection_errors()}
  def test_connection(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "TestConnection", input, options)
  end

  @doc """
  Removes tags from a resource.
  """
  @spec untag_resource(map(), untag_resource_request(), list()) ::
          {:ok, untag_resource_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, untag_resource_errors()}
  def untag_resource(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UntagResource", input, options)
  end

  @doc """
  Updates a registered blueprint.
  """
  @spec update_blueprint(map(), update_blueprint_request(), list()) ::
          {:ok, update_blueprint_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_blueprint_errors()}
  def update_blueprint(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateBlueprint", input, options)
  end

  @doc """
  Updates an existing catalog's properties in the Glue Data Catalog.
  """
  @spec update_catalog(map(), update_catalog_request(), list()) ::
          {:ok, update_catalog_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_catalog_errors()}
  def update_catalog(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateCatalog", input, options)
  end

  @doc """
  Modifies an existing classifier (a `GrokClassifier`,
  an `XMLClassifier`, a `JsonClassifier`, or a `CsvClassifier`, depending on
  which field is present).
  """
  @spec update_classifier(map(), update_classifier_request(), list()) ::
          {:ok, update_classifier_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_classifier_errors()}
  def update_classifier(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateClassifier", input, options)
  end

  @doc """
  Creates or updates partition statistics of columns.

  The Identity and Access Management (IAM) permission required for this operation
  is `UpdatePartition`.
  """
  @spec update_column_statistics_for_partition(
          map(),
          update_column_statistics_for_partition_request(),
          list()
        ) ::
          {:ok, update_column_statistics_for_partition_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_column_statistics_for_partition_errors()}
  def update_column_statistics_for_partition(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateColumnStatisticsForPartition", input, options)
  end

  @doc """
  Creates or updates table statistics of columns.

  The Identity and Access Management (IAM) permission required for this operation
  is `UpdateTable`.
  """
  @spec update_column_statistics_for_table(
          map(),
          update_column_statistics_for_table_request(),
          list()
        ) ::
          {:ok, update_column_statistics_for_table_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_column_statistics_for_table_errors()}
  def update_column_statistics_for_table(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateColumnStatisticsForTable", input, options)
  end

  @doc """
  Updates settings for a column statistics task.
  """
  @spec update_column_statistics_task_settings(
          map(),
          update_column_statistics_task_settings_request(),
          list()
        ) ::
          {:ok, update_column_statistics_task_settings_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_column_statistics_task_settings_errors()}
  def update_column_statistics_task_settings(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateColumnStatisticsTaskSettings", input, options)
  end

  @doc """
  Updates a connection definition in the Data Catalog.
  """
  @spec update_connection(map(), update_connection_request(), list()) ::
          {:ok, update_connection_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_connection_errors()}
  def update_connection(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateConnection", input, options)
  end

  @doc """
  Updates a crawler.

  If a crawler is
  running, you must stop it using `StopCrawler` before updating
  it.
  """
  @spec update_crawler(map(), update_crawler_request(), list()) ::
          {:ok, update_crawler_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_crawler_errors()}
  def update_crawler(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateCrawler", input, options)
  end

  @doc """
  Updates the schedule of a crawler using a `cron` expression.
  """
  @spec update_crawler_schedule(map(), update_crawler_schedule_request(), list()) ::
          {:ok, update_crawler_schedule_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_crawler_schedule_errors()}
  def update_crawler_schedule(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateCrawlerSchedule", input, options)
  end

  @doc """
  Updates the specified data quality ruleset.
  """
  @spec update_data_quality_ruleset(map(), update_data_quality_ruleset_request(), list()) ::
          {:ok, update_data_quality_ruleset_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_data_quality_ruleset_errors()}
  def update_data_quality_ruleset(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateDataQualityRuleset", input, options)
  end

  @doc """
  Updates an existing database definition in a Data Catalog.
  """
  @spec update_database(map(), update_database_request(), list()) ::
          {:ok, update_database_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_database_errors()}
  def update_database(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateDatabase", input, options)
  end

  @doc """
  Updates a specified development endpoint.
  """
  @spec update_dev_endpoint(map(), update_dev_endpoint_request(), list()) ::
          {:ok, update_dev_endpoint_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_dev_endpoint_errors()}
  def update_dev_endpoint(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateDevEndpoint", input, options)
  end

  @doc """
  Updates a business glossary in Glue Data Catalog.
  """
  @spec update_glossary(map(), update_glossary_request(), list()) ::
          {:ok, update_glossary_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_glossary_errors()}
  def update_glossary(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateGlossary", input, options)
  end

  @doc """
  Updates a glossary term in Glue Data Catalog.
  """
  @spec update_glossary_term(map(), update_glossary_term_request(), list()) ::
          {:ok, update_glossary_term_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_glossary_term_errors()}
  def update_glossary_term(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateGlossaryTerm", input, options)
  end

  @doc """
  Updates the existing Glue Identity Center configuration, allowing modification
  of scopes and permissions for the integration.
  """
  @spec update_glue_identity_center_configuration(
          map(),
          update_glue_identity_center_configuration_request(),
          list()
        ) ::
          {:ok, update_glue_identity_center_configuration_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_glue_identity_center_configuration_errors()}
  def update_glue_identity_center_configuration(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateGlueIdentityCenterConfiguration", input, options)
  end

  @doc """
  This API can be used for updating the `ResourceProperty` of the Glue connection
  (for the source) or Glue database ARN (for the target).

  These properties can include the role to access the connection or database.
  Since the same resource can be used across multiple integrations, updating
  resource properties will impact all the integrations using it.
  """
  @spec update_integration_resource_property(
          map(),
          update_integration_resource_property_request(),
          list()
        ) ::
          {:ok, update_integration_resource_property_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_integration_resource_property_errors()}
  def update_integration_resource_property(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateIntegrationResourceProperty", input, options)
  end

  @doc """
  This API is used to provide optional override properties for the tables that
  need to be replicated.

  These properties can include properties for filtering and partitioning for the
  source and target tables. To set both source and target properties the same API
  need to be invoked with the Glue connection ARN as `ResourceArn` with
  `SourceTableConfig`, and the Glue database ARN as `ResourceArn` with
  `TargetTableConfig` respectively.

  The override will be reflected across all the integrations using same
  `ResourceArn` and source table.
  """
  @spec update_integration_table_properties(
          map(),
          update_integration_table_properties_request(),
          list()
        ) ::
          {:ok, update_integration_table_properties_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_integration_table_properties_errors()}
  def update_integration_table_properties(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateIntegrationTableProperties", input, options)
  end

  @doc """
  Updates an existing job definition.

  The previous job definition is completely overwritten by this information.
  """
  @spec update_job(map(), update_job_request(), list()) ::
          {:ok, update_job_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_job_errors()}
  def update_job(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateJob", input, options)
  end

  @doc """
  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.

  This API supports optional parameters which take in the repository information.
  """
  @spec update_job_from_source_control(map(), update_job_from_source_control_request(), list()) ::
          {:ok, update_job_from_source_control_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_job_from_source_control_errors()}
  def update_job_from_source_control(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateJobFromSourceControl", input, options)
  end

  @doc """
  Updates an existing machine learning transform.

  Call this operation to tune the algorithm parameters to achieve better results.

  After calling this operation, you can call the `StartMLEvaluationTaskRun`
  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).
  """
  @spec update_ml_transform(map(), update_ml_transform_request(), list()) ::
          {:ok, update_ml_transform_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_ml_transform_errors()}
  def update_ml_transform(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateMLTransform", input, options)
  end

  @doc """
  Updates a partition.
  """
  @spec update_partition(map(), update_partition_request(), list()) ::
          {:ok, update_partition_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_partition_errors()}
  def update_partition(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdatePartition", input, options)
  end

  @doc """
  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.
  """
  @spec update_registry(map(), update_registry_input(), list()) ::
          {:ok, update_registry_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_registry_errors()}
  def update_registry(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateRegistry", input, options)
  end

  @doc """
  Updates the description, compatibility setting, or version checkpoint for a
  schema set.

  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 `Compatibility` is provided, the `VersionNumber` (a checkpoint) is
  also required. The API will validate the checkpoint version number for
  consistency.

  If the value for the `VersionNumber` (checkpoint) is provided, `Compatibility`
  is optional and this can be used to set/reset a checkpoint for the schema.

  This update will happen only if the schema is in the AVAILABLE state.
  """
  @spec update_schema(map(), update_schema_input(), list()) ::
          {:ok, update_schema_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_schema_errors()}
  def update_schema(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateSchema", input, options)
  end

  @doc """
  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.

  This API supports optional parameters which take in the repository information.
  """
  @spec update_source_control_from_job(map(), update_source_control_from_job_request(), list()) ::
          {:ok, update_source_control_from_job_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_source_control_from_job_errors()}
  def update_source_control_from_job(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateSourceControlFromJob", input, options)
  end

  @doc """
  Updates a metadata table in the Data Catalog.
  """
  @spec update_table(map(), update_table_request(), list()) ::
          {:ok, update_table_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_table_errors()}
  def update_table(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateTable", input, options)
  end

  @doc """
  Updates the configuration for an existing table optimizer.
  """
  @spec update_table_optimizer(map(), update_table_optimizer_request(), list()) ::
          {:ok, update_table_optimizer_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_table_optimizer_errors()}
  def update_table_optimizer(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateTableOptimizer", input, options)
  end

  @doc """
  Updates a trigger definition.

  Job arguments may be logged. Do not pass plaintext secrets as arguments.
  Retrieve secrets from a Glue Connection, Amazon Web Services Secrets Manager or
  other secret management mechanism if you intend to keep them within the Job.
  """
  @spec update_trigger(map(), update_trigger_request(), list()) ::
          {:ok, update_trigger_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_trigger_errors()}
  def update_trigger(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateTrigger", input, options)
  end

  @doc """
  Update an Glue usage profile.
  """
  @spec update_usage_profile(map(), update_usage_profile_request(), list()) ::
          {:ok, update_usage_profile_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_usage_profile_errors()}
  def update_usage_profile(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateUsageProfile", input, options)
  end

  @doc """
  Updates an existing function definition in the Data Catalog.
  """
  @spec update_user_defined_function(map(), update_user_defined_function_request(), list()) ::
          {:ok, update_user_defined_function_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_user_defined_function_errors()}
  def update_user_defined_function(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateUserDefinedFunction", input, options)
  end

  @doc """
  Updates an existing workflow.
  """
  @spec update_workflow(map(), update_workflow_request(), list()) ::
          {:ok, update_workflow_response(), any()}
          | {:error, {:unexpected_response, any()}}
          | {:error, term()}
          | {:error, update_workflow_errors()}
  def update_workflow(%Client{} = client, input, options \\ []) do
    meta =
      metadata()

    Request.request_post(client, meta, "UpdateWorkflow", input, options)
  end
end