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

"""
    associate_library_item_review(instance-id, library_item_id)
    associate_library_item_review(instance-id, library_item_id, params::Dict{String,<:Any})

Associates a rating or review for a library item with the user submitting the request. This
increments the rating count for the specified library item.

# Arguments
- `instance-id`: The unique identifier for the Amazon Q Business application environment
  instance.
- `library_item_id`: The unique identifier of the library item to associate the review with.

"""
function associate_library_item_review end

function associate_library_item_review(
    instance_id, libraryItemId; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "POST",
        "/catalog.associateItemRating",
        Dict{String,Any}(
            "libraryItemId" => libraryItemId,
            "headers" => Dict{String,Any}("instance-id" => instance_id),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function associate_library_item_review(
    instance_id,
    libraryItemId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/catalog.associateItemRating",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "libraryItemId" => libraryItemId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    associate_qapp_with_user(app_id, instance-id)
    associate_qapp_with_user(app_id, instance-id, params::Dict{String,<:Any})

This operation creates a link between the user's identity calling the operation and a
specific Q App. This is useful to mark the Q App as a favorite for the user if the user
doesn't own the Amazon Q App so they can still run it and see it in their inventory of Q
Apps.

# Arguments
- `app_id`: The ID of the Amazon Q App to associate with the user.
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.

"""
function associate_qapp_with_user end

function associate_qapp_with_user(
    appId, instance_id; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "POST",
        "/apps.install",
        Dict{String,Any}(
            "appId" => appId, "headers" => Dict{String,Any}("instance-id" => instance_id)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function associate_qapp_with_user(
    appId,
    instance_id,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/apps.install",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "appId" => appId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_library_item(app_id, app_version, categories, instance-id)
    create_library_item(app_id, app_version, categories, instance-id, params::Dict{String,<:Any})

Creates a new library item for an Amazon Q App, allowing it to be discovered and used by
other allowed users.

# Arguments
- `app_id`: The unique identifier of the Amazon Q App to publish to the library.
- `app_version`: The version of the Amazon Q App to publish to the library.
- `categories`: The categories to associate with the library item for easier discovery.
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.

"""
function create_library_item end

function create_library_item(
    appId,
    appVersion,
    categories,
    instance_id;
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/catalog.createItem",
        Dict{String,Any}(
            "appId" => appId,
            "appVersion" => appVersion,
            "categories" => categories,
            "headers" => Dict{String,Any}("instance-id" => instance_id),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function create_library_item(
    appId,
    appVersion,
    categories,
    instance_id,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/catalog.createItem",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "appId" => appId,
                    "appVersion" => appVersion,
                    "categories" => categories,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_qapp(app_definition, instance-id, title)
    create_qapp(app_definition, instance-id, title, params::Dict{String,<:Any})

Creates a new Amazon Q App based on the provided definition. The Q App definition specifies
the cards and flow of the Q App. This operation also calculates the dependencies between
the cards by inspecting the references in the prompts.

# Arguments
- `app_definition`: The definition of the new Q App, specifying the cards and flow.
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.
- `title`: The title of the new Q App.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"description"`: The description of the new Q App.
- `"tags"`: Optional tags to associate with the new Q App.
"""
function create_qapp end

function create_qapp(
    appDefinition, instance_id, title; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "POST",
        "/apps.create",
        Dict{String,Any}(
            "appDefinition" => appDefinition,
            "title" => title,
            "headers" => Dict{String,Any}("instance-id" => instance_id),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function create_qapp(
    appDefinition,
    instance_id,
    title,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/apps.create",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "appDefinition" => appDefinition,
                    "title" => title,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    delete_library_item(instance-id, library_item_id)
    delete_library_item(instance-id, library_item_id, params::Dict{String,<:Any})

Deletes a library item for an Amazon Q App, removing it from the library so it can no
longer be discovered or used by other users.

# Arguments
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.
- `library_item_id`: The unique identifier of the library item to delete.

"""
function delete_library_item end

function delete_library_item(
    instance_id, libraryItemId; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "POST",
        "/catalog.deleteItem",
        Dict{String,Any}(
            "libraryItemId" => libraryItemId,
            "headers" => Dict{String,Any}("instance-id" => instance_id),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function delete_library_item(
    instance_id,
    libraryItemId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/catalog.deleteItem",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "libraryItemId" => libraryItemId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    delete_qapp(app_id, instance-id)
    delete_qapp(app_id, instance-id, params::Dict{String,<:Any})

Deletes an Amazon Q App owned by the user. If the Q App was previously published to the
library, it is also removed from the library.

# Arguments
- `app_id`: The unique identifier of the Q App to delete.
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.

"""
function delete_qapp end

function delete_qapp(appId, instance_id; aws_config::AbstractAWSConfig=current_aws_config())
    return qapps(
        "POST",
        "/apps.delete",
        Dict{String,Any}(
            "appId" => appId, "headers" => Dict{String,Any}("instance-id" => instance_id)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function delete_qapp(
    appId,
    instance_id,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/apps.delete",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "appId" => appId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    disassociate_library_item_review(instance-id, library_item_id)
    disassociate_library_item_review(instance-id, library_item_id, params::Dict{String,<:Any})

Removes a rating or review previously submitted by the user for a library item.

# Arguments
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.
- `library_item_id`: The unique identifier of the library item to remove the review from.

"""
function disassociate_library_item_review end

function disassociate_library_item_review(
    instance_id, libraryItemId; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "POST",
        "/catalog.disassociateItemRating",
        Dict{String,Any}(
            "libraryItemId" => libraryItemId,
            "headers" => Dict{String,Any}("instance-id" => instance_id),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function disassociate_library_item_review(
    instance_id,
    libraryItemId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/catalog.disassociateItemRating",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "libraryItemId" => libraryItemId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    disassociate_qapp_from_user(app_id, instance-id)
    disassociate_qapp_from_user(app_id, instance-id, params::Dict{String,<:Any})

Disassociates a Q App from a user removing the user's access to run the Q App.

# Arguments
- `app_id`: The unique identifier of the Q App to disassociate from the user.
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.

"""
function disassociate_qapp_from_user end

function disassociate_qapp_from_user(
    appId, instance_id; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "POST",
        "/apps.uninstall",
        Dict{String,Any}(
            "appId" => appId, "headers" => Dict{String,Any}("instance-id" => instance_id)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function disassociate_qapp_from_user(
    appId,
    instance_id,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/apps.uninstall",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "appId" => appId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_library_item(instance-id, library_item_id)
    get_library_item(instance-id, library_item_id, params::Dict{String,<:Any})

Retrieves details about a library item for an Amazon Q App, including its metadata,
categories, ratings, and usage statistics.

# Arguments
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.
- `library_item_id`: The unique identifier of the library item to retrieve.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"appId"`: The unique identifier of the Amazon Q App associated with the library item.
"""
function get_library_item end

function get_library_item(
    instance_id, libraryItemId; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "GET",
        "/catalog.getItem",
        Dict{String,Any}(
            "libraryItemId" => libraryItemId,
            "headers" => Dict{String,Any}("instance-id" => instance_id),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function get_library_item(
    instance_id,
    libraryItemId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "GET",
        "/catalog.getItem",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "libraryItemId" => libraryItemId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_qapp(app_id, instance-id)
    get_qapp(app_id, instance-id, params::Dict{String,<:Any})

Retrieves the full details of an Q App, including its definition specifying the cards and
flow.

# Arguments
- `app_id`: The unique identifier of the Q App to retrieve.
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.

"""
function get_qapp end

function get_qapp(appId, instance_id; aws_config::AbstractAWSConfig=current_aws_config())
    return qapps(
        "GET",
        "/apps.get",
        Dict{String,Any}(
            "appId" => appId, "headers" => Dict{String,Any}("instance-id" => instance_id)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function get_qapp(
    appId,
    instance_id,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "GET",
        "/apps.get",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "appId" => appId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_qapp_session(instance-id, session_id)
    get_qapp_session(instance-id, session_id, params::Dict{String,<:Any})

Retrieves the current state and results for an active session of an Amazon Q App.

# Arguments
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.
- `session_id`: The unique identifier of the Q App session to retrieve.

"""
function get_qapp_session end

function get_qapp_session(
    instance_id, sessionId; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "GET",
        "/runtime.getQAppSession",
        Dict{String,Any}(
            "sessionId" => sessionId,
            "headers" => Dict{String,Any}("instance-id" => instance_id),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function get_qapp_session(
    instance_id,
    sessionId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "GET",
        "/runtime.getQAppSession",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "sessionId" => sessionId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    import_document(app_id, card_id, file_contents_base64, file_name, instance-id, scope)
    import_document(app_id, card_id, file_contents_base64, file_name, instance-id, scope, params::Dict{String,<:Any})

Uploads a file that can then be used either as a default in a FileUploadCard from Q App
definition or as a file that is used inside a single Q App run. The purpose of the document
is determined by a scope parameter that indicates whether it is at the app definition level
or at the app session level.

# Arguments
- `app_id`: The unique identifier of the Q App the file is associated with.
- `card_id`: The unique identifier of the card the file is associated with, if applicable.
- `file_contents_base64`: The base64-encoded contents of the file to upload.
- `file_name`: The name of the file being uploaded.
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.
- `scope`: Whether the file is associated with an Q App definition or a specific Q App
  session.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"sessionId"`: The unique identifier of the Q App session the file is associated with, if
  applicable.
"""
function import_document end

function import_document(
    appId,
    cardId,
    fileContentsBase64,
    fileName,
    instance_id,
    scope;
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/apps.importDocument",
        Dict{String,Any}(
            "appId" => appId,
            "cardId" => cardId,
            "fileContentsBase64" => fileContentsBase64,
            "fileName" => fileName,
            "scope" => scope,
            "headers" => Dict{String,Any}("instance-id" => instance_id),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function import_document(
    appId,
    cardId,
    fileContentsBase64,
    fileName,
    instance_id,
    scope,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/apps.importDocument",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "appId" => appId,
                    "cardId" => cardId,
                    "fileContentsBase64" => fileContentsBase64,
                    "fileName" => fileName,
                    "scope" => scope,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_library_items(instance-id)
    list_library_items(instance-id, params::Dict{String,<:Any})

Lists the library items for Amazon Q Apps that are published and available for users in
your Amazon Web Services account.

# Arguments
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"categoryId"`: Optional category to filter the library items by.
- `"limit"`: The maximum number of library items to return in the response.
- `"nextToken"`: The token to request the next page of results.
"""
function list_library_items end

function list_library_items(instance_id; aws_config::AbstractAWSConfig=current_aws_config())
    return qapps(
        "GET",
        "/catalog.list",
        Dict{String,Any}("headers" => Dict{String,Any}("instance-id" => instance_id));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function list_library_items(
    instance_id,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "GET",
        "/catalog.list",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" => Dict{String,Any}("instance-id" => instance_id)
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_qapps(instance-id)
    list_qapps(instance-id, params::Dict{String,<:Any})

Lists the Amazon Q Apps owned by or associated with the user either because they created it
or because they used it from the library in the past. The user identity is extracted from
the credentials used to invoke this operation..

# Arguments
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"limit"`: The maximum number of Q Apps to return in the response.
- `"nextToken"`: The token to request the next page of results.
"""
function list_qapps end

function list_qapps(instance_id; aws_config::AbstractAWSConfig=current_aws_config())
    return qapps(
        "GET",
        "/apps.list",
        Dict{String,Any}("headers" => Dict{String,Any}("instance-id" => instance_id));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function list_qapps(
    instance_id,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "GET",
        "/apps.list",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" => Dict{String,Any}("instance-id" => instance_id)
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Lists the tags associated with an Amazon Q Apps resource.

# Arguments
- `resource_arn`: The Amazon Resource Name (ARN) of the resource whose tags should be
  listed.

"""
function list_tags_for_resource end

function list_tags_for_resource(
    resourceARN; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "GET",
        "/tags/$(resourceARN)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

"""
    predict_qapp(instance-id)
    predict_qapp(instance-id, params::Dict{String,<:Any})

Generates an Amazon Q App definition based on either a conversation or a problem statement
provided as input.The resulting app definition can be used to call CreateQApp. This API
doesn't create Amazon Q Apps directly.

# Arguments
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"options"`: The input to generate the Q App definition from, either a conversation or
  problem statement.
"""
function predict_qapp end

function predict_qapp(instance_id; aws_config::AbstractAWSConfig=current_aws_config())
    return qapps(
        "POST",
        "/apps.predictQApp",
        Dict{String,Any}("headers" => Dict{String,Any}("instance-id" => instance_id));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function predict_qapp(
    instance_id,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/apps.predictQApp",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" => Dict{String,Any}("instance-id" => instance_id)
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    start_qapp_session(app_id, app_version, instance-id)
    start_qapp_session(app_id, app_version, instance-id, params::Dict{String,<:Any})

Starts a new session for an Amazon Q App, allowing inputs to be provided and the app to be
run.  Each Q App session will be condensed into a single conversation in the web
experience.

# Arguments
- `app_id`: The unique identifier of the Q App to start a session for.
- `app_version`: The version of the Q App to use for the session.
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"initialValues"`: Optional initial input values to provide for the Q App session.
- `"tags"`: Optional tags to associate with the new Q App session.
"""
function start_qapp_session end

function start_qapp_session(
    appId, appVersion, instance_id; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "POST",
        "/runtime.startQAppSession",
        Dict{String,Any}(
            "appId" => appId,
            "appVersion" => appVersion,
            "headers" => Dict{String,Any}("instance-id" => instance_id),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function start_qapp_session(
    appId,
    appVersion,
    instance_id,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/runtime.startQAppSession",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "appId" => appId,
                    "appVersion" => appVersion,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    stop_qapp_session(instance-id, session_id)
    stop_qapp_session(instance-id, session_id, params::Dict{String,<:Any})

Stops an active session for an Amazon Q App.This deletes all data related to the session
and makes it invalid for future uses. The results of the session will be persisted as part
of the conversation.

# Arguments
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.
- `session_id`: The unique identifier of the Q App session to stop.

"""
function stop_qapp_session end

function stop_qapp_session(
    instance_id, sessionId; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "POST",
        "/runtime.deleteMiniAppRun",
        Dict{String,Any}(
            "sessionId" => sessionId,
            "headers" => Dict{String,Any}("instance-id" => instance_id),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function stop_qapp_session(
    instance_id,
    sessionId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/runtime.deleteMiniAppRun",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "sessionId" => sessionId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Associates tags with an Amazon Q Apps resource.

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

"""
function tag_resource end

function tag_resource(resourceARN, tags; aws_config::AbstractAWSConfig=current_aws_config())
    return qapps(
        "POST",
        "/tags/$(resourceARN)",
        Dict{String,Any}("tags" => tags);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

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

Disassociates tags from an Amazon Q Apps resource.

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

"""
function untag_resource end

function untag_resource(
    resourceARN, tagKeys; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "DELETE",
        "/tags/$(resourceARN)",
        Dict{String,Any}("tagKeys" => tagKeys);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

"""
    update_library_item(instance-id, library_item_id)
    update_library_item(instance-id, library_item_id, params::Dict{String,<:Any})

Updates the library item for an Amazon Q App.

# Arguments
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.
- `library_item_id`: The unique identifier of the library item to update.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"categories"`: The new categories to associate with the library item.
- `"status"`: The new status to set for the library item, such as \"Published\" or
  \"Hidden\".
"""
function update_library_item end

function update_library_item(
    instance_id, libraryItemId; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "POST",
        "/catalog.updateItem",
        Dict{String,Any}(
            "libraryItemId" => libraryItemId,
            "headers" => Dict{String,Any}("instance-id" => instance_id),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function update_library_item(
    instance_id,
    libraryItemId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/catalog.updateItem",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "libraryItemId" => libraryItemId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_library_item_metadata(instance-id, library_item_id)
    update_library_item_metadata(instance-id, library_item_id, params::Dict{String,<:Any})

Updates the verification status of a library item for an Amazon Q App.

# Arguments
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.
- `library_item_id`: The unique identifier of the updated library item.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"isVerified"`: The verification status of the library item
"""
function update_library_item_metadata end

function update_library_item_metadata(
    instance_id, libraryItemId; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "POST",
        "/catalog.updateItemMetadata",
        Dict{String,Any}(
            "libraryItemId" => libraryItemId,
            "headers" => Dict{String,Any}("instance-id" => instance_id),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function update_library_item_metadata(
    instance_id,
    libraryItemId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/catalog.updateItemMetadata",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "libraryItemId" => libraryItemId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_qapp(app_id, instance-id)
    update_qapp(app_id, instance-id, params::Dict{String,<:Any})

Updates an existing Amazon Q App, allowing modifications to its title, description, and
definition.

# Arguments
- `app_id`: The unique identifier of the Q App to update.
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"appDefinition"`: The new definition specifying the cards and flow for the Q App.
- `"description"`: The new description for the Q App.
- `"title"`: The new title for the Q App.
"""
function update_qapp end

function update_qapp(appId, instance_id; aws_config::AbstractAWSConfig=current_aws_config())
    return qapps(
        "POST",
        "/apps.update",
        Dict{String,Any}(
            "appId" => appId, "headers" => Dict{String,Any}("instance-id" => instance_id)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function update_qapp(
    appId,
    instance_id,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/apps.update",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "appId" => appId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_qapp_session(instance-id, session_id)
    update_qapp_session(instance-id, session_id, params::Dict{String,<:Any})

Updates the session for a given Q App sessionId. This is only valid when at least one card
of the session is in the WAITING state. Data for each WAITING card can be provided as
input. If inputs are not provided, the call will be accepted but session will not move
forward. Inputs for cards that are not in the WAITING status will be ignored.

# Arguments
- `instance-id`: The unique identifier of the Amazon Q Business application environment
  instance.
- `session_id`: The unique identifier of the Q App session to provide input for.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"values"`: The input values to provide for the current state of the Q App session.
"""
function update_qapp_session end

function update_qapp_session(
    instance_id, sessionId; aws_config::AbstractAWSConfig=current_aws_config()
)
    return qapps(
        "POST",
        "/runtime.updateQAppSession",
        Dict{String,Any}(
            "sessionId" => sessionId,
            "headers" => Dict{String,Any}("instance-id" => instance_id),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function update_qapp_session(
    instance_id,
    sessionId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return qapps(
        "POST",
        "/runtime.updateQAppSession",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "sessionId" => sessionId,
                    "headers" => Dict{String,Any}("instance-id" => instance_id),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
