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

"""
    create_batch_inference_job(job_input, job_name, job_output, role_arn, solution_version_arn)
    create_batch_inference_job(job_input, job_name, job_output, role_arn, solution_version_arn, params::Dict{String,<:Any})

Creates a batch inference job. The operation can handle up to 50 million records and the
input file must be in JSON format. For more information, see recommendations-batch.

# Arguments
- `job_input`: The Amazon S3 path that leads to the input file to base your recommendations
  on. The input material must be in JSON format.
- `job_name`: The name of the batch inference job to create.
- `job_output`: The path to the Amazon S3 bucket where the job's output will be stored.
- `role_arn`: The ARN of the Amazon Identity and Access Management role that has
  permissions to read and write to your input and output Amazon S3 buckets respectively.
- `solution_version_arn`: The Amazon Resource Name (ARN) of the solution version that will
  be used to generate the batch inference recommendations.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"batchInferenceJobConfig"`: The configuration details of a batch inference job.
- `"filterArn"`: The ARN of the filter to apply to the batch inference job. For more
  information on using filters, see Filtering Batch Recommendations..
- `"numResults"`: The number of recommendations to retreive.
"""
function create_batch_inference_job(
    jobInput,
    jobName,
    jobOutput,
    roleArn,
    solutionVersionArn;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateBatchInferenceJob",
        Dict{String,Any}(
            "jobInput" => jobInput,
            "jobName" => jobName,
            "jobOutput" => jobOutput,
            "roleArn" => roleArn,
            "solutionVersionArn" => solutionVersionArn,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_batch_inference_job(
    jobInput,
    jobName,
    jobOutput,
    roleArn,
    solutionVersionArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateBatchInferenceJob",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "jobInput" => jobInput,
                    "jobName" => jobName,
                    "jobOutput" => jobOutput,
                    "roleArn" => roleArn,
                    "solutionVersionArn" => solutionVersionArn,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_batch_segment_job(job_input, job_name, job_output, role_arn, solution_version_arn)
    create_batch_segment_job(job_input, job_name, job_output, role_arn, solution_version_arn, params::Dict{String,<:Any})

Creates a batch segment job. The operation can handle up to 50 million records and the
input file must be in JSON format. For more information, see recommendations-batch.

# Arguments
- `job_input`: The Amazon S3 path for the input data used to generate the batch segment job.
- `job_name`: The name of the batch segment job to create.
- `job_output`: The Amazon S3 path for the bucket where the job's output will be stored.
- `role_arn`: The ARN of the Amazon Identity and Access Management role that has
  permissions to read and write to your input and output Amazon S3 buckets respectively.
- `solution_version_arn`: The Amazon Resource Name (ARN) of the solution version you want
  the batch segment job to use to generate batch segments.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filterArn"`: The ARN of the filter to apply to the batch segment job. For more
  information on using filters, see filter-batch.
- `"numResults"`: The number of predicted users generated by the batch segment job for each
  line of input data.
"""
function create_batch_segment_job(
    jobInput,
    jobName,
    jobOutput,
    roleArn,
    solutionVersionArn;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateBatchSegmentJob",
        Dict{String,Any}(
            "jobInput" => jobInput,
            "jobName" => jobName,
            "jobOutput" => jobOutput,
            "roleArn" => roleArn,
            "solutionVersionArn" => solutionVersionArn,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_batch_segment_job(
    jobInput,
    jobName,
    jobOutput,
    roleArn,
    solutionVersionArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateBatchSegmentJob",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "jobInput" => jobInput,
                    "jobName" => jobName,
                    "jobOutput" => jobOutput,
                    "roleArn" => roleArn,
                    "solutionVersionArn" => solutionVersionArn,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_campaign(name, solution_version_arn)
    create_campaign(name, solution_version_arn, params::Dict{String,<:Any})

Creates a campaign that deploys a solution version. When a client calls the
GetRecommendations and GetPersonalizedRanking APIs, a campaign is specified in the request.
 Minimum Provisioned TPS and Auto-Scaling  A transaction is a single GetRecommendations or
GetPersonalizedRanking call. Transactions per second (TPS) is the throughput and unit of
billing for Amazon Personalize. The minimum provisioned TPS (minProvisionedTPS) specifies
the baseline throughput provisioned by Amazon Personalize, and thus, the minimum billing
charge.   If your TPS increases beyond minProvisionedTPS, Amazon Personalize auto-scales
the provisioned capacity up and down, but never below minProvisionedTPS. There's a short
time delay while the capacity is increased that might cause loss of transactions. The
actual TPS used is calculated as the average requests/second within a 5-minute window. You
pay for maximum of either the minimum provisioned TPS or the actual TPS. We recommend
starting with a low minProvisionedTPS, track your usage using Amazon CloudWatch metrics,
and then increase the minProvisionedTPS as necessary.  Status  A campaign can be in one of
the following states:   CREATE PENDING > CREATE IN_PROGRESS > ACTIVE -or- CREATE
FAILED   DELETE PENDING > DELETE IN_PROGRESS   To get the campaign status, call
DescribeCampaign.  Wait until the status of the campaign is ACTIVE before asking the
campaign for recommendations.   Related APIs     ListCampaigns     DescribeCampaign
UpdateCampaign     DeleteCampaign

# Arguments
- `name`: A name for the new campaign. The campaign name must be unique within your account.
- `solution_version_arn`: The Amazon Resource Name (ARN) of the solution version to deploy.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"campaignConfig"`: The configuration details of a campaign.
- `"minProvisionedTPS"`: Specifies the requested minimum provisioned transactions
  (recommendations) per second that Amazon Personalize will support.
"""
function create_campaign(
    name, solutionVersionArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "CreateCampaign",
        Dict{String,Any}("name" => name, "solutionVersionArn" => solutionVersionArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_campaign(
    name,
    solutionVersionArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateCampaign",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "name" => name, "solutionVersionArn" => solutionVersionArn
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_dataset(dataset_group_arn, dataset_type, name, schema_arn)
    create_dataset(dataset_group_arn, dataset_type, name, schema_arn, params::Dict{String,<:Any})

Creates an empty dataset and adds it to the specified dataset group. Use
CreateDatasetImportJob to import your training data to a dataset. There are three types of
datasets:   Interactions   Items   Users   Each dataset type has an associated schema with
required field types. Only the Interactions dataset is required in order to train a model
(also referred to as creating a solution). A dataset can be in one of the following states:
  CREATE PENDING > CREATE IN_PROGRESS > ACTIVE -or- CREATE FAILED   DELETE PENDING
> DELETE IN_PROGRESS   To get the status of the dataset, call DescribeDataset.  Related
APIs     CreateDatasetGroup     ListDatasets     DescribeDataset     DeleteDataset

# Arguments
- `dataset_group_arn`: The Amazon Resource Name (ARN) of the dataset group to add the
  dataset to.
- `dataset_type`: The type of dataset. One of the following (case insensitive) values:
  Interactions   Items   Users
- `name`: The name for the dataset.
- `schema_arn`: The ARN of the schema to associate with the dataset. The schema defines the
  dataset fields.

"""
function create_dataset(
    datasetGroupArn,
    datasetType,
    name,
    schemaArn;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateDataset",
        Dict{String,Any}(
            "datasetGroupArn" => datasetGroupArn,
            "datasetType" => datasetType,
            "name" => name,
            "schemaArn" => schemaArn,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_dataset(
    datasetGroupArn,
    datasetType,
    name,
    schemaArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateDataset",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "datasetGroupArn" => datasetGroupArn,
                    "datasetType" => datasetType,
                    "name" => name,
                    "schemaArn" => schemaArn,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_dataset_export_job(dataset_arn, job_name, job_output, role_arn)
    create_dataset_export_job(dataset_arn, job_name, job_output, role_arn, params::Dict{String,<:Any})

 Creates a job that exports data from your dataset to an Amazon S3 bucket. To allow Amazon
Personalize to export the training data, you must specify an service-linked IAM role that
gives Amazon Personalize PutObject permissions for your Amazon S3 bucket. For information,
see Exporting a dataset in the Amazon Personalize developer guide.   Status  A dataset
export job can be in one of the following states:   CREATE PENDING > CREATE IN_PROGRESS
> ACTIVE -or- CREATE FAILED    To get the status of the export job, call
DescribeDatasetExportJob, and specify the Amazon Resource Name (ARN) of the dataset export
job. The dataset export is complete when the status shows as ACTIVE. If the status shows as
CREATE FAILED, the response includes a failureReason key, which describes why the job
failed.

# Arguments
- `dataset_arn`: The Amazon Resource Name (ARN) of the dataset that contains the data to
  export.
- `job_name`: The name for the dataset export job.
- `job_output`: The path to the Amazon S3 bucket where the job's output is stored.
- `role_arn`: The Amazon Resource Name (ARN) of the IAM service role that has permissions
  to add data to your output Amazon S3 bucket.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"ingestionMode"`: The data to export, based on how you imported the data. You can choose
  to export only BULK data that you imported using a dataset import job, only PUT data that
  you imported incrementally (using the console, PutEvents, PutUsers and PutItems
  operations), or ALL for both types. The default value is PUT.
"""
function create_dataset_export_job(
    datasetArn,
    jobName,
    jobOutput,
    roleArn;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateDatasetExportJob",
        Dict{String,Any}(
            "datasetArn" => datasetArn,
            "jobName" => jobName,
            "jobOutput" => jobOutput,
            "roleArn" => roleArn,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_dataset_export_job(
    datasetArn,
    jobName,
    jobOutput,
    roleArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateDatasetExportJob",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "datasetArn" => datasetArn,
                    "jobName" => jobName,
                    "jobOutput" => jobOutput,
                    "roleArn" => roleArn,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Creates an empty dataset group. A dataset group is a container for Amazon Personalize
resources. A dataset group can contain at most three datasets, one for each type of
dataset:   Interactions   Items   Users    A dataset group can be a Domain dataset group,
where you specify a domain and use pre-configured resources like recommenders, or a Custom
dataset group, where you use custom resources, such as a solution with a solution version,
that you deploy with a campaign. If you start with a Domain dataset group, you can still
add custom resources such as solutions and solution versions trained with recipes for
custom use cases and deployed with campaigns.  A dataset group can be in one of the
following states:   CREATE PENDING > CREATE IN_PROGRESS > ACTIVE -or- CREATE FAILED
DELETE PENDING   To get the status of the dataset group, call DescribeDatasetGroup. If the
status shows as CREATE FAILED, the response includes a failureReason key, which describes
why the creation failed.  You must wait until the status of the dataset group is ACTIVE
before adding a dataset to the group.  You can specify an Key Management Service (KMS) key
to encrypt the datasets in the group. If you specify a KMS key, you must also include an
Identity and Access Management (IAM) role that has permission to access the key.  APIs that
require a dataset group ARN in the request     CreateDataset     CreateEventTracker
CreateSolution     Related APIs     ListDatasetGroups     DescribeDatasetGroup
DeleteDatasetGroup

# Arguments
- `name`: The name for the new dataset group.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"domain"`: The domain of the dataset group. Specify a domain to create a Domain dataset
  group. The domain you specify determines the default schemas for datasets and the use cases
  available for recommenders. If you don't specify a domain, you create a Custom dataset
  group with solution versions that you deploy with a campaign.
- `"kmsKeyArn"`: The Amazon Resource Name (ARN) of a Key Management Service (KMS) key used
  to encrypt the datasets.
- `"roleArn"`: The ARN of the Identity and Access Management (IAM) role that has
  permissions to access the Key Management Service (KMS) key. Supplying an IAM role is only
  valid when also specifying a KMS key.
"""
function create_dataset_group(name; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "CreateDatasetGroup",
        Dict{String,Any}("name" => name);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_dataset_group(
    name, params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "CreateDatasetGroup",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("name" => name), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_dataset_import_job(data_source, dataset_arn, job_name, role_arn)
    create_dataset_import_job(data_source, dataset_arn, job_name, role_arn, params::Dict{String,<:Any})

Creates a job that imports training data from your data source (an Amazon S3 bucket) to an
Amazon Personalize dataset. To allow Amazon Personalize to import the training data, you
must specify an IAM service role that has permission to read from the data source, as
Amazon Personalize makes a copy of your data and processes it internally. For information
on granting access to your Amazon S3 bucket, see Giving Amazon Personalize Access to Amazon
S3 Resources.   The dataset import job replaces any existing data in the dataset that you
imported in bulk.   Status  A dataset import job can be in one of the following states:
CREATE PENDING > CREATE IN_PROGRESS > ACTIVE -or- CREATE FAILED   To get the status
of the import job, call DescribeDatasetImportJob, providing the Amazon Resource Name (ARN)
of the dataset import job. The dataset import is complete when the status shows as ACTIVE.
If the status shows as CREATE FAILED, the response includes a failureReason key, which
describes why the job failed.  Importing takes time. You must wait until the status shows
as ACTIVE before training a model using the dataset.   Related APIs
ListDatasetImportJobs     DescribeDatasetImportJob

# Arguments
- `data_source`: The Amazon S3 bucket that contains the training data to import.
- `dataset_arn`: The ARN of the dataset that receives the imported data.
- `job_name`: The name for the dataset import job.
- `role_arn`: The ARN of the IAM role that has permissions to read from the Amazon S3 data
  source.

"""
function create_dataset_import_job(
    dataSource,
    datasetArn,
    jobName,
    roleArn;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateDatasetImportJob",
        Dict{String,Any}(
            "dataSource" => dataSource,
            "datasetArn" => datasetArn,
            "jobName" => jobName,
            "roleArn" => roleArn,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_dataset_import_job(
    dataSource,
    datasetArn,
    jobName,
    roleArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateDatasetImportJob",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "dataSource" => dataSource,
                    "datasetArn" => datasetArn,
                    "jobName" => jobName,
                    "roleArn" => roleArn,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_event_tracker(dataset_group_arn, name)
    create_event_tracker(dataset_group_arn, name, params::Dict{String,<:Any})

Creates an event tracker that you use when adding event data to a specified dataset group
using the PutEvents API.  Only one event tracker can be associated with a dataset group.
You will get an error if you call CreateEventTracker using the same dataset group as an
existing event tracker.  When you create an event tracker, the response includes a tracking
ID, which you pass as a parameter when you use the PutEvents operation. Amazon Personalize
then appends the event data to the Interactions dataset of the dataset group you specify in
your event tracker.  The event tracker can be in one of the following states:   CREATE
PENDING > CREATE IN_PROGRESS > ACTIVE -or- CREATE FAILED   DELETE PENDING > DELETE
IN_PROGRESS   To get the status of the event tracker, call DescribeEventTracker.  The event
tracker must be in the ACTIVE state before using the tracking ID.   Related APIs
ListEventTrackers     DescribeEventTracker     DeleteEventTracker

# Arguments
- `dataset_group_arn`: The Amazon Resource Name (ARN) of the dataset group that receives
  the event data.
- `name`: The name for the event tracker.

"""
function create_event_tracker(
    datasetGroupArn, name; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "CreateEventTracker",
        Dict{String,Any}("datasetGroupArn" => datasetGroupArn, "name" => name);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_event_tracker(
    datasetGroupArn,
    name,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateEventTracker",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}("datasetGroupArn" => datasetGroupArn, "name" => name),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_filter(dataset_group_arn, filter_expression, name)
    create_filter(dataset_group_arn, filter_expression, name, params::Dict{String,<:Any})

Creates a recommendation filter. For more information, see filter.

# Arguments
- `dataset_group_arn`: The ARN of the dataset group that the filter will belong to.
- `filter_expression`: The filter expression defines which items are included or excluded
  from recommendations. Filter expression must follow specific format rules. For information
  about filter expression structure and syntax, see filter-expressions.
- `name`: The name of the filter to create.

"""
function create_filter(
    datasetGroupArn,
    filterExpression,
    name;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateFilter",
        Dict{String,Any}(
            "datasetGroupArn" => datasetGroupArn,
            "filterExpression" => filterExpression,
            "name" => name,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_filter(
    datasetGroupArn,
    filterExpression,
    name,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateFilter",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "datasetGroupArn" => datasetGroupArn,
                    "filterExpression" => filterExpression,
                    "name" => name,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_recommender(dataset_group_arn, name, recipe_arn)
    create_recommender(dataset_group_arn, name, recipe_arn, params::Dict{String,<:Any})

Creates a recommender with the recipe (a Domain dataset group use case) you specify. You
create recommenders for a Domain dataset group and specify the recommender's Amazon
Resource Name (ARN) when you make a GetRecommendations request.   Status  A recommender can
be in one of the following states:   CREATE PENDING > CREATE IN_PROGRESS > ACTIVE
-or- CREATE FAILED   DELETE PENDING > DELETE IN_PROGRESS   To get the recommender
status, call DescribeRecommender.  Wait until the status of the recommender is ACTIVE
before asking the recommender for recommendations.   Related APIs     ListRecommenders
DescribeRecommender     UpdateRecommender     DeleteRecommender

# Arguments
- `dataset_group_arn`: The Amazon Resource Name (ARN) of the destination domain dataset
  group for the recommender.
- `name`: The name of the recommender.
- `recipe_arn`: The Amazon Resource Name (ARN) of the recipe that the recommender will use.
  For a recommender, a recipe is a Domain dataset group use case. Only Domain dataset group
  use cases can be used to create a recommender. For information about use cases see Choosing
  recommender use cases.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"recommenderConfig"`: The configuration details of the recommender.
"""
function create_recommender(
    datasetGroupArn, name, recipeArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "CreateRecommender",
        Dict{String,Any}(
            "datasetGroupArn" => datasetGroupArn, "name" => name, "recipeArn" => recipeArn
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_recommender(
    datasetGroupArn,
    name,
    recipeArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateRecommender",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "datasetGroupArn" => datasetGroupArn,
                    "name" => name,
                    "recipeArn" => recipeArn,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_schema(name, schema)
    create_schema(name, schema, params::Dict{String,<:Any})

Creates an Amazon Personalize schema from the specified schema string. The schema you
create must be in Avro JSON format. Amazon Personalize recognizes three schema variants.
Each schema is associated with a dataset type and has a set of required field and keywords.
If you are creating a schema for a dataset in a Domain dataset group, you provide the
domain of the Domain dataset group. You specify a schema when you call CreateDataset.
Related APIs     ListSchemas     DescribeSchema     DeleteSchema

# Arguments
- `name`: The name for the schema.
- `schema`: A schema in Avro JSON format.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"domain"`: The domain for the schema. If you are creating a schema for a dataset in a
  Domain dataset group, specify the domain you chose when you created the Domain dataset
  group.
"""
function create_schema(name, schema; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "CreateSchema",
        Dict{String,Any}("name" => name, "schema" => schema);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_schema(
    name,
    schema,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateSchema",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("name" => name, "schema" => schema), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_solution(dataset_group_arn, name)
    create_solution(dataset_group_arn, name, params::Dict{String,<:Any})

Creates the configuration for training a model. A trained model is known as a solution.
After the configuration is created, you train the model (create a solution) by calling the
CreateSolutionVersion operation. Every time you call CreateSolutionVersion, a new version
of the solution is created. After creating a solution version, you check its accuracy by
calling GetSolutionMetrics. When you are satisfied with the version, you deploy it using
CreateCampaign. The campaign provides recommendations to a client through the
GetRecommendations API. To train a model, Amazon Personalize requires training data and a
recipe. The training data comes from the dataset group that you provide in the request. A
recipe specifies the training algorithm and a feature transformation. You can specify one
of the predefined recipes provided by Amazon Personalize. Alternatively, you can specify
performAutoML and Amazon Personalize will analyze your data and select the optimum
USER_PERSONALIZATION recipe for you.  Amazon Personalize doesn't support configuring the
hpoObjective for solution hyperparameter optimization at this time.   Status  A solution
can be in one of the following states:   CREATE PENDING > CREATE IN_PROGRESS > ACTIVE
-or- CREATE FAILED   DELETE PENDING > DELETE IN_PROGRESS   To get the status of the
solution, call DescribeSolution. Wait until the status shows as ACTIVE before calling
CreateSolutionVersion.  Related APIs     ListSolutions     CreateSolutionVersion
DescribeSolution     DeleteSolution       ListSolutionVersions     DescribeSolutionVersion

# Arguments
- `dataset_group_arn`: The Amazon Resource Name (ARN) of the dataset group that provides
  the training data.
- `name`: The name for the solution.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"eventType"`: When your have multiple event types (using an EVENT_TYPE schema field),
  this parameter specifies which event type (for example, 'click' or 'like') is used for
  training the model. If you do not provide an eventType, Amazon Personalize will use all
  interactions for training with equal weight regardless of type.
- `"performAutoML"`: Whether to perform automated machine learning (AutoML). The default is
  false. For this case, you must specify recipeArn. When set to true, Amazon Personalize
  analyzes your training data and selects the optimal USER_PERSONALIZATION recipe and
  hyperparameters. In this case, you must omit recipeArn. Amazon Personalize determines the
  optimal recipe by running tests with different values for the hyperparameters. AutoML
  lengthens the training process as compared to selecting a specific recipe.
- `"performHPO"`: Whether to perform hyperparameter optimization (HPO) on the specified or
  selected recipe. The default is false. When performing AutoML, this parameter is always
  true and you should not set it to false.
- `"recipeArn"`: The ARN of the recipe to use for model training. Only specified when
  performAutoML is false.
- `"solutionConfig"`: The configuration to use with the solution. When performAutoML is set
  to true, Amazon Personalize only evaluates the autoMLConfig section of the solution
  configuration.  Amazon Personalize doesn't support configuring the hpoObjective at this
  time.
"""
function create_solution(
    datasetGroupArn, name; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "CreateSolution",
        Dict{String,Any}("datasetGroupArn" => datasetGroupArn, "name" => name);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_solution(
    datasetGroupArn,
    name,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateSolution",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}("datasetGroupArn" => datasetGroupArn, "name" => name),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Trains or retrains an active solution in a Custom dataset group. A solution is created
using the CreateSolution operation and must be in the ACTIVE state before calling
CreateSolutionVersion. A new version of the solution is created every time you call this
operation.  Status  A solution version can be in one of the following states:   CREATE
PENDING   CREATE IN_PROGRESS   ACTIVE   CREATE FAILED   CREATE STOPPING   CREATE STOPPED
To get the status of the version, call DescribeSolutionVersion. Wait until the status shows
as ACTIVE before calling CreateCampaign. If the status shows as CREATE FAILED, the response
includes a failureReason key, which describes why the job failed.  Related APIs
ListSolutionVersions     DescribeSolutionVersion       ListSolutions     CreateSolution
DescribeSolution     DeleteSolution

# Arguments
- `solution_arn`: The Amazon Resource Name (ARN) of the solution containing the training
  configuration information.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"trainingMode"`: The scope of training to be performed when creating the solution
  version. The FULL option trains the solution version based on the entirety of the input
  solution's training data, while the UPDATE option processes only the data that has changed
  in comparison to the input solution. Choose UPDATE when you want to incrementally update
  your solution version instead of creating an entirely new one.  The UPDATE option can only
  be used when you already have an active solution version created from the input solution
  using the FULL option and the input solution was trained with the User-Personalization
  recipe or the HRNN-Coldstart recipe.
"""
function create_solution_version(
    solutionArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "CreateSolutionVersion",
        Dict{String,Any}("solutionArn" => solutionArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_solution_version(
    solutionArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "CreateSolutionVersion",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("solutionArn" => solutionArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Removes a campaign by deleting the solution deployment. The solution that the campaign is
based on is not deleted and can be redeployed when needed. A deleted campaign can no longer
be specified in a GetRecommendations request. For more information on campaigns, see
CreateCampaign.

# Arguments
- `campaign_arn`: The Amazon Resource Name (ARN) of the campaign to delete.

"""
function delete_campaign(campaignArn; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "DeleteCampaign",
        Dict{String,Any}("campaignArn" => campaignArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_campaign(
    campaignArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DeleteCampaign",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("campaignArn" => campaignArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Deletes a dataset. You can't delete a dataset if an associated DatasetImportJob or
SolutionVersion is in the CREATE PENDING or IN PROGRESS state. For more information on
datasets, see CreateDataset.

# Arguments
- `dataset_arn`: The Amazon Resource Name (ARN) of the dataset to delete.

"""
function delete_dataset(datasetArn; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "DeleteDataset",
        Dict{String,Any}("datasetArn" => datasetArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_dataset(
    datasetArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DeleteDataset",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("datasetArn" => datasetArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Deletes a dataset group. Before you delete a dataset group, you must delete the following:
 All associated event trackers.   All associated solutions.   All datasets in the dataset
group.

# Arguments
- `dataset_group_arn`: The ARN of the dataset group to delete.

"""
function delete_dataset_group(
    datasetGroupArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "DeleteDatasetGroup",
        Dict{String,Any}("datasetGroupArn" => datasetGroupArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_dataset_group(
    datasetGroupArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DeleteDatasetGroup",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("datasetGroupArn" => datasetGroupArn), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Deletes the event tracker. Does not delete the event-interactions dataset from the
associated dataset group. For more information on event trackers, see CreateEventTracker.

# Arguments
- `event_tracker_arn`: The Amazon Resource Name (ARN) of the event tracker to delete.

"""
function delete_event_tracker(
    eventTrackerArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "DeleteEventTracker",
        Dict{String,Any}("eventTrackerArn" => eventTrackerArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_event_tracker(
    eventTrackerArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DeleteEventTracker",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("eventTrackerArn" => eventTrackerArn), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Deletes a filter.

# Arguments
- `filter_arn`: The ARN of the filter to delete.

"""
function delete_filter(filterArn; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "DeleteFilter",
        Dict{String,Any}("filterArn" => filterArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_filter(
    filterArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DeleteFilter",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("filterArn" => filterArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Deactivates and removes a recommender. A deleted recommender can no longer be specified in
a GetRecommendations request.

# Arguments
- `recommender_arn`: The Amazon Resource Name (ARN) of the recommender to delete.

"""
function delete_recommender(
    recommenderArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "DeleteRecommender",
        Dict{String,Any}("recommenderArn" => recommenderArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_recommender(
    recommenderArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DeleteRecommender",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("recommenderArn" => recommenderArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Deletes a schema. Before deleting a schema, you must delete all datasets referencing the
schema. For more information on schemas, see CreateSchema.

# Arguments
- `schema_arn`: The Amazon Resource Name (ARN) of the schema to delete.

"""
function delete_schema(schemaArn; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "DeleteSchema",
        Dict{String,Any}("schemaArn" => schemaArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_schema(
    schemaArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DeleteSchema",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("schemaArn" => schemaArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Deletes all versions of a solution and the Solution object itself. Before deleting a
solution, you must delete all campaigns based on the solution. To determine what campaigns
are using the solution, call ListCampaigns and supply the Amazon Resource Name (ARN) of the
solution. You can't delete a solution if an associated SolutionVersion is in the CREATE
PENDING or IN PROGRESS state. For more information on solutions, see CreateSolution.

# Arguments
- `solution_arn`: The ARN of the solution to delete.

"""
function delete_solution(solutionArn; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "DeleteSolution",
        Dict{String,Any}("solutionArn" => solutionArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_solution(
    solutionArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DeleteSolution",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("solutionArn" => solutionArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes the given algorithm.

# Arguments
- `algorithm_arn`: The Amazon Resource Name (ARN) of the algorithm to describe.

"""
function describe_algorithm(algorithmArn; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "DescribeAlgorithm",
        Dict{String,Any}("algorithmArn" => algorithmArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_algorithm(
    algorithmArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeAlgorithm",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("algorithmArn" => algorithmArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Gets the properties of a batch inference job including name, Amazon Resource Name (ARN),
status, input and output configurations, and the ARN of the solution version used to
generate the recommendations.

# Arguments
- `batch_inference_job_arn`: The ARN of the batch inference job to describe.

"""
function describe_batch_inference_job(
    batchInferenceJobArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "DescribeBatchInferenceJob",
        Dict{String,Any}("batchInferenceJobArn" => batchInferenceJobArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_batch_inference_job(
    batchInferenceJobArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeBatchInferenceJob",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}("batchInferenceJobArn" => batchInferenceJobArn),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Gets the properties of a batch segment job including name, Amazon Resource Name (ARN),
status, input and output configurations, and the ARN of the solution version used to
generate segments.

# Arguments
- `batch_segment_job_arn`: The ARN of the batch segment job to describe.

"""
function describe_batch_segment_job(
    batchSegmentJobArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "DescribeBatchSegmentJob",
        Dict{String,Any}("batchSegmentJobArn" => batchSegmentJobArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_batch_segment_job(
    batchSegmentJobArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeBatchSegmentJob",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("batchSegmentJobArn" => batchSegmentJobArn), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes the given campaign, including its status. A campaign can be in one of the
following states:   CREATE PENDING > CREATE IN_PROGRESS > ACTIVE -or- CREATE FAILED
DELETE PENDING > DELETE IN_PROGRESS   When the status is CREATE FAILED, the response
includes the failureReason key, which describes why. For more information on campaigns, see
CreateCampaign.

# Arguments
- `campaign_arn`: The Amazon Resource Name (ARN) of the campaign.

"""
function describe_campaign(campaignArn; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "DescribeCampaign",
        Dict{String,Any}("campaignArn" => campaignArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_campaign(
    campaignArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeCampaign",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("campaignArn" => campaignArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes the given dataset. For more information on datasets, see CreateDataset.

# Arguments
- `dataset_arn`: The Amazon Resource Name (ARN) of the dataset to describe.

"""
function describe_dataset(datasetArn; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "DescribeDataset",
        Dict{String,Any}("datasetArn" => datasetArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_dataset(
    datasetArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeDataset",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("datasetArn" => datasetArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes the dataset export job created by CreateDatasetExportJob, including the export
job status.

# Arguments
- `dataset_export_job_arn`: The Amazon Resource Name (ARN) of the dataset export job to
  describe.

"""
function describe_dataset_export_job(
    datasetExportJobArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "DescribeDatasetExportJob",
        Dict{String,Any}("datasetExportJobArn" => datasetExportJobArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_dataset_export_job(
    datasetExportJobArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeDatasetExportJob",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}("datasetExportJobArn" => datasetExportJobArn),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes the given dataset group. For more information on dataset groups, see
CreateDatasetGroup.

# Arguments
- `dataset_group_arn`: The Amazon Resource Name (ARN) of the dataset group to describe.

"""
function describe_dataset_group(
    datasetGroupArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "DescribeDatasetGroup",
        Dict{String,Any}("datasetGroupArn" => datasetGroupArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_dataset_group(
    datasetGroupArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeDatasetGroup",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("datasetGroupArn" => datasetGroupArn), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes the dataset import job created by CreateDatasetImportJob, including the import
job status.

# Arguments
- `dataset_import_job_arn`: The Amazon Resource Name (ARN) of the dataset import job to
  describe.

"""
function describe_dataset_import_job(
    datasetImportJobArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "DescribeDatasetImportJob",
        Dict{String,Any}("datasetImportJobArn" => datasetImportJobArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_dataset_import_job(
    datasetImportJobArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeDatasetImportJob",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}("datasetImportJobArn" => datasetImportJobArn),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes an event tracker. The response includes the trackingId and status of the event
tracker. For more information on event trackers, see CreateEventTracker.

# Arguments
- `event_tracker_arn`: The Amazon Resource Name (ARN) of the event tracker to describe.

"""
function describe_event_tracker(
    eventTrackerArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "DescribeEventTracker",
        Dict{String,Any}("eventTrackerArn" => eventTrackerArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_event_tracker(
    eventTrackerArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeEventTracker",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("eventTrackerArn" => eventTrackerArn), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes the given feature transformation.

# Arguments
- `feature_transformation_arn`: The Amazon Resource Name (ARN) of the feature
  transformation to describe.

"""
function describe_feature_transformation(
    featureTransformationArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "DescribeFeatureTransformation",
        Dict{String,Any}("featureTransformationArn" => featureTransformationArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_feature_transformation(
    featureTransformationArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeFeatureTransformation",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}("featureTransformationArn" => featureTransformationArn),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes a filter's properties.

# Arguments
- `filter_arn`: The ARN of the filter to describe.

"""
function describe_filter(filterArn; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "DescribeFilter",
        Dict{String,Any}("filterArn" => filterArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_filter(
    filterArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeFilter",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("filterArn" => filterArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes a recipe. A recipe contains three items:   An algorithm that trains a model.
Hyperparameters that govern the training.   Feature transformation information for
modifying the input data before training.   Amazon Personalize provides a set of predefined
recipes. You specify a recipe when you create a solution with the CreateSolution API.
CreateSolution trains a model by using the algorithm in the specified recipe and a training
dataset. The solution, when deployed as a campaign, can provide recommendations using the
GetRecommendations API.

# Arguments
- `recipe_arn`: The Amazon Resource Name (ARN) of the recipe to describe.

"""
function describe_recipe(recipeArn; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "DescribeRecipe",
        Dict{String,Any}("recipeArn" => recipeArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_recipe(
    recipeArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeRecipe",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("recipeArn" => recipeArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes the given recommender, including its status. A recommender can be in one of the
following states:   CREATE PENDING > CREATE IN_PROGRESS > ACTIVE -or- CREATE FAILED
DELETE PENDING > DELETE IN_PROGRESS   When the status is CREATE FAILED, the response
includes the failureReason key, which describes why. For more information on recommenders,
see CreateRecommender.

# Arguments
- `recommender_arn`: The Amazon Resource Name (ARN) of the recommender to describe.

"""
function describe_recommender(
    recommenderArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "DescribeRecommender",
        Dict{String,Any}("recommenderArn" => recommenderArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_recommender(
    recommenderArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeRecommender",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("recommenderArn" => recommenderArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes a schema. For more information on schemas, see CreateSchema.

# Arguments
- `schema_arn`: The Amazon Resource Name (ARN) of the schema to retrieve.

"""
function describe_schema(schemaArn; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "DescribeSchema",
        Dict{String,Any}("schemaArn" => schemaArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_schema(
    schemaArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeSchema",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("schemaArn" => schemaArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes a solution. For more information on solutions, see CreateSolution.

# Arguments
- `solution_arn`: The Amazon Resource Name (ARN) of the solution to describe.

"""
function describe_solution(solutionArn; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "DescribeSolution",
        Dict{String,Any}("solutionArn" => solutionArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_solution(
    solutionArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeSolution",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("solutionArn" => solutionArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Describes a specific version of a solution. For more information on solutions, see
CreateSolution.

# Arguments
- `solution_version_arn`: The Amazon Resource Name (ARN) of the solution version.

"""
function describe_solution_version(
    solutionVersionArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "DescribeSolutionVersion",
        Dict{String,Any}("solutionVersionArn" => solutionVersionArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_solution_version(
    solutionVersionArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "DescribeSolutionVersion",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("solutionVersionArn" => solutionVersionArn), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Gets the metrics for the specified solution version.

# Arguments
- `solution_version_arn`: The Amazon Resource Name (ARN) of the solution version for which
  to get metrics.

"""
function get_solution_metrics(
    solutionVersionArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "GetSolutionMetrics",
        Dict{String,Any}("solutionVersionArn" => solutionVersionArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_solution_metrics(
    solutionVersionArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "GetSolutionMetrics",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("solutionVersionArn" => solutionVersionArn), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Gets a list of the batch inference jobs that have been performed off of a solution version.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`: The maximum number of batch inference job results to return in each page.
  The default value is 100.
- `"nextToken"`: The token to request the next page of results.
- `"solutionVersionArn"`: The Amazon Resource Name (ARN) of the solution version from which
  the batch inference jobs were created.
"""
function list_batch_inference_jobs(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListBatchInferenceJobs"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_batch_inference_jobs(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListBatchInferenceJobs",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Gets a list of the batch segment jobs that have been performed off of a solution version
that you specify.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`: The maximum number of batch segment job results to return in each page.
  The default value is 100.
- `"nextToken"`: The token to request the next page of results.
- `"solutionVersionArn"`: The Amazon Resource Name (ARN) of the solution version that the
  batch segment jobs used to generate batch segments.
"""
function list_batch_segment_jobs(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListBatchSegmentJobs"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_batch_segment_jobs(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListBatchSegmentJobs",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Returns a list of campaigns that use the given solution. When a solution is not specified,
all the campaigns associated with the account are listed. The response provides the
properties for each campaign, including the Amazon Resource Name (ARN). For more
information on campaigns, see CreateCampaign.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`: The maximum number of campaigns to return.
- `"nextToken"`: A token returned from the previous call to ListCampaigns for getting the
  next set of campaigns (if they exist).
- `"solutionArn"`: The Amazon Resource Name (ARN) of the solution to list the campaigns
  for. When a solution is not specified, all the campaigns associated with the account are
  listed.
"""
function list_campaigns(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListCampaigns"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_campaigns(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListCampaigns", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

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

Returns a list of dataset export jobs that use the given dataset. When a dataset is not
specified, all the dataset export jobs associated with the account are listed. The response
provides the properties for each dataset export job, including the Amazon Resource Name
(ARN). For more information on dataset export jobs, see CreateDatasetExportJob. For more
information on datasets, see CreateDataset.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"datasetArn"`: The Amazon Resource Name (ARN) of the dataset to list the dataset export
  jobs for.
- `"maxResults"`: The maximum number of dataset export jobs to return.
- `"nextToken"`: A token returned from the previous call to ListDatasetExportJobs for
  getting the next set of dataset export jobs (if they exist).
"""
function list_dataset_export_jobs(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListDatasetExportJobs"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_dataset_export_jobs(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListDatasetExportJobs",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Returns a list of dataset groups. The response provides the properties for each dataset
group, including the Amazon Resource Name (ARN). For more information on dataset groups,
see CreateDatasetGroup.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`: The maximum number of dataset groups to return.
- `"nextToken"`: A token returned from the previous call to ListDatasetGroups for getting
  the next set of dataset groups (if they exist).
"""
function list_dataset_groups(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListDatasetGroups"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_dataset_groups(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListDatasetGroups", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

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

Returns a list of dataset import jobs that use the given dataset. When a dataset is not
specified, all the dataset import jobs associated with the account are listed. The response
provides the properties for each dataset import job, including the Amazon Resource Name
(ARN). For more information on dataset import jobs, see CreateDatasetImportJob. For more
information on datasets, see CreateDataset.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"datasetArn"`: The Amazon Resource Name (ARN) of the dataset to list the dataset import
  jobs for.
- `"maxResults"`: The maximum number of dataset import jobs to return.
- `"nextToken"`: A token returned from the previous call to ListDatasetImportJobs for
  getting the next set of dataset import jobs (if they exist).
"""
function list_dataset_import_jobs(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListDatasetImportJobs"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_dataset_import_jobs(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListDatasetImportJobs",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Returns the list of datasets contained in the given dataset group. The response provides
the properties for each dataset, including the Amazon Resource Name (ARN). For more
information on datasets, see CreateDataset.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"datasetGroupArn"`: The Amazon Resource Name (ARN) of the dataset group that contains
  the datasets to list.
- `"maxResults"`: The maximum number of datasets to return.
- `"nextToken"`: A token returned from the previous call to ListDatasetImportJobs for
  getting the next set of dataset import jobs (if they exist).
"""
function list_datasets(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListDatasets"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_datasets(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListDatasets", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

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

Returns the list of event trackers associated with the account. The response provides the
properties for each event tracker, including the Amazon Resource Name (ARN) and tracking
ID. For more information on event trackers, see CreateEventTracker.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"datasetGroupArn"`: The ARN of a dataset group used to filter the response.
- `"maxResults"`: The maximum number of event trackers to return.
- `"nextToken"`: A token returned from the previous call to ListEventTrackers for getting
  the next set of event trackers (if they exist).
"""
function list_event_trackers(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListEventTrackers"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_event_trackers(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListEventTrackers", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

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

Lists all filters that belong to a given dataset group.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"datasetGroupArn"`: The ARN of the dataset group that contains the filters.
- `"maxResults"`: The maximum number of filters to return.
- `"nextToken"`: A token returned from the previous call to ListFilters for getting the
  next set of filters (if they exist).
"""
function list_filters(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListFilters"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_filters(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListFilters", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

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

Returns a list of available recipes. The response provides the properties for each recipe,
including the recipe's Amazon Resource Name (ARN).

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"domain"`:  Filters returned recipes by domain for a Domain dataset group. Only recipes
  (Domain dataset group use cases) for this domain are included in the response. If you don't
  specify a domain, only non-domain recipes are returned.
- `"maxResults"`: The maximum number of recipes to return.
- `"nextToken"`: A token returned from the previous call to ListRecipes for getting the
  next set of recipes (if they exist).
- `"recipeProvider"`: The default is SERVICE.
"""
function list_recipes(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListRecipes"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_recipes(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListRecipes", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

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

Returns a list of recommenders in a given Domain dataset group. When a Domain dataset group
is not specified, all the recommenders associated with the account are listed. The response
provides the properties for each recommender, including the Amazon Resource Name (ARN). For
more information on recommenders, see CreateRecommender.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"datasetGroupArn"`: The Amazon Resource Name (ARN) of the Domain dataset group to list
  the recommenders for. When a Domain dataset group is not specified, all the recommenders
  associated with the account are listed.
- `"maxResults"`: The maximum number of recommenders to return.
- `"nextToken"`: A token returned from the previous call to ListRecommenders for getting
  the next set of recommenders (if they exist).
"""
function list_recommenders(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListRecommenders"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_recommenders(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListRecommenders", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

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

Returns the list of schemas associated with the account. The response provides the
properties for each schema, including the Amazon Resource Name (ARN). For more information
on schemas, see CreateSchema.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`: The maximum number of schemas to return.
- `"nextToken"`: A token returned from the previous call to ListSchemas for getting the
  next set of schemas (if they exist).
"""
function list_schemas(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListSchemas"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_schemas(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListSchemas", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

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

Returns a list of solution versions for the given solution. When a solution is not
specified, all the solution versions associated with the account are listed. The response
provides the properties for each solution version, including the Amazon Resource Name
(ARN). For more information on solutions, see CreateSolution.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`: The maximum number of solution versions to return.
- `"nextToken"`: A token returned from the previous call to ListSolutionVersions for
  getting the next set of solution versions (if they exist).
- `"solutionArn"`: The Amazon Resource Name (ARN) of the solution.
"""
function list_solution_versions(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListSolutionVersions"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_solution_versions(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListSolutionVersions",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Returns a list of solutions that use the given dataset group. When a dataset group is not
specified, all the solutions associated with the account are listed. The response provides
the properties for each solution, including the Amazon Resource Name (ARN). For more
information on solutions, see CreateSolution.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"datasetGroupArn"`: The Amazon Resource Name (ARN) of the dataset group.
- `"maxResults"`: The maximum number of solutions to return.
- `"nextToken"`: A token returned from the previous call to ListSolutions for getting the
  next set of solutions (if they exist).
"""
function list_solutions(; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "ListSolutions"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_solutions(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "ListSolutions", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

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

Stops creating a solution version that is in a state of CREATE_PENDING or CREATE
IN_PROGRESS.  Depending on the current state of the solution version, the solution version
state changes as follows:   CREATE_PENDING > CREATE_STOPPED or   CREATE_IN_PROGRESS >
CREATE_STOPPING > CREATE_STOPPED   You are billed for all of the training completed up
until you stop the solution version creation. You cannot resume creating a solution version
once it has been stopped.

# Arguments
- `solution_version_arn`: The Amazon Resource Name (ARN) of the solution version you want
  to stop creating.

"""
function stop_solution_version_creation(
    solutionVersionArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "StopSolutionVersionCreation",
        Dict{String,Any}("solutionVersionArn" => solutionVersionArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function stop_solution_version_creation(
    solutionVersionArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "StopSolutionVersionCreation",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("solutionVersionArn" => solutionVersionArn), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Updates a campaign by either deploying a new solution or changing the value of the
campaign's minProvisionedTPS parameter. To update a campaign, the campaign status must be
ACTIVE or CREATE FAILED. Check the campaign status using the DescribeCampaign API.  You
must wait until the status of the updated campaign is ACTIVE before asking the campaign for
recommendations.  For more information on campaigns, see CreateCampaign.

# Arguments
- `campaign_arn`: The Amazon Resource Name (ARN) of the campaign.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"campaignConfig"`: The configuration details of a campaign.
- `"minProvisionedTPS"`: Specifies the requested minimum provisioned transactions
  (recommendations) per second that Amazon Personalize will support.
- `"solutionVersionArn"`: The ARN of a new solution version to deploy.
"""
function update_campaign(campaignArn; aws_config::AbstractAWSConfig=global_aws_config())
    return personalize(
        "UpdateCampaign",
        Dict{String,Any}("campaignArn" => campaignArn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function update_campaign(
    campaignArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "UpdateCampaign",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("campaignArn" => campaignArn), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_recommender(recommender_arn, recommender_config)
    update_recommender(recommender_arn, recommender_config, params::Dict{String,<:Any})

Updates the recommender to modify the recommender configuration.

# Arguments
- `recommender_arn`: The Amazon Resource Name (ARN) of the recommender to modify.
- `recommender_config`: The configuration details of the recommender.

"""
function update_recommender(
    recommenderArn, recommenderConfig; aws_config::AbstractAWSConfig=global_aws_config()
)
    return personalize(
        "UpdateRecommender",
        Dict{String,Any}(
            "recommenderArn" => recommenderArn, "recommenderConfig" => recommenderConfig
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function update_recommender(
    recommenderArn,
    recommenderConfig,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return personalize(
        "UpdateRecommender",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "recommenderArn" => recommenderArn,
                    "recommenderConfig" => recommenderConfig,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end


text:
const ListNode{T, I} = Tuple{T, I}

struct Cons{T}
    car::T
    cdr::Union{Nothing, Cons{T}}
end
const List{T} = Union{Nothing, Cons{T}}

@inline nil() = nothing
@inline cons(car::T, cdr) where T = Cons{T}(car, cdr)

@inline nil(alloc::A) where {T, I, A <: AbstractFreeListAllocator{ListNode{T, I}, I}} = 0
@inline cons(car::T, cdr, alloc::A) where {T, I, A <: AbstractFreeListAllocator{ListNode{T, I}, I}} =
    allocateend!(alloc, (car, cdr))

@inline deallocate(i::I, alloc::A) where {T, I, A <: AbstractFreeListAllocator{ListNode{T, I}, I}} =
    deallocate!(alloc, i)

ext: jl