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

"""
    create_parallel_data(client_token, name, parallel_data_config)
    create_parallel_data(client_token, name, parallel_data_config, params::Dict{String,<:Any})

Creates a parallel data resource in Amazon Translate by importing an input file from Amazon
S3. Parallel data files contain examples that show how you want segments of text to be
translated. By adding parallel data, you can influence the style, tone, and word choice in
your translation output.

# Arguments
- `client_token`: A unique identifier for the request. This token is automatically
  generated when you use Amazon Translate through an AWS SDK.
- `name`: A custom name for the parallel data resource in Amazon Translate. You must assign
  a name that is unique in the account and region.
- `parallel_data_config`: Specifies the format and S3 location of the parallel data input
  file.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"Description"`: A custom description for the parallel data resource in Amazon Translate.
- `"EncryptionKey"`:
"""
function create_parallel_data(
    ClientToken, Name, ParallelDataConfig; aws_config::AbstractAWSConfig=global_aws_config()
)
    return translate(
        "CreateParallelData",
        Dict{String,Any}(
            "ClientToken" => ClientToken,
            "Name" => Name,
            "ParallelDataConfig" => ParallelDataConfig,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_parallel_data(
    ClientToken,
    Name,
    ParallelDataConfig,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return translate(
        "CreateParallelData",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "ClientToken" => ClientToken,
                    "Name" => Name,
                    "ParallelDataConfig" => ParallelDataConfig,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Deletes a parallel data resource in Amazon Translate.

# Arguments
- `name`: The name of the parallel data resource that is being deleted.

"""
function delete_parallel_data(Name; aws_config::AbstractAWSConfig=global_aws_config())
    return translate(
        "DeleteParallelData",
        Dict{String,Any}("Name" => Name);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_parallel_data(
    Name, params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return translate(
        "DeleteParallelData",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("Name" => Name), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

A synchronous action that deletes a custom terminology.

# Arguments
- `name`: The name of the custom terminology being deleted.

"""
function delete_terminology(Name; aws_config::AbstractAWSConfig=global_aws_config())
    return translate(
        "DeleteTerminology",
        Dict{String,Any}("Name" => Name);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_terminology(
    Name, params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return translate(
        "DeleteTerminology",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("Name" => Name), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Gets the properties associated with an asynchronous batch translation job including name,
ID, status, source and target languages, input/output S3 buckets, and so on.

# Arguments
- `job_id`: The identifier that Amazon Translate generated for the job. The
  StartTextTranslationJob operation returns this identifier in its response.

"""
function describe_text_translation_job(
    JobId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return translate(
        "DescribeTextTranslationJob",
        Dict{String,Any}("JobId" => JobId);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_text_translation_job(
    JobId, params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return translate(
        "DescribeTextTranslationJob",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("JobId" => JobId), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Provides information about a parallel data resource.

# Arguments
- `name`: The name of the parallel data resource that is being retrieved.

"""
function get_parallel_data(Name; aws_config::AbstractAWSConfig=global_aws_config())
    return translate(
        "GetParallelData",
        Dict{String,Any}("Name" => Name);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_parallel_data(
    Name, params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return translate(
        "GetParallelData",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("Name" => Name), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Retrieves a custom terminology.

# Arguments
- `name`: The name of the custom terminology being retrieved.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"TerminologyDataFormat"`: The data format of the custom terminology being retrieved. If
  you don't specify this parameter, Amazon Translate returns a file that has the same format
  as the file that was imported to create the terminology.  If you specify this parameter
  when you retrieve a multi-directional terminology resource, you must specify the same
  format as that of the input file that was imported to create it. Otherwise, Amazon
  Translate throws an error.
"""
function get_terminology(Name; aws_config::AbstractAWSConfig=global_aws_config())
    return translate(
        "GetTerminology",
        Dict{String,Any}("Name" => Name);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_terminology(
    Name, params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return translate(
        "GetTerminology",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("Name" => Name), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    import_terminology(merge_strategy, name, terminology_data)
    import_terminology(merge_strategy, name, terminology_data, params::Dict{String,<:Any})

Creates or updates a custom terminology, depending on whether or not one already exists for
the given terminology name. Importing a terminology with the same name as an existing one
will merge the terminologies based on the chosen merge strategy. Currently, the only
supported merge strategy is OVERWRITE, and so the imported terminology will overwrite an
existing terminology of the same name. If you import a terminology that overwrites an
existing one, the new terminology take up to 10 minutes to fully propagate and be available
for use in a translation due to cache policies with the DataPlane service that performs the
translations.

# Arguments
- `merge_strategy`: The merge strategy of the custom terminology being imported. Currently,
  only the OVERWRITE merge strategy is supported. In this case, the imported terminology will
  overwrite an existing terminology of the same name.
- `name`: The name of the custom terminology being imported.
- `terminology_data`: The terminology data for the custom terminology being imported.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"Description"`: The description of the custom terminology being imported.
- `"EncryptionKey"`: The encryption key for the custom terminology being imported.
"""
function import_terminology(
    MergeStrategy, Name, TerminologyData; aws_config::AbstractAWSConfig=global_aws_config()
)
    return translate(
        "ImportTerminology",
        Dict{String,Any}(
            "MergeStrategy" => MergeStrategy,
            "Name" => Name,
            "TerminologyData" => TerminologyData,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function import_terminology(
    MergeStrategy,
    Name,
    TerminologyData,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return translate(
        "ImportTerminology",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "MergeStrategy" => MergeStrategy,
                    "Name" => Name,
                    "TerminologyData" => TerminologyData,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Provides a list of your parallel data resources in Amazon Translate.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"MaxResults"`: The maximum number of parallel data resources returned for each request.
- `"NextToken"`: A string that specifies the next page of results to return in a paginated
  response.
"""
function list_parallel_data(; aws_config::AbstractAWSConfig=global_aws_config())
    return translate(
        "ListParallelData"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_parallel_data(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return translate(
        "ListParallelData", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

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

Provides a list of custom terminologies associated with your account.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"MaxResults"`: The maximum number of custom terminologies returned per list request.
- `"NextToken"`: If the result of the request to ListTerminologies was truncated, include
  the NextToken to fetch the next group of custom terminologies.
"""
function list_terminologies(; aws_config::AbstractAWSConfig=global_aws_config())
    return translate(
        "ListTerminologies"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_terminologies(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return translate(
        "ListTerminologies", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

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

Gets a list of the batch translation jobs that you have submitted.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"Filter"`: The parameters that specify which batch translation jobs to retrieve. Filters
  include job name, job status, and submission time. You can only set one filter at a time.
- `"MaxResults"`: The maximum number of results to return in each page. The default value
  is 100.
- `"NextToken"`: The token to request the next page of results.
"""
function list_text_translation_jobs(; aws_config::AbstractAWSConfig=global_aws_config())
    return translate(
        "ListTextTranslationJobs"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_text_translation_jobs(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return translate(
        "ListTextTranslationJobs",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    start_text_translation_job(client_token, data_access_role_arn, input_data_config, output_data_config, source_language_code, target_language_codes)
    start_text_translation_job(client_token, data_access_role_arn, input_data_config, output_data_config, source_language_code, target_language_codes, params::Dict{String,<:Any})

Starts an asynchronous batch translation job. Batch translation jobs can be used to
translate large volumes of text across multiple documents at once. For more information,
see async. Batch translation jobs can be described with the DescribeTextTranslationJob
operation, listed with the ListTextTranslationJobs operation, and stopped with the
StopTextTranslationJob operation.  Amazon Translate does not support batch translation of
multiple source languages at once.

# Arguments
- `client_token`: A unique identifier for the request. This token is auto-generated when
  using the Amazon Translate SDK.
- `data_access_role_arn`: The Amazon Resource Name (ARN) of an AWS Identity Access and
  Management (IAM) role that grants Amazon Translate read access to your input data. For more
  information, see identity-and-access-management.
- `input_data_config`: Specifies the format and S3 location of the input documents for the
  translation job.
- `output_data_config`: Specifies the S3 folder to which your job output will be saved.
- `source_language_code`: The language code of the input language. For a list of language
  codes, see what-is-languages. Amazon Translate does not automatically detect a source
  language during batch translation jobs.
- `target_language_codes`: The language code of the output language.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"JobName"`: The name of the batch translation job to be performed.
- `"ParallelDataNames"`: The name of a parallel data resource to add to the translation
  job. This resource consists of examples that show how you want segments of text to be
  translated. When you add parallel data to a translation job, you create an Active Custom
  Translation job.  This parameter accepts only one parallel data resource.  Active Custom
  Translation jobs are priced at a higher rate than other jobs that don't use parallel data.
  For more information, see Amazon Translate pricing.  For a list of available parallel data
  resources, use the ListParallelData operation. For more information, see
  customizing-translations-parallel-data.
- `"Settings"`: Settings to configure your translation output, including the option to mask
  profane words and phrases.
- `"TerminologyNames"`: The name of a custom terminology resource to add to the translation
  job. This resource lists examples source terms and the desired translation for each term.
  This parameter accepts only one custom terminology resource. For a list of available custom
  terminology resources, use the ListTerminologies operation. For more information, see
  how-custom-terminology.
"""
function start_text_translation_job(
    ClientToken,
    DataAccessRoleArn,
    InputDataConfig,
    OutputDataConfig,
    SourceLanguageCode,
    TargetLanguageCodes;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return translate(
        "StartTextTranslationJob",
        Dict{String,Any}(
            "ClientToken" => ClientToken,
            "DataAccessRoleArn" => DataAccessRoleArn,
            "InputDataConfig" => InputDataConfig,
            "OutputDataConfig" => OutputDataConfig,
            "SourceLanguageCode" => SourceLanguageCode,
            "TargetLanguageCodes" => TargetLanguageCodes,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function start_text_translation_job(
    ClientToken,
    DataAccessRoleArn,
    InputDataConfig,
    OutputDataConfig,
    SourceLanguageCode,
    TargetLanguageCodes,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return translate(
        "StartTextTranslationJob",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "ClientToken" => ClientToken,
                    "DataAccessRoleArn" => DataAccessRoleArn,
                    "InputDataConfig" => InputDataConfig,
                    "OutputDataConfig" => OutputDataConfig,
                    "SourceLanguageCode" => SourceLanguageCode,
                    "TargetLanguageCodes" => TargetLanguageCodes,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Stops an asynchronous batch translation job that is in progress. If the job's state is
IN_PROGRESS, the job will be marked for termination and put into the STOP_REQUESTED state.
If the job completes before it can be stopped, it is put into the COMPLETED state.
Otherwise, the job is put into the STOPPED state. Asynchronous batch translation jobs are
started with the StartTextTranslationJob operation. You can use the
DescribeTextTranslationJob or ListTextTranslationJobs operations to get a batch translation
job's JobId.

# Arguments
- `job_id`: The job ID of the job to be stopped.

"""
function stop_text_translation_job(JobId; aws_config::AbstractAWSConfig=global_aws_config())
    return translate(
        "StopTextTranslationJob",
        Dict{String,Any}("JobId" => JobId);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function stop_text_translation_job(
    JobId, params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return translate(
        "StopTextTranslationJob",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("JobId" => JobId), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    translate_text(source_language_code, target_language_code, text)
    translate_text(source_language_code, target_language_code, text, params::Dict{String,<:Any})

Translates input text from the source language to the target language. For a list of
available languages and language codes, see what-is-languages.

# Arguments
- `source_language_code`: The language code for the language of the source text. The
  language must be a language supported by Amazon Translate. For a list of language codes,
  see what-is-languages. To have Amazon Translate determine the source language of your text,
  you can specify auto in the SourceLanguageCode field. If you specify auto, Amazon Translate
  will call Amazon Comprehend to determine the source language.
- `target_language_code`: The language code requested for the language of the target text.
  The language must be a language supported by Amazon Translate.
- `text`: The text to translate. The text string can be a maximum of 5,000 bytes long.
  Depending on your character set, this may be fewer than 5,000 characters.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"Settings"`: Settings to configure your translation output, including the option to mask
  profane words and phrases.
- `"TerminologyNames"`: The name of the terminology list file to be used in the
  TranslateText request. You can use 1 terminology list at most in a TranslateText request.
  Terminology lists can contain a maximum of 256 terms.
"""
function translate_text(
    SourceLanguageCode,
    TargetLanguageCode,
    Text;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return translate(
        "TranslateText",
        Dict{String,Any}(
            "SourceLanguageCode" => SourceLanguageCode,
            "TargetLanguageCode" => TargetLanguageCode,
            "Text" => Text,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function translate_text(
    SourceLanguageCode,
    TargetLanguageCode,
    Text,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return translate(
        "TranslateText",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "SourceLanguageCode" => SourceLanguageCode,
                    "TargetLanguageCode" => TargetLanguageCode,
                    "Text" => Text,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_parallel_data(client_token, name, parallel_data_config)
    update_parallel_data(client_token, name, parallel_data_config, params::Dict{String,<:Any})

Updates a previously created parallel data resource by importing a new input file from
Amazon S3.

# Arguments
- `client_token`: A unique identifier for the request. This token is automatically
  generated when you use Amazon Translate through an AWS SDK.
- `name`: The name of the parallel data resource being updated.
- `parallel_data_config`: Specifies the format and S3 location of the parallel data input
  file.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"Description"`: A custom description for the parallel data resource in Amazon Translate.
"""
function update_parallel_data(
    ClientToken, Name, ParallelDataConfig; aws_config::AbstractAWSConfig=global_aws_config()
)
    return translate(
        "UpdateParallelData",
        Dict{String,Any}(
            "ClientToken" => ClientToken,
            "Name" => Name,
            "ParallelDataConfig" => ParallelDataConfig,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function update_parallel_data(
    ClientToken,
    Name,
    ParallelDataConfig,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return translate(
        "UpdateParallelData",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "ClientToken" => ClientToken,
                    "Name" => Name,
                    "ParallelDataConfig" => ParallelDataConfig,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
