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

"""
    create_order(line_items, outpost_identifier, payment_option)
    create_order(line_items, outpost_identifier, payment_option, params::Dict{String,<:Any})

Creates an order for an Outpost.

# Arguments
- `line_items`: The line items that make up the order.
- `outpost_identifier`:  The ID or the Amazon Resource Name (ARN) of the Outpost.
- `payment_option`: The payment option for the order.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"PaymentTerm"`: The payment terms for the order.
"""
function create_order(
    LineItems,
    OutpostIdentifier,
    PaymentOption;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return outposts(
        "POST",
        "/orders",
        Dict{String,Any}(
            "LineItems" => LineItems,
            "OutpostIdentifier" => OutpostIdentifier,
            "PaymentOption" => PaymentOption,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_order(
    LineItems,
    OutpostIdentifier,
    PaymentOption,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return outposts(
        "POST",
        "/orders",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "LineItems" => LineItems,
                    "OutpostIdentifier" => OutpostIdentifier,
                    "PaymentOption" => PaymentOption,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_outpost(name, site_id)
    create_outpost(name, site_id, params::Dict{String,<:Any})

Creates an Outpost. You can specify AvailabilityZone or AvailabilityZoneId.

# Arguments
- `name`:
- `site_id`:

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"AvailabilityZone"`:
- `"AvailabilityZoneId"`:
- `"Description"`:
- `"Tags"`: The tags to apply to the Outpost.
"""
function create_outpost(Name, SiteId; aws_config::AbstractAWSConfig=global_aws_config())
    return outposts(
        "POST",
        "/outposts",
        Dict{String,Any}("Name" => Name, "SiteId" => SiteId);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_outpost(
    Name,
    SiteId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return outposts(
        "POST",
        "/outposts",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("Name" => Name, "SiteId" => SiteId), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    delete_outpost(outpost_id)
    delete_outpost(outpost_id, params::Dict{String,<:Any})

Deletes the Outpost.

# Arguments
- `outpost_id`:  The ID of the Outpost.

"""
function delete_outpost(OutpostId; aws_config::AbstractAWSConfig=global_aws_config())
    return outposts(
        "DELETE",
        "/outposts/$(OutpostId)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_outpost(
    OutpostId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return outposts(
        "DELETE",
        "/outposts/$(OutpostId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    delete_site(site_id)
    delete_site(site_id, params::Dict{String,<:Any})

Deletes the site.

# Arguments
- `site_id`:

"""
function delete_site(SiteId; aws_config::AbstractAWSConfig=global_aws_config())
    return outposts(
        "DELETE", "/sites/$(SiteId)"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function delete_site(
    SiteId, params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return outposts(
        "DELETE",
        "/sites/$(SiteId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_outpost(outpost_id)
    get_outpost(outpost_id, params::Dict{String,<:Any})

Gets information about the specified Outpost.

# Arguments
- `outpost_id`:  The ID of the Outpost.

"""
function get_outpost(OutpostId; aws_config::AbstractAWSConfig=global_aws_config())
    return outposts(
        "GET",
        "/outposts/$(OutpostId)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_outpost(
    OutpostId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return outposts(
        "GET",
        "/outposts/$(OutpostId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_outpost_instance_types(outpost_id)
    get_outpost_instance_types(outpost_id, params::Dict{String,<:Any})

Lists the instance types for the specified Outpost.

# Arguments
- `outpost_id`:  The ID of the Outpost.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"MaxResults"`:
- `"NextToken"`:
"""
function get_outpost_instance_types(
    OutpostId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return outposts(
        "GET",
        "/outposts/$(OutpostId)/instanceTypes";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_outpost_instance_types(
    OutpostId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return outposts(
        "GET",
        "/outposts/$(OutpostId)/instanceTypes",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_outposts()
    list_outposts(params::Dict{String,<:Any})

Create a list of the Outposts for your AWS account. Add filters to your request to return a
more specific list of results. Use filters to match an Outpost lifecycle status,
Availibility Zone (us-east-1a), and AZ ID (use1-az1).  If you specify multiple filters, the
filters are joined with an AND, and the request returns only results that match all of the
specified filters.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"AvailabilityZoneFilter"`:  A filter for the Availibility Zone (us-east-1a) of the
  Outpost.   Filter values are case sensitive. If you specify multiple values for a filter,
  the values are joined with an OR, and the request returns all results that match any of the
  specified values.
- `"AvailabilityZoneIdFilter"`:  A filter for the AZ IDs (use1-az1) of the Outpost.
  Filter values are case sensitive. If you specify multiple values for a filter, the values
  are joined with an OR, and the request returns all results that match any of the specified
  values.
- `"LifeCycleStatusFilter"`:  A filter for the lifecycle status of the Outpost.   Filter
  values are case sensitive. If you specify multiple values for a filter, the values are
  joined with an OR, and the request returns all results that match any of the specified
  values.
- `"MaxResults"`:
- `"NextToken"`:
"""
function list_outposts(; aws_config::AbstractAWSConfig=global_aws_config())
    return outposts(
        "GET", "/outposts"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_outposts(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return outposts(
        "GET", "/outposts", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

"""
    list_sites()
    list_sites(params::Dict{String,<:Any})

Lists the sites for the specified AWS account.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"MaxResults"`:
- `"NextToken"`:
"""
function list_sites(; aws_config::AbstractAWSConfig=global_aws_config())
    return outposts("GET", "/sites"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET)
end
function list_sites(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return outposts(
        "GET", "/sites", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

"""
    list_tags_for_resource(resource_arn)
    list_tags_for_resource(resource_arn, params::Dict{String,<:Any})

Lists the tags for the specified resource.

# Arguments
- `resource_arn`: The Amazon Resource Name (ARN) of the resource.

"""
function list_tags_for_resource(
    ResourceArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return outposts(
        "GET",
        "/tags/$(ResourceArn)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_tags_for_resource(
    ResourceArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return outposts(
        "GET",
        "/tags/$(ResourceArn)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    tag_resource(resource_arn, tags)
    tag_resource(resource_arn, tags, params::Dict{String,<:Any})

Adds tags to the specified resource.

# Arguments
- `resource_arn`: The Amazon Resource Name (ARN) of the resource.
- `tags`: The tags to add to the resource.

"""
function tag_resource(ResourceArn, Tags; aws_config::AbstractAWSConfig=global_aws_config())
    return outposts(
        "POST",
        "/tags/$(ResourceArn)",
        Dict{String,Any}("Tags" => Tags);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function tag_resource(
    ResourceArn,
    Tags,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return outposts(
        "POST",
        "/tags/$(ResourceArn)",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("Tags" => Tags), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    untag_resource(resource_arn, tag_keys)
    untag_resource(resource_arn, tag_keys, params::Dict{String,<:Any})

Removes tags from the specified resource.

# Arguments
- `resource_arn`: The Amazon Resource Name (ARN) of the resource.
- `tag_keys`: The tag keys.

"""
function untag_resource(
    ResourceArn, tagKeys; aws_config::AbstractAWSConfig=global_aws_config()
)
    return outposts(
        "DELETE",
        "/tags/$(ResourceArn)",
        Dict{String,Any}("tagKeys" => tagKeys);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function untag_resource(
    ResourceArn,
    tagKeys,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return outposts(
        "DELETE",
        "/tags/$(ResourceArn)",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("tagKeys" => tagKeys), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
