# WARNING: DO NOT EDIT, AUTO-GENERATED CODE!
# See https://github.com/aws-beam/aws-codegen for more details.
defmodule AWS.AppConfigData do
@moduledoc """
AppConfig Data provides the data plane APIs your application uses to retrieve
configuration data.
Here's how it works:
Your application retrieves configuration data by first establishing a
configuration
session using the AppConfig Data `StartConfigurationSession` API action.
Your session's client then makes periodic calls to `GetLatestConfiguration`
to check for and retrieve the latest data available.
When calling `StartConfigurationSession`, your code sends the following
information:
*
Identifiers (ID or name) of an AppConfig application, environment, and
configuration profile that the session tracks.
*
(Optional) The minimum amount of time the session's client must wait between
calls
to `GetLatestConfiguration`.
In response, AppConfig provides an `InitialConfigurationToken` to be given to
the session's client and used the first time it calls `GetLatestConfiguration`
for that session.
This token should only be used once in your first call to
`GetLatestConfiguration`. You *must* use the new token
in the `GetLatestConfiguration` response
(`NextPollConfigurationToken`) in each subsequent call to
`GetLatestConfiguration`.
When calling `GetLatestConfiguration`, your client code sends the most recent
`ConfigurationToken` value it has and receives in response:
*
`NextPollConfigurationToken`: the `ConfigurationToken` value
to use on the next call to `GetLatestConfiguration`.
*
`NextPollIntervalInSeconds`: the duration the client should wait before
making its next call to `GetLatestConfiguration`. This duration may vary
over the course of the session, so it should be used instead of the value sent
on the
`StartConfigurationSession` call.
*
The configuration: the latest data intended for the session. This may be empty
if
the client already has the latest version of the configuration.
The `InitialConfigurationToken` and
`NextPollConfigurationToken` should only be used once. To support long poll
use cases, the tokens are valid for up to 24 hours. If a
`GetLatestConfiguration` call uses an expired token, the system returns
`BadRequestException`.
For more information and to view example CLI commands that show how to retrieve
a
configuration using the AppConfig Data `StartConfigurationSession` and
`GetLatestConfiguration` API actions, see [Retrieving the configuration](http://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-retrieving-the-configuration)
in the *AppConfig User Guide*.
"""
alias AWS.Client
alias AWS.Request
@typedoc """
## Example:
bad_request_exception() :: %{
"Details" => list(),
"Message" => String.t() | atom(),
"Reason" => String.t() | atom()
}
"""
@type bad_request_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_latest_configuration_request() :: %{
required("ConfigurationToken") => String.t() | atom()
}
"""
@type get_latest_configuration_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_latest_configuration_response() :: %{
optional("Configuration") => binary(),
optional("ContentType") => String.t() | atom(),
optional("NextPollConfigurationToken") => String.t() | atom(),
optional("NextPollIntervalInSeconds") => integer(),
optional("VersionLabel") => String.t() | atom()
}
"""
@type get_latest_configuration_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
internal_server_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type internal_server_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
invalid_parameter_detail() :: %{
"Problem" => String.t() | atom()
}
"""
@type invalid_parameter_detail() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
resource_not_found_exception() :: %{
"Message" => String.t() | atom(),
"ReferencedBy" => map(),
"ResourceType" => String.t() | atom()
}
"""
@type resource_not_found_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
start_configuration_session_request() :: %{
optional("RequiredMinimumPollIntervalInSeconds") => integer(),
required("ApplicationIdentifier") => String.t() | atom(),
required("ConfigurationProfileIdentifier") => String.t() | atom(),
required("EnvironmentIdentifier") => String.t() | atom()
}
"""
@type start_configuration_session_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
start_configuration_session_response() :: %{
optional("InitialConfigurationToken") => String.t() | atom()
}
"""
@type start_configuration_session_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
throttling_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type throttling_exception() :: %{(String.t() | atom()) => any()}
@type get_latest_configuration_errors() ::
throttling_exception()
| resource_not_found_exception()
| internal_server_exception()
| bad_request_exception()
@type start_configuration_session_errors() ::
throttling_exception()
| resource_not_found_exception()
| internal_server_exception()
| bad_request_exception()
def metadata do
%{
api_version: "2021-11-11",
content_type: "application/x-amz-json-1.1",
credential_scope: nil,
endpoint_prefix: "appconfigdata",
global?: false,
hostname: nil,
protocol: "rest-json",
service_id: "AppConfigData",
signature_version: "v4",
signing_name: "appconfig",
target_prefix: nil
}
end
@doc """
Retrieves the latest deployed configuration.
This API may return empty configuration
data if the client already has the latest version. For more information about
this API
action and to view example CLI commands that show how to use it with the
`StartConfigurationSession` API action, see [Retrieving the configuration](http://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-retrieving-the-configuration)
in the *AppConfig User Guide*.
Note the following important information.
Each configuration token is only valid for one call to
`GetLatestConfiguration`. The `GetLatestConfiguration`
response includes a `NextPollConfigurationToken` that should always
replace the token used for the just-completed call in preparation for the next
one.
`GetLatestConfiguration` is a priced call. For more information, see
[Pricing](https://aws.amazon.com/systems-manager/pricing/).
"""
@spec get_latest_configuration(map(), String.t() | atom(), list()) ::
{:ok, get_latest_configuration_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, get_latest_configuration_errors()}
def get_latest_configuration(%Client{} = client, configuration_token, options \\ []) do
url_path = "/configuration"
headers = []
query_params = []
query_params =
if !is_nil(configuration_token) do
[{"configuration_token", configuration_token} | query_params]
else
query_params
end
options =
Keyword.put(
options,
:response_header_parameters,
[
{"Content-Type", "ContentType"},
{"Next-Poll-Configuration-Token", "NextPollConfigurationToken"},
{"Next-Poll-Interval-In-Seconds", "NextPollIntervalInSeconds"},
{"Version-Label", "VersionLabel"}
]
)
meta = metadata()
Request.request_rest(client, meta, :get, url_path, query_params, headers, nil, options, 200)
end
@doc """
Starts a configuration session used to retrieve a deployed configuration.
For more
information about this API action and to view example CLI commands that show how
to use
it with the `GetLatestConfiguration` API action, see [Retrieving the configuration](http://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-retrieving-the-configuration)
in the *AppConfig User Guide*.
"""
@spec start_configuration_session(map(), start_configuration_session_request(), list()) ::
{:ok, start_configuration_session_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, start_configuration_session_errors()}
def start_configuration_session(%Client{} = client, input, options \\ []) do
url_path = "/configurationsessions"
headers = []
custom_headers = []
query_params = []
meta = metadata()
Request.request_rest(
client,
meta,
:post,
url_path,
query_params,
custom_headers ++ headers,
input,
options,
201
)
end
end