diff --git a/.latest-tag-aws-sdk-go b/.latest-tag-aws-sdk-go index ae929c00..fdbcb422 100644 --- a/.latest-tag-aws-sdk-go +++ b/.latest-tag-aws-sdk-go @@ -1 +1 @@ -release-2024-09-27 +release-2024-09-30 diff --git a/lib/aws/generated/connect.ex b/lib/aws/generated/connect.ex index e919f428..f9c9658f 100644 --- a/lib/aws/generated/connect.ex +++ b/lib/aws/generated/connect.ex @@ -589,6 +589,28 @@ defmodule AWS.Connect do @typedoc """ + ## Example: + + start_outbound_chat_contact_request() :: %{ + optional("Attributes") => map(), + optional("ChatDurationInMinutes") => integer(), + optional("ClientToken") => String.t(), + optional("InitialSystemMessage") => chat_message(), + optional("ParticipantDetails") => participant_details(), + optional("RelatedContactId") => String.t(), + optional("SupportedMessagingContentTypes") => list(String.t()()), + required("ContactFlowId") => String.t(), + required("DestinationEndpoint") => endpoint(), + required("InstanceId") => String.t(), + required("SegmentAttributes") => map(), + required("SourceEndpoint") => endpoint() + } + + """ + @type start_outbound_chat_contact_request() :: %{String.t() => any()} + + @typedoc """ + ## Example: start_contact_recording_request() :: %{ @@ -7295,6 +7317,17 @@ defmodule AWS.Connect do @typedoc """ + ## Example: + + start_outbound_chat_contact_response() :: %{ + "ContactId" => String.t() + } + + """ + @type start_outbound_chat_contact_response() :: %{String.t() => any()} + + @typedoc """ + ## Example: list_integration_associations_response() :: %{ @@ -11117,6 +11150,15 @@ defmodule AWS.Connect do | resource_not_found_exception() | internal_service_exception() + @type start_outbound_chat_contact_errors() :: + limit_exceeded_exception() + | throttling_exception() + | access_denied_exception() + | invalid_request_exception() + | resource_not_found_exception() + | conflict_exception() + | internal_service_exception() + @type start_outbound_voice_contact_errors() :: limit_exceeded_exception() | invalid_parameter_exception() @@ -11628,10 +11670,9 @@ defmodule AWS.Connect do end @doc """ - This API is in preview release for Amazon Connect and is subject to change. - Associates the specified dataset for a Amazon Connect instance with the target account. + You can associate only one dataset in a single call. """ @spec associate_analytics_data_set( @@ -12026,11 +12067,11 @@ defmodule AWS.Connect do end @doc """ - This API is in preview release for Amazon Connect and is subject to change. - Associates a list of analytics datasets for a given Amazon Connect instance to a target - account. You can associate multiple datasets in a single call. + account. + + You can associate multiple datasets in a single call. """ @spec batch_associate_analytics_data_set( map(), @@ -12052,10 +12093,9 @@ defmodule AWS.Connect do end @doc """ - This API is in preview release for Amazon Connect and is subject to change. - Removes a list of analytics datasets associated with a given Amazon Connect instance. + You can disassociate multiple datasets in a single call. """ @spec batch_disassociate_analytics_data_set( @@ -13968,12 +14008,10 @@ defmodule AWS.Connect do Describes the specified contact. - Contact information remains available in Amazon Connect for 24 months, and then - it is - deleted. - - Only data from November 12, 2021, and later is returned by this - API. + Contact information remains available in Amazon Connect for 24 months from the + InitiationTimestamp, and then it is deleted. Only contact information that is + available in + Amazon Connect is returned by this API """ @spec describe_contact(map(), String.t(), String.t(), list()) :: {:ok, describe_contact_response(), any()} @@ -14530,8 +14568,6 @@ defmodule AWS.Connect do end @doc """ - This API is in preview release for Amazon Connect and is subject to change. - Removes the dataset ID associated with a given Amazon Connect instance. """ @spec disassociate_analytics_data_set( @@ -15566,8 +15602,6 @@ defmodule AWS.Connect do end @doc """ - This API is in preview release for Amazon Connect and is subject to change. - Lists the association status of requested dataset ID for a given Amazon Connect instance. """ @@ -18611,6 +18645,52 @@ defmodule AWS.Connect do ) end + @doc """ + Initiates a new outbound SMS contact to a customer. + + Response of this API provides the + ContactId of the outbound SMS contact created. + + **SourceEndpoint** only supports Endpoints with + `CONNECT_PHONENUMBER_ARN` as Type and **DestinationEndpoint** only supports + Endpoints with `TELEPHONE_NUMBER` as + Type. **ContactFlowId** initiates the flow to manage the new SMS + contact created. + + This API can be used to initiate outbound SMS contacts for an agent or it can + also deflect + an ongoing contact to an outbound SMS contact by using the + [StartOutboundChatContact](https://docs.aws.amazon.com/connect/latest/APIReference/API_StartOutboundChatContact.html) Flow Action. + + For more information about using SMS in Amazon Connect, see the following topics + in the + *Amazon Connect Administrator Guide*: + + * + + [Set + up SMS + messaging](https://docs.aws.amazon.com/connect/latest/adminguide/setup-sms-messaging.html) + + * + + [Request an SMS-enabled phone number through AWS End User Messaging + SMS](https://docs.aws.amazon.com/connect/latest/adminguide/sms-number.html) + """ + @spec start_outbound_chat_contact(map(), start_outbound_chat_contact_request(), list()) :: + {:ok, start_outbound_chat_contact_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, start_outbound_chat_contact_errors()} + def start_outbound_chat_contact(%Client{} = client, input, options \\ []) do + url_path = "/contact/outbound-chat" + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest(client, meta, :put, url_path, query_params, headers, input, options, 200) + end + @doc """ Places an outbound call to a contact, and then initiates the flow. diff --git a/lib/aws/generated/pricing.ex b/lib/aws/generated/pricing.ex index 1359857c..d789ff3b 100644 --- a/lib/aws/generated/pricing.ex +++ b/lib/aws/generated/pricing.ex @@ -27,7 +27,7 @@ defmodule AWS.Pricing do Web Services Use `GetServices` without a service code to retrieve the service codes for - all Amazon Web Services, then `GetServices` with a service code to + all Amazon Web Services services, then `GetServices` with a service code to retrieve the attribute names for that service. After you have the service code and attribute names, you can use `GetAttributeValues` to see what values are diff --git a/lib/aws/generated/resource_groups.ex b/lib/aws/generated/resource_groups.ex index b8361ac2..e65a7330 100644 --- a/lib/aws/generated/resource_groups.ex +++ b/lib/aws/generated/resource_groups.ex @@ -42,7 +42,8 @@ defmodule AWS.ResourceGroups do Applying, editing, and removing tags from resource groups * - Resolving resource group member ARNs so they can be returned as search + Resolving resource group member Amazon resource names (ARN)s so they can be + returned as search results * @@ -69,6 +70,19 @@ defmodule AWS.ResourceGroups do @typedoc """ + ## Example: + + list_tag_sync_tasks_input() :: %{ + optional("Filters") => list(list_tag_sync_tasks_filter()()), + optional("MaxResults") => integer(), + optional("NextToken") => String.t() + } + + """ + @type list_tag_sync_tasks_input() :: %{String.t() => any()} + + @typedoc """ + ## Example: unauthorized_exception() :: %{ @@ -80,11 +94,30 @@ defmodule AWS.ResourceGroups do @typedoc """ + ## Example: + + start_tag_sync_task_output() :: %{ + "GroupArn" => String.t(), + "GroupName" => String.t(), + "RoleArn" => String.t(), + "TagKey" => String.t(), + "TagValue" => String.t(), + "TaskArn" => String.t() + } + + """ + @type start_tag_sync_task_output() :: %{String.t() => any()} + + @typedoc """ + ## Example: create_group_input() :: %{ optional("Configuration") => list(group_configuration_item()()), + optional("Criticality") => integer(), optional("Description") => String.t(), + optional("DisplayName") => String.t(), + optional("Owner") => String.t(), optional("ResourceQuery") => resource_query(), optional("Tags") => map(), required("Name") => String.t() @@ -106,6 +139,30 @@ defmodule AWS.ResourceGroups do @typedoc """ + ## Example: + + cancel_tag_sync_task_input() :: %{ + required("TaskArn") => String.t() + } + + """ + @type cancel_tag_sync_task_input() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + list_grouping_statuses_output() :: %{ + "Group" => String.t(), + "GroupingStatuses" => list(grouping_statuses_item()()), + "NextToken" => String.t() + } + + """ + @type list_grouping_statuses_output() :: %{String.t() => any()} + + @typedoc """ + ## Example: list_group_resources_item() :: %{ @@ -165,6 +222,18 @@ defmodule AWS.ResourceGroups do @typedoc """ + ## Example: + + list_tag_sync_tasks_filter() :: %{ + "GroupArn" => String.t(), + "GroupName" => String.t() + } + + """ + @type list_tag_sync_tasks_filter() :: %{String.t() => any()} + + @typedoc """ + ## Example: get_group_configuration_input() :: %{ @@ -210,11 +279,29 @@ defmodule AWS.ResourceGroups do @typedoc """ + ## Example: + + start_tag_sync_task_input() :: %{ + required("Group") => String.t(), + required("RoleArn") => String.t(), + required("TagKey") => String.t(), + required("TagValue") => String.t() + } + + """ + @type start_tag_sync_task_input() :: %{String.t() => any()} + + @typedoc """ + ## Example: group_identifier() :: %{ + "Criticality" => integer(), + "Description" => String.t(), + "DisplayName" => String.t(), "GroupArn" => String.t(), - "GroupName" => String.t() + "GroupName" => String.t(), + "Owner" => String.t() } """ @@ -351,6 +438,20 @@ defmodule AWS.ResourceGroups do @typedoc """ + ## Example: + + list_grouping_statuses_input() :: %{ + optional("Filters") => list(list_grouping_statuses_filter()()), + optional("MaxResults") => integer(), + optional("NextToken") => String.t(), + required("Group") => String.t() + } + + """ + @type list_grouping_statuses_input() :: %{String.t() => any()} + + @typedoc """ + ## Example: group_configuration_parameter() :: %{ @@ -403,6 +504,25 @@ defmodule AWS.ResourceGroups do @typedoc """ + ## Example: + + get_tag_sync_task_output() :: %{ + "CreatedAt" => non_neg_integer(), + "ErrorMessage" => String.t(), + "GroupArn" => String.t(), + "GroupName" => String.t(), + "RoleArn" => String.t(), + "Status" => list(any()), + "TagKey" => String.t(), + "TagValue" => String.t(), + "TaskArn" => String.t() + } + + """ + @type get_tag_sync_task_output() :: %{String.t() => any()} + + @typedoc """ + ## Example: not_found_exception() :: %{ @@ -465,6 +585,25 @@ defmodule AWS.ResourceGroups do @typedoc """ + ## Example: + + tag_sync_task_item() :: %{ + "CreatedAt" => non_neg_integer(), + "ErrorMessage" => String.t(), + "GroupArn" => String.t(), + "GroupName" => String.t(), + "RoleArn" => String.t(), + "Status" => list(any()), + "TagKey" => String.t(), + "TagValue" => String.t(), + "TaskArn" => String.t() + } + + """ + @type tag_sync_task_item() :: %{String.t() => any()} + + @typedoc """ + ## Example: delete_group_input() :: %{ @@ -562,12 +701,26 @@ defmodule AWS.ResourceGroups do @typedoc """ + ## Example: + + get_tag_sync_task_input() :: %{ + required("TaskArn") => String.t() + } + + """ + @type get_tag_sync_task_input() :: %{String.t() => any()} + + @typedoc """ + ## Example: update_group_input() :: %{ + optional("Criticality") => integer(), optional("Description") => String.t(), + optional("DisplayName") => String.t(), optional("Group") => String.t(), - optional("GroupName") => String.t() + optional("GroupName") => String.t(), + optional("Owner") => String.t() } """ @@ -595,12 +748,32 @@ defmodule AWS.ResourceGroups do @typedoc """ + ## Example: + + grouping_statuses_item() :: %{ + "Action" => list(any()), + "ErrorCode" => String.t(), + "ErrorMessage" => String.t(), + "ResourceArn" => String.t(), + "Status" => list(any()), + "UpdatedAt" => non_neg_integer() + } + + """ + @type grouping_statuses_item() :: %{String.t() => any()} + + @typedoc """ + ## Example: group() :: %{ + "ApplicationTag" => map(), + "Criticality" => integer(), "Description" => String.t(), + "DisplayName" => String.t(), "GroupArn" => String.t(), - "Name" => String.t() + "Name" => String.t(), + "Owner" => String.t() } """ @@ -644,6 +817,18 @@ defmodule AWS.ResourceGroups do @typedoc """ + ## Example: + + list_grouping_statuses_filter() :: %{ + "Name" => list(any()), + "Values" => list(String.t()()) + } + + """ + @type list_grouping_statuses_filter() :: %{String.t() => any()} + + @typedoc """ + ## Example: untag_output() :: %{ @@ -717,6 +902,18 @@ defmodule AWS.ResourceGroups do @typedoc """ + ## Example: + + list_tag_sync_tasks_output() :: %{ + "NextToken" => String.t(), + "TagSyncTasks" => list(tag_sync_task_item()()) + } + + """ + @type list_tag_sync_tasks_output() :: %{String.t() => any()} + + @typedoc """ + ## Example: put_group_configuration_output() :: %{} @@ -747,6 +944,14 @@ defmodule AWS.ResourceGroups do """ @type tag_input() :: %{String.t() => any()} + @type cancel_tag_sync_task_errors() :: + bad_request_exception() + | internal_server_error_exception() + | too_many_requests_exception() + | method_not_allowed_exception() + | forbidden_exception() + | unauthorized_exception() + @type create_group_errors() :: bad_request_exception() | internal_server_error_exception() @@ -793,6 +998,15 @@ defmodule AWS.ResourceGroups do | method_not_allowed_exception() | forbidden_exception() + @type get_tag_sync_task_errors() :: + bad_request_exception() + | internal_server_error_exception() + | not_found_exception() + | too_many_requests_exception() + | method_not_allowed_exception() + | forbidden_exception() + | unauthorized_exception() + @type get_tags_errors() :: bad_request_exception() | internal_server_error_exception() @@ -818,6 +1032,13 @@ defmodule AWS.ResourceGroups do | forbidden_exception() | unauthorized_exception() + @type list_grouping_statuses_errors() :: + bad_request_exception() + | internal_server_error_exception() + | too_many_requests_exception() + | method_not_allowed_exception() + | forbidden_exception() + @type list_groups_errors() :: bad_request_exception() | internal_server_error_exception() @@ -825,6 +1046,14 @@ defmodule AWS.ResourceGroups do | method_not_allowed_exception() | forbidden_exception() + @type list_tag_sync_tasks_errors() :: + bad_request_exception() + | internal_server_error_exception() + | too_many_requests_exception() + | method_not_allowed_exception() + | forbidden_exception() + | unauthorized_exception() + @type put_group_configuration_errors() :: bad_request_exception() | internal_server_error_exception() @@ -841,6 +1070,15 @@ defmodule AWS.ResourceGroups do | forbidden_exception() | unauthorized_exception() + @type start_tag_sync_task_errors() :: + bad_request_exception() + | internal_server_error_exception() + | not_found_exception() + | too_many_requests_exception() + | method_not_allowed_exception() + | forbidden_exception() + | unauthorized_exception() + @type tag_errors() :: bad_request_exception() | internal_server_error_exception() @@ -904,6 +1142,45 @@ defmodule AWS.ResourceGroups do } end + @doc """ + Cancels the specified tag-sync task. + + ## Minimum permissions + + To run this command, you must have the following permissions: + + * + + `resource-groups:CancelTagSyncTask` on the application group + + * + + `resource-groups:DeleteGroup` + """ + @spec cancel_tag_sync_task(map(), cancel_tag_sync_task_input(), list()) :: + {:ok, nil, any()} + | {:error, {:unexpected_response, any()}} + | {:error, cancel_tag_sync_task_errors()} + def cancel_tag_sync_task(%Client{} = client, input, options \\ []) do + url_path = "/cancel-tag-sync-task" + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest( + client, + meta, + :post, + url_path, + query_params, + headers, + input, + options, + 200 + ) + end + @doc """ Creates a resource group with the specified name and description. @@ -1127,10 +1404,45 @@ defmodule AWS.ResourceGroups do ) end + @doc """ + Returns information about a specified tag-sync task. + + ## Minimum permissions + + To run this command, you must have the following permissions: + + * + + `resource-groups:GetTagSyncTask` on the application group + """ + @spec get_tag_sync_task(map(), get_tag_sync_task_input(), list()) :: + {:ok, get_tag_sync_task_output(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, get_tag_sync_task_errors()} + def get_tag_sync_task(%Client{} = client, input, options \\ []) do + url_path = "/get-tag-sync-task" + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest( + client, + meta, + :post, + url_path, + query_params, + headers, + input, + options, + 200 + ) + end + @doc """ Returns a list of tags that are associated with a resource group, specified by an - ARN. + Amazon resource name (ARN). ## Minimum permissions @@ -1157,9 +1469,7 @@ defmodule AWS.ResourceGroups do @doc """ Adds the specified resources to the specified group. - You can use this operation with only resource groups that are configured with - the - following types: + You can only use this operation with the following groups: @@ -1169,7 +1479,12 @@ defmodule AWS.ResourceGroups do `AWS::EC2::CapacityReservationPool` - Other resource group type and resource types aren't currently supported by this + + + `AWS::ResourceGroups::ApplicationGroup` + + Other resource group types and resource types are not currently supported by + this operation. ## Minimum permissions @@ -1205,7 +1520,8 @@ defmodule AWS.ResourceGroups do end @doc """ - Returns a list of ARNs of the resources that are members of a specified resource + Returns a list of Amazon resource names (ARNs) of the resources that are members + of a specified resource group. ## Minimum permissions @@ -1252,6 +1568,34 @@ defmodule AWS.ResourceGroups do ) end + @doc """ + Returns the status of the last grouping or ungrouping action for + each resource in the specified application group. + """ + @spec list_grouping_statuses(map(), list_grouping_statuses_input(), list()) :: + {:ok, list_grouping_statuses_output(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, list_grouping_statuses_errors()} + def list_grouping_statuses(%Client{} = client, input, options \\ []) do + url_path = "/list-grouping-statuses" + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest( + client, + meta, + :post, + url_path, + query_params, + headers, + input, + options, + 200 + ) + end + @doc """ Returns a list of existing Resource Groups in your account. @@ -1293,6 +1637,43 @@ defmodule AWS.ResourceGroups do ) end + @doc """ + Returns a list of tag-sync tasks. + + ## Minimum permissions + + To run this command, you must have the following permissions: + + * + + `resource-groups:ListTagSyncTasks` with the group passed in the filters as the + resource + or * if using no filters + """ + @spec list_tag_sync_tasks(map(), list_tag_sync_tasks_input(), list()) :: + {:ok, list_tag_sync_tasks_output(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, list_tag_sync_tasks_errors()} + def list_tag_sync_tasks(%Client{} = client, input, options \\ []) do + url_path = "/list-tag-sync-tasks" + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest( + client, + meta, + :post, + url_path, + query_params, + headers, + input, + options, + 200 + ) + end + @doc """ Attaches a service configuration to the specified group. @@ -1385,7 +1766,52 @@ defmodule AWS.ResourceGroups do end @doc """ - Adds tags to a resource group with the specified ARN. + Creates a new tag-sync task to onboard and sync resources tagged with a specific + tag key-value pair to an + application. + + ## Minimum permissions + + To run this command, you must have the following permissions: + + * + + `resource-groups:StartTagSyncTask` on the application group + + * + + `resource-groups:CreateGroup` + + * + + `iam:PassRole` on the role provided in the request + """ + @spec start_tag_sync_task(map(), start_tag_sync_task_input(), list()) :: + {:ok, start_tag_sync_task_output(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, start_tag_sync_task_errors()} + def start_tag_sync_task(%Client{} = client, input, options \\ []) do + url_path = "/start-tag-sync-task" + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest( + client, + meta, + :post, + url_path, + query_params, + headers, + input, + options, + 200 + ) + end + + @doc """ + Adds tags to a resource group with the specified Amazon resource name (ARN). Existing tags on a resource group are not changed if they are not specified in the request parameters. diff --git a/lib/aws/generated/supply_chain.ex b/lib/aws/generated/supply_chain.ex index e1c461ed..0953c834 100644 --- a/lib/aws/generated/supply_chain.ex +++ b/lib/aws/generated/supply_chain.ex @@ -26,50 +26,189 @@ defmodule AWS.SupplyChain do ## Example: - access_denied_exception() :: %{ - "message" => [String.t()] + data_integration_flow_source() :: %{ + "datasetSource" => data_integration_flow_dataset_source_configuration(), + "s3Source" => data_integration_flow_s3_source_configuration(), + "sourceName" => String.t(), + "sourceType" => list(any()) } """ - @type access_denied_exception() :: %{String.t() => any()} + @type data_integration_flow_source() :: %{String.t() => any()} @typedoc """ ## Example: - bill_of_materials_import_job() :: %{ + delete_data_lake_dataset_request() :: %{} + + """ + @type delete_data_lake_dataset_request() :: %{} + + @typedoc """ + + ## Example: + + tag_resource_request() :: %{ + required("tags") => map() + } + + """ + @type tag_resource_request() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + untag_resource_response() :: %{} + + """ + @type untag_resource_response() :: %{} + + @typedoc """ + + ## Example: + + data_integration_flow_s3_target_configuration() :: %{ + "bucketName" => String.t(), + "options" => data_integration_flow_s3_options(), + "prefix" => String.t() + } + + """ + @type data_integration_flow_s3_target_configuration() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + data_integration_flow_s3_options() :: %{ + "fileType" => list(any()) + } + + """ + @type data_integration_flow_s3_options() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + get_data_lake_dataset_response() :: %{ + "dataset" => data_lake_dataset() + } + + """ + @type get_data_lake_dataset_response() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + list_data_lake_datasets_request() :: %{ + optional("maxResults") => integer(), + optional("nextToken") => String.t() + } + + """ + @type list_data_lake_datasets_request() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + delete_data_integration_flow_request() :: %{} + + """ + @type delete_data_integration_flow_request() :: %{} + + @typedoc """ + + ## Example: + + update_data_lake_dataset_request() :: %{ + optional("description") => String.t() + } + + """ + @type update_data_lake_dataset_request() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + create_data_lake_dataset_request() :: %{ + optional("description") => String.t(), + optional("schema") => data_lake_dataset_schema(), + optional("tags") => map() + } + + """ + @type create_data_lake_dataset_request() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + delete_data_integration_flow_response() :: %{ "instanceId" => String.t(), - "jobId" => String.t(), - "message" => [String.t()], - "s3uri" => String.t(), - "status" => list(any()) + "name" => String.t() } """ - @type bill_of_materials_import_job() :: %{String.t() => any()} + @type delete_data_integration_flow_response() :: %{String.t() => any()} @typedoc """ ## Example: - conflict_exception() :: %{ - "message" => [String.t()] + untag_resource_request() :: %{ + required("tagKeys") => list(String.t()()) } """ - @type conflict_exception() :: %{String.t() => any()} + @type untag_resource_request() :: %{String.t() => any()} @typedoc """ ## Example: - create_bill_of_materials_import_job_request() :: %{ - optional("clientToken") => String.t(), - required("s3uri") => String.t() + create_data_integration_flow_request() :: %{ + optional("tags") => map(), + required("sources") => list(data_integration_flow_source()()), + required("target") => data_integration_flow_target(), + required("transformation") => data_integration_flow_transformation() } """ - @type create_bill_of_materials_import_job_request() :: %{String.t() => any()} + @type create_data_integration_flow_request() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + data_integration_flow() :: %{ + "createdTime" => [non_neg_integer()], + "instanceId" => String.t(), + "lastModifiedTime" => [non_neg_integer()], + "name" => String.t(), + "sources" => list(data_integration_flow_source()()), + "target" => data_integration_flow_target(), + "transformation" => data_integration_flow_transformation() + } + + """ + @type data_integration_flow() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + update_data_integration_flow_response() :: %{ + "flow" => data_integration_flow() + } + + """ + @type update_data_integration_flow_response() :: %{String.t() => any()} @typedoc """ @@ -86,10 +225,14 @@ defmodule AWS.SupplyChain do ## Example: - get_bill_of_materials_import_job_request() :: %{} + data_lake_dataset_schema_field() :: %{ + "isRequired" => [boolean()], + "name" => String.t(), + "type" => list(any()) + } """ - @type get_bill_of_materials_import_job_request() :: %{} + @type data_lake_dataset_schema_field() :: %{String.t() => any()} @typedoc """ @@ -106,196 +249,892 @@ defmodule AWS.SupplyChain do ## Example: - internal_server_exception() :: %{ - "message" => [String.t()] + data_integration_flow_s_q_l_transformation_configuration() :: %{ + "query" => String.t() } """ - @type internal_server_exception() :: %{String.t() => any()} + @type data_integration_flow_s_q_l_transformation_configuration() :: %{String.t() => any()} @typedoc """ ## Example: - resource_not_found_exception() :: %{ - "message" => [String.t()] + create_data_integration_flow_response() :: %{ + "instanceId" => String.t(), + "name" => String.t() } """ - @type resource_not_found_exception() :: %{String.t() => any()} + @type create_data_integration_flow_response() :: %{String.t() => any()} @typedoc """ ## Example: - send_data_integration_event_request() :: %{ - optional("clientToken") => String.t(), - optional("eventTimestamp") => [non_neg_integer()], - required("data") => String.t(), - required("eventGroupId") => String.t(), - required("eventType") => list(any()) + list_data_lake_datasets_response() :: %{ + "datasets" => list(data_lake_dataset()()), + "nextToken" => String.t() } """ - @type send_data_integration_event_request() :: %{String.t() => any()} + @type list_data_lake_datasets_response() :: %{String.t() => any()} @typedoc """ ## Example: - send_data_integration_event_response() :: %{ - "eventId" => String.t() + conflict_exception() :: %{ + "message" => [String.t()] } """ - @type send_data_integration_event_response() :: %{String.t() => any()} + @type conflict_exception() :: %{String.t() => any()} @typedoc """ ## Example: - service_quota_exceeded_exception() :: %{ + resource_not_found_exception() :: %{ "message" => [String.t()] } """ - @type service_quota_exceeded_exception() :: %{String.t() => any()} + @type resource_not_found_exception() :: %{String.t() => any()} @typedoc """ ## Example: - throttling_exception() :: %{ - "message" => [String.t()] - } + get_bill_of_materials_import_job_request() :: %{} """ - @type throttling_exception() :: %{String.t() => any()} + @type get_bill_of_materials_import_job_request() :: %{} @typedoc """ ## Example: - validation_exception() :: %{ + service_quota_exceeded_exception() :: %{ "message" => [String.t()] } """ - @type validation_exception() :: %{String.t() => any()} + @type service_quota_exceeded_exception() :: %{String.t() => any()} - @type create_bill_of_materials_import_job_errors() :: - validation_exception() - | throttling_exception() - | service_quota_exceeded_exception() - | internal_server_exception() - | conflict_exception() - | access_denied_exception() + @typedoc """ - @type get_bill_of_materials_import_job_errors() :: - validation_exception() - | throttling_exception() - | resource_not_found_exception() - | internal_server_exception() - | access_denied_exception() + ## Example: - @type send_data_integration_event_errors() :: - validation_exception() - | throttling_exception() - | service_quota_exceeded_exception() - | resource_not_found_exception() - | internal_server_exception() - | conflict_exception() - | access_denied_exception() + data_integration_flow_dataset_options() :: %{ + "dedupeRecords" => [boolean()], + "loadType" => list(any()) + } - def metadata do - %{ - api_version: "2024-01-01", - content_type: "application/x-amz-json-1.1", - credential_scope: nil, - endpoint_prefix: "scn", - global?: false, - hostname: nil, - protocol: "rest-json", - service_id: "SupplyChain", - signature_version: "v4", - signing_name: "scn", - target_prefix: nil - } - end + """ + @type data_integration_flow_dataset_options() :: %{String.t() => any()} - @doc """ - CreateBillOfMaterialsImportJob creates an import job for the Product Bill Of - Materials (BOM) entity. + @typedoc """ - For information on the product_bom entity, see the AWS Supply Chain User Guide. + ## Example: + + get_data_integration_flow_request() :: %{} - The CSV file must be located in an Amazon S3 location accessible to AWS Supply - Chain. It is recommended to use the same Amazon S3 bucket created during your - AWS Supply Chain instance creation. """ - @spec create_bill_of_materials_import_job( - map(), - String.t(), - create_bill_of_materials_import_job_request(), - list() - ) :: - {:ok, create_bill_of_materials_import_job_response(), any()} - | {:error, {:unexpected_response, any()}} - | {:error, create_bill_of_materials_import_job_errors()} - def create_bill_of_materials_import_job(%Client{} = client, instance_id, input, options \\ []) do - url_path = - "/api/configuration/instances/#{AWS.Util.encode_uri(instance_id)}/bill-of-materials-import-jobs" + @type get_data_integration_flow_request() :: %{} - headers = [] - query_params = [] + @typedoc """ - meta = metadata() + ## Example: - Request.request_rest( - client, - meta, - :post, - url_path, - query_params, - headers, - input, - options, - 200 - ) - end + data_lake_dataset_schema() :: %{ + "fields" => list(data_lake_dataset_schema_field()()), + "name" => String.t() + } - @doc """ - Get status and details of a BillOfMaterialsImportJob. """ - @spec get_bill_of_materials_import_job(map(), String.t(), String.t(), list()) :: - {:ok, get_bill_of_materials_import_job_response(), any()} - | {:error, {:unexpected_response, any()}} - | {:error, get_bill_of_materials_import_job_errors()} - def get_bill_of_materials_import_job(%Client{} = client, instance_id, job_id, options \\ []) do - url_path = - "/api/configuration/instances/#{AWS.Util.encode_uri(instance_id)}/bill-of-materials-import-jobs/#{AWS.Util.encode_uri(job_id)}" + @type data_lake_dataset_schema() :: %{String.t() => any()} - headers = [] - query_params = [] + @typedoc """ - meta = metadata() + ## Example: - Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200) - end + list_tags_for_resource_response() :: %{ + "tags" => map() + } - @doc """ - Send the transactional data payload for the event with real-time data for - analysis or monitoring. + """ + @type list_tags_for_resource_response() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + data_integration_flow_dataset_target_configuration() :: %{ + "datasetIdentifier" => String.t(), + "options" => data_integration_flow_dataset_options() + } - The real-time data events are stored in an Amazon Web Services service before - being processed and stored in data lake. - New data events are synced with data lake at 5 PM GMT everyday. The updated - transactional data is available in data lake after ingestion. """ - @spec send_data_integration_event( - map(), - String.t(), - send_data_integration_event_request(), + @type data_integration_flow_dataset_target_configuration() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + create_bill_of_materials_import_job_request() :: %{ + optional("clientToken") => String.t(), + required("s3uri") => String.t() + } + + """ + @type create_bill_of_materials_import_job_request() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + create_data_lake_dataset_response() :: %{ + "dataset" => data_lake_dataset() + } + + """ + @type create_data_lake_dataset_response() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + internal_server_exception() :: %{ + "message" => [String.t()] + } + + """ + @type internal_server_exception() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + data_integration_flow_transformation() :: %{ + "sqlTransformation" => data_integration_flow_s_q_l_transformation_configuration(), + "transformationType" => list(any()) + } + + """ + @type data_integration_flow_transformation() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + get_data_integration_flow_response() :: %{ + "flow" => data_integration_flow() + } + + """ + @type get_data_integration_flow_response() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + access_denied_exception() :: %{ + "message" => [String.t()] + } + + """ + @type access_denied_exception() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + tag_resource_response() :: %{} + + """ + @type tag_resource_response() :: %{} + + @typedoc """ + + ## Example: + + send_data_integration_event_response() :: %{ + "eventId" => String.t() + } + + """ + @type send_data_integration_event_response() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + validation_exception() :: %{ + "message" => [String.t()] + } + + """ + @type validation_exception() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + list_tags_for_resource_request() :: %{} + + """ + @type list_tags_for_resource_request() :: %{} + + @typedoc """ + + ## Example: + + throttling_exception() :: %{ + "message" => [String.t()] + } + + """ + @type throttling_exception() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + list_data_integration_flows_response() :: %{ + "flows" => list(data_integration_flow()()), + "nextToken" => String.t() + } + + """ + @type list_data_integration_flows_response() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + send_data_integration_event_request() :: %{ + optional("clientToken") => String.t(), + optional("eventTimestamp") => [non_neg_integer()], + required("data") => String.t(), + required("eventGroupId") => String.t(), + required("eventType") => list(any()) + } + + """ + @type send_data_integration_event_request() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + data_integration_flow_s3_source_configuration() :: %{ + "bucketName" => String.t(), + "options" => data_integration_flow_s3_options(), + "prefix" => String.t() + } + + """ + @type data_integration_flow_s3_source_configuration() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + get_data_lake_dataset_request() :: %{} + + """ + @type get_data_lake_dataset_request() :: %{} + + @typedoc """ + + ## Example: + + data_integration_flow_target() :: %{ + "datasetTarget" => data_integration_flow_dataset_target_configuration(), + "s3Target" => data_integration_flow_s3_target_configuration(), + "targetType" => list(any()) + } + + """ + @type data_integration_flow_target() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + list_data_integration_flows_request() :: %{ + optional("maxResults") => integer(), + optional("nextToken") => String.t() + } + + """ + @type list_data_integration_flows_request() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + update_data_integration_flow_request() :: %{ + optional("sources") => list(data_integration_flow_source()()), + optional("target") => data_integration_flow_target(), + optional("transformation") => data_integration_flow_transformation() + } + + """ + @type update_data_integration_flow_request() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + data_integration_flow_dataset_source_configuration() :: %{ + "datasetIdentifier" => String.t(), + "options" => data_integration_flow_dataset_options() + } + + """ + @type data_integration_flow_dataset_source_configuration() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + bill_of_materials_import_job() :: %{ + "instanceId" => String.t(), + "jobId" => String.t(), + "message" => [String.t()], + "s3uri" => String.t(), + "status" => list(any()) + } + + """ + @type bill_of_materials_import_job() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + data_lake_dataset() :: %{ + "arn" => String.t(), + "createdTime" => [non_neg_integer()], + "description" => String.t(), + "instanceId" => String.t(), + "lastModifiedTime" => [non_neg_integer()], + "name" => String.t(), + "namespace" => String.t(), + "schema" => data_lake_dataset_schema() + } + + """ + @type data_lake_dataset() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + delete_data_lake_dataset_response() :: %{ + "instanceId" => String.t(), + "name" => String.t(), + "namespace" => String.t() + } + + """ + @type delete_data_lake_dataset_response() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + update_data_lake_dataset_response() :: %{ + "dataset" => data_lake_dataset() + } + + """ + @type update_data_lake_dataset_response() :: %{String.t() => any()} + + @type create_bill_of_materials_import_job_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | service_quota_exceeded_exception() + | conflict_exception() + + @type create_data_integration_flow_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | service_quota_exceeded_exception() + | conflict_exception() + + @type create_data_lake_dataset_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | service_quota_exceeded_exception() + | conflict_exception() + + @type delete_data_integration_flow_errors() :: + throttling_exception() + | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() + + @type delete_data_lake_dataset_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() + + @type get_bill_of_materials_import_job_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() + + @type get_data_integration_flow_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() + + @type get_data_lake_dataset_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() + + @type list_data_integration_flows_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + + @type list_data_lake_datasets_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() + + @type list_tags_for_resource_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() + + @type send_data_integration_event_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | service_quota_exceeded_exception() + | resource_not_found_exception() + | conflict_exception() + + @type tag_resource_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() + + @type untag_resource_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() + + @type update_data_integration_flow_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() + + @type update_data_lake_dataset_errors() :: + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() + + def metadata do + %{ + api_version: "2024-01-01", + content_type: "application/x-amz-json-1.1", + credential_scope: nil, + endpoint_prefix: "scn", + global?: false, + hostname: nil, + protocol: "rest-json", + service_id: "SupplyChain", + signature_version: "v4", + signing_name: "scn", + target_prefix: nil + } + end + + @doc """ + CreateBillOfMaterialsImportJob creates an import job for the Product Bill Of + Materials (BOM) entity. + + For information on the product_bom entity, see the AWS Supply Chain User Guide. + + The CSV file must be located in an Amazon S3 location accessible to AWS Supply + Chain. It is recommended to use the same Amazon S3 bucket created during your + AWS Supply Chain instance creation. + """ + @spec create_bill_of_materials_import_job( + map(), + String.t(), + create_bill_of_materials_import_job_request(), + list() + ) :: + {:ok, create_bill_of_materials_import_job_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, create_bill_of_materials_import_job_errors()} + def create_bill_of_materials_import_job(%Client{} = client, instance_id, input, options \\ []) do + url_path = + "/api/configuration/instances/#{AWS.Util.encode_uri(instance_id)}/bill-of-materials-import-jobs" + + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest( + client, + meta, + :post, + url_path, + query_params, + headers, + input, + options, + 200 + ) + end + + @doc """ + Create DataIntegrationFlow to map one or more different sources to one target + using the SQL transformation query. + """ + @spec create_data_integration_flow( + map(), + String.t(), + String.t(), + create_data_integration_flow_request(), + list() + ) :: + {:ok, create_data_integration_flow_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, create_data_integration_flow_errors()} + def create_data_integration_flow(%Client{} = client, instance_id, name, input, options \\ []) do + url_path = + "/api/data-integration/instance/#{AWS.Util.encode_uri(instance_id)}/data-integration-flows/#{AWS.Util.encode_uri(name)}" + + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest(client, meta, :put, url_path, query_params, headers, input, options, 200) + end + + @doc """ + Create a data lake dataset. + """ + @spec create_data_lake_dataset( + map(), + String.t(), + String.t(), + String.t(), + create_data_lake_dataset_request(), + list() + ) :: + {:ok, create_data_lake_dataset_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, create_data_lake_dataset_errors()} + def create_data_lake_dataset( + %Client{} = client, + instance_id, + name, + namespace, + input, + options \\ [] + ) do + url_path = + "/api/datalake/instance/#{AWS.Util.encode_uri(instance_id)}/namespaces/#{AWS.Util.encode_uri(namespace)}/datasets/#{AWS.Util.encode_uri(name)}" + + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest(client, meta, :put, url_path, query_params, headers, input, options, 200) + end + + @doc """ + Delete the DataIntegrationFlow. + """ + @spec delete_data_integration_flow( + map(), + String.t(), + String.t(), + delete_data_integration_flow_request(), + list() + ) :: + {:ok, delete_data_integration_flow_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, delete_data_integration_flow_errors()} + def delete_data_integration_flow(%Client{} = client, instance_id, name, input, options \\ []) do + url_path = + "/api/data-integration/instance/#{AWS.Util.encode_uri(instance_id)}/data-integration-flows/#{AWS.Util.encode_uri(name)}" + + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest( + client, + meta, + :delete, + url_path, + query_params, + headers, + input, + options, + 200 + ) + end + + @doc """ + Delete a data lake dataset. + """ + @spec delete_data_lake_dataset( + map(), + String.t(), + String.t(), + String.t(), + delete_data_lake_dataset_request(), + list() + ) :: + {:ok, delete_data_lake_dataset_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, delete_data_lake_dataset_errors()} + def delete_data_lake_dataset( + %Client{} = client, + instance_id, + name, + namespace, + input, + options \\ [] + ) do + url_path = + "/api/datalake/instance/#{AWS.Util.encode_uri(instance_id)}/namespaces/#{AWS.Util.encode_uri(namespace)}/datasets/#{AWS.Util.encode_uri(name)}" + + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest( + client, + meta, + :delete, + url_path, + query_params, + headers, + input, + options, + 200 + ) + end + + @doc """ + Get status and details of a BillOfMaterialsImportJob. + """ + @spec get_bill_of_materials_import_job(map(), String.t(), String.t(), list()) :: + {:ok, get_bill_of_materials_import_job_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, get_bill_of_materials_import_job_errors()} + def get_bill_of_materials_import_job(%Client{} = client, instance_id, job_id, options \\ []) do + url_path = + "/api/configuration/instances/#{AWS.Util.encode_uri(instance_id)}/bill-of-materials-import-jobs/#{AWS.Util.encode_uri(job_id)}" + + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200) + end + + @doc """ + View the DataIntegrationFlow details. + """ + @spec get_data_integration_flow(map(), String.t(), String.t(), list()) :: + {:ok, get_data_integration_flow_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, get_data_integration_flow_errors()} + def get_data_integration_flow(%Client{} = client, instance_id, name, options \\ []) do + url_path = + "/api/data-integration/instance/#{AWS.Util.encode_uri(instance_id)}/data-integration-flows/#{AWS.Util.encode_uri(name)}" + + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200) + end + + @doc """ + Get a data lake dataset. + """ + @spec get_data_lake_dataset(map(), String.t(), String.t(), String.t(), list()) :: + {:ok, get_data_lake_dataset_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, get_data_lake_dataset_errors()} + def get_data_lake_dataset(%Client{} = client, instance_id, name, namespace, options \\ []) do + url_path = + "/api/datalake/instance/#{AWS.Util.encode_uri(instance_id)}/namespaces/#{AWS.Util.encode_uri(namespace)}/datasets/#{AWS.Util.encode_uri(name)}" + + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200) + end + + @doc """ + Lists all the DataIntegrationFlows in a paginated way. + """ + @spec list_data_integration_flows(map(), String.t(), String.t() | nil, String.t() | nil, list()) :: + {:ok, list_data_integration_flows_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, list_data_integration_flows_errors()} + def list_data_integration_flows( + %Client{} = client, + instance_id, + max_results \\ nil, + next_token \\ nil, + options \\ [] + ) do + url_path = + "/api/data-integration/instance/#{AWS.Util.encode_uri(instance_id)}/data-integration-flows" + + headers = [] + query_params = [] + + query_params = + if !is_nil(next_token) do + [{"nextToken", next_token} | query_params] + else + query_params + end + + query_params = + if !is_nil(max_results) do + [{"maxResults", max_results} | query_params] + else + query_params + end + + meta = metadata() + + Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200) + end + + @doc """ + List the data lake datasets for a specific instance and name space. + """ + @spec list_data_lake_datasets( + map(), + String.t(), + String.t(), + String.t() | nil, + String.t() | nil, + list() + ) :: + {:ok, list_data_lake_datasets_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, list_data_lake_datasets_errors()} + def list_data_lake_datasets( + %Client{} = client, + instance_id, + namespace, + max_results \\ nil, + next_token \\ nil, + options \\ [] + ) do + url_path = + "/api/datalake/instance/#{AWS.Util.encode_uri(instance_id)}/namespaces/#{AWS.Util.encode_uri(namespace)}/datasets" + + headers = [] + query_params = [] + + query_params = + if !is_nil(next_token) do + [{"nextToken", next_token} | query_params] + else + query_params + end + + query_params = + if !is_nil(max_results) do + [{"maxResults", max_results} | query_params] + else + query_params + end + + meta = metadata() + + Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200) + end + + @doc """ + List all the tags for an Amazon Web ServicesSupply Chain resource. + """ + @spec list_tags_for_resource(map(), String.t(), list()) :: + {:ok, list_tags_for_resource_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, list_tags_for_resource_errors()} + def list_tags_for_resource(%Client{} = client, resource_arn, options \\ []) do + url_path = "/api/tags/#{AWS.Util.encode_uri(resource_arn)}" + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200) + end + + @doc """ + Send the transactional data payload for the event with real-time data for + analysis or monitoring. + + The real-time data events are stored in an Amazon Web Services service before + being processed and stored in data lake. + New data events are synced with data lake at 5 PM GMT everyday. The updated + transactional data is available in data lake after ingestion. + """ + @spec send_data_integration_event( + map(), + String.t(), + send_data_integration_event_request(), list() ) :: {:ok, send_data_integration_event_response(), any()} @@ -322,4 +1161,141 @@ defmodule AWS.SupplyChain do 200 ) end + + @doc """ + Create tags for an Amazon Web Services Supply chain resource. + """ + @spec tag_resource(map(), String.t(), tag_resource_request(), list()) :: + {:ok, tag_resource_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, tag_resource_errors()} + def tag_resource(%Client{} = client, resource_arn, input, options \\ []) do + url_path = "/api/tags/#{AWS.Util.encode_uri(resource_arn)}" + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest( + client, + meta, + :post, + url_path, + query_params, + headers, + input, + options, + 200 + ) + end + + @doc """ + Delete tags for an Amazon Web Services Supply chain resource. + """ + @spec untag_resource(map(), String.t(), untag_resource_request(), list()) :: + {:ok, untag_resource_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, untag_resource_errors()} + def untag_resource(%Client{} = client, resource_arn, input, options \\ []) do + url_path = "/api/tags/#{AWS.Util.encode_uri(resource_arn)}" + headers = [] + + {query_params, input} = + [ + {"tagKeys", "tagKeys"} + ] + |> Request.build_params(input) + + meta = metadata() + + Request.request_rest( + client, + meta, + :delete, + url_path, + query_params, + headers, + input, + options, + 200 + ) + end + + @doc """ + Update the DataIntegrationFlow. + """ + @spec update_data_integration_flow( + map(), + String.t(), + String.t(), + update_data_integration_flow_request(), + list() + ) :: + {:ok, update_data_integration_flow_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, update_data_integration_flow_errors()} + def update_data_integration_flow(%Client{} = client, instance_id, name, input, options \\ []) do + url_path = + "/api/data-integration/instance/#{AWS.Util.encode_uri(instance_id)}/data-integration-flows/#{AWS.Util.encode_uri(name)}" + + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest( + client, + meta, + :patch, + url_path, + query_params, + headers, + input, + options, + 200 + ) + end + + @doc """ + Update a data lake dataset. + """ + @spec update_data_lake_dataset( + map(), + String.t(), + String.t(), + String.t(), + update_data_lake_dataset_request(), + list() + ) :: + {:ok, update_data_lake_dataset_response(), any()} + | {:error, {:unexpected_response, any()}} + | {:error, update_data_lake_dataset_errors()} + def update_data_lake_dataset( + %Client{} = client, + instance_id, + name, + namespace, + input, + options \\ [] + ) do + url_path = + "/api/datalake/instance/#{AWS.Util.encode_uri(instance_id)}/namespaces/#{AWS.Util.encode_uri(namespace)}/datasets/#{AWS.Util.encode_uri(name)}" + + headers = [] + query_params = [] + + meta = metadata() + + Request.request_rest( + client, + meta, + :patch, + url_path, + query_params, + headers, + input, + options, + 200 + ) + end end diff --git a/lib/aws/generated/timestream_influx_db.ex b/lib/aws/generated/timestream_influx_db.ex index 595bb541..9dbcd628 100644 --- a/lib/aws/generated/timestream_influx_db.ex +++ b/lib/aws/generated/timestream_influx_db.ex @@ -20,56 +20,31 @@ defmodule AWS.TimestreamInfluxDB do ## Example: - access_denied_exception() :: %{ - "message" => [String.t()] - } - - """ - @type access_denied_exception() :: %{String.t() => any()} - - @typedoc """ - - ## Example: - - conflict_exception() :: %{ - "message" => [String.t()], - "resourceId" => [String.t()], - "resourceType" => [String.t()] + tag_resource_request() :: %{ + required("resourceArn") => String.t(), + required("tags") => map() } """ - @type conflict_exception() :: %{String.t() => any()} + @type tag_resource_request() :: %{String.t() => any()} @typedoc """ ## Example: - create_db_instance_input() :: %{ - optional("bucket") => String.t(), - optional("dbParameterGroupIdentifier") => String.t(), - optional("dbStorageType") => list(any()), - optional("deploymentType") => list(any()), - optional("logDeliveryConfiguration") => log_delivery_configuration(), - optional("organization") => String.t(), - optional("publiclyAccessible") => [boolean()], - optional("tags") => map(), - optional("username") => String.t(), - required("allocatedStorage") => integer(), - required("dbInstanceType") => list(any()), - required("name") => String.t(), - required("password") => String.t(), - required("vpcSecurityGroupIds") => list(String.t()()), - required("vpcSubnetIds") => list(String.t()()) + list_db_parameter_groups_input() :: %{ + optional("maxResults") => integer(), + optional("nextToken") => String.t() } """ - @type create_db_instance_input() :: %{String.t() => any()} + @type list_db_parameter_groups_input() :: %{String.t() => any()} @typedoc """ ## Example: - create_db_instance_output() :: %{ + delete_db_instance_output() :: %{ "allocatedStorage" => integer(), "arn" => String.t(), "availabilityZone" => [String.t()], @@ -82,6 +57,7 @@ defmodule AWS.TimestreamInfluxDB do "influxAuthParametersSecretArn" => [String.t()], "logDeliveryConfiguration" => log_delivery_configuration(), "name" => String.t(), + "port" => integer(), "publiclyAccessible" => [boolean()], "secondaryAvailabilityZone" => [String.t()], "status" => list(any()), @@ -90,86 +66,93 @@ defmodule AWS.TimestreamInfluxDB do } """ - @type create_db_instance_output() :: %{String.t() => any()} - - @typedoc """ - - ## Example: - - create_db_parameter_group_input() :: %{ - optional("description") => [String.t()], - optional("parameters") => list(), - optional("tags") => map(), - required("name") => String.t() - } - - """ - @type create_db_parameter_group_input() :: %{String.t() => any()} + @type delete_db_instance_output() :: %{String.t() => any()} @typedoc """ ## Example: - create_db_parameter_group_output() :: %{ + db_parameter_group_summary() :: %{ "arn" => String.t(), "description" => [String.t()], "id" => String.t(), - "name" => String.t(), - "parameters" => list() + "name" => String.t() } """ - @type create_db_parameter_group_output() :: %{String.t() => any()} + @type db_parameter_group_summary() :: %{String.t() => any()} @typedoc """ ## Example: - db_instance_summary() :: %{ - "allocatedStorage" => integer(), - "arn" => String.t(), - "dbInstanceType" => list(any()), - "dbStorageType" => list(any()), - "deploymentType" => list(any()), - "endpoint" => [String.t()], - "id" => String.t(), - "name" => String.t(), - "status" => list(any()) + untag_resource_request() :: %{ + required("tagKeys") => list(String.t()()) } """ - @type db_instance_summary() :: %{String.t() => any()} + @type untag_resource_request() :: %{String.t() => any()} @typedoc """ ## Example: - db_parameter_group_summary() :: %{ - "arn" => String.t(), - "description" => [String.t()], - "id" => String.t(), - "name" => String.t() + delete_db_instance_input() :: %{ + required("identifier") => String.t() } """ - @type db_parameter_group_summary() :: %{String.t() => any()} + @type delete_db_instance_input() :: %{String.t() => any()} @typedoc """ ## Example: - delete_db_instance_input() :: %{ - required("identifier") => String.t() + influx_dbv2_parameters() :: %{ + "storageRetentionCheckInterval" => duration(), + "sessionRenewDisabled" => [boolean()], + "storageCompactThroughputBurst" => [float()], + "influxqlMaxSelectSeries" => [float()], + "storageSeriesIdSetCacheSize" => [float()], + "logLevel" => list(any()), + "pprofDisabled" => [boolean()], + "queryMaxMemoryBytes" => [float()], + "storageWalMaxWriteDelay" => duration(), + "fluxLogEnabled" => [boolean()], + "storageCacheMaxMemorySize" => [float()], + "influxqlMaxSelectBuckets" => [float()], + "queryConcurrency" => [integer()], + "httpReadTimeout" => duration(), + "sessionLength" => [integer()], + "metricsDisabled" => [boolean()], + "uiDisabled" => [boolean()], + "storageMaxIndexLogFileSize" => [float()], + "tracingType" => list(any()), + "noTasks" => [boolean()], + "queryInitialMemoryBytes" => [float()], + "queryQueueSize" => [integer()], + "storageNoValidateFieldSize" => [boolean()], + "storageCacheSnapshotWriteColdDuration" => duration(), + "httpWriteTimeout" => duration(), + "storageWalMaxConcurrentWrites" => [integer()], + "storageSeriesFileMaxConcurrentSnapshotCompactions" => [integer()], + "influxqlMaxSelectPoint" => [float()], + "queryMemoryBytes" => [float()], + "storageCacheSnapshotMemorySize" => [float()], + "httpIdleTimeout" => duration(), + "httpReadHeaderTimeout" => duration(), + "storageCompactFullWriteColdDuration" => duration(), + "storageMaxConcurrentCompactions" => [integer()] } """ - @type delete_db_instance_input() :: %{String.t() => any()} + @type influx_dbv2_parameters() :: %{String.t() => any()} @typedoc """ ## Example: - delete_db_instance_output() :: %{ + get_db_instance_output() :: %{ "allocatedStorage" => integer(), "arn" => String.t(), "availabilityZone" => [String.t()], @@ -182,6 +165,7 @@ defmodule AWS.TimestreamInfluxDB do "influxAuthParametersSecretArn" => [String.t()], "logDeliveryConfiguration" => log_delivery_configuration(), "name" => String.t(), + "port" => integer(), "publiclyAccessible" => [boolean()], "secondaryAvailabilityZone" => [String.t()], "status" => list(any()), @@ -190,56 +174,53 @@ defmodule AWS.TimestreamInfluxDB do } """ - @type delete_db_instance_output() :: %{String.t() => any()} + @type get_db_instance_output() :: %{String.t() => any()} @typedoc """ ## Example: - get_db_instance_input() :: %{ - required("identifier") => String.t() + conflict_exception() :: %{ + "message" => [String.t()], + "resourceId" => [String.t()], + "resourceType" => [String.t()] } """ - @type get_db_instance_input() :: %{String.t() => any()} + @type conflict_exception() :: %{String.t() => any()} @typedoc """ ## Example: - get_db_instance_output() :: %{ - "allocatedStorage" => integer(), - "arn" => String.t(), - "availabilityZone" => [String.t()], - "dbInstanceType" => list(any()), - "dbParameterGroupIdentifier" => String.t(), - "dbStorageType" => list(any()), - "deploymentType" => list(any()), - "endpoint" => [String.t()], - "id" => String.t(), - "influxAuthParametersSecretArn" => [String.t()], - "logDeliveryConfiguration" => log_delivery_configuration(), - "name" => String.t(), - "publiclyAccessible" => [boolean()], - "secondaryAvailabilityZone" => [String.t()], - "status" => list(any()), - "vpcSecurityGroupIds" => list(String.t()()), - "vpcSubnetIds" => list(String.t()()) + resource_not_found_exception() :: %{ + "message" => [String.t()], + "resourceId" => [String.t()], + "resourceType" => [String.t()] } """ - @type get_db_instance_output() :: %{String.t() => any()} + @type resource_not_found_exception() :: %{String.t() => any()} @typedoc """ ## Example: - get_db_parameter_group_input() :: %{ - required("identifier") => String.t() + db_instance_summary() :: %{ + "allocatedStorage" => integer(), + "arn" => String.t(), + "dbInstanceType" => list(any()), + "dbStorageType" => list(any()), + "deploymentType" => list(any()), + "endpoint" => [String.t()], + "id" => String.t(), + "name" => String.t(), + "port" => integer(), + "status" => list(any()) } """ - @type get_db_parameter_group_input() :: %{String.t() => any()} + @type db_instance_summary() :: %{String.t() => any()} @typedoc """ @@ -260,65 +241,61 @@ defmodule AWS.TimestreamInfluxDB do ## Example: - influx_dbv2_parameters() :: %{ - "fluxLogEnabled" => [boolean()], - "logLevel" => list(any()), - "metricsDisabled" => [boolean()], - "noTasks" => [boolean()], - "queryConcurrency" => [integer()], - "queryQueueSize" => [integer()], - "tracingType" => list(any()) + service_quota_exceeded_exception() :: %{ + "message" => [String.t()] } """ - @type influx_dbv2_parameters() :: %{String.t() => any()} + @type service_quota_exceeded_exception() :: %{String.t() => any()} @typedoc """ ## Example: - internal_server_exception() :: %{ - "message" => [String.t()] + update_db_instance_input() :: %{ + optional("dbInstanceType") => list(any()), + optional("dbParameterGroupIdentifier") => String.t(), + optional("deploymentType") => list(any()), + optional("logDeliveryConfiguration") => log_delivery_configuration(), + optional("port") => integer(), + required("identifier") => String.t() } """ - @type internal_server_exception() :: %{String.t() => any()} + @type update_db_instance_input() :: %{String.t() => any()} @typedoc """ ## Example: - list_db_instances_input() :: %{ - optional("maxResults") => integer(), - optional("nextToken") => String.t() + log_delivery_configuration() :: %{ + "s3Configuration" => s3_configuration() } """ - @type list_db_instances_input() :: %{String.t() => any()} + @type log_delivery_configuration() :: %{String.t() => any()} @typedoc """ ## Example: - list_db_instances_output() :: %{ - "items" => list(db_instance_summary()()), - "nextToken" => String.t() + list_tags_for_resource_response() :: %{ + "tags" => map() } """ - @type list_db_instances_output() :: %{String.t() => any()} + @type list_tags_for_resource_response() :: %{String.t() => any()} @typedoc """ ## Example: - list_db_parameter_groups_input() :: %{ - optional("maxResults") => integer(), - optional("nextToken") => String.t() + get_db_parameter_group_input() :: %{ + required("identifier") => String.t() } """ - @type list_db_parameter_groups_input() :: %{String.t() => any()} + @type get_db_parameter_group_input() :: %{String.t() => any()} @typedoc """ @@ -336,82 +313,152 @@ defmodule AWS.TimestreamInfluxDB do ## Example: - list_tags_for_resource_request() :: %{ - required("resourceArn") => String.t() + create_db_instance_output() :: %{ + "allocatedStorage" => integer(), + "arn" => String.t(), + "availabilityZone" => [String.t()], + "dbInstanceType" => list(any()), + "dbParameterGroupIdentifier" => String.t(), + "dbStorageType" => list(any()), + "deploymentType" => list(any()), + "endpoint" => [String.t()], + "id" => String.t(), + "influxAuthParametersSecretArn" => [String.t()], + "logDeliveryConfiguration" => log_delivery_configuration(), + "name" => String.t(), + "port" => integer(), + "publiclyAccessible" => [boolean()], + "secondaryAvailabilityZone" => [String.t()], + "status" => list(any()), + "vpcSecurityGroupIds" => list(String.t()()), + "vpcSubnetIds" => list(String.t()()) } """ - @type list_tags_for_resource_request() :: %{String.t() => any()} + @type create_db_instance_output() :: %{String.t() => any()} @typedoc """ ## Example: - list_tags_for_resource_response() :: %{ - "tags" => map() + list_db_instances_output() :: %{ + "items" => list(db_instance_summary()()), + "nextToken" => String.t() } """ - @type list_tags_for_resource_response() :: %{String.t() => any()} + @type list_db_instances_output() :: %{String.t() => any()} @typedoc """ ## Example: - log_delivery_configuration() :: %{ - "s3Configuration" => s3_configuration() + internal_server_exception() :: %{ + "message" => [String.t()] } """ - @type log_delivery_configuration() :: %{String.t() => any()} + @type internal_server_exception() :: %{String.t() => any()} @typedoc """ ## Example: - resource_not_found_exception() :: %{ - "message" => [String.t()], - "resourceId" => [String.t()], - "resourceType" => [String.t()] + create_db_parameter_group_input() :: %{ + optional("description") => [String.t()], + optional("parameters") => list(), + optional("tags") => map(), + required("name") => String.t() } """ - @type resource_not_found_exception() :: %{String.t() => any()} + @type create_db_parameter_group_input() :: %{String.t() => any()} @typedoc """ ## Example: - s3_configuration() :: %{ - "bucketName" => [String.t()], - "enabled" => [boolean()] + list_db_instances_input() :: %{ + optional("maxResults") => integer(), + optional("nextToken") => String.t() } """ - @type s3_configuration() :: %{String.t() => any()} + @type list_db_instances_input() :: %{String.t() => any()} @typedoc """ ## Example: - service_quota_exceeded_exception() :: %{ + access_denied_exception() :: %{ "message" => [String.t()] } """ - @type service_quota_exceeded_exception() :: %{String.t() => any()} + @type access_denied_exception() :: %{String.t() => any()} @typedoc """ ## Example: - tag_resource_request() :: %{ - required("resourceArn") => String.t(), - required("tags") => map() + update_db_instance_output() :: %{ + "allocatedStorage" => integer(), + "arn" => String.t(), + "availabilityZone" => [String.t()], + "dbInstanceType" => list(any()), + "dbParameterGroupIdentifier" => String.t(), + "dbStorageType" => list(any()), + "deploymentType" => list(any()), + "endpoint" => [String.t()], + "id" => String.t(), + "influxAuthParametersSecretArn" => [String.t()], + "logDeliveryConfiguration" => log_delivery_configuration(), + "name" => String.t(), + "port" => integer(), + "publiclyAccessible" => [boolean()], + "secondaryAvailabilityZone" => [String.t()], + "status" => list(any()), + "vpcSecurityGroupIds" => list(String.t()()), + "vpcSubnetIds" => list(String.t()()) } """ - @type tag_resource_request() :: %{String.t() => any()} + @type update_db_instance_output() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + duration() :: %{ + "durationType" => list(any()), + "value" => [float()] + } + + """ + @type duration() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + validation_exception() :: %{ + "message" => [String.t()], + "reason" => list(any()) + } + + """ + @type validation_exception() :: %{String.t() => any()} + + @typedoc """ + + ## Example: + + list_tags_for_resource_request() :: %{ + required("resourceArn") => String.t() + } + + """ + @type list_tags_for_resource_request() :: %{String.t() => any()} @typedoc """ @@ -429,120 +476,119 @@ defmodule AWS.TimestreamInfluxDB do ## Example: - untag_resource_request() :: %{ - required("tagKeys") => list(String.t()()) + s3_configuration() :: %{ + "bucketName" => [String.t()], + "enabled" => [boolean()] } """ - @type untag_resource_request() :: %{String.t() => any()} + @type s3_configuration() :: %{String.t() => any()} @typedoc """ ## Example: - update_db_instance_input() :: %{ - optional("dbInstanceType") => list(any()), - optional("dbParameterGroupIdentifier") => String.t(), - optional("deploymentType") => list(any()), - optional("logDeliveryConfiguration") => log_delivery_configuration(), + get_db_instance_input() :: %{ required("identifier") => String.t() } """ - @type update_db_instance_input() :: %{String.t() => any()} + @type get_db_instance_input() :: %{String.t() => any()} @typedoc """ ## Example: - update_db_instance_output() :: %{ - "allocatedStorage" => integer(), + create_db_parameter_group_output() :: %{ "arn" => String.t(), - "availabilityZone" => [String.t()], - "dbInstanceType" => list(any()), - "dbParameterGroupIdentifier" => String.t(), - "dbStorageType" => list(any()), - "deploymentType" => list(any()), - "endpoint" => [String.t()], + "description" => [String.t()], "id" => String.t(), - "influxAuthParametersSecretArn" => [String.t()], - "logDeliveryConfiguration" => log_delivery_configuration(), "name" => String.t(), - "publiclyAccessible" => [boolean()], - "secondaryAvailabilityZone" => [String.t()], - "status" => list(any()), - "vpcSecurityGroupIds" => list(String.t()()), - "vpcSubnetIds" => list(String.t()()) + "parameters" => list() } """ - @type update_db_instance_output() :: %{String.t() => any()} + @type create_db_parameter_group_output() :: %{String.t() => any()} @typedoc """ ## Example: - validation_exception() :: %{ - "message" => [String.t()], - "reason" => list(any()) + create_db_instance_input() :: %{ + optional("bucket") => String.t(), + optional("dbParameterGroupIdentifier") => String.t(), + optional("dbStorageType") => list(any()), + optional("deploymentType") => list(any()), + optional("logDeliveryConfiguration") => log_delivery_configuration(), + optional("organization") => String.t(), + optional("port") => integer(), + optional("publiclyAccessible") => [boolean()], + optional("tags") => map(), + optional("username") => String.t(), + required("allocatedStorage") => integer(), + required("dbInstanceType") => list(any()), + required("name") => String.t(), + required("password") => String.t(), + required("vpcSecurityGroupIds") => list(String.t()()), + required("vpcSubnetIds") => list(String.t()()) } """ - @type validation_exception() :: %{String.t() => any()} + @type create_db_instance_input() :: %{String.t() => any()} @type create_db_instance_errors() :: - validation_exception() - | throttling_exception() + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() | service_quota_exceeded_exception() | resource_not_found_exception() - | internal_server_exception() | conflict_exception() - | access_denied_exception() @type create_db_parameter_group_errors() :: - validation_exception() - | throttling_exception() + throttling_exception() + | validation_exception() + | access_denied_exception() + | internal_server_exception() | service_quota_exceeded_exception() | resource_not_found_exception() - | internal_server_exception() | conflict_exception() - | access_denied_exception() @type delete_db_instance_errors() :: - validation_exception() - | throttling_exception() - | resource_not_found_exception() + throttling_exception() + | validation_exception() + | access_denied_exception() | internal_server_exception() + | resource_not_found_exception() | conflict_exception() - | access_denied_exception() @type get_db_instance_errors() :: - validation_exception() - | throttling_exception() - | resource_not_found_exception() - | internal_server_exception() + throttling_exception() + | validation_exception() | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() @type get_db_parameter_group_errors() :: - validation_exception() - | throttling_exception() - | resource_not_found_exception() - | internal_server_exception() + throttling_exception() + | validation_exception() | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() @type list_db_instances_errors() :: - validation_exception() - | throttling_exception() - | resource_not_found_exception() - | internal_server_exception() + throttling_exception() + | validation_exception() | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() @type list_db_parameter_groups_errors() :: - validation_exception() - | throttling_exception() - | resource_not_found_exception() - | internal_server_exception() + throttling_exception() + | validation_exception() | access_denied_exception() + | internal_server_exception() + | resource_not_found_exception() @type list_tags_for_resource_errors() :: resource_not_found_exception() @@ -551,12 +597,12 @@ defmodule AWS.TimestreamInfluxDB do @type untag_resource_errors() :: resource_not_found_exception() @type update_db_instance_errors() :: - validation_exception() - | throttling_exception() - | resource_not_found_exception() + throttling_exception() + | validation_exception() + | access_denied_exception() | internal_server_exception() + | resource_not_found_exception() | conflict_exception() - | access_denied_exception() def metadata do %{ diff --git a/lib/aws/generated/verified_permissions.ex b/lib/aws/generated/verified_permissions.ex index dec9aa74..447e6d9d 100644 --- a/lib/aws/generated/verified_permissions.ex +++ b/lib/aws/generated/verified_permissions.ex @@ -1719,7 +1719,7 @@ defmodule AWS.VerifiedPermissions do OpenID Connect (OIDC) provider: ``` - Namespace::[Entity type]::[principalIdClaim]|[user principal attribute] ``` + Namespace::[Entity type]::[entityIdPrefix]|[user principal attribute] ``` , for example `MyCorp::User::MyOIDCProvider|a1b2c3d4-5678-90ab-cdef-EXAMPLE22222`. @@ -2011,8 +2011,6 @@ defmodule AWS.VerifiedPermissions do `Allow` or `Deny`, along with a list of the policies that resulted in the decision. - At this time, Verified Permissions accepts tokens from only Amazon Cognito. - Verified Permissions validates each token that is specified in a request by checking its expiration date and its signature.