From f617eb0dcb2575101242be24b6b0fbc334f30864 Mon Sep 17 00:00:00 2001 From: Onno Vos Date: Fri, 1 Aug 2025 14:23:48 +0200 Subject: [PATCH] Add atom() to Elixir type specs so either String.t() or atom() is accepted --- lib/aws_codegen/types.ex | 16 +- priv/post.ex.eex | 2 +- priv/rest.ex.eex | 6 +- test/aws_codegen_test.exs | 164 ++-- test/fixtures/generated/data_exchange.ex | 1052 ++++++++++++---------- 5 files changed, 651 insertions(+), 589 deletions(-) diff --git a/lib/aws_codegen/types.ex b/lib/aws_codegen/types.ex index 7fe8daf..49b276e 100644 --- a/lib/aws_codegen/types.ex +++ b/lib/aws_codegen/types.ex @@ -133,15 +133,15 @@ defmodule AWS.CodeGen.Types do end # Unfortunately, gotta patch over auto-defining types that already exist in Elixir - defp shape_to_type(:elixir, "String", _), do: "String.t()" + defp shape_to_type(:elixir, "String", _), do: "String.t() | atom()" defp shape_to_type(:erlang, "String", _), do: "string()" - defp shape_to_type(:elixir, "string", _), do: "String.t()" + defp shape_to_type(:elixir, "string", _), do: "String.t() | atom()" defp shape_to_type(:erlang, "string", _), do: "string()" - defp shape_to_type(:elixir, "Identifier", _), do: "String.t()" + defp shape_to_type(:elixir, "Identifier", _), do: "String.t() | atom()" defp shape_to_type(:erlang, "Identifier", _), do: "string()" - defp shape_to_type(:elixir, "identifier", _), do: "String.t()" + defp shape_to_type(:elixir, "identifier", _), do: "String.t() | atom()" defp shape_to_type(:erlang, "identifier", _), do: "string()" - defp shape_to_type(:elixir, "XmlString" <> _rest, _), do: "String.t()" + defp shape_to_type(:elixir, "XmlString" <> _rest, _), do: "String.t() | atom()" defp shape_to_type(:erlang, "XmlString" <> _rest, _), do: "string" defp shape_to_type(:elixir, "NullablePositiveInteger", _), do: "nil | non_neg_integer()" defp shape_to_type(:erlang, "NullablePositiveInteger", _), do: "undefined | non_neg_integer()" @@ -153,7 +153,7 @@ defmodule AWS.CodeGen.Types do defp shape_to_type(_, %Shape{type: "timestamp"}, _module_name), do: "non_neg_integer()" defp shape_to_type(_, %Shape{type: "map"}, _module_name), do: "map()" defp shape_to_type(_, %Shape{type: "blob"}, _module_name), do: "binary()" - defp shape_to_type(:elixir, %Shape{type: "string"}, _module_name), do: "String.t()" + defp shape_to_type(:elixir, %Shape{type: "string"}, _module_name), do: "String.t() | atom()" defp shape_to_type(:erlang, %Shape{type: "string"}, _module_name), do: "string()" defp shape_to_type(_, %Shape{type: "integer"}, _module_name), do: "integer()" defp shape_to_type(_, %Shape{type: "boolean"}, _module_name), do: "boolean()" @@ -314,9 +314,9 @@ defmodule AWS.CodeGen.Types do parameters, fn parameter -> if not parameter.required do - ", String.t() | nil" + ", String.t() | atom() | nil" else - ", String.t()" + ", String.t() | atom()" end end ) diff --git a/priv/post.ex.eex b/priv/post.ex.eex index f839641..7388696 100644 --- a/priv/post.ex.eex +++ b/priv/post.ex.eex @@ -25,7 +25,7 @@ defmodule <%= context.module_name %> do } <% end %> """ -@type <%= if map_size(type_fields) == 0 do "#{type_name}() :: %{}" else "#{type_name}() :: %{String.t => any()}" end %> +@type <%= if map_size(type_fields) == 0 do "#{type_name}() :: %{}" else "#{type_name}() :: %{(String.t() | atom()) => any()}" end %> <% end %> <%= Enum.map(context.actions, diff --git a/priv/rest.ex.eex b/priv/rest.ex.eex index e68d508..3b962fa 100644 --- a/priv/rest.ex.eex +++ b/priv/rest.ex.eex @@ -25,7 +25,7 @@ defmodule <%= context.module_name %> do } <% end %> """ -@type <%= if Enum.empty?(type_fields) do "#{type_name}() :: %{}" else "#{type_name}() :: %{String.t => any()}" end %> +@type <%= if Enum.empty?(type_fields) do "#{type_name}() :: %{}" else "#{type_name}() :: %{(String.t() | atom()) => any()}" end %> <% end %> <%= Enum.map(context.actions, @@ -71,7 +71,7 @@ defmodule <%= context.module_name %> do @doc """ <%= action.docstring %> """<% end %><%= if action.method == "GET" do %> - @spec <%= action.function_name %>(map()<%= if context.module_name == "AWS.ApiGatewayManagementApi" do %>, String.t()<% end %><%= AWS.CodeGen.Types.function_parameter_types(action.method, action, false)%>, list()) :: <%= AWS.CodeGen.Types.return_type(context.language, action)%> + @spec <%= action.function_name %>(map()<%= if context.module_name == "AWS.ApiGatewayManagementApi" do %>, String.t() | atom()<% end %><%= AWS.CodeGen.Types.function_parameter_types(action.method, action, false)%>, list()) :: <%= AWS.CodeGen.Types.return_type(context.language, action)%> def <%= action.function_name %>(%Client{} = client<%= if context.module_name == "AWS.ApiGatewayManagementApi" do %>, stage<% end %><%= AWS.CodeGen.RestService.function_parameters(action) %>, options \\ []) do url_path = "<%= if context.module_name == "AWS.ApiGatewayManagementApi" do %>/#{stage}<% end %><%= AWS.CodeGen.RestService.Action.url_path(action) %>" headers = []<%= for parameter <- action.request_header_parameters do %> @@ -115,7 +115,7 @@ defmodule <%= context.module_name %> do <% end %> Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, <%= inspect(action.success_status_code) %>)<% else %> -@spec <%= action.function_name %>(map()<%= AWS.CodeGen.Types.function_parameter_types(action.method, action, false)%>, <%= if context.module_name == "AWS.ApiGatewayManagementApi" do %> String.t(), <% end %><%= AWS.CodeGen.Types.function_argument_type(context.language, action)%>, list()) :: <%= AWS.CodeGen.Types.return_type(context.language, action)%> +@spec <%= action.function_name %>(map()<%= AWS.CodeGen.Types.function_parameter_types(action.method, action, false)%>, <%= if context.module_name == "AWS.ApiGatewayManagementApi" do %> String.t() | atom(), <% end %><%= AWS.CodeGen.Types.function_argument_type(context.language, action)%>, list()) :: <%= AWS.CodeGen.Types.return_type(context.language, action)%> def <%= action.function_name %>(%Client{} = client<%= AWS.CodeGen.RestService.function_parameters(action) %>, <%= if context.module_name == "AWS.ApiGatewayManagementApi" do %> stage, <% end %>input, options \\ []) do url_path = "<%= if context.module_name == "AWS.ApiGatewayManagementApi" do %>/#{stage}<% end %><%= AWS.CodeGen.RestService.Action.url_path(action) %>"<%= if length(action.request_header_parameters) > 0 do %> {headers, input} = diff --git a/test/aws_codegen_test.exs b/test/aws_codegen_test.exs index a8b2707..4e7f7a1 100644 --- a/test/aws_codegen_test.exs +++ b/test/aws_codegen_test.exs @@ -90,93 +90,93 @@ defmodule AWS.CodeGenTest do ## Example: audit_event() :: %{ - \"eventData\" => [String.t()], - \"eventDataChecksum\" => [String.t()], - \"id\" => String.t() + \"eventData\" => [String.t() | atom()], + \"eventDataChecksum\" => [String.t() | atom()], + \"id\" => String.t() | atom() } \"\"\" - @type audit_event() :: %{String.t() => any()} + @type audit_event() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: audit_event_result_entry() :: %{ - \"eventID\" => String.t(), - \"id\" => String.t() + \"eventID\" => String.t() | atom(), + \"id\" => String.t() | atom() } \"\"\" - @type audit_event_result_entry() :: %{String.t() => any()} + @type audit_event_result_entry() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: channel_insufficient_permission() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type channel_insufficient_permission() :: %{String.t() => any()} + @type channel_insufficient_permission() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: channel_not_found() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type channel_not_found() :: %{String.t() => any()} + @type channel_not_found() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: channel_unsupported_schema() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type channel_unsupported_schema() :: %{String.t() => any()} + @type channel_unsupported_schema() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: duplicated_audit_event_id() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type duplicated_audit_event_id() :: %{String.t() => any()} + @type duplicated_audit_event_id() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: invalid_channel_arn() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"" - @type invalid_channel_arn() :: %{String.t() => any()} + @type invalid_channel_arn() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: put_audit_events_request() :: %{ - optional(\"externalId\") => String.t(), + optional(\"externalId\") => String.t() | atom(), required(\"auditEvents\") => list(audit_event()), - required(\"channelArn\") => String.t() + required(\"channelArn\") => String.t() | atom() } \"\"\" - @type put_audit_events_request() :: %{String.t() => any()} + @type put_audit_events_request() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" @@ -188,31 +188,31 @@ defmodule AWS.CodeGenTest do } \"\"\" - @type put_audit_events_response() :: %{String.t() => any()} + @type put_audit_events_response() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: result_error_entry() :: %{ - \"errorCode\" => String.t(), - \"errorMessage\" => String.t(), - \"id\" => String.t() + \"errorCode\" => String.t() | atom(), + \"errorMessage\" => String.t() | atom(), + \"id\" => String.t() | atom() } \"\"\" - @type result_error_entry() :: %{String.t() => any()} + @type result_error_entry() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: unsupported_operation_exception() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type unsupported_operation_exception() :: %{String.t() => any()} + @type unsupported_operation_exception() :: %{(String.t() | atom()) => any()} @type put_audit_events_errors() :: unsupported_operation_exception() @@ -328,93 +328,93 @@ defmodule AWS.CodeGenTest do ## Example: audit_event() :: %{ - \"eventData\" => [String.t()], - \"eventDataChecksum\" => [String.t()], - \"id\" => String.t() + \"eventData\" => [String.t() | atom()], + \"eventDataChecksum\" => [String.t() | atom()], + \"id\" => String.t() | atom() } \"\"\" - @type audit_event() :: %{String.t() => any()} + @type audit_event() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: audit_event_result_entry() :: %{ - \"eventID\" => String.t(), - \"id\" => String.t() + \"eventID\" => String.t() | atom(), + \"id\" => String.t() | atom() } \"\"\" - @type audit_event_result_entry() :: %{String.t() => any()} + @type audit_event_result_entry() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: channel_insufficient_permission() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type channel_insufficient_permission() :: %{String.t() => any()} + @type channel_insufficient_permission() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: channel_not_found() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type channel_not_found() :: %{String.t() => any()} + @type channel_not_found() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: channel_unsupported_schema() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type channel_unsupported_schema() :: %{String.t() => any()} + @type channel_unsupported_schema() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: duplicated_audit_event_id() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type duplicated_audit_event_id() :: %{String.t() => any()} + @type duplicated_audit_event_id() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: invalid_channel_arn() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type invalid_channel_arn() :: %{String.t() => any()} + @type invalid_channel_arn() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: put_audit_events_request() :: %{ - optional(\"externalId\") => String.t(), + optional(\"externalId\") => String.t() | atom(), required(\"auditEvents\") => list(audit_event()), - required(\"channelArn\") => String.t() + required(\"channelArn\") => String.t() | atom() } \"\"\" - @type put_audit_events_request() :: %{String.t() => any()} + @type put_audit_events_request() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" @@ -426,31 +426,31 @@ defmodule AWS.CodeGenTest do } \"\"\" - @type put_audit_events_response() :: %{String.t() => any()} + @type put_audit_events_response() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: result_error_entry() :: %{ - \"errorCode\" => String.t(), - \"errorMessage\" => String.t(), - \"id\" => String.t() + \"errorCode\" => String.t() | atom(), + \"errorMessage\" => String.t() | atom(), + \"id\" => String.t() | atom() } \"\"\" - @type result_error_entry() :: %{String.t() => any()} + @type result_error_entry() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: unsupported_operation_exception() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type unsupported_operation_exception() :: %{String.t() => any()} + @type unsupported_operation_exception() :: %{(String.t() | atom()) => any()} @type put_audit_events_errors() :: unsupported_operation_exception() @@ -485,7 +485,7 @@ defmodule AWS.CodeGenTest do can add up to 100 of these events (or up to 1 MB) per `PutAuditEvents` request. \"\"\" - @spec put_audit_events(map(), String.t(), String.t() | nil, list()) :: + @spec put_audit_events(map(), String.t() | atom(), String.t() | atom() | nil, list()) :: {:ok, put_audit_events_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -572,93 +572,93 @@ defmodule AWS.CodeGenTest do ## Example: audit_event() :: %{ - \"eventData\" => [String.t()], - \"eventDataChecksum\" => [String.t()], - \"id\" => String.t() + \"eventData\" => [String.t() | atom()], + \"eventDataChecksum\" => [String.t() | atom()], + \"id\" => String.t() | atom() } \"\"\" - @type audit_event() :: %{String.t() => any()} + @type audit_event() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: audit_event_result_entry() :: %{ - \"eventID\" => String.t(), - \"id\" => String.t() + \"eventID\" => String.t() | atom(), + \"id\" => String.t() | atom() } \"\"\" - @type audit_event_result_entry() :: %{String.t() => any()} + @type audit_event_result_entry() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: channel_insufficient_permission() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type channel_insufficient_permission() :: %{String.t() => any()} + @type channel_insufficient_permission() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: channel_not_found() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type channel_not_found() :: %{String.t() => any()} + @type channel_not_found() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: channel_unsupported_schema() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type channel_unsupported_schema() :: %{String.t() => any()} + @type channel_unsupported_schema() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: duplicated_audit_event_id() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type duplicated_audit_event_id() :: %{String.t() => any()} + @type duplicated_audit_event_id() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: invalid_channel_arn() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type invalid_channel_arn() :: %{String.t() => any()} + @type invalid_channel_arn() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: put_audit_events_request() :: %{ - optional(\"externalId\") => String.t(), + optional(\"externalId\") => String.t() | atom(), required(\"auditEvents\") => list(audit_event()), - required(\"channelArn\") => String.t() + required(\"channelArn\") => String.t() | atom() } \"\"\" - @type put_audit_events_request() :: %{String.t() => any()} + @type put_audit_events_request() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" @@ -670,31 +670,31 @@ defmodule AWS.CodeGenTest do } \"\"\" - @type put_audit_events_response() :: %{String.t() => any()} + @type put_audit_events_response() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: result_error_entry() :: %{ - \"errorCode\" => String.t(), - \"errorMessage\" => String.t(), - \"id\" => String.t() + \"errorCode\" => String.t() | atom(), + \"errorMessage\" => String.t() | atom(), + \"id\" => String.t() | atom() } \"\"\" - @type result_error_entry() :: %{String.t() => any()} + @type result_error_entry() :: %{(String.t() | atom()) => any()} @typedoc \"\"\" ## Example: unsupported_operation_exception() :: %{ - \"message\" => [String.t()] + \"message\" => [String.t() | atom()] } \"\"\" - @type unsupported_operation_exception() :: %{String.t() => any()} + @type unsupported_operation_exception() :: %{(String.t() | atom()) => any()} @type put_audit_events_errors() :: unsupported_operation_exception() diff --git a/test/fixtures/generated/data_exchange.ex b/test/fixtures/generated/data_exchange.ex index b43a274..34f12e9 100644 --- a/test/fixtures/generated/data_exchange.ex +++ b/test/fixtures/generated/data_exchange.ex @@ -49,37 +49,37 @@ defmodule AWS.DataExchange do ## Example: redshift_data_share_details() :: %{ - "Arn" => String.t(), - "Database" => String.t(), - "Function" => String.t(), - "Schema" => String.t(), - "Table" => String.t(), - "View" => String.t() + "Arn" => String.t() | atom(), + "Database" => String.t() | atom(), + "Function" => String.t() | atom(), + "Schema" => String.t() | atom(), + "Table" => String.t() | atom(), + "View" => String.t() | atom() } """ - @type redshift_data_share_details() :: %{String.t() => any()} + @type redshift_data_share_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: import_asset_from_api_gateway_api_response_details() :: %{ - "ApiDescription" => String.t(), - "ApiId" => String.t(), - "ApiKey" => String.t(), - "ApiName" => String.t(), - "ApiSpecificationMd5Hash" => String.t(), - "ApiSpecificationUploadUrl" => String.t(), + "ApiDescription" => String.t() | atom(), + "ApiId" => String.t() | atom(), + "ApiKey" => String.t() | atom(), + "ApiName" => String.t() | atom(), + "ApiSpecificationMd5Hash" => String.t() | atom(), + "ApiSpecificationUploadUrl" => String.t() | atom(), "ApiSpecificationUploadUrlExpiresAt" => non_neg_integer(), - "DataSetId" => String.t(), - "ProtocolType" => String.t(), - "RevisionId" => String.t(), - "Stage" => String.t() + "DataSetId" => String.t() | atom(), + "ProtocolType" => String.t() | atom(), + "RevisionId" => String.t() | atom(), + "Stage" => String.t() | atom() } """ - @type import_asset_from_api_gateway_api_response_details() :: %{String.t() => any()} + @type import_asset_from_api_gateway_api_response_details() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -96,15 +96,15 @@ defmodule AWS.DataExchange do event_action_entry() :: %{ "Action" => action(), - "Arn" => String.t(), + "Arn" => String.t() | atom(), "CreatedAt" => non_neg_integer(), "Event" => event(), - "Id" => String.t(), + "Id" => String.t() | atom(), "UpdatedAt" => non_neg_integer() } """ - @type event_action_entry() :: %{String.t() => any()} + @type event_action_entry() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -117,28 +117,28 @@ defmodule AWS.DataExchange do } """ - @type scope_details() :: %{String.t() => any()} + @type scope_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: get_data_set_response() :: %{ - optional("Arn") => String.t(), - optional("AssetType") => String.t(), + optional("Arn") => String.t() | atom(), + optional("AssetType") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), - optional("Description") => String.t(), - optional("Id") => String.t(), - optional("Name") => String.t(), - optional("Origin") => String.t(), + optional("Description") => String.t() | atom(), + optional("Id") => String.t() | atom(), + optional("Name") => String.t() | atom(), + optional("Origin") => String.t() | atom(), optional("OriginDetails") => origin_details(), - optional("SourceId") => String.t(), + optional("SourceId") => String.t() | atom(), optional("Tags") => map(), optional("UpdatedAt") => non_neg_integer() } """ - @type get_data_set_response() :: %{String.t() => any()} + @type get_data_set_response() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -158,63 +158,63 @@ defmodule AWS.DataExchange do } """ - @type tag_resource_request() :: %{String.t() => any()} + @type tag_resource_request() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: update_revision_response() :: %{ - optional("Arn") => String.t(), - optional("Comment") => String.t(), + optional("Arn") => String.t() | atom(), + optional("Comment") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), - optional("DataSetId") => String.t(), + optional("DataSetId") => String.t() | atom(), optional("Finalized") => boolean(), - optional("Id") => String.t(), - optional("RevocationComment") => String.t(), + optional("Id") => String.t() | atom(), + optional("RevocationComment") => String.t() | atom(), optional("Revoked") => boolean(), optional("RevokedAt") => non_neg_integer(), - optional("SourceId") => String.t(), + optional("SourceId") => String.t() | atom(), optional("UpdatedAt") => non_neg_integer() } """ - @type update_revision_response() :: %{String.t() => any()} + @type update_revision_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: get_revision_response() :: %{ - optional("Arn") => String.t(), - optional("Comment") => String.t(), + optional("Arn") => String.t() | atom(), + optional("Comment") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), - optional("DataSetId") => String.t(), + optional("DataSetId") => String.t() | atom(), optional("Finalized") => boolean(), - optional("Id") => String.t(), - optional("RevocationComment") => String.t(), + optional("Id") => String.t() | atom(), + optional("RevocationComment") => String.t() | atom(), optional("Revoked") => boolean(), optional("RevokedAt") => non_neg_integer(), - optional("SourceId") => String.t(), + optional("SourceId") => String.t() | atom(), optional("Tags") => map(), optional("UpdatedAt") => non_neg_integer() } """ - @type get_revision_response() :: %{String.t() => any()} + @type get_revision_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: list_received_data_grants_request() :: %{ - optional("AcceptanceState") => list(String.t()), + optional("AcceptanceState") => list(String.t() | atom()), optional("MaxResults") => integer(), - optional("NextToken") => String.t() + optional("NextToken") => String.t() | atom() } """ - @type list_received_data_grants_request() :: %{String.t() => any()} + @type list_received_data_grants_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -222,78 +222,78 @@ defmodule AWS.DataExchange do list_data_sets_response() :: %{ optional("DataSets") => list(data_set_entry()), - optional("NextToken") => String.t() + optional("NextToken") => String.t() | atom() } """ - @type list_data_sets_response() :: %{String.t() => any()} + @type list_data_sets_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: export_revisions_to_s3_response_details() :: %{ - "DataSetId" => String.t(), + "DataSetId" => String.t() | atom(), "Encryption" => export_server_side_encryption(), - "EventActionArn" => String.t(), + "EventActionArn" => String.t() | atom(), "RevisionDestinations" => list(revision_destination_entry()) } """ - @type export_revisions_to_s3_response_details() :: %{String.t() => any()} + @type export_revisions_to_s3_response_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: create_job_response() :: %{ - optional("Arn") => String.t(), + optional("Arn") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), optional("Details") => response_details(), optional("Errors") => list(job_error()), - optional("Id") => String.t(), - optional("State") => String.t(), - optional("Type") => String.t(), + optional("Id") => String.t() | atom(), + optional("State") => String.t() | atom(), + optional("Type") => String.t() | atom(), optional("UpdatedAt") => non_neg_integer() } """ - @type create_job_response() :: %{String.t() => any()} + @type create_job_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: get_received_data_grant_response() :: %{ - "AcceptanceState" => String.t(), + "AcceptanceState" => String.t() | atom(), "AcceptedAt" => non_neg_integer(), - "Arn" => String.t(), + "Arn" => String.t() | atom(), "CreatedAt" => non_neg_integer(), - "DataSetId" => String.t(), - "Description" => String.t(), + "DataSetId" => String.t() | atom(), + "Description" => String.t() | atom(), "EndsAt" => non_neg_integer(), - "GrantDistributionScope" => String.t(), - "Id" => String.t(), - "Name" => String.t(), - "ReceiverPrincipal" => String.t(), - "SenderPrincipal" => String.t(), + "GrantDistributionScope" => String.t() | atom(), + "Id" => String.t() | atom(), + "Name" => String.t() | atom(), + "ReceiverPrincipal" => String.t() | atom(), + "SenderPrincipal" => String.t() | atom(), "UpdatedAt" => non_neg_integer() } """ - @type get_received_data_grant_response() :: %{String.t() => any()} + @type get_received_data_grant_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: l_f_tag() :: %{ - "TagKey" => [String.t()], - "TagValues" => list([String.t()]()) + "TagKey" => [String.t() | atom()], + "TagValues" => list([String.t() | atom()]()) } """ - @type l_f_tag() :: %{String.t() => any()} + @type l_f_tag() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -301,22 +301,22 @@ defmodule AWS.DataExchange do list_received_data_grants_response() :: %{ "DataGrantSummaries" => list(received_data_grant_summaries_entry()), - "NextToken" => String.t() + "NextToken" => String.t() | atom() } """ - @type list_received_data_grants_response() :: %{String.t() => any()} + @type list_received_data_grants_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: redshift_data_share_asset_source_entry() :: %{ - "DataShareArn" => String.t() + "DataShareArn" => String.t() | atom() } """ - @type redshift_data_share_asset_source_entry() :: %{String.t() => any()} + @type redshift_data_share_asset_source_entry() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -328,22 +328,22 @@ defmodule AWS.DataExchange do } """ - @type create_event_action_request() :: %{String.t() => any()} + @type create_event_action_request() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: send_data_set_notification_request() :: %{ - optional("ClientToken") => String.t(), - optional("Comment") => String.t(), + optional("ClientToken") => String.t() | atom(), + optional("Comment") => String.t() | atom(), optional("Details") => notification_details(), optional("Scope") => scope_details(), - required("Type") => String.t() + required("Type") => String.t() | atom() } """ - @type send_data_set_notification_request() :: %{String.t() => any()} + @type send_data_set_notification_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -359,50 +359,50 @@ defmodule AWS.DataExchange do ## Example: import_asset_from_signed_url_job_error_details() :: %{ - "AssetName" => String.t() + "AssetName" => String.t() | atom() } """ - @type import_asset_from_signed_url_job_error_details() :: %{String.t() => any()} + @type import_asset_from_signed_url_job_error_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: list_jobs_request() :: %{ - optional("DataSetId") => String.t(), + optional("DataSetId") => String.t() | atom(), optional("MaxResults") => integer(), - optional("NextToken") => String.t(), - optional("RevisionId") => String.t() + optional("NextToken") => String.t() | atom(), + optional("RevisionId") => String.t() | atom() } """ - @type list_jobs_request() :: %{String.t() => any()} + @type list_jobs_request() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: create_data_grant_response() :: %{ - "AcceptanceState" => String.t(), + "AcceptanceState" => String.t() | atom(), "AcceptedAt" => non_neg_integer(), - "Arn" => String.t(), + "Arn" => String.t() | atom(), "CreatedAt" => non_neg_integer(), - "DataSetId" => String.t(), - "Description" => String.t(), + "DataSetId" => String.t() | atom(), + "Description" => String.t() | atom(), "EndsAt" => non_neg_integer(), - "GrantDistributionScope" => String.t(), - "Id" => String.t(), - "Name" => String.t(), - "ReceiverPrincipal" => String.t(), - "SenderPrincipal" => String.t(), - "SourceDataSetId" => String.t(), + "GrantDistributionScope" => String.t() | atom(), + "Id" => String.t() | atom(), + "Name" => String.t() | atom(), + "ReceiverPrincipal" => String.t() | atom(), + "SenderPrincipal" => String.t() | atom(), + "SourceDataSetId" => String.t() | atom(), "Tags" => map(), "UpdatedAt" => non_neg_integer() } """ - @type create_data_grant_response() :: %{String.t() => any()} + @type create_data_grant_response() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -418,11 +418,11 @@ defmodule AWS.DataExchange do ## Example: redshift_data_share_asset() :: %{ - "Arn" => String.t() + "Arn" => String.t() | atom() } """ - @type redshift_data_share_asset() :: %{String.t() => any()} + @type redshift_data_share_asset() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -430,12 +430,12 @@ defmodule AWS.DataExchange do list_data_sets_request() :: %{ optional("MaxResults") => integer(), - optional("NextToken") => String.t(), - optional("Origin") => String.t() + optional("NextToken") => String.t() | atom(), + optional("Origin") => String.t() | atom() } """ - @type list_data_sets_request() :: %{String.t() => any()} + @type list_data_sets_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -448,27 +448,27 @@ defmodule AWS.DataExchange do } """ - @type notification_details() :: %{String.t() => any()} + @type notification_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: data_set_entry() :: %{ - "Arn" => String.t(), - "AssetType" => String.t(), + "Arn" => String.t() | atom(), + "AssetType" => String.t() | atom(), "CreatedAt" => non_neg_integer(), - "Description" => String.t(), - "Id" => String.t(), - "Name" => String.t(), - "Origin" => String.t(), + "Description" => String.t() | atom(), + "Id" => String.t() | atom(), + "Name" => String.t() | atom(), + "Origin" => String.t() | atom(), "OriginDetails" => origin_details(), - "SourceId" => String.t(), + "SourceId" => String.t() | atom(), "UpdatedAt" => non_neg_integer() } """ - @type data_set_entry() :: %{String.t() => any()} + @type data_set_entry() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -476,11 +476,11 @@ defmodule AWS.DataExchange do list_jobs_response() :: %{ optional("Jobs") => list(job_entry()), - optional("NextToken") => String.t() + optional("NextToken") => String.t() | atom() } """ - @type list_jobs_response() :: %{String.t() => any()} + @type list_jobs_response() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -488,22 +488,22 @@ defmodule AWS.DataExchange do create_job_request() :: %{ required("Details") => request_details(), - required("Type") => String.t() + required("Type") => String.t() | atom() } """ - @type create_job_request() :: %{String.t() => any()} + @type create_job_request() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: untag_resource_request() :: %{ - required("TagKeys") => list(String.t()) + required("TagKeys") => list(String.t() | atom()) } """ - @type untag_resource_request() :: %{String.t() => any()} + @type untag_resource_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -511,168 +511,168 @@ defmodule AWS.DataExchange do database_l_f_tag_policy_and_permissions() :: %{ "Expression" => list(l_f_tag()), - "Permissions" => list(String.t()) + "Permissions" => list(String.t() | atom()) } """ - @type database_l_f_tag_policy_and_permissions() :: %{String.t() => any()} + @type database_l_f_tag_policy_and_permissions() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: import_asset_from_api_gateway_api_request_details() :: %{ - "ApiDescription" => String.t(), - "ApiId" => String.t(), - "ApiKey" => String.t(), - "ApiName" => String.t(), - "ApiSpecificationMd5Hash" => String.t(), - "DataSetId" => String.t(), - "ProtocolType" => String.t(), - "RevisionId" => String.t(), - "Stage" => String.t() + "ApiDescription" => String.t() | atom(), + "ApiId" => String.t() | atom(), + "ApiKey" => String.t() | atom(), + "ApiName" => String.t() | atom(), + "ApiSpecificationMd5Hash" => String.t() | atom(), + "DataSetId" => String.t() | atom(), + "ProtocolType" => String.t() | atom(), + "RevisionId" => String.t() | atom(), + "Stage" => String.t() | atom() } """ - @type import_asset_from_api_gateway_api_request_details() :: %{String.t() => any()} + @type import_asset_from_api_gateway_api_request_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: kms_key_to_grant() :: %{ - "KmsKeyArn" => String.t() + "KmsKeyArn" => String.t() | atom() } """ - @type kms_key_to_grant() :: %{String.t() => any()} + @type kms_key_to_grant() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: send_api_asset_response() :: %{ - optional("Body") => String.t(), + optional("Body") => String.t() | atom(), optional("ResponseHeaders") => map() } """ - @type send_api_asset_response() :: %{String.t() => any()} + @type send_api_asset_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: export_server_side_encryption() :: %{ - "KmsKeyArn" => String.t(), - "Type" => String.t() + "KmsKeyArn" => String.t() | atom(), + "Type" => String.t() | atom() } """ - @type export_server_side_encryption() :: %{String.t() => any()} + @type export_server_side_encryption() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: lake_formation_tag_policy_details() :: %{ - "Database" => String.t(), - "Table" => String.t() + "Database" => String.t() | atom(), + "Table" => String.t() | atom() } """ - @type lake_formation_tag_policy_details() :: %{String.t() => any()} + @type lake_formation_tag_policy_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: update_data_set_response() :: %{ - optional("Arn") => String.t(), - optional("AssetType") => String.t(), + optional("Arn") => String.t() | atom(), + optional("AssetType") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), - optional("Description") => String.t(), - optional("Id") => String.t(), - optional("Name") => String.t(), - optional("Origin") => String.t(), + optional("Description") => String.t() | atom(), + optional("Id") => String.t() | atom(), + optional("Name") => String.t() | atom(), + optional("Origin") => String.t() | atom(), optional("OriginDetails") => origin_details(), - optional("SourceId") => String.t(), + optional("SourceId") => String.t() | atom(), optional("UpdatedAt") => non_neg_integer() } """ - @type update_data_set_response() :: %{String.t() => any()} + @type update_data_set_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: revision_entry() :: %{ - "Arn" => String.t(), - "Comment" => String.t(), + "Arn" => String.t() | atom(), + "Comment" => String.t() | atom(), "CreatedAt" => non_neg_integer(), - "DataSetId" => String.t(), + "DataSetId" => String.t() | atom(), "Finalized" => boolean(), - "Id" => String.t(), - "RevocationComment" => String.t(), + "Id" => String.t() | atom(), + "RevocationComment" => String.t() | atom(), "Revoked" => boolean(), "RevokedAt" => non_neg_integer(), - "SourceId" => String.t(), + "SourceId" => String.t() | atom(), "UpdatedAt" => non_neg_integer() } """ - @type revision_entry() :: %{String.t() => any()} + @type revision_entry() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: update_asset_response() :: %{ - optional("Arn") => String.t(), + optional("Arn") => String.t() | atom(), optional("AssetDetails") => asset_details(), - optional("AssetType") => String.t(), + optional("AssetType") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), - optional("DataSetId") => String.t(), - optional("Id") => String.t(), - optional("Name") => String.t(), - optional("RevisionId") => String.t(), - optional("SourceId") => String.t(), + optional("DataSetId") => String.t() | atom(), + optional("Id") => String.t() | atom(), + optional("Name") => String.t() | atom(), + optional("RevisionId") => String.t() | atom(), + optional("SourceId") => String.t() | atom(), optional("UpdatedAt") => non_neg_integer() } """ - @type update_asset_response() :: %{String.t() => any()} + @type update_asset_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: schema_change_details() :: %{ - "Description" => String.t(), - "Name" => String.t(), - "Type" => String.t() + "Description" => String.t() | atom(), + "Name" => String.t() | atom(), + "Type" => String.t() | atom() } """ - @type schema_change_details() :: %{String.t() => any()} + @type schema_change_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: create_data_grant_request() :: %{ - optional("Description") => String.t(), + optional("Description") => String.t() | atom(), optional("EndsAt") => non_neg_integer(), optional("Tags") => map(), - required("GrantDistributionScope") => String.t(), - required("Name") => String.t(), - required("ReceiverPrincipal") => String.t(), - required("SourceDataSetId") => String.t() + required("GrantDistributionScope") => String.t() | atom(), + required("Name") => String.t() | atom(), + required("ReceiverPrincipal") => String.t() | atom(), + required("SourceDataSetId") => String.t() | atom() } """ - @type create_data_grant_request() :: %{String.t() => any()} + @type create_data_grant_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -688,40 +688,40 @@ defmodule AWS.DataExchange do ## Example: list_data_set_revisions_response() :: %{ - optional("NextToken") => String.t(), + optional("NextToken") => String.t() | atom(), optional("Revisions") => list(revision_entry()) } """ - @type list_data_set_revisions_response() :: %{String.t() => any()} + @type list_data_set_revisions_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: export_asset_to_signed_url_response_details() :: %{ - "AssetId" => String.t(), - "DataSetId" => String.t(), - "RevisionId" => String.t(), - "SignedUrl" => String.t(), + "AssetId" => String.t() | atom(), + "DataSetId" => String.t() | atom(), + "RevisionId" => String.t() | atom(), + "SignedUrl" => String.t() | atom(), "SignedUrlExpiresAt" => non_neg_integer() } """ - @type export_asset_to_signed_url_response_details() :: %{String.t() => any()} + @type export_asset_to_signed_url_response_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: export_asset_to_signed_url_request_details() :: %{ - "AssetId" => String.t(), - "DataSetId" => String.t(), - "RevisionId" => String.t() + "AssetId" => String.t() | atom(), + "DataSetId" => String.t() | atom(), + "RevisionId" => String.t() | atom() } """ - @type export_asset_to_signed_url_request_details() :: %{String.t() => any()} + @type export_asset_to_signed_url_request_details() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -729,53 +729,55 @@ defmodule AWS.DataExchange do list_revision_assets_request() :: %{ optional("MaxResults") => integer(), - optional("NextToken") => String.t() + optional("NextToken") => String.t() | atom() } """ - @type list_revision_assets_request() :: %{String.t() => any()} + @type list_revision_assets_request() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: conflict_exception() :: %{ - "Message" => String.t(), - "ResourceId" => String.t(), - "ResourceType" => String.t() + "Message" => String.t() | atom(), + "ResourceId" => String.t() | atom(), + "ResourceType" => String.t() | atom() } """ - @type conflict_exception() :: %{String.t() => any()} + @type conflict_exception() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: resource_not_found_exception() :: %{ - "Message" => String.t(), - "ResourceId" => String.t(), - "ResourceType" => String.t() + "Message" => String.t() | atom(), + "ResourceId" => String.t() | atom(), + "ResourceType" => String.t() | atom() } """ - @type resource_not_found_exception() :: %{String.t() => any()} + @type resource_not_found_exception() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: import_assets_from_lake_formation_tag_policy_response_details() :: %{ - "CatalogId" => String.t(), - "DataSetId" => String.t(), + "CatalogId" => String.t() | atom(), + "DataSetId" => String.t() | atom(), "Database" => database_l_f_tag_policy_and_permissions(), - "RevisionId" => String.t(), - "RoleArn" => String.t(), + "RevisionId" => String.t() | atom(), + "RoleArn" => String.t() | atom(), "Table" => table_l_f_tag_policy_and_permissions() } """ - @type import_assets_from_lake_formation_tag_policy_response_details() :: %{String.t() => any()} + @type import_assets_from_lake_formation_tag_policy_response_details() :: %{ + (String.t() | atom()) => any() + } @typedoc """ @@ -783,11 +785,11 @@ defmodule AWS.DataExchange do table_l_f_tag_policy_and_permissions() :: %{ "Expression" => list(l_f_tag()), - "Permissions" => list(String.t()) + "Permissions" => list(String.t() | atom()) } """ - @type table_l_f_tag_policy_and_permissions() :: %{String.t() => any()} + @type table_l_f_tag_policy_and_permissions() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -795,36 +797,36 @@ defmodule AWS.DataExchange do export_assets_to_s3_request_details() :: %{ "AssetDestinations" => list(asset_destination_entry()), - "DataSetId" => String.t(), + "DataSetId" => String.t() | atom(), "Encryption" => export_server_side_encryption(), - "RevisionId" => String.t() + "RevisionId" => String.t() | atom() } """ - @type export_assets_to_s3_request_details() :: %{String.t() => any()} + @type export_assets_to_s3_request_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: accept_data_grant_response() :: %{ - "AcceptanceState" => String.t(), + "AcceptanceState" => String.t() | atom(), "AcceptedAt" => non_neg_integer(), - "Arn" => String.t(), + "Arn" => String.t() | atom(), "CreatedAt" => non_neg_integer(), - "DataSetId" => String.t(), - "Description" => String.t(), + "DataSetId" => String.t() | atom(), + "Description" => String.t() | atom(), "EndsAt" => non_neg_integer(), - "GrantDistributionScope" => String.t(), - "Id" => String.t(), - "Name" => String.t(), - "ReceiverPrincipal" => String.t(), - "SenderPrincipal" => String.t(), + "GrantDistributionScope" => String.t() | atom(), + "Id" => String.t() | atom(), + "Name" => String.t() | atom(), + "ReceiverPrincipal" => String.t() | atom(), + "SenderPrincipal" => String.t() | atom(), "UpdatedAt" => non_neg_integer() } """ - @type accept_data_grant_response() :: %{String.t() => any()} + @type accept_data_grant_response() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -832,13 +834,13 @@ defmodule AWS.DataExchange do create_data_set_request() :: %{ optional("Tags") => map(), - required("AssetType") => String.t(), - required("Description") => String.t(), - required("Name") => String.t() + required("AssetType") => String.t() | atom(), + required("Description") => String.t() | atom(), + required("Name") => String.t() | atom() } """ - @type create_data_set_request() :: %{String.t() => any()} + @type create_data_set_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -846,13 +848,13 @@ defmodule AWS.DataExchange do export_assets_to_s3_response_details() :: %{ "AssetDestinations" => list(asset_destination_entry()), - "DataSetId" => String.t(), + "DataSetId" => String.t() | atom(), "Encryption" => export_server_side_encryption(), - "RevisionId" => String.t() + "RevisionId" => String.t() | atom() } """ - @type export_assets_to_s3_response_details() :: %{String.t() => any()} + @type export_assets_to_s3_response_details() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -860,11 +862,11 @@ defmodule AWS.DataExchange do list_revision_assets_response() :: %{ optional("Assets") => list(asset_entry()), - optional("NextToken") => String.t() + optional("NextToken") => String.t() | atom() } """ - @type list_revision_assets_response() :: %{String.t() => any()} + @type list_revision_assets_response() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -876,7 +878,7 @@ defmodule AWS.DataExchange do } """ - @type details() :: %{String.t() => any()} + @type details() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -884,15 +886,15 @@ defmodule AWS.DataExchange do get_event_action_response() :: %{ optional("Action") => action(), - optional("Arn") => String.t(), + optional("Arn") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), optional("Event") => event(), - optional("Id") => String.t(), + optional("Id") => String.t() | atom(), optional("UpdatedAt") => non_neg_integer() } """ - @type get_event_action_response() :: %{String.t() => any()} + @type get_event_action_response() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -909,12 +911,14 @@ defmodule AWS.DataExchange do create_s3_data_access_from_s3_bucket_request_details() :: %{ "AssetSource" => s3_data_access_asset_source_entry(), - "DataSetId" => String.t(), - "RevisionId" => String.t() + "DataSetId" => String.t() | atom(), + "RevisionId" => String.t() | atom() } """ - @type create_s3_data_access_from_s3_bucket_request_details() :: %{String.t() => any()} + @type create_s3_data_access_from_s3_bucket_request_details() :: %{ + (String.t() | atom()) => any() + } @typedoc """ @@ -935,28 +939,28 @@ defmodule AWS.DataExchange do } """ - @type schema_change_request_details() :: %{String.t() => any()} + @type schema_change_request_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: create_data_set_response() :: %{ - optional("Arn") => String.t(), - optional("AssetType") => String.t(), + optional("Arn") => String.t() | atom(), + optional("AssetType") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), - optional("Description") => String.t(), - optional("Id") => String.t(), - optional("Name") => String.t(), - optional("Origin") => String.t(), + optional("Description") => String.t() | atom(), + optional("Id") => String.t() | atom(), + optional("Name") => String.t() | atom(), + optional("Origin") => String.t() | atom(), optional("OriginDetails") => origin_details(), - optional("SourceId") => String.t(), + optional("SourceId") => String.t() | atom(), optional("Tags") => map(), optional("UpdatedAt") => non_neg_integer() } """ - @type create_data_set_response() :: %{String.t() => any()} + @type create_data_set_response() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -967,23 +971,23 @@ defmodule AWS.DataExchange do } """ - @type database_l_f_tag_policy() :: %{String.t() => any()} + @type database_l_f_tag_policy() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: s3_data_access_asset() :: %{ - "Bucket" => String.t(), - "KeyPrefixes" => list(String.t()), - "Keys" => list(String.t()), + "Bucket" => String.t() | atom(), + "KeyPrefixes" => list(String.t() | atom()), + "Keys" => list(String.t() | atom()), "KmsKeysToGrant" => list(kms_key_to_grant()), - "S3AccessPointAlias" => String.t(), - "S3AccessPointArn" => String.t() + "S3AccessPointAlias" => String.t() | atom(), + "S3AccessPointArn" => String.t() | atom() } """ - @type s3_data_access_asset() :: %{String.t() => any()} + @type s3_data_access_asset() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -994,18 +998,18 @@ defmodule AWS.DataExchange do } """ - @type list_tags_for_resource_response() :: %{String.t() => any()} + @type list_tags_for_resource_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: revoke_revision_request() :: %{ - required("RevocationComment") => String.t() + required("RevocationComment") => String.t() | atom() } """ - @type revoke_revision_request() :: %{String.t() => any()} + @type revoke_revision_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1016,7 +1020,7 @@ defmodule AWS.DataExchange do } """ - @type table_l_f_tag_policy() :: %{String.t() => any()} + @type table_l_f_tag_policy() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1027,7 +1031,7 @@ defmodule AWS.DataExchange do } """ - @type update_event_action_request() :: %{String.t() => any()} + @type update_event_action_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1047,27 +1051,27 @@ defmodule AWS.DataExchange do } """ - @type lake_formation_data_permission_details() :: %{String.t() => any()} + @type lake_formation_data_permission_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: get_asset_response() :: %{ - optional("Arn") => String.t(), + optional("Arn") => String.t() | atom(), optional("AssetDetails") => asset_details(), - optional("AssetType") => String.t(), + optional("AssetType") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), - optional("DataSetId") => String.t(), - optional("Id") => String.t(), - optional("Name") => String.t(), - optional("RevisionId") => String.t(), - optional("SourceId") => String.t(), + optional("DataSetId") => String.t() | atom(), + optional("Id") => String.t() | atom(), + optional("Name") => String.t() | atom(), + optional("RevisionId") => String.t() | atom(), + optional("SourceId") => String.t() | atom(), optional("UpdatedAt") => non_neg_integer() } """ - @type get_asset_response() :: %{String.t() => any()} + @type get_asset_response() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1084,29 +1088,29 @@ defmodule AWS.DataExchange do update_event_action_response() :: %{ optional("Action") => action(), - optional("Arn") => String.t(), + optional("Arn") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), optional("Event") => event(), - optional("Id") => String.t(), + optional("Id") => String.t() | atom(), optional("UpdatedAt") => non_neg_integer() } """ - @type update_event_action_response() :: %{String.t() => any()} + @type update_event_action_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: s3_data_access_asset_source_entry() :: %{ - "Bucket" => String.t(), - "KeyPrefixes" => list(String.t()), - "Keys" => list(String.t()), + "Bucket" => String.t() | atom(), + "KeyPrefixes" => list(String.t() | atom()), + "Keys" => list(String.t() | atom()), "KmsKeysToGrant" => list(kms_key_to_grant()) } """ - @type s3_data_access_asset_source_entry() :: %{String.t() => any()} + @type s3_data_access_asset_source_entry() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1114,12 +1118,14 @@ defmodule AWS.DataExchange do create_s3_data_access_from_s3_bucket_response_details() :: %{ "AssetSource" => s3_data_access_asset_source_entry(), - "DataSetId" => String.t(), - "RevisionId" => String.t() + "DataSetId" => String.t() | atom(), + "RevisionId" => String.t() | atom() } """ - @type create_s3_data_access_from_s3_bucket_response_details() :: %{String.t() => any()} + @type create_s3_data_access_from_s3_bucket_response_details() :: %{ + (String.t() | atom()) => any() + } @typedoc """ @@ -1130,49 +1136,49 @@ defmodule AWS.DataExchange do } """ - @type data_update_request_details() :: %{String.t() => any()} + @type data_update_request_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: api_gateway_api_asset() :: %{ - "ApiDescription" => String.t(), - "ApiEndpoint" => String.t(), - "ApiId" => String.t(), - "ApiKey" => String.t(), - "ApiName" => String.t(), - "ApiSpecificationDownloadUrl" => String.t(), + "ApiDescription" => String.t() | atom(), + "ApiEndpoint" => String.t() | atom(), + "ApiId" => String.t() | atom(), + "ApiKey" => String.t() | atom(), + "ApiName" => String.t() | atom(), + "ApiSpecificationDownloadUrl" => String.t() | atom(), "ApiSpecificationDownloadUrlExpiresAt" => non_neg_integer(), - "ProtocolType" => String.t(), - "Stage" => String.t() + "ProtocolType" => String.t() | atom(), + "Stage" => String.t() | atom() } """ - @type api_gateway_api_asset() :: %{String.t() => any()} + @type api_gateway_api_asset() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: origin_details() :: %{ - "DataGrantId" => String.t(), - "ProductId" => String.t() + "DataGrantId" => String.t() | atom(), + "ProductId" => String.t() | atom() } """ - @type origin_details() :: %{String.t() => any()} + @type origin_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: internal_server_exception() :: %{ - "Message" => String.t() + "Message" => String.t() | atom() } """ - @type internal_server_exception() :: %{String.t() => any()} + @type internal_server_exception() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1202,61 +1208,61 @@ defmodule AWS.DataExchange do } """ - @type l_f_resource_details() :: %{String.t() => any()} + @type l_f_resource_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: create_revision_response() :: %{ - optional("Arn") => String.t(), - optional("Comment") => String.t(), + optional("Arn") => String.t() | atom(), + optional("Comment") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), - optional("DataSetId") => String.t(), + optional("DataSetId") => String.t() | atom(), optional("Finalized") => boolean(), - optional("Id") => String.t(), - optional("RevocationComment") => String.t(), + optional("Id") => String.t() | atom(), + optional("RevocationComment") => String.t() | atom(), optional("Revoked") => boolean(), optional("RevokedAt") => non_neg_integer(), - optional("SourceId") => String.t(), + optional("SourceId") => String.t() | atom(), optional("Tags") => map(), optional("UpdatedAt") => non_neg_integer() } """ - @type create_revision_response() :: %{String.t() => any()} + @type create_revision_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: asset_entry() :: %{ - "Arn" => String.t(), + "Arn" => String.t() | atom(), "AssetDetails" => asset_details(), - "AssetType" => String.t(), + "AssetType" => String.t() | atom(), "CreatedAt" => non_neg_integer(), - "DataSetId" => String.t(), - "Id" => String.t(), - "Name" => String.t(), - "RevisionId" => String.t(), - "SourceId" => String.t(), + "DataSetId" => String.t() | atom(), + "Id" => String.t() | atom(), + "Name" => String.t() | atom(), + "RevisionId" => String.t() | atom(), + "SourceId" => String.t() | atom(), "UpdatedAt" => non_neg_integer() } """ - @type asset_entry() :: %{String.t() => any()} + @type asset_entry() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: s3_data_access_details() :: %{ - "KeyPrefixes" => list(String.t()), - "Keys" => list(String.t()) + "KeyPrefixes" => list(String.t() | atom()), + "Keys" => list(String.t() | atom()) } """ - @type s3_data_access_details() :: %{String.t() => any()} + @type s3_data_access_details() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1271,7 +1277,7 @@ defmodule AWS.DataExchange do } """ - @type asset_details() :: %{String.t() => any()} + @type asset_details() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1282,7 +1288,7 @@ defmodule AWS.DataExchange do } """ - @type event() :: %{String.t() => any()} + @type event() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1293,7 +1299,7 @@ defmodule AWS.DataExchange do } """ - @type action() :: %{String.t() => any()} + @type action() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1301,12 +1307,12 @@ defmodule AWS.DataExchange do import_assets_from_s3_response_details() :: %{ "AssetSources" => list(asset_source_entry()), - "DataSetId" => String.t(), - "RevisionId" => String.t() + "DataSetId" => String.t() | atom(), + "RevisionId" => String.t() | atom() } """ - @type import_assets_from_s3_response_details() :: %{String.t() => any()} + @type import_assets_from_s3_response_details() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1323,45 +1329,47 @@ defmodule AWS.DataExchange do import_assets_from_redshift_data_shares_request_details() :: %{ "AssetSources" => list(redshift_data_share_asset_source_entry()), - "DataSetId" => String.t(), - "RevisionId" => String.t() + "DataSetId" => String.t() | atom(), + "RevisionId" => String.t() | atom() } """ - @type import_assets_from_redshift_data_shares_request_details() :: %{String.t() => any()} + @type import_assets_from_redshift_data_shares_request_details() :: %{ + (String.t() | atom()) => any() + } @typedoc """ ## Example: revision_published() :: %{ - "DataSetId" => String.t() + "DataSetId" => String.t() | atom() } """ - @type revision_published() :: %{String.t() => any()} + @type revision_published() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: access_denied_exception() :: %{ - "Message" => String.t() + "Message" => String.t() | atom() } """ - @type access_denied_exception() :: %{String.t() => any()} + @type access_denied_exception() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: update_asset_request() :: %{ - required("Name") => String.t() + required("Name") => String.t() | atom() } """ - @type update_asset_request() :: %{String.t() => any()} + @type update_asset_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1369,76 +1377,78 @@ defmodule AWS.DataExchange do import_assets_from_redshift_data_shares_response_details() :: %{ "AssetSources" => list(redshift_data_share_asset_source_entry()), - "DataSetId" => String.t(), - "RevisionId" => String.t() + "DataSetId" => String.t() | atom(), + "RevisionId" => String.t() | atom() } """ - @type import_assets_from_redshift_data_shares_response_details() :: %{String.t() => any()} + @type import_assets_from_redshift_data_shares_response_details() :: %{ + (String.t() | atom()) => any() + } @typedoc """ ## Example: auto_export_revision_destination_entry() :: %{ - "Bucket" => String.t(), - "KeyPattern" => String.t() + "Bucket" => String.t() | atom(), + "KeyPattern" => String.t() | atom() } """ - @type auto_export_revision_destination_entry() :: %{String.t() => any()} + @type auto_export_revision_destination_entry() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: asset_source_entry() :: %{ - "Bucket" => String.t(), - "Key" => String.t() + "Bucket" => String.t() | atom(), + "Key" => String.t() | atom() } """ - @type asset_source_entry() :: %{String.t() => any()} + @type asset_source_entry() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: data_grant_summary_entry() :: %{ - "AcceptanceState" => String.t(), + "AcceptanceState" => String.t() | atom(), "AcceptedAt" => non_neg_integer(), - "Arn" => String.t(), + "Arn" => String.t() | atom(), "CreatedAt" => non_neg_integer(), - "DataSetId" => String.t(), + "DataSetId" => String.t() | atom(), "EndsAt" => non_neg_integer(), - "Id" => String.t(), - "Name" => String.t(), - "ReceiverPrincipal" => String.t(), - "SenderPrincipal" => String.t(), - "SourceDataSetId" => String.t(), + "Id" => String.t() | atom(), + "Name" => String.t() | atom(), + "ReceiverPrincipal" => String.t() | atom(), + "SenderPrincipal" => String.t() | atom(), + "SourceDataSetId" => String.t() | atom(), "UpdatedAt" => non_neg_integer() } """ - @type data_grant_summary_entry() :: %{String.t() => any()} + @type data_grant_summary_entry() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: get_job_response() :: %{ - optional("Arn") => String.t(), + optional("Arn") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), optional("Details") => response_details(), optional("Errors") => list(job_error()), - optional("Id") => String.t(), - optional("State") => String.t(), - optional("Type") => String.t(), + optional("Id") => String.t() | atom(), + optional("State") => String.t() | atom(), + optional("Type") => String.t() | atom(), optional("UpdatedAt") => non_neg_integer() } """ - @type get_job_response() :: %{String.t() => any()} + @type get_job_response() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1454,12 +1464,12 @@ defmodule AWS.DataExchange do ## Example: validation_exception() :: %{ - "ExceptionCause" => String.t(), - "Message" => String.t() + "ExceptionCause" => String.t() | atom(), + "Message" => String.t() | atom() } """ - @type validation_exception() :: %{String.t() => any()} + @type validation_exception() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1480,20 +1490,20 @@ defmodule AWS.DataExchange do } """ - @type auto_export_revision_to_s3_request_details() :: %{String.t() => any()} + @type auto_export_revision_to_s3_request_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: l_f_tag_policy_details() :: %{ - "CatalogId" => String.t(), + "CatalogId" => String.t() | atom(), "ResourceDetails" => l_f_resource_details(), - "ResourceType" => String.t() + "ResourceType" => String.t() | atom() } """ - @type l_f_tag_policy_details() :: %{String.t() => any()} + @type l_f_tag_policy_details() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1504,20 +1514,20 @@ defmodule AWS.DataExchange do } """ - @type deprecation_request_details() :: %{String.t() => any()} + @type deprecation_request_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: service_limit_exceeded_exception() :: %{ - "LimitName" => String.t(), + "LimitName" => String.t() | atom(), "LimitValue" => float(), - "Message" => String.t() + "Message" => String.t() | atom() } """ - @type service_limit_exceeded_exception() :: %{String.t() => any()} + @type service_limit_exceeded_exception() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1534,11 +1544,11 @@ defmodule AWS.DataExchange do list_data_grants_request() :: %{ optional("MaxResults") => integer(), - optional("NextToken") => String.t() + optional("NextToken") => String.t() | atom() } """ - @type list_data_grants_request() :: %{String.t() => any()} + @type list_data_grants_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1554,11 +1564,11 @@ defmodule AWS.DataExchange do ## Example: throttling_exception() :: %{ - "Message" => String.t() + "Message" => String.t() | atom() } """ - @type throttling_exception() :: %{String.t() => any()} + @type throttling_exception() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1574,18 +1584,18 @@ defmodule AWS.DataExchange do ## Example: send_api_asset_request() :: %{ - optional("Body") => String.t(), - optional("Method") => String.t(), - optional("Path") => String.t(), + optional("Body") => String.t() | atom(), + optional("Method") => String.t() | atom(), + optional("Path") => String.t() | atom(), optional("QueryStringParameters") => map(), optional("RequestHeaders") => map(), - required("AssetId") => String.t(), - required("DataSetId") => String.t(), - required("RevisionId") => String.t() + required("AssetId") => String.t() | atom(), + required("DataSetId") => String.t() | atom(), + required("RevisionId") => String.t() | atom() } """ - @type send_api_asset_request() :: %{String.t() => any()} + @type send_api_asset_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1601,12 +1611,12 @@ defmodule AWS.DataExchange do ## Example: create_revision_request() :: %{ - optional("Comment") => String.t(), + optional("Comment") => String.t() | atom(), optional("Tags") => map() } """ - @type create_revision_request() :: %{String.t() => any()} + @type create_revision_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1614,12 +1624,12 @@ defmodule AWS.DataExchange do import_assets_from_s3_request_details() :: %{ "AssetSources" => list(asset_source_entry()), - "DataSetId" => String.t(), - "RevisionId" => String.t() + "DataSetId" => String.t() | atom(), + "RevisionId" => String.t() | atom() } """ - @type import_assets_from_s3_request_details() :: %{String.t() => any()} + @type import_assets_from_s3_request_details() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1627,26 +1637,26 @@ defmodule AWS.DataExchange do lake_formation_data_permission_asset() :: %{ "LakeFormationDataPermissionDetails" => lake_formation_data_permission_details(), - "LakeFormationDataPermissionType" => String.t(), - "Permissions" => list(String.t()), - "RoleArn" => String.t() + "LakeFormationDataPermissionType" => String.t() | atom(), + "Permissions" => list(String.t() | atom()), + "RoleArn" => String.t() | atom() } """ - @type lake_formation_data_permission_asset() :: %{String.t() => any()} + @type lake_formation_data_permission_asset() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: list_event_actions_request() :: %{ - optional("EventSourceId") => String.t(), + optional("EventSourceId") => String.t() | atom(), optional("MaxResults") => integer(), - optional("NextToken") => String.t() + optional("NextToken") => String.t() | atom() } """ - @type list_event_actions_request() :: %{String.t() => any()} + @type list_event_actions_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1654,11 +1664,11 @@ defmodule AWS.DataExchange do list_data_grants_response() :: %{ "DataGrantSummaries" => list(data_grant_summary_entry()), - "NextToken" => String.t() + "NextToken" => String.t() | atom() } """ - @type list_data_grants_response() :: %{String.t() => any()} + @type list_data_grants_response() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1666,49 +1676,49 @@ defmodule AWS.DataExchange do list_data_set_revisions_request() :: %{ optional("MaxResults") => integer(), - optional("NextToken") => String.t() + optional("NextToken") => String.t() | atom() } """ - @type list_data_set_revisions_request() :: %{String.t() => any()} + @type list_data_set_revisions_request() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: asset_destination_entry() :: %{ - "AssetId" => String.t(), - "Bucket" => String.t(), - "Key" => String.t() + "AssetId" => String.t() | atom(), + "Bucket" => String.t() | atom(), + "Key" => String.t() | atom() } """ - @type asset_destination_entry() :: %{String.t() => any()} + @type asset_destination_entry() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: get_data_grant_response() :: %{ - "AcceptanceState" => String.t(), + "AcceptanceState" => String.t() | atom(), "AcceptedAt" => non_neg_integer(), - "Arn" => String.t(), + "Arn" => String.t() | atom(), "CreatedAt" => non_neg_integer(), - "DataSetId" => String.t(), - "Description" => String.t(), + "DataSetId" => String.t() | atom(), + "Description" => String.t() | atom(), "EndsAt" => non_neg_integer(), - "GrantDistributionScope" => String.t(), - "Id" => String.t(), - "Name" => String.t(), - "ReceiverPrincipal" => String.t(), - "SenderPrincipal" => String.t(), - "SourceDataSetId" => String.t(), + "GrantDistributionScope" => String.t() | atom(), + "Id" => String.t() | atom(), + "Name" => String.t() | atom(), + "ReceiverPrincipal" => String.t() | atom(), + "SenderPrincipal" => String.t() | atom(), + "SourceDataSetId" => String.t() | atom(), "Tags" => map(), "UpdatedAt" => non_neg_integer() } """ - @type get_data_grant_response() :: %{String.t() => any()} + @type get_data_grant_response() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1716,11 +1726,11 @@ defmodule AWS.DataExchange do list_event_actions_response() :: %{ optional("EventActions") => list(event_action_entry()), - optional("NextToken") => String.t() + optional("NextToken") => String.t() | atom() } """ - @type list_event_actions_response() :: %{String.t() => any()} + @type list_event_actions_response() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1739,55 +1749,55 @@ defmodule AWS.DataExchange do } """ - @type request_details() :: %{String.t() => any()} + @type request_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: job_entry() :: %{ - "Arn" => String.t(), + "Arn" => String.t() | atom(), "CreatedAt" => non_neg_integer(), "Details" => response_details(), "Errors" => list(job_error()), - "Id" => String.t(), - "State" => String.t(), - "Type" => String.t(), + "Id" => String.t() | atom(), + "State" => String.t() | atom(), + "Type" => String.t() | atom(), "UpdatedAt" => non_neg_integer() } """ - @type job_entry() :: %{String.t() => any()} + @type job_entry() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: import_asset_from_signed_url_request_details() :: %{ - "AssetName" => String.t(), - "DataSetId" => String.t(), - "Md5Hash" => String.t(), - "RevisionId" => String.t() + "AssetName" => String.t() | atom(), + "DataSetId" => String.t() | atom(), + "Md5Hash" => String.t() | atom(), + "RevisionId" => String.t() | atom() } """ - @type import_asset_from_signed_url_request_details() :: %{String.t() => any()} + @type import_asset_from_signed_url_request_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: import_asset_from_signed_url_response_details() :: %{ - "AssetName" => String.t(), - "DataSetId" => String.t(), - "Md5Hash" => String.t(), - "RevisionId" => String.t(), - "SignedUrl" => String.t(), + "AssetName" => String.t() | atom(), + "DataSetId" => String.t() | atom(), + "Md5Hash" => String.t() | atom(), + "RevisionId" => String.t() | atom(), + "SignedUrl" => String.t() | atom(), "SignedUrlExpiresAt" => non_neg_integer() } """ - @type import_asset_from_signed_url_response_details() :: %{String.t() => any()} + @type import_asset_from_signed_url_response_details() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1806,56 +1816,58 @@ defmodule AWS.DataExchange do } """ - @type response_details() :: %{String.t() => any()} + @type response_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: import_assets_from_lake_formation_tag_policy_request_details() :: %{ - "CatalogId" => String.t(), - "DataSetId" => String.t(), + "CatalogId" => String.t() | atom(), + "DataSetId" => String.t() | atom(), "Database" => database_l_f_tag_policy_and_permissions(), - "RevisionId" => String.t(), - "RoleArn" => String.t(), + "RevisionId" => String.t() | atom(), + "RoleArn" => String.t() | atom(), "Table" => table_l_f_tag_policy_and_permissions() } """ - @type import_assets_from_lake_formation_tag_policy_request_details() :: %{String.t() => any()} + @type import_assets_from_lake_formation_tag_policy_request_details() :: %{ + (String.t() | atom()) => any() + } @typedoc """ ## Example: received_data_grant_summaries_entry() :: %{ - "AcceptanceState" => String.t(), + "AcceptanceState" => String.t() | atom(), "AcceptedAt" => non_neg_integer(), - "Arn" => String.t(), + "Arn" => String.t() | atom(), "CreatedAt" => non_neg_integer(), - "DataSetId" => String.t(), + "DataSetId" => String.t() | atom(), "EndsAt" => non_neg_integer(), - "Id" => String.t(), - "Name" => String.t(), - "ReceiverPrincipal" => String.t(), - "SenderPrincipal" => String.t(), + "Id" => String.t() | atom(), + "Name" => String.t() | atom(), + "ReceiverPrincipal" => String.t() | atom(), + "SenderPrincipal" => String.t() | atom(), "UpdatedAt" => non_neg_integer() } """ - @type received_data_grant_summaries_entry() :: %{String.t() => any()} + @type received_data_grant_summaries_entry() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: update_revision_request() :: %{ - optional("Comment") => String.t(), + optional("Comment") => String.t() | atom(), optional("Finalized") => boolean() } """ - @type update_revision_request() :: %{String.t() => any()} + @type update_revision_request() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1866,83 +1878,83 @@ defmodule AWS.DataExchange do } """ - @type s3_snapshot_asset() :: %{String.t() => any()} + @type s3_snapshot_asset() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: export_revisions_to_s3_request_details() :: %{ - "DataSetId" => String.t(), + "DataSetId" => String.t() | atom(), "Encryption" => export_server_side_encryption(), "RevisionDestinations" => list(revision_destination_entry()) } """ - @type export_revisions_to_s3_request_details() :: %{String.t() => any()} + @type export_revisions_to_s3_request_details() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: revoke_revision_response() :: %{ - optional("Arn") => String.t(), - optional("Comment") => String.t(), + optional("Arn") => String.t() | atom(), + optional("Comment") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), - optional("DataSetId") => String.t(), + optional("DataSetId") => String.t() | atom(), optional("Finalized") => boolean(), - optional("Id") => String.t(), - optional("RevocationComment") => String.t(), + optional("Id") => String.t() | atom(), + optional("RevocationComment") => String.t() | atom(), optional("Revoked") => boolean(), optional("RevokedAt") => non_neg_integer(), - optional("SourceId") => String.t(), + optional("SourceId") => String.t() | atom(), optional("UpdatedAt") => non_neg_integer() } """ - @type revoke_revision_response() :: %{String.t() => any()} + @type revoke_revision_response() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: job_error() :: %{ - "Code" => String.t(), + "Code" => String.t() | atom(), "Details" => details(), - "LimitName" => String.t(), + "LimitName" => String.t() | atom(), "LimitValue" => float(), - "Message" => String.t(), - "ResourceId" => String.t(), - "ResourceType" => String.t() + "Message" => String.t() | atom(), + "ResourceId" => String.t() | atom(), + "ResourceType" => String.t() | atom() } """ - @type job_error() :: %{String.t() => any()} + @type job_error() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: update_data_set_request() :: %{ - optional("Description") => String.t(), - optional("Name") => String.t() + optional("Description") => String.t() | atom(), + optional("Name") => String.t() | atom() } """ - @type update_data_set_request() :: %{String.t() => any()} + @type update_data_set_request() :: %{(String.t() | atom()) => any()} @typedoc """ ## Example: revision_destination_entry() :: %{ - "Bucket" => String.t(), - "KeyPattern" => String.t(), - "RevisionId" => String.t() + "Bucket" => String.t() | atom(), + "KeyPattern" => String.t() | atom(), + "RevisionId" => String.t() | atom() } """ - @type revision_destination_entry() :: %{String.t() => any()} + @type revision_destination_entry() :: %{(String.t() | atom()) => any()} @typedoc """ @@ -1950,15 +1962,15 @@ defmodule AWS.DataExchange do create_event_action_response() :: %{ optional("Action") => action(), - optional("Arn") => String.t(), + optional("Arn") => String.t() | atom(), optional("CreatedAt") => non_neg_integer(), optional("Event") => event(), - optional("Id") => String.t(), + optional("Id") => String.t() | atom(), optional("UpdatedAt") => non_neg_integer() } """ - @type create_event_action_response() :: %{String.t() => any()} + @type create_event_action_response() :: %{(String.t() | atom()) => any()} @type accept_data_grant_errors() :: throttling_exception() @@ -2217,7 +2229,7 @@ defmodule AWS.DataExchange do @doc """ This operation accepts a data grant. """ - @spec accept_data_grant(map(), String.t(), accept_data_grant_request(), list()) :: + @spec accept_data_grant(map(), String.t() | atom(), accept_data_grant_request(), list()) :: {:ok, accept_data_grant_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2249,7 +2261,7 @@ defmodule AWS.DataExchange do Jobs can be cancelled only when they are in the WAITING state. """ - @spec cancel_job(map(), String.t(), cancel_job_request(), list()) :: + @spec cancel_job(map(), String.t() | atom(), cancel_job_request(), list()) :: {:ok, nil, any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2394,7 +2406,7 @@ defmodule AWS.DataExchange do @doc """ This operation creates a revision for a data set. """ - @spec create_revision(map(), String.t(), create_revision_request(), list()) :: + @spec create_revision(map(), String.t() | atom(), create_revision_request(), list()) :: {:ok, create_revision_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2423,7 +2435,14 @@ defmodule AWS.DataExchange do @doc """ This operation deletes an asset. """ - @spec delete_asset(map(), String.t(), String.t(), String.t(), delete_asset_request(), list()) :: + @spec delete_asset( + map(), + String.t() | atom(), + String.t() | atom(), + String.t() | atom(), + delete_asset_request(), + list() + ) :: {:ok, nil, any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2454,7 +2473,7 @@ defmodule AWS.DataExchange do @doc """ This operation deletes a data grant. """ - @spec delete_data_grant(map(), String.t(), delete_data_grant_request(), list()) :: + @spec delete_data_grant(map(), String.t() | atom(), delete_data_grant_request(), list()) :: {:ok, nil, any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2483,7 +2502,7 @@ defmodule AWS.DataExchange do @doc """ This operation deletes a data set. """ - @spec delete_data_set(map(), String.t(), delete_data_set_request(), list()) :: + @spec delete_data_set(map(), String.t() | atom(), delete_data_set_request(), list()) :: {:ok, nil, any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2512,7 +2531,7 @@ defmodule AWS.DataExchange do @doc """ This operation deletes the event action. """ - @spec delete_event_action(map(), String.t(), delete_event_action_request(), list()) :: + @spec delete_event_action(map(), String.t() | atom(), delete_event_action_request(), list()) :: {:ok, nil, any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2541,7 +2560,13 @@ defmodule AWS.DataExchange do @doc """ This operation deletes a revision. """ - @spec delete_revision(map(), String.t(), String.t(), delete_revision_request(), list()) :: + @spec delete_revision( + map(), + String.t() | atom(), + String.t() | atom(), + delete_revision_request(), + list() + ) :: {:ok, nil, any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2572,7 +2597,7 @@ defmodule AWS.DataExchange do @doc """ This operation returns information about an asset. """ - @spec get_asset(map(), String.t(), String.t(), String.t(), list()) :: + @spec get_asset(map(), String.t() | atom(), String.t() | atom(), String.t() | atom(), list()) :: {:ok, get_asset_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2592,7 +2617,7 @@ defmodule AWS.DataExchange do @doc """ This operation returns information about a data grant. """ - @spec get_data_grant(map(), String.t(), list()) :: + @spec get_data_grant(map(), String.t() | atom(), list()) :: {:ok, get_data_grant_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2610,7 +2635,7 @@ defmodule AWS.DataExchange do @doc """ This operation returns information about a data set. """ - @spec get_data_set(map(), String.t(), list()) :: + @spec get_data_set(map(), String.t() | atom(), list()) :: {:ok, get_data_set_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2628,7 +2653,7 @@ defmodule AWS.DataExchange do @doc """ This operation retrieves information about an event action. """ - @spec get_event_action(map(), String.t(), list()) :: + @spec get_event_action(map(), String.t() | atom(), list()) :: {:ok, get_event_action_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2646,7 +2671,7 @@ defmodule AWS.DataExchange do @doc """ This operation returns information about a job. """ - @spec get_job(map(), String.t(), list()) :: + @spec get_job(map(), String.t() | atom(), list()) :: {:ok, get_job_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2664,7 +2689,7 @@ defmodule AWS.DataExchange do @doc """ This operation returns information about a received data grant. """ - @spec get_received_data_grant(map(), String.t(), list()) :: + @spec get_received_data_grant(map(), String.t() | atom(), list()) :: {:ok, get_received_data_grant_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2682,7 +2707,7 @@ defmodule AWS.DataExchange do @doc """ This operation returns information about a revision. """ - @spec get_revision(map(), String.t(), String.t(), list()) :: + @spec get_revision(map(), String.t() | atom(), String.t() | atom(), list()) :: {:ok, get_revision_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2702,7 +2727,7 @@ defmodule AWS.DataExchange do @doc """ This operation returns information about all data grants. """ - @spec list_data_grants(map(), String.t() | nil, String.t() | nil, list()) :: + @spec list_data_grants(map(), String.t() | atom() | nil, String.t() | atom() | nil, list()) :: {:ok, list_data_grants_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2735,7 +2760,13 @@ defmodule AWS.DataExchange do This operation lists a data set's revisions sorted by CreatedAt in descending order. """ - @spec list_data_set_revisions(map(), String.t(), String.t() | nil, String.t() | nil, list()) :: + @spec list_data_set_revisions( + map(), + String.t() | atom(), + String.t() | atom() | nil, + String.t() | atom() | nil, + list() + ) :: {:ok, list_data_set_revisions_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2777,7 +2808,13 @@ defmodule AWS.DataExchange do CreatedAt in descending order. When listing by origin ENTITLED, there is no order. """ - @spec list_data_sets(map(), String.t() | nil, String.t() | nil, String.t() | nil, list()) :: + @spec list_data_sets( + map(), + String.t() | atom() | nil, + String.t() | atom() | nil, + String.t() | atom() | nil, + list() + ) :: {:ok, list_data_sets_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2822,7 +2859,13 @@ defmodule AWS.DataExchange do @doc """ This operation lists your event actions. """ - @spec list_event_actions(map(), String.t() | nil, String.t() | nil, String.t() | nil, list()) :: + @spec list_event_actions( + map(), + String.t() | atom() | nil, + String.t() | atom() | nil, + String.t() | atom() | nil, + list() + ) :: {:ok, list_event_actions_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -2869,10 +2912,10 @@ defmodule AWS.DataExchange do """ @spec list_jobs( map(), - String.t() | nil, - String.t() | nil, - String.t() | nil, - String.t() | nil, + String.t() | atom() | nil, + String.t() | atom() | nil, + String.t() | atom() | nil, + String.t() | atom() | nil, list() ) :: {:ok, list_jobs_response(), any()} @@ -2929,9 +2972,9 @@ defmodule AWS.DataExchange do """ @spec list_received_data_grants( map(), - String.t() | nil, - String.t() | nil, - String.t() | nil, + String.t() | atom() | nil, + String.t() | atom() | nil, + String.t() | atom() | nil, list() ) :: {:ok, list_received_data_grants_response(), any()} @@ -2981,10 +3024,10 @@ defmodule AWS.DataExchange do """ @spec list_revision_assets( map(), - String.t(), - String.t(), - String.t() | nil, - String.t() | nil, + String.t() | atom(), + String.t() | atom(), + String.t() | atom() | nil, + String.t() | atom() | nil, list() ) :: {:ok, list_revision_assets_response(), any()} @@ -3027,7 +3070,7 @@ defmodule AWS.DataExchange do @doc """ This operation lists the tags on the resource. """ - @spec list_tags_for_resource(map(), String.t(), list()) :: + @spec list_tags_for_resource(map(), String.t() | atom(), list()) :: {:ok, list_tags_for_resource_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -3044,7 +3087,13 @@ defmodule AWS.DataExchange do @doc """ This operation revokes subscribers' access to a revision. """ - @spec revoke_revision(map(), String.t(), String.t(), revoke_revision_request(), list()) :: + @spec revoke_revision( + map(), + String.t() | atom(), + String.t() | atom(), + revoke_revision_request(), + list() + ) :: {:ok, revoke_revision_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -3142,7 +3191,7 @@ defmodule AWS.DataExchange do """ @spec send_data_set_notification( map(), - String.t(), + String.t() | atom(), send_data_set_notification_request(), list() ) :: @@ -3174,7 +3223,7 @@ defmodule AWS.DataExchange do @doc """ This operation starts a job. """ - @spec start_job(map(), String.t(), start_job_request(), list()) :: + @spec start_job(map(), String.t() | atom(), start_job_request(), list()) :: {:ok, start_job_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -3203,7 +3252,7 @@ defmodule AWS.DataExchange do @doc """ This operation tags a resource. """ - @spec tag_resource(map(), String.t(), tag_resource_request(), list()) :: + @spec tag_resource(map(), String.t() | atom(), tag_resource_request(), list()) :: {:ok, nil, any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -3231,7 +3280,7 @@ defmodule AWS.DataExchange do @doc """ This operation removes one or more tags from a resource. """ - @spec untag_resource(map(), String.t(), untag_resource_request(), list()) :: + @spec untag_resource(map(), String.t() | atom(), untag_resource_request(), list()) :: {:ok, nil, any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -3264,7 +3313,14 @@ defmodule AWS.DataExchange do @doc """ This operation updates an asset. """ - @spec update_asset(map(), String.t(), String.t(), String.t(), update_asset_request(), list()) :: + @spec update_asset( + map(), + String.t() | atom(), + String.t() | atom(), + String.t() | atom(), + update_asset_request(), + list() + ) :: {:ok, update_asset_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -3295,7 +3351,7 @@ defmodule AWS.DataExchange do @doc """ This operation updates a data set. """ - @spec update_data_set(map(), String.t(), update_data_set_request(), list()) :: + @spec update_data_set(map(), String.t() | atom(), update_data_set_request(), list()) :: {:ok, update_data_set_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -3324,7 +3380,7 @@ defmodule AWS.DataExchange do @doc """ This operation updates the event action. """ - @spec update_event_action(map(), String.t(), update_event_action_request(), list()) :: + @spec update_event_action(map(), String.t() | atom(), update_event_action_request(), list()) :: {:ok, update_event_action_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()} @@ -3353,7 +3409,13 @@ defmodule AWS.DataExchange do @doc """ This operation updates a revision. """ - @spec update_revision(map(), String.t(), String.t(), update_revision_request(), list()) :: + @spec update_revision( + map(), + String.t() | atom(), + String.t() | atom(), + update_revision_request(), + list() + ) :: {:ok, update_revision_response(), any()} | {:error, {:unexpected_response, any()}} | {:error, term()}