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

"""
    create_endpoint(outpost_id, security_group_id, subnet_id)
    create_endpoint(outpost_id, security_group_id, subnet_id, params::Dict{String,<:Any})

Amazon S3 on Outposts Access Points simplify managing data access at scale for shared
datasets in S3 on Outposts. S3 on Outposts uses endpoints to connect to Outposts buckets so
that you can perform actions within your virtual private cloud (VPC). For more information,
see  Accessing S3 on Outposts using VPC only access points. This action creates an endpoint
and associates it with the specified Outposts.  It can take up to 5 minutes for this action
to complete.   Related actions include:    DeleteEndpoint     ListEndpoints

# Arguments
- `outpost_id`: The ID of the AWS Outposts.
- `security_group_id`: The ID of the security group to use with the endpoint.
- `subnet_id`: The ID of the subnet in the selected VPC. The endpoint subnet must belong to
  the Outpost that has the Amazon S3 on Outposts provisioned.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"AccessType"`: The type of access for the on-premise network connectivity for the
  Outpost endpoint. To access the endpoint from an on-premises network, you must specify the
  access type and provide the customer owned IPv4 pool.
- `"CustomerOwnedIpv4Pool"`: The ID of the customer-owned IPv4 pool for the endpoint. IP
  addresses will be allocated from this pool for the endpoint.
"""
function create_endpoint(
    OutpostId, SecurityGroupId, SubnetId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return s3outposts(
        "POST",
        "/S3Outposts/CreateEndpoint",
        Dict{String,Any}(
            "OutpostId" => OutpostId,
            "SecurityGroupId" => SecurityGroupId,
            "SubnetId" => SubnetId,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_endpoint(
    OutpostId,
    SecurityGroupId,
    SubnetId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return s3outposts(
        "POST",
        "/S3Outposts/CreateEndpoint",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "OutpostId" => OutpostId,
                    "SecurityGroupId" => SecurityGroupId,
                    "SubnetId" => SubnetId,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Amazon S3 on Outposts Access Points simplify managing data access at scale for shared
datasets in S3 on Outposts. S3 on Outposts uses endpoints to connect to Outposts buckets so
that you can perform actions within your virtual private cloud (VPC). For more information,
see  Accessing S3 on Outposts using VPC only access points. This action deletes an
endpoint.  It can take up to 5 minutes for this action to complete.   Related actions
include:    CreateEndpoint     ListEndpoints

# Arguments
- `endpoint_id`: The ID of the endpoint.
- `outpost_id`: The ID of the AWS Outposts.

"""
function delete_endpoint(
    endpointId, outpostId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return s3outposts(
        "DELETE",
        "/S3Outposts/DeleteEndpoint",
        Dict{String,Any}("endpointId" => endpointId, "outpostId" => outpostId);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_endpoint(
    endpointId,
    outpostId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return s3outposts(
        "DELETE",
        "/S3Outposts/DeleteEndpoint",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}("endpointId" => endpointId, "outpostId" => outpostId),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Amazon S3 on Outposts Access Points simplify managing data access at scale for shared
datasets in S3 on Outposts. S3 on Outposts uses endpoints to connect to Outposts buckets so
that you can perform actions within your virtual private cloud (VPC). For more information,
see  Accessing S3 on Outposts using VPC only access points. This action lists endpoints
associated with the Outposts.   Related actions include:    CreateEndpoint
DeleteEndpoint

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`: The max number of endpoints that can be returned on the request.
- `"nextToken"`: The next endpoint requested in the list.
"""
function list_endpoints(; aws_config::AbstractAWSConfig=global_aws_config())
    return s3outposts(
        "GET",
        "/S3Outposts/ListEndpoints";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_endpoints(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return s3outposts(
        "GET",
        "/S3Outposts/ListEndpoints",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
