# WARNING: DO NOT EDIT, AUTO-GENERATED CODE!
# See https://github.com/aws-beam/aws-codegen for more details.
defmodule AWS.CloudControl do
@moduledoc """
For more information about Amazon Web Services Cloud Control API, see the
[Amazon Web Services Cloud Control API User Guide](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html).
"""
alias AWS.Client
alias AWS.Request
@typedoc """
## Example:
list_resource_requests_output() :: %{
"NextToken" => String.t() | atom(),
"ResourceRequestStatusSummaries" => list(progress_event())
}
"""
@type list_resource_requests_output() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_resource_output() :: %{
optional("ProgressEvent") => progress_event()
}
"""
@type delete_resource_output() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_resource_request_status_input() :: %{
required("RequestToken") => String.t() | atom()
}
"""
@type get_resource_request_status_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
handler_internal_failure_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type handler_internal_failure_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
general_service_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type general_service_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
already_exists_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type already_exists_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_resource_input() :: %{
optional("ClientToken") => String.t() | atom(),
optional("RoleArn") => String.t() | atom(),
optional("TypeVersionId") => String.t() | atom(),
required("DesiredState") => String.t() | atom(),
required("TypeName") => String.t() | atom()
}
"""
@type create_resource_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
network_failure_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type network_failure_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_resource_output() :: %{
optional("ProgressEvent") => progress_event()
}
"""
@type update_resource_output() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
private_type_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type private_type_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
update_resource_input() :: %{
optional("ClientToken") => String.t() | atom(),
optional("RoleArn") => String.t() | atom(),
optional("TypeVersionId") => String.t() | atom(),
required("Identifier") => String.t() | atom(),
required("PatchDocument") => String.t() | atom(),
required("TypeName") => String.t() | atom()
}
"""
@type update_resource_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
unsupported_action_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type unsupported_action_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_resource_output() :: %{
optional("ResourceDescription") => resource_description(),
optional("TypeName") => String.t() | atom()
}
"""
@type get_resource_output() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_resources_input() :: %{
optional("MaxResults") => integer(),
optional("NextToken") => String.t() | atom(),
optional("ResourceModel") => String.t() | atom(),
optional("RoleArn") => String.t() | atom(),
optional("TypeVersionId") => String.t() | atom(),
required("TypeName") => String.t() | atom()
}
"""
@type list_resources_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
resource_not_found_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type resource_not_found_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
concurrent_operation_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type concurrent_operation_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
invalid_request_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type invalid_request_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
type_not_found_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type type_not_found_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
client_token_conflict_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type client_token_conflict_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
progress_event() :: %{
"ErrorCode" => String.t() | atom(),
"EventTime" => non_neg_integer(),
"HooksRequestToken" => String.t() | atom(),
"Identifier" => String.t() | atom(),
"Operation" => String.t() | atom(),
"OperationStatus" => String.t() | atom(),
"RequestToken" => String.t() | atom(),
"ResourceModel" => String.t() | atom(),
"RetryAfter" => non_neg_integer(),
"StatusMessage" => String.t() | atom(),
"TypeName" => String.t() | atom()
}
"""
@type progress_event() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
cancel_resource_request_output() :: %{
optional("ProgressEvent") => progress_event()
}
"""
@type cancel_resource_request_output() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_resource_requests_input() :: %{
optional("MaxResults") => integer(),
optional("NextToken") => String.t() | atom(),
optional("ResourceRequestStatusFilter") => resource_request_status_filter()
}
"""
@type list_resource_requests_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
cancel_resource_request_input() :: %{
required("RequestToken") => String.t() | atom()
}
"""
@type cancel_resource_request_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_resource_request_status_output() :: %{
optional("HooksProgressEvent") => list(hook_progress_event()),
optional("ProgressEvent") => progress_event()
}
"""
@type get_resource_request_status_output() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
resource_description() :: %{
"Identifier" => String.t() | atom(),
"Properties" => String.t() | atom()
}
"""
@type resource_description() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
hook_progress_event() :: %{
"FailureMode" => String.t() | atom(),
"HookEventTime" => non_neg_integer(),
"HookStatus" => String.t() | atom(),
"HookStatusMessage" => String.t() | atom(),
"HookTypeArn" => String.t() | atom(),
"HookTypeName" => String.t() | atom(),
"HookTypeVersionId" => String.t() | atom(),
"InvocationPoint" => String.t() | atom()
}
"""
@type hook_progress_event() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_resource_input() :: %{
optional("ClientToken") => String.t() | atom(),
optional("RoleArn") => String.t() | atom(),
optional("TypeVersionId") => String.t() | atom(),
required("Identifier") => String.t() | atom(),
required("TypeName") => String.t() | atom()
}
"""
@type delete_resource_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
not_updatable_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type not_updatable_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
not_stabilized_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type not_stabilized_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
concurrent_modification_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type concurrent_modification_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
service_limit_exceeded_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type service_limit_exceeded_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
throttling_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type throttling_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
request_token_not_found_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type request_token_not_found_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
handler_failure_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type handler_failure_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_resource_output() :: %{
optional("ProgressEvent") => progress_event()
}
"""
@type create_resource_output() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
invalid_credentials_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type invalid_credentials_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
resource_conflict_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type resource_conflict_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_resource_input() :: %{
optional("RoleArn") => String.t() | atom(),
optional("TypeVersionId") => String.t() | atom(),
required("Identifier") => String.t() | atom(),
required("TypeName") => String.t() | atom()
}
"""
@type get_resource_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_resources_output() :: %{
"NextToken" => String.t() | atom(),
"ResourceDescriptions" => list(resource_description()),
"TypeName" => String.t() | atom()
}
"""
@type list_resources_output() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
service_internal_error_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type service_internal_error_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
resource_request_status_filter() :: %{
"OperationStatuses" => list(String.t() | atom()),
"Operations" => list(String.t() | atom())
}
"""
@type resource_request_status_filter() :: %{(String.t() | atom()) => any()}
@type cancel_resource_request_errors() ::
request_token_not_found_exception() | concurrent_modification_exception()
@type create_resource_errors() ::
service_internal_error_exception()
| resource_conflict_exception()
| invalid_credentials_exception()
| handler_failure_exception()
| throttling_exception()
| service_limit_exceeded_exception()
| not_stabilized_exception()
| not_updatable_exception()
| client_token_conflict_exception()
| type_not_found_exception()
| invalid_request_exception()
| concurrent_operation_exception()
| resource_not_found_exception()
| unsupported_action_exception()
| private_type_exception()
| network_failure_exception()
| already_exists_exception()
| general_service_exception()
| handler_internal_failure_exception()
@type delete_resource_errors() ::
service_internal_error_exception()
| resource_conflict_exception()
| invalid_credentials_exception()
| handler_failure_exception()
| throttling_exception()
| service_limit_exceeded_exception()
| not_stabilized_exception()
| not_updatable_exception()
| client_token_conflict_exception()
| type_not_found_exception()
| invalid_request_exception()
| concurrent_operation_exception()
| resource_not_found_exception()
| unsupported_action_exception()
| private_type_exception()
| network_failure_exception()
| already_exists_exception()
| general_service_exception()
| handler_internal_failure_exception()
@type get_resource_errors() ::
service_internal_error_exception()
| resource_conflict_exception()
| invalid_credentials_exception()
| handler_failure_exception()
| throttling_exception()
| service_limit_exceeded_exception()
| not_stabilized_exception()
| not_updatable_exception()
| type_not_found_exception()
| invalid_request_exception()
| resource_not_found_exception()
| unsupported_action_exception()
| private_type_exception()
| network_failure_exception()
| already_exists_exception()
| general_service_exception()
| handler_internal_failure_exception()
@type get_resource_request_status_errors() :: request_token_not_found_exception()
@type list_resources_errors() ::
service_internal_error_exception()
| resource_conflict_exception()
| invalid_credentials_exception()
| handler_failure_exception()
| throttling_exception()
| service_limit_exceeded_exception()
| not_stabilized_exception()
| not_updatable_exception()
| type_not_found_exception()
| invalid_request_exception()
| resource_not_found_exception()
| unsupported_action_exception()
| private_type_exception()
| network_failure_exception()
| already_exists_exception()
| general_service_exception()
| handler_internal_failure_exception()
@type update_resource_errors() ::
service_internal_error_exception()
| resource_conflict_exception()
| invalid_credentials_exception()
| handler_failure_exception()
| throttling_exception()
| service_limit_exceeded_exception()
| not_stabilized_exception()
| not_updatable_exception()
| client_token_conflict_exception()
| type_not_found_exception()
| invalid_request_exception()
| concurrent_operation_exception()
| resource_not_found_exception()
| unsupported_action_exception()
| private_type_exception()
| network_failure_exception()
| already_exists_exception()
| general_service_exception()
| handler_internal_failure_exception()
def metadata do
%{
api_version: "2021-09-30",
content_type: "application/x-amz-json-1.0",
credential_scope: nil,
endpoint_prefix: "cloudcontrolapi",
global?: false,
hostname: nil,
protocol: "json",
service_id: "CloudControl",
signature_version: "v4",
signing_name: "cloudcontrolapi",
target_prefix: "CloudApiService"
}
end
@doc """
Cancels the specified resource operation request.
For more information, see [Canceling resource operation requests](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations-manage-requests.html#resource-operations-manage-requests-cancel)
in the
*Amazon Web Services Cloud Control API User Guide*.
Only resource operations requests with a status of `PENDING` or
`IN_PROGRESS` can be canceled.
"""
@spec cancel_resource_request(map(), cancel_resource_request_input(), list()) ::
{:ok, cancel_resource_request_output(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, cancel_resource_request_errors()}
def cancel_resource_request(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CancelResourceRequest", input, options)
end
@doc """
Creates the specified resource.
For more information, see [Creating a resource](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations-create.html)
in the *Amazon Web Services Cloud Control API User Guide*.
After you have initiated a resource creation request, you can monitor the
progress of your
request by calling
[GetResourceRequestStatus](https://docs.aws.amazon.com/cloudcontrolapi/latest/APIReference/API_GetResourceRequestStatus.html)
using the `RequestToken` of the
`ProgressEvent` type returned by `CreateResource`.
"""
@spec create_resource(map(), create_resource_input(), list()) ::
{:ok, create_resource_output(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, create_resource_errors()}
def create_resource(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CreateResource", input, options)
end
@doc """
Deletes the specified resource.
For details, see [Deleting a resource](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations-delete.html)
in the *Amazon Web Services Cloud Control API User Guide*.
After you have initiated a resource deletion request, you can monitor the
progress of your
request by calling
[GetResourceRequestStatus](https://docs.aws.amazon.com/cloudcontrolapi/latest/APIReference/API_GetResourceRequestStatus.html)
using the `RequestToken` of the
`ProgressEvent` returned by `DeleteResource`.
"""
@spec delete_resource(map(), delete_resource_input(), list()) ::
{:ok, delete_resource_output(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, delete_resource_errors()}
def delete_resource(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DeleteResource", input, options)
end
@doc """
Returns information about the current state of the specified resource.
For details, see
[Reading a resource's current state](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations-read.html).
You can use this action to return information about an existing resource in your
account
and Amazon Web Services Region, whether those resources were provisioned using
Cloud Control API.
"""
@spec get_resource(map(), get_resource_input(), list()) ::
{:ok, get_resource_output(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, get_resource_errors()}
def get_resource(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "GetResource", input, options)
end
@doc """
Returns the current status of a resource operation request.
For more information, see
[Tracking the progress of resource operation requests](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations-manage-requests.html#resource-operations-manage-requests-track)
in the
*Amazon Web Services Cloud Control API User Guide*.
"""
@spec get_resource_request_status(map(), get_resource_request_status_input(), list()) ::
{:ok, get_resource_request_status_output(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, get_resource_request_status_errors()}
def get_resource_request_status(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "GetResourceRequestStatus", input, options)
end
@doc """
Returns existing resource operation requests.
This includes requests of all status types.
For more information, see [Listing active resource operation requests](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations-manage-requests.html#resource-operations-manage-requests-list)
in the
*Amazon Web Services Cloud Control API User Guide*.
Resource operation requests expire after 7 days.
"""
@spec list_resource_requests(map(), list_resource_requests_input(), list()) ::
{:ok, list_resource_requests_output(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
def list_resource_requests(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListResourceRequests", input, options)
end
@doc """
Returns information about the specified resources.
For more information, see [Discovering resources](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations-list.html)
in the *Amazon Web Services Cloud Control API User Guide*.
You can use this action to return information about existing resources in your
account and
Amazon Web Services Region, whether those resources were provisioned using Cloud
Control API.
"""
@spec list_resources(map(), list_resources_input(), list()) ::
{:ok, list_resources_output(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_resources_errors()}
def list_resources(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListResources", input, options)
end
@doc """
Updates the specified property values in the resource.
You specify your resource property updates as a list of patch operations
contained in a
JSON patch document that adheres to the [
*RFC 6902 - JavaScript Object
Notation (JSON) Patch*
](https://datatracker.ietf.org/doc/html/rfc6902) standard.
For details on how Cloud Control API performs resource update operations, see
[Updating a resource](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/resource-operations-update.html)
in the *Amazon Web Services Cloud Control API User Guide*.
After you have initiated a resource update request, you can monitor the progress
of your
request by calling
[GetResourceRequestStatus](https://docs.aws.amazon.com/cloudcontrolapi/latest/APIReference/API_GetResourceRequestStatus.html) using the `RequestToken` of the
`ProgressEvent` returned by `UpdateResource`.
For more information about the properties of a specific resource, refer to the
related
topic for the resource in the [Resource and property types
reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)
in the *CloudFormation Users Guide*.
"""
@spec update_resource(map(), update_resource_input(), list()) ::
{:ok, update_resource_output(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, update_resource_errors()}
def update_resource(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "UpdateResource", input, options)
end
end