text:
# This file is auto-generated by AWSMetadata.jl
using AWS
using AWS.AWSServices: mediaconnect
using AWS.Compat
using AWS.UUIDs

"""
    AddFlowOutputs()

Adds outputs to an existing flow. You can create up to 50 outputs per flow.

# Required Parameters
- `flowArn`: The flow that you want to add outputs to.
- `outputs`: A list of outputs that you want to add.

"""
add_flow_outputs(flowArn, outputs; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows/$(flowArn)/outputs", Dict{String, Any}("outputs"=>outputs); aws_config=aws_config)
add_flow_outputs(flowArn, outputs, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows/$(flowArn)/outputs", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("outputs"=>outputs), args)); aws_config=aws_config)

"""
    AddFlowSources()

Adds Sources to flow

# Required Parameters
- `flowArn`: The flow that you want to mutate.
- `sources`: A list of sources that you want to add.

"""
add_flow_sources(flowArn, sources; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows/$(flowArn)/source", Dict{String, Any}("sources"=>sources); aws_config=aws_config)
add_flow_sources(flowArn, sources, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows/$(flowArn)/source", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("sources"=>sources), args)); aws_config=aws_config)

"""
    AddFlowVpcInterfaces()

Adds VPC interfaces to flow

# Required Parameters
- `flowArn`: The flow that you want to mutate.
- `vpcInterfaces`: A list of VPC interfaces that you want to add.

"""
add_flow_vpc_interfaces(flowArn, vpcInterfaces; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows/$(flowArn)/vpcInterfaces", Dict{String, Any}("vpcInterfaces"=>vpcInterfaces); aws_config=aws_config)
add_flow_vpc_interfaces(flowArn, vpcInterfaces, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows/$(flowArn)/vpcInterfaces", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("vpcInterfaces"=>vpcInterfaces), args)); aws_config=aws_config)

"""
    CreateFlow()

Creates a new flow. The request must include one source. The request optionally can include outputs (up to 50) and entitlements (up to 50).

# Required Parameters
- `name`: The name of the flow.

# Optional Parameters
- `availabilityZone`: The Availability Zone that you want to create the flow in. These options are limited to the Availability Zones within the current AWS Region.
- `entitlements`: The entitlements that you want to grant on a flow.
- `outputs`: The outputs that you want to add to this flow.
- `source`:
- `sourceFailoverConfig`:
- `sources`:
- `vpcInterfaces`: The VPC interfaces you want on the flow.
"""
create_flow(name; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows", Dict{String, Any}("name"=>name); aws_config=aws_config)
create_flow(name, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("name"=>name), args)); aws_config=aws_config)

"""
    DeleteFlow()

Deletes a flow. Before you can delete a flow, you must stop the flow.

# Required Parameters
- `flowArn`: The ARN of the flow that you want to delete.

"""
delete_flow(flowArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("DELETE", "/v1/flows/$(flowArn)"; aws_config=aws_config)
delete_flow(flowArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("DELETE", "/v1/flows/$(flowArn)", args; aws_config=aws_config)

"""
    DescribeFlow()

Displays the details of a flow. The response includes the flow ARN, name, and Availability Zone, as well as details about the source, outputs, and entitlements.

# Required Parameters
- `flowArn`: The ARN of the flow that you want to describe.

"""
describe_flow(flowArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/flows/$(flowArn)"; aws_config=aws_config)
describe_flow(flowArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/flows/$(flowArn)", args; aws_config=aws_config)

"""
    DescribeOffering()

Displays the details of an offering. The response includes the offering description, duration, outbound bandwidth, price, and Amazon Resource Name (ARN).

# Required Parameters
- `offeringArn`: The Amazon Resource Name (ARN) of the offering.

"""
describe_offering(offeringArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/offerings/$(offeringArn)"; aws_config=aws_config)
describe_offering(offeringArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/offerings/$(offeringArn)", args; aws_config=aws_config)

"""
    DescribeReservation()

Displays the details of a reservation. The response includes the reservation name, state, start date and time, and the details of the offering that make up the rest of the reservation (such as price, duration, and outbound bandwidth).

# Required Parameters
- `reservationArn`: The Amazon Resource Name (ARN) of the reservation.

"""
describe_reservation(reservationArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/reservations/$(reservationArn)"; aws_config=aws_config)
describe_reservation(reservationArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/reservations/$(reservationArn)", args; aws_config=aws_config)

"""
    GrantFlowEntitlements()

Grants entitlements to an existing flow.

# Required Parameters
- `entitlements`: The list of entitlements that you want to grant.
- `flowArn`: The flow that you want to grant entitlements on.

"""
grant_flow_entitlements(entitlements, flowArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows/$(flowArn)/entitlements", Dict{String, Any}("entitlements"=>entitlements); aws_config=aws_config)
grant_flow_entitlements(entitlements, flowArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows/$(flowArn)/entitlements", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("entitlements"=>entitlements), args)); aws_config=aws_config)

"""
    ListEntitlements()

Displays a list of all entitlements that have been granted to this account. This request returns 20 results per page.

# Optional Parameters
- `maxResults`: The maximum number of results to return per API request. For example, you submit a ListEntitlements request with MaxResults set at 5. Although 20 items match your request, the service returns no more than the first 5 items. (The service also returns a NextToken value that you can use to fetch the next batch of results.) The service might return fewer results than the MaxResults value. If MaxResults is not included in the request, the service defaults to pagination with a maximum of 20 results per page.
- `nextToken`: The token that identifies which batch of results that you want to see. For example, you submit a ListEntitlements request with MaxResults set at 5. The service returns the first batch of results (up to 5) and a NextToken value. To see the next batch of results, you can submit the ListEntitlements request a second time and specify the NextToken value.
"""
list_entitlements(; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/entitlements"; aws_config=aws_config)
list_entitlements(args::AbstractDict{String, Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/entitlements", args; aws_config=aws_config)

"""
    ListFlows()

Displays a list of flows that are associated with this account. This request returns a paginated result.

# Optional Parameters
- `maxResults`: The maximum number of results to return per API request. For example, you submit a ListFlows request with MaxResults set at 5. Although 20 items match your request, the service returns no more than the first 5 items. (The service also returns a NextToken value that you can use to fetch the next batch of results.) The service might return fewer results than the MaxResults value. If MaxResults is not included in the request, the service defaults to pagination with a maximum of 10 results per page.
- `nextToken`: The token that identifies which batch of results that you want to see. For example, you submit a ListFlows request with MaxResults set at 5. The service returns the first batch of results (up to 5) and a NextToken value. To see the next batch of results, you can submit the ListFlows request a second time and specify the NextToken value.
"""
list_flows(; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/flows"; aws_config=aws_config)
list_flows(args::AbstractDict{String, Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/flows", args; aws_config=aws_config)

"""
    ListOfferings()

Displays a list of all offerings that are available to this account in the current AWS Region. If you have an active reservation (which means you've purchased an offering that has already started and hasn't expired yet), your account isn't eligible for other offerings.

# Optional Parameters
- `maxResults`: The maximum number of results to return per API request. For example, you submit a ListOfferings request with MaxResults set at 5. Although 20 items match your request, the service returns no more than the first 5 items. (The service also returns a NextToken value that you can use to fetch the next batch of results.) The service might return fewer results than the MaxResults value. If MaxResults is not included in the request, the service defaults to pagination with a maximum of 10 results per page.
- `nextToken`: The token that identifies which batch of results that you want to see. For example, you submit a ListOfferings request with MaxResults set at 5. The service returns the first batch of results (up to 5) and a NextToken value. To see the next batch of results, you can submit the ListOfferings request a second time and specify the NextToken value.
"""
list_offerings(; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/offerings"; aws_config=aws_config)
list_offerings(args::AbstractDict{String, Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/offerings", args; aws_config=aws_config)

"""
    ListReservations()

Displays a list of all reservations that have been purchased by this account in the current AWS Region. This list includes all reservations in all states (such as active and expired).

# Optional Parameters
- `maxResults`: The maximum number of results to return per API request. For example, you submit a ListReservations request with MaxResults set at 5. Although 20 items match your request, the service returns no more than the first 5 items. (The service also returns a NextToken value that you can use to fetch the next batch of results.) The service might return fewer results than the MaxResults value. If MaxResults is not included in the request, the service defaults to pagination with a maximum of 10 results per page.
- `nextToken`: The token that identifies which batch of results that you want to see. For example, you submit a ListReservations request with MaxResults set at 5. The service returns the first batch of results (up to 5) and a NextToken value. To see the next batch of results, you can submit the ListOfferings request a second time and specify the NextToken value.
"""
list_reservations(; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/reservations"; aws_config=aws_config)
list_reservations(args::AbstractDict{String, Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/v1/reservations", args; aws_config=aws_config)

"""
    ListTagsForResource()

List all tags on an AWS Elemental MediaConnect resource

# Required Parameters
- `resourceArn`: The Amazon Resource Name (ARN) that identifies the AWS Elemental MediaConnect resource for which to list the tags.

"""
list_tags_for_resource(resourceArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/tags/$(resourceArn)"; aws_config=aws_config)
list_tags_for_resource(resourceArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("GET", "/tags/$(resourceArn)", args; aws_config=aws_config)

"""
    PurchaseOffering()

Submits a request to purchase an offering. If you already have an active reservation, you can't purchase another offering.

# Required Parameters
- `offeringArn`: The Amazon Resource Name (ARN) of the offering.
- `reservationName`: The name that you want to use for the reservation.
- `start`: The date and time that you want the reservation to begin, in Coordinated Universal Time (UTC). You can specify any date and time between 12:00am on the first day of the current month to the current time on today's date, inclusive. Specify the start in a 24-hour notation. Use the following format: YYYY-MM-DDTHH:mm:SSZ, where T and Z are literal characters. For example, to specify 11:30pm on March 5, 2020, enter 2020-03-05T23:30:00Z.

"""
purchase_offering(offeringArn, reservationName, start; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/offerings/$(offeringArn)", Dict{String, Any}("reservationName"=>reservationName, "start"=>start); aws_config=aws_config)
purchase_offering(offeringArn, reservationName, start, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/offerings/$(offeringArn)", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("reservationName"=>reservationName, "start"=>start), args)); aws_config=aws_config)

"""
    RemoveFlowOutput()

Removes an output from an existing flow. This request can be made only on an output that does not have an entitlement associated with it. If the output has an entitlement, you must revoke the entitlement instead. When an entitlement is revoked from a flow, the service automatically removes the associated output.

# Required Parameters
- `flowArn`: The flow that you want to remove an output from.
- `outputArn`: The ARN of the output that you want to remove.

"""
remove_flow_output(flowArn, outputArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("DELETE", "/v1/flows/$(flowArn)/outputs/$(outputArn)"; aws_config=aws_config)
remove_flow_output(flowArn, outputArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("DELETE", "/v1/flows/$(flowArn)/outputs/$(outputArn)", args; aws_config=aws_config)

"""
    RemoveFlowSource()

Removes a source from an existing flow. This request can be made only if there is more than one source on the flow.

# Required Parameters
- `flowArn`: The flow that you want to remove a source from.
- `sourceArn`: The ARN of the source that you want to remove.

"""
remove_flow_source(flowArn, sourceArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("DELETE", "/v1/flows/$(flowArn)/source/$(sourceArn)"; aws_config=aws_config)
remove_flow_source(flowArn, sourceArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("DELETE", "/v1/flows/$(flowArn)/source/$(sourceArn)", args; aws_config=aws_config)

"""
    RemoveFlowVpcInterface()

Removes a VPC Interface from an existing flow. This request can be made only on a VPC interface that does not have a Source or Output associated with it. If the VPC interface is referenced by a Source or Output, you must first delete or update the Source or Output to no longer reference the VPC interface.

# Required Parameters
- `flowArn`: The flow that you want to remove a VPC interface from.
- `vpcInterfaceName`: The name of the VPC interface that you want to remove.

"""
remove_flow_vpc_interface(flowArn, vpcInterfaceName; aws_config::AWSConfig=global_aws_config()) = mediaconnect("DELETE", "/v1/flows/$(flowArn)/vpcInterfaces/$(vpcInterfaceName)"; aws_config=aws_config)
remove_flow_vpc_interface(flowArn, vpcInterfaceName, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("DELETE", "/v1/flows/$(flowArn)/vpcInterfaces/$(vpcInterfaceName)", args; aws_config=aws_config)

"""
    RevokeFlowEntitlement()

Revokes an entitlement from a flow. Once an entitlement is revoked, the content becomes unavailable to the subscriber and the associated output is removed.

# Required Parameters
- `entitlementArn`: The ARN of the entitlement that you want to revoke.
- `flowArn`: The flow that you want to revoke an entitlement from.

"""
revoke_flow_entitlement(entitlementArn, flowArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("DELETE", "/v1/flows/$(flowArn)/entitlements/$(entitlementArn)"; aws_config=aws_config)
revoke_flow_entitlement(entitlementArn, flowArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("DELETE", "/v1/flows/$(flowArn)/entitlements/$(entitlementArn)", args; aws_config=aws_config)

"""
    StartFlow()

Starts a flow.

# Required Parameters
- `flowArn`: The ARN of the flow that you want to start.

"""
start_flow(flowArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows/start/$(flowArn)"; aws_config=aws_config)
start_flow(flowArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows/start/$(flowArn)", args; aws_config=aws_config)

"""
    StopFlow()

Stops a flow.

# Required Parameters
- `flowArn`: The ARN of the flow that you want to stop.

"""
stop_flow(flowArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows/stop/$(flowArn)"; aws_config=aws_config)
stop_flow(flowArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/v1/flows/stop/$(flowArn)", args; aws_config=aws_config)

"""
    TagResource()

Associates the specified tags to a resource with the specified resourceArn. If existing tags on a resource are not specified in the request parameters, they are not changed. When a resource is deleted, the tags associated with that resource are deleted as well.

# Required Parameters
- `resourceArn`: The Amazon Resource Name (ARN) that identifies the AWS Elemental MediaConnect resource to which to add tags.
- `tags`: A map from tag keys to values. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.

"""
tag_resource(resourceArn, tags; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/tags/$(resourceArn)", Dict{String, Any}("tags"=>tags); aws_config=aws_config)
tag_resource(resourceArn, tags, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("POST", "/tags/$(resourceArn)", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("tags"=>tags), args)); aws_config=aws_config)

"""
    UntagResource()

Deletes specified tags from a resource.

# Required Parameters
- `resourceArn`: The Amazon Resource Name (ARN) that identifies the AWS Elemental MediaConnect resource from which to delete tags.
- `tagKeys`: The keys of the tags to be removed.

"""
untag_resource(resourceArn, tagKeys; aws_config::AWSConfig=global_aws_config()) = mediaconnect("DELETE", "/tags/$(resourceArn)", Dict{String, Any}("tagKeys"=>tagKeys); aws_config=aws_config)
untag_resource(resourceArn, tagKeys, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("DELETE", "/tags/$(resourceArn)", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("tagKeys"=>tagKeys), args)); aws_config=aws_config)

"""
    UpdateFlow()

Updates flow

# Required Parameters
- `flowArn`: The flow that you want to update.

# Optional Parameters
- `sourceFailoverConfig`:
"""
update_flow(flowArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("PUT", "/v1/flows/$(flowArn)"; aws_config=aws_config)
update_flow(flowArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("PUT", "/v1/flows/$(flowArn)", args; aws_config=aws_config)

"""
    UpdateFlowEntitlement()

You can change an entitlement's description, subscribers, and encryption. If you change the subscribers, the service will remove the outputs that are are used by the subscribers that are removed.

# Required Parameters
- `entitlementArn`: The ARN of the entitlement that you want to update.
- `flowArn`: The flow that is associated with the entitlement that you want to update.

# Optional Parameters
- `description`: A description of the entitlement. This description appears only on the AWS Elemental MediaConnect console and will not be seen by the subscriber or end user.
- `encryption`: The type of encryption that will be used on the output associated with this entitlement.
- `entitlementStatus`: An indication of whether you want to enable the entitlement to allow access, or disable it to stop streaming content to the subscriber’s flow temporarily. If you don’t specify the entitlementStatus field in your request, MediaConnect leaves the value unchanged.
- `subscribers`: The AWS account IDs that you want to share your content with. The receiving accounts (subscribers) will be allowed to create their own flow using your content as the source.
"""
update_flow_entitlement(entitlementArn, flowArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("PUT", "/v1/flows/$(flowArn)/entitlements/$(entitlementArn)"; aws_config=aws_config)
update_flow_entitlement(entitlementArn, flowArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("PUT", "/v1/flows/$(flowArn)/entitlements/$(entitlementArn)", args; aws_config=aws_config)

"""
    UpdateFlowOutput()

Updates an existing flow output.

# Required Parameters
- `flowArn`: The flow that is associated with the output that you want to update.
- `outputArn`: The ARN of the output that you want to update.

# Optional Parameters
- `cidrAllowList`: The range of IP addresses that should be allowed to initiate output requests to this flow. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.
- `description`: A description of the output. This description appears only on the AWS Elemental MediaConnect console and will not be seen by the end user.
- `destination`: The IP address where you want to send the output.
- `encryption`: The type of key used for the encryption. If no keyType is provided, the service will use the default setting (static-key).
- `maxLatency`: The maximum latency in milliseconds for Zixi-based streams.
- `port`: The port to use when content is distributed to this output.
- `protocol`: The protocol to use for the output.
- `remoteId`: The remote ID for the Zixi-pull stream.
- `smoothingLatency`: The smoothing latency in milliseconds for RIST, RTP, and RTP-FEC streams.
- `streamId`: The stream ID that you want to use for this transport. This parameter applies only to Zixi-based streams.
- `vpcInterfaceAttachment`: The name of the VPC interface attachment to use for this output.
"""
update_flow_output(flowArn, outputArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("PUT", "/v1/flows/$(flowArn)/outputs/$(outputArn)"; aws_config=aws_config)
update_flow_output(flowArn, outputArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("PUT", "/v1/flows/$(flowArn)/outputs/$(outputArn)", args; aws_config=aws_config)

"""
    UpdateFlowSource()

Updates the source of a flow.

# Required Parameters
- `flowArn`: The flow that is associated with the source that you want to update.
- `sourceArn`: The ARN of the source that you want to update.

# Optional Parameters
- `decryption`: The type of encryption used on the content ingested from this source.
- `description`: A description for the source. This value is not used or seen outside of the current AWS Elemental MediaConnect account.
- `entitlementArn`: The ARN of the entitlement that allows you to subscribe to this flow. The entitlement is set by the flow originator, and the ARN is generated as part of the originator's flow.
- `ingestPort`: The port that the flow will be listening on for incoming content.
- `maxBitrate`: The smoothing max bitrate for RIST, RTP, and RTP-FEC streams.
- `maxLatency`: The maximum latency in milliseconds. This parameter applies only to RIST-based and Zixi-based streams.
- `protocol`: The protocol that is used by the source.
- `streamId`: The stream ID that you want to use for this transport. This parameter applies only to Zixi-based streams.
- `vpcInterfaceName`: The name of the VPC Interface to configure this Source with.
- `whitelistCidr`: The range of IP addresses that should be allowed to contribute content to your source. These IP addresses should be in the form of a Classless Inter-Domain Routing (CIDR) block; for example, 10.0.0.0/16.
"""
update_flow_source(flowArn, sourceArn; aws_config::AWSConfig=global_aws_config()) = mediaconnect("PUT", "/v1/flows/$(flowArn)/source/$(sourceArn)"; aws_config=aws_config)
update_flow_source(flowArn, sourceArn, args::AbstractDict{String, <:Any}; aws_config::AWSConfig=global_aws_config()) = mediaconnect("PUT", "/v1/flows/$(flowArn)/source/$(sourceArn)", args; aws_config=aws_config)


text:
#==============================================================================#
# ApplicationAutoScaling.jl
#
# This file is generated from:
# https://github.com/aws/aws-sdk-js/blob/master/apis/application-autoscaling-2016-02-06.normal.json
#==============================================================================#

__precompile__()

module ApplicationAutoScaling

using AWSCore

"""
    using AWSSDK.ApplicationAutoScaling.delete_scaling_policy
    delete_scaling_policy([::AWSConfig], arguments::Dict)
    delete_scaling_policy([::AWSConfig]; PolicyName=, ServiceNamespace=, ResourceId=, ScalableDimension=)

    using AWSCore.Services.application_autoscaling
    application_autoscaling([::AWSConfig], "DeleteScalingPolicy", arguments::Dict)
    application_autoscaling([::AWSConfig], "DeleteScalingPolicy", PolicyName=, ServiceNamespace=, ResourceId=, ScalableDimension=)

# DeleteScalingPolicy Operation

Deletes the specified Application Auto Scaling scaling policy.

Deleting a policy deletes the underlying alarm action, but does not delete the CloudWatch alarm associated with the scaling policy, even if it no longer has an associated action.

To create a scaling policy or update an existing one, see [PutScalingPolicy](@ref).

# Arguments

## `PolicyName = ::String` -- *Required*
The name of the scaling policy.

## `ServiceNamespace = "ecs", "elasticmapreduce", "ec2", "appstream", "dynamodb", "rds", "sagemaker" or "custom-resource"` -- *Required*
The namespace of the AWS service that provides the resource or `custom-resource` for a resource provided by your own application or service. For more information, see [AWS Service Namespaces](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) in the *Amazon Web Services General Reference*.

## `ResourceId = ::String` -- *Required*
The identifier of the resource associated with the scalable target. This string consists of the resource type and unique identifier.

*   ECS service - The resource type is `service` and the unique identifier is the cluster name and service name. Example: `service/default/sample-webapp`.

*   Spot fleet request - The resource type is `spot-fleet-request` and the unique identifier is the Spot fleet request ID. Example: `spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE`.

*   EMR cluster - The resource type is `instancegroup` and the unique identifier is the cluster ID and instance group ID. Example: `instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0`.

*   AppStream 2.0 fleet - The resource type is `fleet` and the unique identifier is the fleet name. Example: `fleet/sample-fleet`.

*   DynamoDB table - The resource type is `table` and the unique identifier is the resource ID. Example: `table/my-table`.

*   DynamoDB global secondary index - The resource type is `index` and the unique identifier is the resource ID. Example: `table/my-table/index/my-table-index`.

*   Aurora DB cluster - The resource type is `cluster` and the unique identifier is the cluster name. Example: `cluster:my-db-cluster`.

*   Amazon SageMaker endpoint variants - The resource type is `variant` and the unique identifier is the resource ID. Example: `endpoint/my-end-point/variant/KMeansClustering`.

*   Custom resources are not supported with a resource type. This parameter must specify the `OutputValue` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider.

## `ScalableDimension = "ecs:service:DesiredCount", "ec2:spot-fleet-request:TargetCapacity", "elasticmapreduce:instancegroup:InstanceCount", "appstream:fleet:DesiredCapacity", "dynamodb:table:ReadCapacityUnits", "dynamodb:table:WriteCapacityUnits", "dynamodb:index:ReadCapacityUnits", "dynamodb:index:WriteCapacityUnits", "rds:cluster:ReadReplicaCount", "sagemaker:variant:DesiredInstanceCount" or "custom-resource:ResourceType:Property"` -- *Required*
The scalable dimension. This string consists of the service namespace, resource type, and scaling property.

*   `ecs:service:DesiredCount` - The desired task count of an ECS service.

*   `ec2:spot-fleet-request:TargetCapacity` - The target capacity of a Spot fleet request.

*   `elasticmapreduce:instancegroup:InstanceCount` - The instance count of an EMR Instance Group.

*   `appstream:fleet:DesiredCapacity` - The desired capacity of an AppStream 2.0 fleet.

*   `dynamodb:table:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB table.

*   `dynamodb:table:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB table.

*   `dynamodb:index:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB global secondary index.

*   `dynamodb:index:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB global secondary index.

*   `rds:cluster:ReadReplicaCount` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition.

*   `sagemaker:variant:DesiredInstanceCount` - The number of EC2 instances for an Amazon SageMaker model endpoint variant.

*   `custom-resource:ResourceType:Property` - The scalable dimension for a custom resource provided by your own application or service.

# Returns

`DeleteScalingPolicyResponse`

# Exceptions

`ValidationException`, `ObjectNotFoundException`, `ConcurrentUpdateException` or `InternalServiceException`.

# Example: To delete a scaling policy

This example deletes a scaling policy for the Amazon ECS service called web-app, which is running in the default cluster.

Input:
```
[
    "PolicyName" => "web-app-cpu-lt-25",
    "ResourceId" => "service/default/web-app",
    "ScalableDimension" => "ecs:service:DesiredCount",
    "ServiceNamespace" => "ecs"
]
```

Output:
```
Dict(

)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/application-autoscaling-2016-02-06/DeleteScalingPolicy)
"""
@inline delete_scaling_policy(aws::AWSConfig=default_aws_config(); args...) = delete_scaling_policy(aws, args)

@inline delete_scaling_policy(aws::AWSConfig, args) = AWSCore.Services.application_autoscaling(aws, "DeleteScalingPolicy", args)

@inline delete_scaling_policy(args) = delete_scaling_policy(default_aws_config(), args)

"""
    using AWSSDK.ApplicationAutoScaling.delete_scheduled_action
    delete_scheduled_action([::AWSConfig], arguments::Dict)
    delete_scheduled_action([::AWSConfig]; ServiceNamespace=, ScheduledActionName=, ResourceId=, <keyword arguments>)

    using AWSCore.Services.application_autoscaling
    application_autoscaling([::AWSConfig], "DeleteScheduledAction", arguments::Dict)
    application_autoscaling([::AWSConfig], "DeleteScheduledAction", ServiceNamespace=, ScheduledActionName=, ResourceId=, <keyword arguments>)

# DeleteScheduledAction Operation

Deletes the specified Application Auto Scaling scheduled action.

# Arguments

## `ServiceNamespace = "ecs", "elasticmapreduce", "ec2", "appstream", "dynamodb", "rds", "sagemaker" or "custom-resource"` -- *Required*
The namespace of the AWS service that provides the resource or `custom-resource` for a resource provided by your own application or service. For more information, see [AWS Service Namespaces](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) in the *Amazon Web Services General Reference*.

## `ScheduledActionName = ::String` -- *Required*
The name of the scheduled action.

## `ResourceId = ::String` -- *Required*
The identifier of the resource associated with the scheduled action. This string consists of the resource type and unique identifier.

*   ECS service - The resource type is `service` and the unique identifier is the cluster name and service name. Example: `service/default/sample-webapp`.

*   Spot fleet request - The resource type is `spot-fleet-request` and the unique identifier is the Spot fleet request ID. Example: `spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE`.

*   EMR cluster - The resource type is `instancegroup` and the unique identifier is the cluster ID and instance group ID. Example: `instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0`.

*   AppStream 2.0 fleet - The resource type is `fleet` and the unique identifier is the fleet name. Example: `fleet/sample-fleet`.

*   DynamoDB table - The resource type is `table` and the unique identifier is the resource ID. Example: `table/my-table`.

*   DynamoDB global secondary index - The resource type is `index` and the unique identifier is the resource ID. Example: `table/my-table/index/my-table-index`.

*   Aurora DB cluster - The resource type is `cluster` and the unique identifier is the cluster name. Example: `cluster:my-db-cluster`.

*   Amazon SageMaker endpoint variants - The resource type is `variant` and the unique identifier is the resource ID. Example: `endpoint/my-end-point/variant/KMeansClustering`.

*   Custom resources are not supported with a resource type. This parameter must specify the `OutputValue` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider.

## `ScalableDimension = "ecs:service:DesiredCount", "ec2:spot-fleet-request:TargetCapacity", "elasticmapreduce:instancegroup:InstanceCount", "appstream:fleet:DesiredCapacity", "dynamodb:table:ReadCapacityUnits", "dynamodb:table:WriteCapacityUnits", "dynamodb:index:ReadCapacityUnits", "dynamodb:index:WriteCapacityUnits", "rds:cluster:ReadReplicaCount", "sagemaker:variant:DesiredInstanceCount" or "custom-resource:ResourceType:Property"`
The scalable dimension. This string consists of the service namespace, resource type, and scaling property.

*   `ecs:service:DesiredCount` - The desired task count of an ECS service.

*   `ec2:spot-fleet-request:TargetCapacity` - The target capacity of a Spot fleet request.

*   `elasticmapreduce:instancegroup:InstanceCount` - The instance count of an EMR Instance Group.

*   `appstream:fleet:DesiredCapacity` - The desired capacity of an AppStream 2.0 fleet.

*   `dynamodb:table:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB table.

*   `dynamodb:table:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB table.

*   `dynamodb:index:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB global secondary index.

*   `dynamodb:index:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB global secondary index.

*   `rds:cluster:ReadReplicaCount` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition.

*   `sagemaker:variant:DesiredInstanceCount` - The number of EC2 instances for an Amazon SageMaker model endpoint variant.

*   `custom-resource:ResourceType:Property` - The scalable dimension for a custom resource provided by your own application or service.

# Returns

`DeleteScheduledActionResponse`

# Exceptions

`ValidationException`, `ObjectNotFoundException`, `ConcurrentUpdateException` or `InternalServiceException`.

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/application-autoscaling-2016-02-06/DeleteScheduledAction)
"""
@inline delete_scheduled_action(aws::AWSConfig=default_aws_config(); args...) = delete_scheduled_action(aws, args)

@inline delete_scheduled_action(aws::AWSConfig, args) = AWSCore.Services.application_autoscaling(aws, "DeleteScheduledAction", args)

@inline delete_scheduled_action(args) = delete_scheduled_action(default_aws_config(), args)

"""
    using AWSSDK.ApplicationAutoScaling.deregister_scalable_target
    deregister_scalable_target([::AWSConfig], arguments::Dict)
    deregister_scalable_target([::AWSConfig]; ServiceNamespace=, ResourceId=, ScalableDimension=)

    using AWSCore.Services.application_autoscaling
    application_autoscaling([::AWSConfig], "DeregisterScalableTarget", arguments::Dict)
    application_autoscaling([::AWSConfig], "DeregisterScalableTarget", ServiceNamespace=, ResourceId=, ScalableDimension=)

# DeregisterScalableTarget Operation

Deregisters a scalable target.

Deregistering a scalable target deletes the scaling policies that are associated with it.

To create a scalable target or update an existing one, see [RegisterScalableTarget](@ref).

# Arguments

## `ServiceNamespace = "ecs", "elasticmapreduce", "ec2", "appstream", "dynamodb", "rds", "sagemaker" or "custom-resource"` -- *Required*
The namespace of the AWS service that provides the resource or `custom-resource` for a resource provided by your own application or service. For more information, see [AWS Service Namespaces](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) in the *Amazon Web Services General Reference*.

## `ResourceId = ::String` -- *Required*
The identifier of the resource associated with the scalable target. This string consists of the resource type and unique identifier.

*   ECS service - The resource type is `service` and the unique identifier is the cluster name and service name. Example: `service/default/sample-webapp`.

*   Spot fleet request - The resource type is `spot-fleet-request` and the unique identifier is the Spot fleet request ID. Example: `spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE`.

*   EMR cluster - The resource type is `instancegroup` and the unique identifier is the cluster ID and instance group ID. Example: `instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0`.

*   AppStream 2.0 fleet - The resource type is `fleet` and the unique identifier is the fleet name. Example: `fleet/sample-fleet`.

*   DynamoDB table - The resource type is `table` and the unique identifier is the resource ID. Example: `table/my-table`.

*   DynamoDB global secondary index - The resource type is `index` and the unique identifier is the resource ID. Example: `table/my-table/index/my-table-index`.

*   Aurora DB cluster - The resource type is `cluster` and the unique identifier is the cluster name. Example: `cluster:my-db-cluster`.

*   Amazon SageMaker endpoint variants - The resource type is `variant` and the unique identifier is the resource ID. Example: `endpoint/my-end-point/variant/KMeansClustering`.

*   Custom resources are not supported with a resource type. This parameter must specify the `OutputValue` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider.

## `ScalableDimension = "ecs:service:DesiredCount", "ec2:spot-fleet-request:TargetCapacity", "elasticmapreduce:instancegroup:InstanceCount", "appstream:fleet:DesiredCapacity", "dynamodb:table:ReadCapacityUnits", "dynamodb:table:WriteCapacityUnits", "dynamodb:index:ReadCapacityUnits", "dynamodb:index:WriteCapacityUnits", "rds:cluster:ReadReplicaCount", "sagemaker:variant:DesiredInstanceCount" or "custom-resource:ResourceType:Property"` -- *Required*
The scalable dimension associated with the scalable target. This string consists of the service namespace, resource type, and scaling property.

*   `ecs:service:DesiredCount` - The desired task count of an ECS service.

*   `ec2:spot-fleet-request:TargetCapacity` - The target capacity of a Spot fleet request.

*   `elasticmapreduce:instancegroup:InstanceCount` - The instance count of an EMR Instance Group.

*   `appstream:fleet:DesiredCapacity` - The desired capacity of an AppStream 2.0 fleet.

*   `dynamodb:table:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB table.

*   `dynamodb:table:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB table.

*   `dynamodb:index:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB global secondary index.

*   `dynamodb:index:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB global secondary index.

*   `rds:cluster:ReadReplicaCount` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition.

*   `sagemaker:variant:DesiredInstanceCount` - The number of EC2 instances for an Amazon SageMaker model endpoint variant.

*   `custom-resource:ResourceType:Property` - The scalable dimension for a custom resource provided by your own application or service.

# Returns

`DeregisterScalableTargetResponse`

# Exceptions

`ValidationException`, `ObjectNotFoundException`, `ConcurrentUpdateException` or `InternalServiceException`.

# Example: To deregister a scalable target

This example deregisters a scalable target for an Amazon ECS service called web-app that is running in the default cluster.

Input:
```
[
    "ResourceId" => "service/default/web-app",
    "ScalableDimension" => "ecs:service:DesiredCount",
    "ServiceNamespace" => "ecs"
]
```

Output:
```
Dict(

)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/application-autoscaling-2016-02-06/DeregisterScalableTarget)
"""
@inline deregister_scalable_target(aws::AWSConfig=default_aws_config(); args...) = deregister_scalable_target(aws, args)

@inline deregister_scalable_target(aws::AWSConfig, args) = AWSCore.Services.application_autoscaling(aws, "DeregisterScalableTarget", args)

@inline deregister_scalable_target(args) = deregister_scalable_target(default_aws_config(), args)

"""
    using AWSSDK.ApplicationAutoScaling.describe_scalable_targets
    describe_scalable_targets([::AWSConfig], arguments::Dict)
    describe_scalable_targets([::AWSConfig]; ServiceNamespace=, <keyword arguments>)

    using AWSCore.Services.application_autoscaling
    application_autoscaling([::AWSConfig], "DescribeScalableTargets", arguments::Dict)
    application_autoscaling([::AWSConfig], "DescribeScalableTargets", ServiceNamespace=, <keyword arguments>)

# DescribeScalableTargets Operation

Gets information about the scalable targets in the specified namespace.

You can filter the results using the `ResourceIds` and `ScalableDimension` parameters.

To create a scalable target or update an existing one, see [RegisterScalableTarget](@ref). If you are no longer using a scalable target, you can deregister it using [DeregisterScalableTarget](@ref).

# Arguments

## `ServiceNamespace = "ecs", "elasticmapreduce", "ec2", "appstream", "dynamodb", "rds", "sagemaker" or "custom-resource"` -- *Required*
The namespace of the AWS service that provides the resource or `custom-resource` for a resource provided by your own application or service. For more information, see [AWS Service Namespaces](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) in the *Amazon Web Services General Reference*.

## `ResourceIds = [::String, ...]`
The identifier of the resource associated with the scalable target. This string consists of the resource type and unique identifier. If you specify a scalable dimension, you must also specify a resource ID.

*   ECS service - The resource type is `service` and the unique identifier is the cluster name and service name. Example: `service/default/sample-webapp`.

*   Spot fleet request - The resource type is `spot-fleet-request` and the unique identifier is the Spot fleet request ID. Example: `spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE`.

*   EMR cluster - The resource type is `instancegroup` and the unique identifier is the cluster ID and instance group ID. Example: `instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0`.

*   AppStream 2.0 fleet - The resource type is `fleet` and the unique identifier is the fleet name. Example: `fleet/sample-fleet`.

*   DynamoDB table - The resource type is `table` and the unique identifier is the resource ID. Example: `table/my-table`.

*   DynamoDB global secondary index - The resource type is `index` and the unique identifier is the resource ID. Example: `table/my-table/index/my-table-index`.

*   Aurora DB cluster - The resource type is `cluster` and the unique identifier is the cluster name. Example: `cluster:my-db-cluster`.

*   Amazon SageMaker endpoint variants - The resource type is `variant` and the unique identifier is the resource ID. Example: `endpoint/my-end-point/variant/KMeansClustering`.

*   Custom resources are not supported with a resource type. This parameter must specify the `OutputValue` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider.

## `ScalableDimension = "ecs:service:DesiredCount", "ec2:spot-fleet-request:TargetCapacity", "elasticmapreduce:instancegroup:InstanceCount", "appstream:fleet:DesiredCapacity", "dynamodb:table:ReadCapacityUnits", "dynamodb:table:WriteCapacityUnits", "dynamodb:index:ReadCapacityUnits", "dynamodb:index:WriteCapacityUnits", "rds:cluster:ReadReplicaCount", "sagemaker:variant:DesiredInstanceCount" or "custom-resource:ResourceType:Property"`
The scalable dimension associated with the scalable target. This string consists of the service namespace, resource type, and scaling property. If you specify a scalable dimension, you must also specify a resource ID.

*   `ecs:service:DesiredCount` - The desired task count of an ECS service.

*   `ec2:spot-fleet-request:TargetCapacity` - The target capacity of a Spot fleet request.

*   `elasticmapreduce:instancegroup:InstanceCount` - The instance count of an EMR Instance Group.

*   `appstream:fleet:DesiredCapacity` - The desired capacity of an AppStream 2.0 fleet.

*   `dynamodb:table:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB table.

*   `dynamodb:table:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB table.

*   `dynamodb:index:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB global secondary index.

*   `dynamodb:index:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB global secondary index.

*   `rds:cluster:ReadReplicaCount` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition.

*   `sagemaker:variant:DesiredInstanceCount` - The number of EC2 instances for an Amazon SageMaker model endpoint variant.

*   `custom-resource:ResourceType:Property` - The scalable dimension for a custom resource provided by your own application or service.

## `MaxResults = ::Int`
The maximum number of scalable targets. This value can be between 1 and 50. The default value is 50.

If this parameter is used, the operation returns up to `MaxResults` results at a time, along with a `NextToken` value. To get the next set of results, include the `NextToken` value in a subsequent call. If this parameter is not used, the operation returns up to 50 results and a `NextToken` value, if applicable.

## `NextToken = ::String`
The token for the next set of results.

# Returns

`DescribeScalableTargetsResponse`

# Exceptions

`ValidationException`, `InvalidNextTokenException`, `ConcurrentUpdateException` or `InternalServiceException`.

# Example: To describe scalable targets

This example describes the scalable targets for the ecs service namespace.

Input:
```
[
    "ServiceNamespace" => "ecs"
]
```

Output:
```
Dict(
    "ScalableTargets" => [
        Dict(
            "CreationTime" => "2016-05-06T11:21:46.199Z",
            "MaxCapacity" => 10,
            "MinCapacity" => 1,
            "ResourceId" => "service/default/web-app",
            "RoleARN" => "arn:aws:iam::012345678910:role/ApplicationAutoscalingECSRole",
            "ScalableDimension" => "ecs:service:DesiredCount",
            "ServiceNamespace" => "ecs"
        )
    ]
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/application-autoscaling-2016-02-06/DescribeScalableTargets)
"""
@inline describe_scalable_targets(aws::AWSConfig=default_aws_config(); args...) = describe_scalable_targets(aws, args)

@inline describe_scalable_targets(aws::AWSConfig, args) = AWSCore.Services.application_autoscaling(aws, "DescribeScalableTargets", args)

@inline describe_scalable_targets(args) = describe_scalable_targets(default_aws_config(), args)

"""
    using AWSSDK.ApplicationAutoScaling.describe_scaling_activities
    describe_scaling_activities([::AWSConfig], arguments::Dict)
    describe_scaling_activities([::AWSConfig]; ServiceNamespace=, <keyword arguments>)

    using AWSCore.Services.application_autoscaling
    application_autoscaling([::AWSConfig], "DescribeScalingActivities", arguments::Dict)
    application_autoscaling([::AWSConfig], "DescribeScalingActivities", ServiceNamespace=, <keyword arguments>)

# DescribeScalingActivities Operation

Provides descriptive information about the scaling activities in the specified namespace from the previous six weeks.

You can filter the results using the `ResourceId` and `ScalableDimension` parameters.

Scaling activities are triggered by CloudWatch alarms that are associated with scaling policies. To view the scaling policies for a service namespace, see [DescribeScalingPolicies](@ref). To create a scaling policy or update an existing one, see [PutScalingPolicy](@ref).

# Arguments

## `ServiceNamespace = "ecs", "elasticmapreduce", "ec2", "appstream", "dynamodb", "rds", "sagemaker" or "custom-resource"` -- *Required*
The namespace of the AWS service that provides the resource or `custom-resource` for a resource provided by your own application or service. For more information, see [AWS Service Namespaces](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) in the *Amazon Web Services General Reference*.

## `ResourceId = ::String`
The identifier of the resource associated with the scaling activity. This string consists of the resource type and unique identifier. If you specify a scalable dimension, you must also specify a resource ID.

*   ECS service - The resource type is `service` and the unique identifier is the cluster name and service name. Example: `service/default/sample-webapp`.

*   Spot fleet request - The resource type is `spot-fleet-request` and the unique identifier is the Spot fleet request ID. Example: `spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE`.

*   EMR cluster - The resource type is `instancegroup` and the unique identifier is the cluster ID and instance group ID. Example: `instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0`.

*   AppStream 2.0 fleet - The resource type is `fleet` and the unique identifier is the fleet name. Example: `fleet/sample-fleet`.

*   DynamoDB table - The resource type is `table` and the unique identifier is the resource ID. Example: `table/my-table`.

*   DynamoDB global secondary index - The resource type is `index` and the unique identifier is the resource ID. Example: `table/my-table/index/my-table-index`.

*   Aurora DB cluster - The resource type is `cluster` and the unique identifier is the cluster name. Example: `cluster:my-db-cluster`.

*   Amazon SageMaker endpoint variants - The resource type is `variant` and the unique identifier is the resource ID. Example: `endpoint/my-end-point/variant/KMeansClustering`.

*   Custom resources are not supported with a resource type. This parameter must specify the `OutputValue` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider.

## `ScalableDimension = "ecs:service:DesiredCount", "ec2:spot-fleet-request:TargetCapacity", "elasticmapreduce:instancegroup:InstanceCount", "appstream:fleet:DesiredCapacity", "dynamodb:table:ReadCapacityUnits", "dynamodb:table:WriteCapacityUnits", "dynamodb:index:ReadCapacityUnits", "dynamodb:index:WriteCapacityUnits", "rds:cluster:ReadReplicaCount", "sagemaker:variant:DesiredInstanceCount" or "custom-resource:ResourceType:Property"`
The scalable dimension. This string consists of the service namespace, resource type, and scaling property. If you specify a scalable dimension, you must also specify a resource ID.

*   `ecs:service:DesiredCount` - The desired task count of an ECS service.

*   `ec2:spot-fleet-request:TargetCapacity` - The target capacity of a Spot fleet request.

*   `elasticmapreduce:instancegroup:InstanceCount` - The instance count of an EMR Instance Group.

*   `appstream:fleet:DesiredCapacity` - The desired capacity of an AppStream 2.0 fleet.

*   `dynamodb:table:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB table.

*   `dynamodb:table:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB table.

*   `dynamodb:index:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB global secondary index.

*   `dynamodb:index:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB global secondary index.

*   `rds:cluster:ReadReplicaCount` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition.

*   `sagemaker:variant:DesiredInstanceCount` - The number of EC2 instances for an Amazon SageMaker model endpoint variant.

*   `custom-resource:ResourceType:Property` - The scalable dimension for a custom resource provided by your own application or service.

## `MaxResults = ::Int`
The maximum number of scalable targets. This value can be between 1 and 50. The default value is 50.

If this parameter is used, the operation returns up to `MaxResults` results at a time, along with a `NextToken` value. To get the next set of results, include the `NextToken` value in a subsequent call. If this parameter is not used, the operation returns up to 50 results and a `NextToken` value, if applicable.

## `NextToken = ::String`
The token for the next set of results.

# Returns

`DescribeScalingActivitiesResponse`

# Exceptions

`ValidationException`, `InvalidNextTokenException`, `ConcurrentUpdateException` or `InternalServiceException`.

# Example: To describe scaling activities for a scalable target

This example describes the scaling activities for an Amazon ECS service called web-app that is running in the default cluster.

Input:
```
[
    "ResourceId" => "service/default/web-app",
    "ScalableDimension" => "ecs:service:DesiredCount",
    "ServiceNamespace" => "ecs"
]
```

Output:
```
Dict(
    "ScalingActivities" => [
        Dict(
            "ActivityId" => "e6c5f7d1-dbbb-4a3f-89b2-51f33e766399",
            "Cause" => "monitor alarm web-app-cpu-lt-25 in state ALARM triggered policy web-app-cpu-lt-25",
            "Description" => "Setting desired count to 1.",
            "EndTime" => "2016-05-06T16:04:32.111Z",
            "ResourceId" => "service/default/web-app",
            "ScalableDimension" => "ecs:service:DesiredCount",
            "ServiceNamespace" => "ecs",
            "StartTime" => "2016-05-06T16:03:58.171Z",
            "StatusCode" => "Successful",
            "StatusMessage" => "Successfully set desired count to 1. Change successfully fulfilled by ecs."
        )
    ]
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/application-autoscaling-2016-02-06/DescribeScalingActivities)
"""
@inline describe_scaling_activities(aws::AWSConfig=default_aws_config(); args...) = describe_scaling_activities(aws, args)

@inline describe_scaling_activities(aws::AWSConfig, args) = AWSCore.Services.application_autoscaling(aws, "DescribeScalingActivities", args)

@inline describe_scaling_activities(args) = describe_scaling_activities(default_aws_config(), args)

"""
    using AWSSDK.ApplicationAutoScaling.describe_scaling_policies
    describe_scaling_policies([::AWSConfig], arguments::Dict)
    describe_scaling_policies([::AWSConfig]; ServiceNamespace=, <keyword arguments>)

    using AWSCore.Services.application_autoscaling
    application_autoscaling([::AWSConfig], "DescribeScalingPolicies", arguments::Dict)
    application_autoscaling([::AWSConfig], "DescribeScalingPolicies", ServiceNamespace=, <keyword arguments>)

# DescribeScalingPolicies Operation

Describes the scaling policies for the specified service namespace.

You can filter the results using the `ResourceId`, `ScalableDimension`, and `PolicyNames` parameters.

To create a scaling policy or update an existing one, see [PutScalingPolicy](@ref). If you are no longer using a scaling policy, you can delete it using [DeleteScalingPolicy](@ref).

# Arguments

## `PolicyNames = [::String, ...]`
The names of the scaling policies to describe.

## `ServiceNamespace = "ecs", "elasticmapreduce", "ec2", "appstream", "dynamodb", "rds", "sagemaker" or "custom-resource"` -- *Required*
The namespace of the AWS service that provides the resource or `custom-resource` for a resource provided by your own application or service. For more information, see [AWS Service Namespaces](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) in the *Amazon Web Services General Reference*.

## `ResourceId = ::String`
The identifier of the resource associated with the scaling policy. This string consists of the resource type and unique identifier. If you specify a scalable dimension, you must also specify a resource ID.

*   ECS service - The resource type is `service` and the unique identifier is the cluster name and service name. Example: `service/default/sample-webapp`.

*   Spot fleet request - The resource type is `spot-fleet-request` and the unique identifier is the Spot fleet request ID. Example: `spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE`.

*   EMR cluster - The resource type is `instancegroup` and the unique identifier is the cluster ID and instance group ID. Example: `instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0`.

*   AppStream 2.0 fleet - The resource type is `fleet` and the unique identifier is the fleet name. Example: `fleet/sample-fleet`.

*   DynamoDB table - The resource type is `table` and the unique identifier is the resource ID. Example: `table/my-table`.

*   DynamoDB global secondary index - The resource type is `index` and the unique identifier is the resource ID. Example: `table/my-table/index/my-table-index`.

*   Aurora DB cluster - The resource type is `cluster` and the unique identifier is the cluster name. Example: `cluster:my-db-cluster`.

*   Amazon SageMaker endpoint variants - The resource type is `variant` and the unique identifier is the resource ID. Example: `endpoint/my-end-point/variant/KMeansClustering`.

*   Custom resources are not supported with a resource type. This parameter must specify the `OutputValue` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider.

## `ScalableDimension = "ecs:service:DesiredCount", "ec2:spot-fleet-request:TargetCapacity", "elasticmapreduce:instancegroup:InstanceCount", "appstream:fleet:DesiredCapacity", "dynamodb:table:ReadCapacityUnits", "dynamodb:table:WriteCapacityUnits", "dynamodb:index:ReadCapacityUnits", "dynamodb:index:WriteCapacityUnits", "rds:cluster:ReadReplicaCount", "sagemaker:variant:DesiredInstanceCount" or "custom-resource:ResourceType:Property"`
The scalable dimension. This string consists of the service namespace, resource type, and scaling property. If you specify a scalable dimension, you must also specify a resource ID.

*   `ecs:service:DesiredCount` - The desired task count of an ECS service.

*   `ec2:spot-fleet-request:TargetCapacity` - The target capacity of a Spot fleet request.

*   `elasticmapreduce:instancegroup:InstanceCount` - The instance count of an EMR Instance Group.

*   `appstream:fleet:DesiredCapacity` - The desired capacity of an AppStream 2.0 fleet.

*   `dynamodb:table:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB table.

*   `dynamodb:table:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB table.

*   `dynamodb:index:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB global secondary index.

*   `dynamodb:index:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB global secondary index.

*   `rds:cluster:ReadReplicaCount` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition.

*   `sagemaker:variant:DesiredInstanceCount` - The number of EC2 instances for an Amazon SageMaker model endpoint variant.

*   `custom-resource:ResourceType:Property` - The scalable dimension for a custom resource provided by your own application or service.

## `MaxResults = ::Int`
The maximum number of scalable targets. This value can be between 1 and 50. The default value is 50.

If this parameter is used, the operation returns up to `MaxResults` results at a time, along with a `NextToken` value. To get the next set of results, include the `NextToken` value in a subsequent call. If this parameter is not used, the operation returns up to 50 results and a `NextToken` value, if applicable.

## `NextToken = ::String`
The token for the next set of results.

# Returns

`DescribeScalingPoliciesResponse`

# Exceptions

`ValidationException`, `FailedResourceAccessException`, `InvalidNextTokenException`, `ConcurrentUpdateException` or `InternalServiceException`.

# Example: To describe scaling policies

This example describes the scaling policies for the ecs service namespace.

Input:
```
[
    "ServiceNamespace" => "ecs"
]
```

Output:
```
Dict(
    "NextToken" => "",
    "ScalingPolicies" => [
        Dict(
            "Alarms" => [
                Dict(
                    "AlarmARN" => "arn:aws:cloudwatch:us-west-2:012345678910:alarm:web-app-cpu-gt-75",
                    "AlarmName" => "web-app-cpu-gt-75"
                )
            ],
            "CreationTime" => "2016-05-06T12:11:39.230Z",
            "PolicyARN" => "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/ecs/service/default/web-app:policyName/web-app-cpu-gt-75",
            "PolicyName" => "web-app-cpu-gt-75",
            "PolicyType" => "StepScaling",
            "ResourceId" => "service/default/web-app",
            "ScalableDimension" => "ecs:service:DesiredCount",
            "ServiceNamespace" => "ecs",
            "StepScalingPolicyConfiguration" => Dict(
                "AdjustmentType" => "PercentChangeInCapacity",
                "Cooldown" => 60,
                "StepAdjustments" => [
                    Dict(
                        "MetricIntervalLowerBound" => 0,
                        "ScalingAdjustment" => 200
                    )
                ]
            )
        )
    ]
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/application-autoscaling-2016-02-06/DescribeScalingPolicies)
"""
@inline describe_scaling_policies(aws::AWSConfig=default_aws_config(); args...) = describe_scaling_policies(aws, args)

@inline describe_scaling_policies(aws::AWSConfig, args) = AWSCore.Services.application_autoscaling(aws, "DescribeScalingPolicies", args)

@inline describe_scaling_policies(args) = describe_scaling_policies(default_aws_config(), args)

"""
    using AWSSDK.ApplicationAutoScaling.describe_scheduled_actions
    describe_scheduled_actions([::AWSConfig], arguments::Dict)
    describe_scheduled_actions([::AWSConfig]; ServiceNamespace=, <keyword arguments>)

    using AWSCore.Services.application_autoscaling
    application_autoscaling([::AWSConfig], "DescribeScheduledActions", arguments::Dict)
    application_autoscaling([::AWSConfig], "DescribeScheduledActions", ServiceNamespace=, <keyword arguments>)

# DescribeScheduledActions Operation

Describes the scheduled actions for the specified service namespace.

You can filter the results using the `ResourceId`, `ScalableDimension`, and `ScheduledActionNames` parameters.

To create a scheduled action or update an existing one, see [PutScheduledAction](@ref). If you are no longer using a scheduled action, you can delete it using [DeleteScheduledAction](@ref).

# Arguments

## `ScheduledActionNames = [::String, ...]`
The names of the scheduled actions to describe.

## `ServiceNamespace = "ecs", "elasticmapreduce", "ec2", "appstream", "dynamodb", "rds", "sagemaker" or "custom-resource"` -- *Required*
The namespace of the AWS service that provides the resource or `custom-resource` for a resource provided by your own application or service. For more information, see [AWS Service Namespaces](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) in the *Amazon Web Services General Reference*.

## `ResourceId = ::String`
The identifier of the resource associated with the scheduled action. This string consists of the resource type and unique identifier. If you specify a scalable dimension, you must also specify a resource ID.

*   ECS service - The resource type is `service` and the unique identifier is the cluster name and service name. Example: `service/default/sample-webapp`.

*   Spot fleet request - The resource type is `spot-fleet-request` and the unique identifier is the Spot fleet request ID. Example: `spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE`.

*   EMR cluster - The resource type is `instancegroup` and the unique identifier is the cluster ID and instance group ID. Example: `instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0`.

*   AppStream 2.0 fleet - The resource type is `fleet` and the unique identifier is the fleet name. Example: `fleet/sample-fleet`.

*   DynamoDB table - The resource type is `table` and the unique identifier is the resource ID. Example: `table/my-table`.

*   DynamoDB global secondary index - The resource type is `index` and the unique identifier is the resource ID. Example: `table/my-table/index/my-table-index`.

*   Aurora DB cluster - The resource type is `cluster` and the unique identifier is the cluster name. Example: `cluster:my-db-cluster`.

*   Amazon SageMaker endpoint variants - The resource type is `variant` and the unique identifier is the resource ID. Example: `endpoint/my-end-point/variant/KMeansClustering`.

*   Custom resources are not supported with a resource type. This parameter must specify the `OutputValue` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider.

## `ScalableDimension = "ecs:service:DesiredCount", "ec2:spot-fleet-request:TargetCapacity", "elasticmapreduce:instancegroup:InstanceCount", "appstream:fleet:DesiredCapacity", "dynamodb:table:ReadCapacityUnits", "dynamodb:table:WriteCapacityUnits", "dynamodb:index:ReadCapacityUnits", "dynamodb:index:WriteCapacityUnits", "rds:cluster:ReadReplicaCount", "sagemaker:variant:DesiredInstanceCount" or "custom-resource:ResourceType:Property"`
The scalable dimension. This string consists of the service namespace, resource type, and scaling property. If you specify a scalable dimension, you must also specify a resource ID.

*   `ecs:service:DesiredCount` - The desired task count of an ECS service.

*   `ec2:spot-fleet-request:TargetCapacity` - The target capacity of a Spot fleet request.

*   `elasticmapreduce:instancegroup:InstanceCount` - The instance count of an EMR Instance Group.

*   `appstream:fleet:DesiredCapacity` - The desired capacity of an AppStream 2.0 fleet.

*   `dynamodb:table:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB table.

*   `dynamodb:table:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB table.

*   `dynamodb:index:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB global secondary index.

*   `dynamodb:index:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB global secondary index.

*   `rds:cluster:ReadReplicaCount` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition.

*   `sagemaker:variant:DesiredInstanceCount` - The number of EC2 instances for an Amazon SageMaker model endpoint variant.

*   `custom-resource:ResourceType:Property` - The scalable dimension for a custom resource provided by your own application or service.

## `MaxResults = ::Int`
The maximum number of scheduled action results. This value can be between 1 and 50. The default value is 50.

If this parameter is used, the operation returns up to `MaxResults` results at a time, along with a `NextToken` value. To get the next set of results, include the `NextToken` value in a subsequent call. If this parameter is not used, the operation returns up to 50 results and a `NextToken` value, if applicable.

## `NextToken = ::String`
The token for the next set of results.

# Returns

`DescribeScheduledActionsResponse`

# Exceptions

`ValidationException`, `InvalidNextTokenException`, `ConcurrentUpdateException` or `InternalServiceException`.

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/application-autoscaling-2016-02-06/DescribeScheduledActions)
"""
@inline describe_scheduled_actions(aws::AWSConfig=default_aws_config(); args...) = describe_scheduled_actions(aws, args)

@inline describe_scheduled_actions(aws::AWSConfig, args) = AWSCore.Services.application_autoscaling(aws, "DescribeScheduledActions", args)

@inline describe_scheduled_actions(args) = describe_scheduled_actions(default_aws_config(), args)

"""
    using AWSSDK.ApplicationAutoScaling.put_scaling_policy
    put_scaling_policy([::AWSConfig], arguments::Dict)
    put_scaling_policy([::AWSConfig]; PolicyName=, ServiceNamespace=, ResourceId=, ScalableDimension=, <keyword arguments>)

    using AWSCore.Services.application_autoscaling
    application_autoscaling([::AWSConfig], "PutScalingPolicy", arguments::Dict)
    application_autoscaling([::AWSConfig], "PutScalingPolicy", PolicyName=, ServiceNamespace=, ResourceId=, ScalableDimension=, <keyword arguments>)

# PutScalingPolicy Operation

Creates or updates a policy for an Application Auto Scaling scalable target.

Each scalable target is identified by a service namespace, resource ID, and scalable dimension. A scaling policy applies to the scalable target identified by those three attributes. You cannot create a scaling policy until you register the scalable target using [RegisterScalableTarget](@ref).

To update a policy, specify its policy name and the parameters that you want to change. Any parameters that you don't specify are not changed by this update request.

You can view the scaling policies for a service namespace using [DescribeScalingPolicies](@ref). If you are no longer using a scaling policy, you can delete it using [DeleteScalingPolicy](@ref).

# Arguments

## `PolicyName = ::String` -- *Required*
The name of the scaling policy.

## `ServiceNamespace = "ecs", "elasticmapreduce", "ec2", "appstream", "dynamodb", "rds", "sagemaker" or "custom-resource"` -- *Required*
The namespace of the AWS service that provides the resource or `custom-resource` for a resource provided by your own application or service. For more information, see [AWS Service Namespaces](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) in the *Amazon Web Services General Reference*.

## `ResourceId = ::String` -- *Required*
The identifier of the resource associated with the scaling policy. This string consists of the resource type and unique identifier.

*   ECS service - The resource type is `service` and the unique identifier is the cluster name and service name. Example: `service/default/sample-webapp`.

*   Spot fleet request - The resource type is `spot-fleet-request` and the unique identifier is the Spot fleet request ID. Example: `spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE`.

*   EMR cluster - The resource type is `instancegroup` and the unique identifier is the cluster ID and instance group ID. Example: `instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0`.

*   AppStream 2.0 fleet - The resource type is `fleet` and the unique identifier is the fleet name. Example: `fleet/sample-fleet`.

*   DynamoDB table - The resource type is `table` and the unique identifier is the resource ID. Example: `table/my-table`.

*   DynamoDB global secondary index - The resource type is `index` and the unique identifier is the resource ID. Example: `table/my-table/index/my-table-index`.

*   Aurora DB cluster - The resource type is `cluster` and the unique identifier is the cluster name. Example: `cluster:my-db-cluster`.

*   Amazon SageMaker endpoint variants - The resource type is `variant` and the unique identifier is the resource ID. Example: `endpoint/my-end-point/variant/KMeansClustering`.

*   Custom resources are not supported with a resource type. This parameter must specify the `OutputValue` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider.

## `ScalableDimension = "ecs:service:DesiredCount", "ec2:spot-fleet-request:TargetCapacity", "elasticmapreduce:instancegroup:InstanceCount", "appstream:fleet:DesiredCapacity", "dynamodb:table:ReadCapacityUnits", "dynamodb:table:WriteCapacityUnits", "dynamodb:index:ReadCapacityUnits", "dynamodb:index:WriteCapacityUnits", "rds:cluster:ReadReplicaCount", "sagemaker:variant:DesiredInstanceCount" or "custom-resource:ResourceType:Property"` -- *Required*
The scalable dimension. This string consists of the service namespace, resource type, and scaling property.

*   `ecs:service:DesiredCount` - The desired task count of an ECS service.

*   `ec2:spot-fleet-request:TargetCapacity` - The target capacity of a Spot fleet request.

*   `elasticmapreduce:instancegroup:InstanceCount` - The instance count of an EMR Instance Group.

*   `appstream:fleet:DesiredCapacity` - The desired capacity of an AppStream 2.0 fleet.

*   `dynamodb:table:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB table.

*   `dynamodb:table:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB table.

*   `dynamodb:index:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB global secondary index.

*   `dynamodb:index:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB global secondary index.

*   `rds:cluster:ReadReplicaCount` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition.

*   `sagemaker:variant:DesiredInstanceCount` - The number of EC2 instances for an Amazon SageMaker model endpoint variant.

*   `custom-resource:ResourceType:Property` - The scalable dimension for a custom resource provided by your own application or service.

## `PolicyType = "StepScaling" or "TargetTrackingScaling"`
The policy type. This parameter is required if you are creating a policy.

For DynamoDB, only `TargetTrackingScaling` is supported. For Amazon ECS, Spot Fleet, and Amazon RDS, both `StepScaling` and `TargetTrackingScaling` are supported. For any other service, only `StepScaling` is supported.

## `StepScalingPolicyConfiguration = [ ... ]`
A step scaling policy.

This parameter is required if you are creating a policy and the policy type is `StepScaling`.
```
 StepScalingPolicyConfiguration = [
        "AdjustmentType" =>  "ChangeInCapacity", "PercentChangeInCapacity" or "ExactCapacity",
        "StepAdjustments" =>  [[
            "MetricIntervalLowerBound" =>  double,
            "MetricIntervalUpperBound" =>  double,
            "ScalingAdjustment" => <required> ::Int
        ], ...],
        "MinAdjustmentMagnitude" =>  ::Int,
        "Cooldown" =>  ::Int,
        "MetricAggregationType" =>  "Average", "Minimum" or "Maximum"
    ]
```

## `TargetTrackingScalingPolicyConfiguration = [ ... ]`
A target tracking policy.

This parameter is required if you are creating a policy and the policy type is `TargetTrackingScaling`.
```
 TargetTrackingScalingPolicyConfiguration = [
        "TargetValue" => <required> double,
        "PredefinedMetricSpecification" =>  [
            "PredefinedMetricType" => <required> "DynamoDBReadCapacityUtilization", "DynamoDBWriteCapacityUtilization", "ALBRequestCountPerTarget", "RDSReaderAverageCPUUtilization", "RDSReaderAverageDatabaseConnections", "EC2SpotFleetRequestAverageCPUUtilization", "EC2SpotFleetRequestAverageNetworkIn", "EC2SpotFleetRequestAverageNetworkOut", "SageMakerVariantInvocationsPerInstance", "ECSServiceAverageCPUUtilization" or "ECSServiceAverageMemoryUtilization",
            "ResourceLabel" =>  ::String
        ],
        "CustomizedMetricSpecification" =>  [
            "MetricName" => <required> ::String,
            "Namespace" => <required> ::String,
            "Dimensions" =>  [[
                "Name" => <required> ::String,
                "Value" => <required> ::String
            ], ...],
            "Statistic" => <required> "Average", "Minimum", "Maximum", "SampleCount" or "Sum",
            "Unit" =>  ::String
        ],
        "ScaleOutCooldown" =>  ::Int,
        "ScaleInCooldown" =>  ::Int,
        "DisableScaleIn" =>  ::Bool
    ]
```

# Returns

`PutScalingPolicyResponse`

# Exceptions

`ValidationException`, `LimitExceededException`, `ObjectNotFoundException`, `ConcurrentUpdateException`, `FailedResourceAccessException` or `InternalServiceException`.

# Example: To apply a scaling policy to an Amazon ECS service

This example applies a scaling policy to an Amazon ECS service called web-app in the default cluster. The policy increases the desired count of the service by 200%, with a cool down period of 60 seconds.

Input:
```
[
    "PolicyName" => "web-app-cpu-gt-75",
    "PolicyType" => "StepScaling",
    "ResourceId" => "service/default/web-app",
    "ScalableDimension" => "ecs:service:DesiredCount",
    "ServiceNamespace" => "ecs",
    "StepScalingPolicyConfiguration" => [
        "AdjustmentType" => "PercentChangeInCapacity",
        "Cooldown" => 60,
        "StepAdjustments" => [
            [
                "MetricIntervalLowerBound" => 0,
                "ScalingAdjustment" => 200
            ]
        ]
    ]
]
```

Output:
```
Dict(
    "PolicyARN" => "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/ecs/service/default/web-app:policyName/web-app-cpu-gt-75"
)
```

# Example: To apply a scaling policy to an Amazon EC2 Spot fleet

This example applies a scaling policy to an Amazon EC2 Spot fleet. The policy increases the target capacity of the spot fleet by 200%, with a cool down period of 180 seconds.",

Input:
```
[
    "PolicyName" => "fleet-cpu-gt-75",
    "PolicyType" => "StepScaling",
    "ResourceId" => "spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3",
    "ScalableDimension" => "ec2:spot-fleet-request:TargetCapacity",
    "ServiceNamespace" => "ec2",
    "StepScalingPolicyConfiguration" => [
        "AdjustmentType" => "PercentChangeInCapacity",
        "Cooldown" => 180,
        "StepAdjustments" => [
            [
                "MetricIntervalLowerBound" => 0,
                "ScalingAdjustment" => 200
            ]
        ]
    ]
]
```

Output:
```
Dict(
    "PolicyARN" => "arn:aws:autoscaling:us-east-1:012345678910:scalingPolicy:89406401-0cb7-4130-b770-d97cca0e446b:resource/ec2/spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3:policyName/fleet-cpu-gt-75"
)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/application-autoscaling-2016-02-06/PutScalingPolicy)
"""
@inline put_scaling_policy(aws::AWSConfig=default_aws_config(); args...) = put_scaling_policy(aws, args)

@inline put_scaling_policy(aws::AWSConfig, args) = AWSCore.Services.application_autoscaling(aws, "PutScalingPolicy", args)

@inline put_scaling_policy(args) = put_scaling_policy(default_aws_config(), args)

"""
    using AWSSDK.ApplicationAutoScaling.put_scheduled_action
    put_scheduled_action([::AWSConfig], arguments::Dict)
    put_scheduled_action([::AWSConfig]; ServiceNamespace=, ScheduledActionName=, ResourceId=, <keyword arguments>)

    using AWSCore.Services.application_autoscaling
    application_autoscaling([::AWSConfig], "PutScheduledAction", arguments::Dict)
    application_autoscaling([::AWSConfig], "PutScheduledAction", ServiceNamespace=, ScheduledActionName=, ResourceId=, <keyword arguments>)

# PutScheduledAction Operation

Creates or updates a scheduled action for an Application Auto Scaling scalable target.

Each scalable target is identified by a service namespace, resource ID, and scalable dimension. A scheduled action applies to the scalable target identified by those three attributes. You cannot create a scheduled action until you register the scalable target using [RegisterScalableTarget](@ref).

To update an action, specify its name and the parameters that you want to change. If you don't specify start and end times, the old values are deleted. Any other parameters that you don't specify are not changed by this update request.

You can view the scheduled actions using [DescribeScheduledActions](@ref). If you are no longer using a scheduled action, you can delete it using [DeleteScheduledAction](@ref).

# Arguments

## `ServiceNamespace = "ecs", "elasticmapreduce", "ec2", "appstream", "dynamodb", "rds", "sagemaker" or "custom-resource"` -- *Required*
The namespace of the AWS service that provides the resource or `custom-resource` for a resource provided by your own application or service. For more information, see [AWS Service Namespaces](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) in the *Amazon Web Services General Reference*.

## `Schedule = ::String`
The schedule for this action. The following formats are supported:

*   At expressions - `at(*yyyy*-*mm*-*dd*T*hh*:*mm*:*ss*)`

*   Rate expressions - `rate(*value* *unit*)`

*   Cron expressions - `cron(*fields*)`

At expressions are useful for one-time schedules. Specify the time, in UTC.

For rate expressions, *value* is a positive integer and *unit* is `minute` | `minutes` | `hour` | `hours` | `day` | `days`.

For more information about cron expressions, see [Cron Expressions](http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions) in the *Amazon CloudWatch Events User Guide*.

## `ScheduledActionName = ::String` -- *Required*
The name of the scheduled action.

## `ResourceId = ::String` -- *Required*
The identifier of the resource associated with the scheduled action. This string consists of the resource type and unique identifier.

*   ECS service - The resource type is `service` and the unique identifier is the cluster name and service name. Example: `service/default/sample-webapp`.

*   Spot fleet request - The resource type is `spot-fleet-request` and the unique identifier is the Spot fleet request ID. Example: `spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE`.

*   EMR cluster - The resource type is `instancegroup` and the unique identifier is the cluster ID and instance group ID. Example: `instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0`.

*   AppStream 2.0 fleet - The resource type is `fleet` and the unique identifier is the fleet name. Example: `fleet/sample-fleet`.

*   DynamoDB table - The resource type is `table` and the unique identifier is the resource ID. Example: `table/my-table`.

*   DynamoDB global secondary index - The resource type is `index` and the unique identifier is the resource ID. Example: `table/my-table/index/my-table-index`.

*   Aurora DB cluster - The resource type is `cluster` and the unique identifier is the cluster name. Example: `cluster:my-db-cluster`.

*   Amazon SageMaker endpoint variants - The resource type is `variant` and the unique identifier is the resource ID. Example: `endpoint/my-end-point/variant/KMeansClustering`.

*   Custom resources are not supported with a resource type. This parameter must specify the `OutputValue` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider.

## `ScalableDimension = "ecs:service:DesiredCount", "ec2:spot-fleet-request:TargetCapacity", "elasticmapreduce:instancegroup:InstanceCount", "appstream:fleet:DesiredCapacity", "dynamodb:table:ReadCapacityUnits", "dynamodb:table:WriteCapacityUnits", "dynamodb:index:ReadCapacityUnits", "dynamodb:index:WriteCapacityUnits", "rds:cluster:ReadReplicaCount", "sagemaker:variant:DesiredInstanceCount" or "custom-resource:ResourceType:Property"`
The scalable dimension. This parameter is required if you are creating a scheduled action. This string consists of the service namespace, resource type, and scaling property.

*   `ecs:service:DesiredCount` - The desired task count of an ECS service.

*   `ec2:spot-fleet-request:TargetCapacity` - The target capacity of a Spot fleet request.

*   `elasticmapreduce:instancegroup:InstanceCount` - The instance count of an EMR Instance Group.

*   `appstream:fleet:DesiredCapacity` - The desired capacity of an AppStream 2.0 fleet.

*   `dynamodb:table:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB table.

*   `dynamodb:table:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB table.

*   `dynamodb:index:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB global secondary index.

*   `dynamodb:index:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB global secondary index.

*   `rds:cluster:ReadReplicaCount` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition.

*   `sagemaker:variant:DesiredInstanceCount` - The number of EC2 instances for an Amazon SageMaker model endpoint variant.

*   `custom-resource:ResourceType:Property` - The scalable dimension for a custom resource provided by your own application or service.

## `StartTime = timestamp`
The date and time for the scheduled action to start.

## `EndTime = timestamp`
The date and time for the scheduled action to end.

## `ScalableTargetAction = [ ... ]`
The new minimum and maximum capacity. You can set both values or just one. During the scheduled time, if the current capacity is below the minimum capacity, Application Auto Scaling scales out to the minimum capacity. If the current capacity is above the maximum capacity, Application Auto Scaling scales in to the maximum capacity.
```
 ScalableTargetAction = [
        "MinCapacity" =>  ::Int,
        "MaxCapacity" =>  ::Int
    ]
```

# Returns

`PutScheduledActionResponse`

# Exceptions

`ValidationException`, `LimitExceededException`, `ObjectNotFoundException`, `ConcurrentUpdateException` or `InternalServiceException`.

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/application-autoscaling-2016-02-06/PutScheduledAction)
"""
@inline put_scheduled_action(aws::AWSConfig=default_aws_config(); args...) = put_scheduled_action(aws, args)

@inline put_scheduled_action(aws::AWSConfig, args) = AWSCore.Services.application_autoscaling(aws, "PutScheduledAction", args)

@inline put_scheduled_action(args) = put_scheduled_action(default_aws_config(), args)

"""
    using AWSSDK.ApplicationAutoScaling.register_scalable_target
    register_scalable_target([::AWSConfig], arguments::Dict)
    register_scalable_target([::AWSConfig]; ServiceNamespace=, ResourceId=, ScalableDimension=, <keyword arguments>)

    using AWSCore.Services.application_autoscaling
    application_autoscaling([::AWSConfig], "RegisterScalableTarget", arguments::Dict)
    application_autoscaling([::AWSConfig], "RegisterScalableTarget", ServiceNamespace=, ResourceId=, ScalableDimension=, <keyword arguments>)

# RegisterScalableTarget Operation

Registers or updates a scalable target. A scalable target is a resource that Application Auto Scaling can scale out or scale in. After you have registered a scalable target, you can use this operation to update the minimum and maximum values for its scalable dimension.

After you register a scalable target, you can create and apply scaling policies using [PutScalingPolicy](@ref). You can view the scaling policies for a service namespace using [DescribeScalableTargets](@ref). If you no longer need a scalable target, you can deregister it using [DeregisterScalableTarget](@ref).

# Arguments

## `ServiceNamespace = "ecs", "elasticmapreduce", "ec2", "appstream", "dynamodb", "rds", "sagemaker" or "custom-resource"` -- *Required*
The namespace of the AWS service that provides the resource or `custom-resource` for a resource provided by your own application or service. For more information, see [AWS Service Namespaces](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#genref-aws-service-namespaces) in the *Amazon Web Services General Reference*.

## `ResourceId = ::String` -- *Required*
The identifier of the resource associated with the scalable target. This string consists of the resource type and unique identifier.

*   ECS service - The resource type is `service` and the unique identifier is the cluster name and service name. Example: `service/default/sample-webapp`.

*   Spot fleet request - The resource type is `spot-fleet-request` and the unique identifier is the Spot fleet request ID. Example: `spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE`.

*   EMR cluster - The resource type is `instancegroup` and the unique identifier is the cluster ID and instance group ID. Example: `instancegroup/j-2EEZNYKUA1NTV/ig-1791Y4E1L8YI0`.

*   AppStream 2.0 fleet - The resource type is `fleet` and the unique identifier is the fleet name. Example: `fleet/sample-fleet`.

*   DynamoDB table - The resource type is `table` and the unique identifier is the resource ID. Example: `table/my-table`.

*   DynamoDB global secondary index - The resource type is `index` and the unique identifier is the resource ID. Example: `table/my-table/index/my-table-index`.

*   Aurora DB cluster - The resource type is `cluster` and the unique identifier is the cluster name. Example: `cluster:my-db-cluster`.

*   Amazon SageMaker endpoint variants - The resource type is `variant` and the unique identifier is the resource ID. Example: `endpoint/my-end-point/variant/KMeansClustering`.

*   Custom resources are not supported with a resource type. This parameter must specify the `OutputValue` from the CloudFormation template stack used to access the resources. The unique identifier is defined by the service provider.

## `ScalableDimension = "ecs:service:DesiredCount", "ec2:spot-fleet-request:TargetCapacity", "elasticmapreduce:instancegroup:InstanceCount", "appstream:fleet:DesiredCapacity", "dynamodb:table:ReadCapacityUnits", "dynamodb:table:WriteCapacityUnits", "dynamodb:index:ReadCapacityUnits", "dynamodb:index:WriteCapacityUnits", "rds:cluster:ReadReplicaCount", "sagemaker:variant:DesiredInstanceCount" or "custom-resource:ResourceType:Property"` -- *Required*
The scalable dimension associated with the scalable target. This string consists of the service namespace, resource type, and scaling property.

*   `ecs:service:DesiredCount` - The desired task count of an ECS service.

*   `ec2:spot-fleet-request:TargetCapacity` - The target capacity of a Spot fleet request.

*   `elasticmapreduce:instancegroup:InstanceCount` - The instance count of an EMR Instance Group.

*   `appstream:fleet:DesiredCapacity` - The desired capacity of an AppStream 2.0 fleet.

*   `dynamodb:table:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB table.

*   `dynamodb:table:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB table.

*   `dynamodb:index:ReadCapacityUnits` - The provisioned read capacity for a DynamoDB global secondary index.

*   `dynamodb:index:WriteCapacityUnits` - The provisioned write capacity for a DynamoDB global secondary index.

*   `rds:cluster:ReadReplicaCount` - The count of Aurora Replicas in an Aurora DB cluster. Available for Aurora MySQL-compatible edition.

*   `sagemaker:variant:DesiredInstanceCount` - The number of EC2 instances for an Amazon SageMaker model endpoint variant.

*   `custom-resource:ResourceType:Property` - The scalable dimension for a custom resource provided by your own application or service.

## `MinCapacity = ::Int`
The minimum value to scale to in response to a scale in event. This parameter is required if you are registering a scalable target.

## `MaxCapacity = ::Int`
The maximum value to scale to in response to a scale out event. This parameter is required if you are registering a scalable target.

## `RoleARN = ::String`
Application Auto Scaling creates a service-linked role that grants it permissions to modify the scalable target on your behalf. For more information, see [Service-Linked Roles for Application Auto Scaling](http://docs.aws.amazon.com/autoscaling/application/userguide/application-autoscaling-service-linked-roles.html).

For resources that are not supported using a service-linked role, this parameter is required and must specify the ARN of an IAM role that allows Application Auto Scaling to modify the scalable target on your behalf.

# Returns

`RegisterScalableTargetResponse`

# Exceptions

`ValidationException`, `LimitExceededException`, `ConcurrentUpdateException` or `InternalServiceException`.

# Example: To register an ECS service as a scalable target

This example registers a scalable target from an Amazon ECS service called web-app that is running on the default cluster, with a minimum desired count of 1 task and a maximum desired count of 10 tasks.

Input:
```
[
    "MaxCapacity" => 10,
    "MinCapacity" => 1,
    "ResourceId" => "service/default/web-app",
    "RoleARN" => "arn:aws:iam::012345678910:role/ApplicationAutoscalingECSRole",
    "ScalableDimension" => "ecs:service:DesiredCount",
    "ServiceNamespace" => "ecs"
]
```

# Example: To register an EC2 Spot fleet as a scalable target

This example registers a scalable target from an Amazon EC2 Spot fleet with a minimum target capacity of 1 and a maximum of 10.

Input:
```
[
    "MaxCapacity" => 10,
    "MinCapacity" => 1,
    "ResourceId" => "spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3",
    "RoleARN" => "arn:aws:iam::012345678910:role/ApplicationAutoscalingSpotRole",
    "ScalableDimension" => "ec2:spot-fleet-request:TargetCapacity",
    "ServiceNamespace" => "ec2"
]
```

Output:
```
Dict(

)
```

See also: [AWS API Documentation](https://docs.aws.amazon.com/goto/WebAPI/application-autoscaling-2016-02-06/RegisterScalableTarget)
"""
@inline register_scalable_target(aws::AWSConfig=default_aws_config(); args...) = register_scalable_target(aws, args)

@inline register_scalable_target(aws::AWSConfig, args) = AWSCore.Services.application_autoscaling(aws, "RegisterScalableTarget", args)

@inline register_scalable_target(args) = register_scalable_target(default_aws_config(), args)

end # module ApplicationAutoScaling

#==============================================================================#
# End of file
#==============================================================================#

ext: jl