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

"""
    associate_channel_flow(channel_flow_arn, channel_arn, x-amz-chime-bearer)
    associate_channel_flow(channel_flow_arn, channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Associates a channel flow with a channel. Once associated, all messages to that channel go
through channel flow processors. To stop processing, use the DisassociateChannelFlow API.
Only administrators or channel moderators can associate a channel flow. The
x-amz-chime-bearer request header is mandatory. Use the AppInstanceUserArn of the user that
makes the API call as the value in the header.

# Arguments
- `channel_flow_arn`: The ARN of the channel flow.
- `channel_arn`: The ARN of the channel.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user making the API call.

"""
function associate_channel_flow(
    ChannelFlowArn,
    channelArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "PUT",
        "/channels/$(channelArn)/channel-flow",
        Dict{String,Any}(
            "ChannelFlowArn" => ChannelFlowArn,
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function associate_channel_flow(
    ChannelFlowArn,
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "PUT",
        "/channels/$(channelArn)/channel-flow",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "ChannelFlowArn" => ChannelFlowArn,
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    batch_create_channel_membership(member_arns, channel_arn, x-amz-chime-bearer)
    batch_create_channel_membership(member_arns, channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Adds a specified number of users to a channel.

# Arguments
- `member_arns`: The AppInstanceUserArns of the members you want to add to the channel.
- `channel_arn`: The ARN of the channel to which you're adding users.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"Type"`: The membership type of a user, DEFAULT or HIDDEN. Default members are always
  returned as part of ListChannelMemberships. Hidden members are only returned if the type
  filter in ListChannelMemberships equals HIDDEN. Otherwise hidden members are not returned.
  This is only supported by moderators.
"""
function batch_create_channel_membership(
    MemberArns,
    channelArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)/memberships?operation=batch-create",
        Dict{String,Any}(
            "MemberArns" => MemberArns,
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function batch_create_channel_membership(
    MemberArns,
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)/memberships?operation=batch-create",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "MemberArns" => MemberArns,
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    channel_flow_callback(callback_id, channel_message, channel_arn)
    channel_flow_callback(callback_id, channel_message, channel_arn, params::Dict{String,<:Any})

Calls back Chime SDK Messaging with a processing response message. This should be invoked
from the processor Lambda. This is a developer API. You can return one of the following
processing responses:   Update message content or metadata   Deny a message   Make no
changes to the message

# Arguments
- `callback_id`: The identifier passed to the processor by the service when invoked. Use
  the identifier to call back the service.
- `channel_message`: Stores information about the processed message.
- `channel_arn`: The ARN of the channel.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"DeleteResource"`: When a processor determines that a message needs to be DENIED, pass
  this parameter with a value of true.
"""
function channel_flow_callback(
    CallbackId,
    ChannelMessage,
    channelArn;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)?operation=channel-flow-callback",
        Dict{String,Any}("CallbackId" => CallbackId, "ChannelMessage" => ChannelMessage);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function channel_flow_callback(
    CallbackId,
    ChannelMessage,
    channelArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)?operation=channel-flow-callback",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "CallbackId" => CallbackId, "ChannelMessage" => ChannelMessage
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_channel(app_instance_arn, client_request_token, name, x-amz-chime-bearer)
    create_channel(app_instance_arn, client_request_token, name, x-amz-chime-bearer, params::Dict{String,<:Any})

Creates a channel to which you can add users and send messages.  Restriction: You can't
change a channel's privacy.  The x-amz-chime-bearer request header is mandatory. Use the
AppInstanceUserArn of the user that makes the API call as the value in the header.

# Arguments
- `app_instance_arn`: The ARN of the channel request.
- `client_request_token`: The client token for the request. An Idempotency token.
- `name`: The name of the channel.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"Metadata"`: The metadata of the creation request. Limited to 1KB and UTF-8.
- `"Mode"`: The channel mode: UNRESTRICTED or RESTRICTED. Administrators, moderators, and
  channel members can add themselves and other members to unrestricted channels. Only
  administrators and moderators can add members to restricted channels.
- `"Privacy"`: The channel's privacy level: PUBLIC or PRIVATE. Private channels aren't
  discoverable by users outside the channel. Public channels are discoverable by anyone in
  the AppInstance.
- `"Tags"`: The tags for the creation request.
"""
function create_channel(
    AppInstanceArn,
    ClientRequestToken,
    Name,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels",
        Dict{String,Any}(
            "AppInstanceArn" => AppInstanceArn,
            "ClientRequestToken" => ClientRequestToken,
            "Name" => Name,
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_channel(
    AppInstanceArn,
    ClientRequestToken,
    Name,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "AppInstanceArn" => AppInstanceArn,
                    "ClientRequestToken" => ClientRequestToken,
                    "Name" => Name,
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_channel_ban(member_arn, channel_arn, x-amz-chime-bearer)
    create_channel_ban(member_arn, channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Permanently bans a member from a channel. Moderators can't add banned members to a channel.
To undo a ban, you first have to DeleteChannelBan, and then CreateChannelMembership. Bans
are cleaned up when you delete users or channels. If you ban a user who is already part of
a channel, that user is automatically kicked from the channel.  The x-amz-chime-bearer
request header is mandatory. Use the AppInstanceUserArn of the user that makes the API call
as the value in the header.

# Arguments
- `member_arn`: The AppInstanceUserArn of the member being banned.
- `channel_arn`: The ARN of the ban request.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function create_channel_ban(
    MemberArn,
    channelArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)/bans",
        Dict{String,Any}(
            "MemberArn" => MemberArn,
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_channel_ban(
    MemberArn,
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)/bans",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "MemberArn" => MemberArn,
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_channel_flow(app_instance_arn, client_request_token, name, processors)
    create_channel_flow(app_instance_arn, client_request_token, name, processors, params::Dict{String,<:Any})

Creates a channel flow, a container for processors. Processors are AWS Lambda functions
that perform actions on chat messages, such as stripping out profanity. You can associate
channel flows with channels, and the processors in the channel flow then take action on all
messages sent to that channel. This is a developer API. Channel flows process the following
items:   New and updated messages   Persistent and non-persistent messages   The Standard
message type    Channel flows don't process Control or System messages. For more
information about the message types provided by Chime SDK Messaging, refer to Message types
in the Amazon Chime developer guide.

# Arguments
- `app_instance_arn`: The ARN of the channel flow request.
- `client_request_token`: The client token for the request. An Idempotency token.
- `name`: The name of the channel flow.
- `processors`: Information about the processor Lambda functions.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"Tags"`: The tags for the creation request.
"""
function create_channel_flow(
    AppInstanceArn,
    ClientRequestToken,
    Name,
    Processors;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channel-flows",
        Dict{String,Any}(
            "AppInstanceArn" => AppInstanceArn,
            "ClientRequestToken" => ClientRequestToken,
            "Name" => Name,
            "Processors" => Processors,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_channel_flow(
    AppInstanceArn,
    ClientRequestToken,
    Name,
    Processors,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channel-flows",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "AppInstanceArn" => AppInstanceArn,
                    "ClientRequestToken" => ClientRequestToken,
                    "Name" => Name,
                    "Processors" => Processors,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_channel_membership(member_arn, type, channel_arn, x-amz-chime-bearer)
    create_channel_membership(member_arn, type, channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Adds a user to a channel. The InvitedBy field in ChannelMembership is derived from the
request header. A channel member can:   List messages   Send messages   Receive messages
Edit their own messages   Leave the channel   Privacy settings impact this action as
follows:   Public Channels: You do not need to be a member to list messages, but you must
be a member to send messages.   Private Channels: You must be a member to list or send
messages.    The x-amz-chime-bearer request header is mandatory. Use the AppInstanceUserArn
of the user that makes the API call as the value in the header.

# Arguments
- `member_arn`: The AppInstanceUserArn of the member you want to add to the channel.
- `type`: The membership type of a user, DEFAULT or HIDDEN. Default members are always
  returned as part of ListChannelMemberships. Hidden members are only returned if the type
  filter in ListChannelMemberships equals HIDDEN. Otherwise hidden members are not returned.
  This is only supported by moderators.
- `channel_arn`: The ARN of the channel to which you're adding users.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function create_channel_membership(
    MemberArn,
    Type,
    channelArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)/memberships",
        Dict{String,Any}(
            "MemberArn" => MemberArn,
            "Type" => Type,
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_channel_membership(
    MemberArn,
    Type,
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)/memberships",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "MemberArn" => MemberArn,
                    "Type" => Type,
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_channel_moderator(channel_moderator_arn, channel_arn, x-amz-chime-bearer)
    create_channel_moderator(channel_moderator_arn, channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Creates a new ChannelModerator. A channel moderator can:   Add and remove other members of
the channel.   Add and remove other moderators of the channel.   Add and remove user bans
for the channel.   Redact messages in the channel.   List messages in the channel.    The
x-amz-chime-bearer request header is mandatory. Use the AppInstanceUserArn of the user that
makes the API call as the value in the header.

# Arguments
- `channel_moderator_arn`: The AppInstanceUserArn of the moderator.
- `channel_arn`: The ARN of the channel.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function create_channel_moderator(
    ChannelModeratorArn,
    channelArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)/moderators",
        Dict{String,Any}(
            "ChannelModeratorArn" => ChannelModeratorArn,
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_channel_moderator(
    ChannelModeratorArn,
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)/moderators",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "ChannelModeratorArn" => ChannelModeratorArn,
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    delete_channel(channel_arn, x-amz-chime-bearer)
    delete_channel(channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Immediately makes a channel and its memberships inaccessible and marks them for deletion.
This is an irreversible process.  The x-amz-chime-bearer request header is mandatory. Use
the AppInstanceUserArn of the user that makes the API call as the value in the header.

# Arguments
- `channel_arn`: The ARN of the channel being deleted.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function delete_channel(
    channelArn, x_amz_chime_bearer; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "DELETE",
        "/channels/$(channelArn)",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_channel(
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "DELETE",
        "/channels/$(channelArn)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    delete_channel_ban(channel_arn, member_arn, x-amz-chime-bearer)
    delete_channel_ban(channel_arn, member_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Removes a user from a channel's ban list.  The x-amz-chime-bearer request header is
mandatory. Use the AppInstanceUserArn of the user that makes the API call as the value in
the header.

# Arguments
- `channel_arn`: The ARN of the channel from which the AppInstanceUser was banned.
- `member_arn`: The ARN of the AppInstanceUser that you want to reinstate.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function delete_channel_ban(
    channelArn,
    memberArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "DELETE",
        "/channels/$(channelArn)/bans/$(memberArn)",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_channel_ban(
    channelArn,
    memberArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "DELETE",
        "/channels/$(channelArn)/bans/$(memberArn)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Deletes a channel flow, an irreversible process. This is a developer API.   This API works
only when the channel flow is not associated with any channel. To get a list of all
channels that a channel flow is associated with, use the
ListChannelsAssociatedWithChannelFlow API. Use the DisassociateChannelFlow API to
disassociate a channel flow from all channels.

# Arguments
- `channel_flow_arn`: The ARN of the channel flow.

"""
function delete_channel_flow(
    channelFlowArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "DELETE",
        "/channel-flows/$(channelFlowArn)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_channel_flow(
    channelFlowArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "DELETE",
        "/channel-flows/$(channelFlowArn)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    delete_channel_membership(channel_arn, member_arn, x-amz-chime-bearer)
    delete_channel_membership(channel_arn, member_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Removes a member from a channel.  The x-amz-chime-bearer request header is mandatory. Use
the AppInstanceUserArn of the user that makes the API call as the value in the header.

# Arguments
- `channel_arn`: The ARN of the channel from which you want to remove the user.
- `member_arn`: The AppInstanceUserArn of the member that you're removing from the channel.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function delete_channel_membership(
    channelArn,
    memberArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "DELETE",
        "/channels/$(channelArn)/memberships/$(memberArn)",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_channel_membership(
    channelArn,
    memberArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "DELETE",
        "/channels/$(channelArn)/memberships/$(memberArn)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    delete_channel_message(channel_arn, message_id, x-amz-chime-bearer)
    delete_channel_message(channel_arn, message_id, x-amz-chime-bearer, params::Dict{String,<:Any})

Deletes a channel message. Only admins can perform this action. Deletion makes messages
inaccessible immediately. A background process deletes any revisions created by
UpdateChannelMessage.  The x-amz-chime-bearer request header is mandatory. Use the
AppInstanceUserArn of the user that makes the API call as the value in the header.

# Arguments
- `channel_arn`: The ARN of the channel.
- `message_id`: The ID of the message being deleted.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function delete_channel_message(
    channelArn,
    messageId,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "DELETE",
        "/channels/$(channelArn)/messages/$(messageId)",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_channel_message(
    channelArn,
    messageId,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "DELETE",
        "/channels/$(channelArn)/messages/$(messageId)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    delete_channel_moderator(channel_arn, channel_moderator_arn, x-amz-chime-bearer)
    delete_channel_moderator(channel_arn, channel_moderator_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Deletes a channel moderator.  The x-amz-chime-bearer request header is mandatory. Use the
AppInstanceUserArn of the user that makes the API call as the value in the header.

# Arguments
- `channel_arn`: The ARN of the channel.
- `channel_moderator_arn`: The AppInstanceUserArn of the moderator being deleted.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function delete_channel_moderator(
    channelArn,
    channelModeratorArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "DELETE",
        "/channels/$(channelArn)/moderators/$(channelModeratorArn)",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_channel_moderator(
    channelArn,
    channelModeratorArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "DELETE",
        "/channels/$(channelArn)/moderators/$(channelModeratorArn)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    describe_channel(channel_arn, x-amz-chime-bearer)
    describe_channel(channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Returns the full details of a channel in an Amazon Chime AppInstance.  The
x-amz-chime-bearer request header is mandatory. Use the AppInstanceUserArn of the user that
makes the API call as the value in the header.

# Arguments
- `channel_arn`: The ARN of the channel.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function describe_channel(
    channelArn, x_amz_chime_bearer; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_channel(
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    describe_channel_ban(channel_arn, member_arn, x-amz-chime-bearer)
    describe_channel_ban(channel_arn, member_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Returns the full details of a channel ban.  The x-amz-chime-bearer request header is
mandatory. Use the AppInstanceUserArn of the user that makes the API call as the value in
the header.

# Arguments
- `channel_arn`: The ARN of the channel from which the user is banned.
- `member_arn`: The AppInstanceUserArn of the member being banned.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function describe_channel_ban(
    channelArn,
    memberArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/bans/$(memberArn)",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_channel_ban(
    channelArn,
    memberArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/bans/$(memberArn)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Returns the full details of a channel flow in an Amazon Chime AppInstance. This is a
developer API.

# Arguments
- `channel_flow_arn`: The ARN of the channel flow.

"""
function describe_channel_flow(
    channelFlowArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "GET",
        "/channel-flows/$(channelFlowArn)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_channel_flow(
    channelFlowArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channel-flows/$(channelFlowArn)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    describe_channel_membership(channel_arn, member_arn, x-amz-chime-bearer)
    describe_channel_membership(channel_arn, member_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Returns the full details of a user's channel membership.  The x-amz-chime-bearer request
header is mandatory. Use the AppInstanceUserArn of the user that makes the API call as the
value in the header.

# Arguments
- `channel_arn`: The ARN of the channel.
- `member_arn`: The AppInstanceUserArn of the member.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function describe_channel_membership(
    channelArn,
    memberArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/memberships/$(memberArn)",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_channel_membership(
    channelArn,
    memberArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/memberships/$(memberArn)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    describe_channel_membership_for_app_instance_user(app-instance-user-arn, channel_arn, x-amz-chime-bearer)
    describe_channel_membership_for_app_instance_user(app-instance-user-arn, channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

 Returns the details of a channel based on the membership of the specified AppInstanceUser.
 The x-amz-chime-bearer request header is mandatory. Use the AppInstanceUserArn of the user
that makes the API call as the value in the header.

# Arguments
- `app-instance-user-arn`: The ARN of the user in a channel.
- `channel_arn`: The ARN of the channel to which the user belongs.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function describe_channel_membership_for_app_instance_user(
    app_instance_user_arn,
    channelArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)?scope=app-instance-user-membership",
        Dict{String,Any}(
            "app-instance-user-arn" => app_instance_user_arn,
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_channel_membership_for_app_instance_user(
    app_instance_user_arn,
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)?scope=app-instance-user-membership",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "app-instance-user-arn" => app_instance_user_arn,
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    describe_channel_moderated_by_app_instance_user(app-instance-user-arn, channel_arn, x-amz-chime-bearer)
    describe_channel_moderated_by_app_instance_user(app-instance-user-arn, channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Returns the full details of a channel moderated by the specified AppInstanceUser.  The
x-amz-chime-bearer request header is mandatory. Use the AppInstanceUserArn of the user that
makes the API call as the value in the header.

# Arguments
- `app-instance-user-arn`: The ARN of the AppInstanceUser in the moderated channel.
- `channel_arn`: The ARN of the moderated channel.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function describe_channel_moderated_by_app_instance_user(
    app_instance_user_arn,
    channelArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)?scope=app-instance-user-moderated-channel",
        Dict{String,Any}(
            "app-instance-user-arn" => app_instance_user_arn,
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_channel_moderated_by_app_instance_user(
    app_instance_user_arn,
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)?scope=app-instance-user-moderated-channel",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "app-instance-user-arn" => app_instance_user_arn,
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    describe_channel_moderator(channel_arn, channel_moderator_arn, x-amz-chime-bearer)
    describe_channel_moderator(channel_arn, channel_moderator_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Returns the full details of a single ChannelModerator.  The x-amz-chime-bearer request
header is mandatory. Use the AppInstanceUserArn of the user that makes the API call as the
value in the header.

# Arguments
- `channel_arn`: The ARN of the channel.
- `channel_moderator_arn`: The AppInstanceUserArn of the channel moderator.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function describe_channel_moderator(
    channelArn,
    channelModeratorArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/moderators/$(channelModeratorArn)",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function describe_channel_moderator(
    channelArn,
    channelModeratorArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/moderators/$(channelModeratorArn)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    disassociate_channel_flow(channel_arn, channel_flow_arn, x-amz-chime-bearer)
    disassociate_channel_flow(channel_arn, channel_flow_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Disassociates a channel flow from all its channels. Once disassociated, all messages to
that channel stop going through the channel flow processor.  Only administrators or channel
moderators can disassociate a channel flow. The x-amz-chime-bearer request header is
mandatory. Use the AppInstanceUserArn of the user that makes the API call as the value in
the header.

# Arguments
- `channel_arn`: The ARN of the channel.
- `channel_flow_arn`: The ARN of the channel flow.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user making the API call.

"""
function disassociate_channel_flow(
    channelArn,
    channelFlowArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "DELETE",
        "/channels/$(channelArn)/channel-flow/$(channelFlowArn)",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function disassociate_channel_flow(
    channelArn,
    channelFlowArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "DELETE",
        "/channels/$(channelArn)/channel-flow/$(channelFlowArn)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_channel_membership_preferences(channel_arn, member_arn, x-amz-chime-bearer)
    get_channel_membership_preferences(channel_arn, member_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Gets the membership preferences of an AppInstanceUser for the specified channel. The
AppInstanceUser must be a member of the channel. Only the AppInstanceUser who owns the
membership can retrieve preferences. Users in the AppInstanceAdmin and channel moderator
roles can't retrieve preferences for other users. Banned users can't retrieve membership
preferences for the channel from which they are banned.

# Arguments
- `channel_arn`: The ARN of the channel.
- `member_arn`: The AppInstanceUserArn of the member retrieving the preferences.
- `x-amz-chime-bearer`: The AppInstanceUserARN of the user making the API call.

"""
function get_channel_membership_preferences(
    channelArn,
    memberArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/memberships/$(memberArn)/preferences",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_channel_membership_preferences(
    channelArn,
    memberArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/memberships/$(memberArn)/preferences",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_channel_message(channel_arn, message_id, x-amz-chime-bearer)
    get_channel_message(channel_arn, message_id, x-amz-chime-bearer, params::Dict{String,<:Any})

Gets the full details of a channel message.  The x-amz-chime-bearer request header is
mandatory. Use the AppInstanceUserArn of the user that makes the API call as the value in
the header.

# Arguments
- `channel_arn`: The ARN of the channel.
- `message_id`: The ID of the message.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function get_channel_message(
    channelArn,
    messageId,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/messages/$(messageId)",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_channel_message(
    channelArn,
    messageId,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/messages/$(messageId)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_channel_message_status(channel_arn, message_id, x-amz-chime-bearer)
    get_channel_message_status(channel_arn, message_id, x-amz-chime-bearer, params::Dict{String,<:Any})

Gets message status for a specified messageId. Use this API to determine the intermediate
status of messages going through channel flow processing. The API provides an alternative
to retrieving message status if the event was not received because a client wasn't
connected to a websocket.  Messages can have any one of these statuses.  SENT  Message
processed successfully  PENDING  Ongoing processing  FAILED  Processing failed  DENIED
Messasge denied by the processor      This API does not return statuses for denied
messages, because we don't store them once the processor denies them.    Only the message
sender can invoke this API.   The x-amz-chime-bearer request header is mandatory. Use the
AppInstanceUserArn of the user that makes the API call as the value in the header

# Arguments
- `channel_arn`: The ARN of the channel
- `message_id`: The ID of the message.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user making the API call.

"""
function get_channel_message_status(
    channelArn,
    messageId,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/messages/$(messageId)?scope=message-status",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_channel_message_status(
    channelArn,
    messageId,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/messages/$(messageId)?scope=message-status",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

The details of the endpoint for the messaging session.

"""
function get_messaging_session_endpoint(; aws_config::AbstractAWSConfig=global_aws_config())
    return chime_sdk_messaging(
        "GET",
        "/endpoints/messaging-session";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_messaging_session_endpoint(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "GET",
        "/endpoints/messaging-session",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_channel_bans(channel_arn, x-amz-chime-bearer)
    list_channel_bans(channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Lists all the users banned from a particular channel.  The x-amz-chime-bearer request
header is mandatory. Use the AppInstanceUserArn of the user that makes the API call as the
value in the header.

# Arguments
- `channel_arn`: The ARN of the channel.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"max-results"`: The maximum number of bans that you want returned.
- `"next-token"`: The token passed by previous API calls until all requested bans are
  returned.
"""
function list_channel_bans(
    channelArn, x_amz_chime_bearer; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/bans",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_channel_bans(
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/bans",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_channel_flows(app-instance-arn)
    list_channel_flows(app-instance-arn, params::Dict{String,<:Any})

Returns a paginated lists of all the channel flows created under a single Chime. This is a
developer API.

# Arguments
- `app-instance-arn`: The ARN of the app instance.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"max-results"`: The maximum number of channel flows that you want to return.
- `"next-token"`: The token passed by previous API calls until all requested channel flows
  are returned.
"""
function list_channel_flows(
    app_instance_arn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "GET",
        "/channel-flows",
        Dict{String,Any}("app-instance-arn" => app_instance_arn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_channel_flows(
    app_instance_arn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channel-flows",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("app-instance-arn" => app_instance_arn), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_channel_memberships(channel_arn, x-amz-chime-bearer)
    list_channel_memberships(channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Lists all channel memberships in a channel.  The x-amz-chime-bearer request header is
mandatory. Use the AppInstanceUserArn of the user that makes the API call as the value in
the header.  If you want to list the channels to which a specific app instance user
belongs, see the ListChannelMembershipsForAppInstanceUser API.

# Arguments
- `channel_arn`: The maximum number of channel memberships that you want returned.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"max-results"`: The maximum number of channel memberships that you want returned.
- `"next-token"`: The token passed by previous API calls until all requested channel
  memberships are returned.
- `"type"`: The membership type of a user, DEFAULT or HIDDEN. Default members are returned
  as part of ListChannelMemberships if no type is specified. Hidden members are only returned
  if the type filter in ListChannelMemberships equals HIDDEN.
"""
function list_channel_memberships(
    channelArn, x_amz_chime_bearer; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/memberships",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_channel_memberships(
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/memberships",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_channel_memberships_for_app_instance_user(x-amz-chime-bearer)
    list_channel_memberships_for_app_instance_user(x-amz-chime-bearer, params::Dict{String,<:Any})

 Lists all channels that a particular AppInstanceUser is a part of. Only an
AppInstanceAdmin can call the API with a user ARN that is not their own.   The
x-amz-chime-bearer request header is mandatory. Use the AppInstanceUserArn of the user that
makes the API call as the value in the header.

# Arguments
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"app-instance-user-arn"`: The ARN of the AppInstanceUsers
- `"max-results"`: The maximum number of users that you want returned.
- `"next-token"`: The token returned from previous API requests until the number of channel
  memberships is reached.
"""
function list_channel_memberships_for_app_instance_user(
    x_amz_chime_bearer; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "GET",
        "/channels?scope=app-instance-user-memberships",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_channel_memberships_for_app_instance_user(
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels?scope=app-instance-user-memberships",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_channel_messages(channel_arn, x-amz-chime-bearer)
    list_channel_messages(channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

List all the messages in a channel. Returns a paginated list of ChannelMessages. By
default, sorted by creation timestamp in descending order.  Redacted messages appear in the
results as empty, since they are only redacted, not deleted. Deleted messages do not appear
in the results. This action always returns the latest version of an edited message. Also,
the x-amz-chime-bearer request header is mandatory. Use the AppInstanceUserArn of the user
that makes the API call as the value in the header.

# Arguments
- `channel_arn`: The ARN of the channel.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"max-results"`: The maximum number of messages that you want returned.
- `"next-token"`: The token passed by previous API calls until all requested messages are
  returned.
- `"not-after"`: The final or ending time stamp for your requested messages.
- `"not-before"`: The initial or starting time stamp for your requested messages.
- `"sort-order"`: The order in which you want messages sorted. Default is Descending, based
  on time created.
"""
function list_channel_messages(
    channelArn, x_amz_chime_bearer; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/messages",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_channel_messages(
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/messages",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_channel_moderators(channel_arn, x-amz-chime-bearer)
    list_channel_moderators(channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Lists all the moderators for a channel.  The x-amz-chime-bearer request header is
mandatory. Use the AppInstanceUserArn of the user that makes the API call as the value in
the header.

# Arguments
- `channel_arn`: The ARN of the channel.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"max-results"`: The maximum number of moderators that you want returned.
- `"next-token"`: The token passed by previous API calls until all requested moderators are
  returned.
"""
function list_channel_moderators(
    channelArn, x_amz_chime_bearer; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/moderators",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_channel_moderators(
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels/$(channelArn)/moderators",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_channels(app-instance-arn, x-amz-chime-bearer)
    list_channels(app-instance-arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Lists all Channels created under a single Chime App as a paginated list. You can specify
filters to narrow results.  Functionality & restrictions    Use privacy = PUBLIC to
retrieve all public channels in the account.   Only an AppInstanceAdmin can set privacy =
PRIVATE to list the private channels in an account.    The x-amz-chime-bearer request
header is mandatory. Use the AppInstanceUserArn of the user that makes the API call as the
value in the header.

# Arguments
- `app-instance-arn`: The ARN of the AppInstance.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"max-results"`: The maximum number of channels that you want to return.
- `"next-token"`: The token passed by previous API calls until all requested channels are
  returned.
- `"privacy"`: The privacy setting. PUBLIC retrieves all the public channels. PRIVATE
  retrieves private channels. Only an AppInstanceAdmin can retrieve private channels.
"""
function list_channels(
    app_instance_arn, x_amz_chime_bearer; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "GET",
        "/channels",
        Dict{String,Any}(
            "app-instance-arn" => app_instance_arn,
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_channels(
    app_instance_arn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "app-instance-arn" => app_instance_arn,
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_channels_associated_with_channel_flow(channel-flow-arn)
    list_channels_associated_with_channel_flow(channel-flow-arn, params::Dict{String,<:Any})

Lists all channels associated with a specified channel flow. You can associate a channel
flow with multiple channels, but you can only associate a channel with one channel flow.
This is a developer API.

# Arguments
- `channel-flow-arn`: The ARN of the channel flow.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"max-results"`: The maximum number of channels that you want to return.
- `"next-token"`: The token passed by previous API calls until all requested channels are
  returned.
"""
function list_channels_associated_with_channel_flow(
    channel_flow_arn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "GET",
        "/channels?scope=channel-flow-associations",
        Dict{String,Any}("channel-flow-arn" => channel_flow_arn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_channels_associated_with_channel_flow(
    channel_flow_arn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels?scope=channel-flow-associations",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("channel-flow-arn" => channel_flow_arn), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_channels_moderated_by_app_instance_user(x-amz-chime-bearer)
    list_channels_moderated_by_app_instance_user(x-amz-chime-bearer, params::Dict{String,<:Any})

A list of the channels moderated by an AppInstanceUser.  The x-amz-chime-bearer request
header is mandatory. Use the AppInstanceUserArn of the user that makes the API call as the
value in the header.

# Arguments
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"app-instance-user-arn"`: The ARN of the user in the moderated channel.
- `"max-results"`: The maximum number of channels in the request.
- `"next-token"`: The token returned from previous API requests until the number of
  channels moderated by the user is reached.
"""
function list_channels_moderated_by_app_instance_user(
    x_amz_chime_bearer; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "GET",
        "/channels?scope=app-instance-user-moderated-channels",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_channels_moderated_by_app_instance_user(
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "GET",
        "/channels?scope=app-instance-user-moderated-channels",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Lists the tags applied to an Amazon Chime SDK messaging resource.

# Arguments
- `arn`: The ARN of the resource.

"""
function list_tags_for_resource(arn; aws_config::AbstractAWSConfig=global_aws_config())
    return chime_sdk_messaging(
        "GET",
        "/tags",
        Dict{String,Any}("arn" => arn);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_tags_for_resource(
    arn, params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "GET",
        "/tags",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("arn" => arn), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    put_channel_membership_preferences(preferences, channel_arn, member_arn, x-amz-chime-bearer)
    put_channel_membership_preferences(preferences, channel_arn, member_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Sets the membership preferences of an AppInstanceUser for the specified channel. The
AppInstanceUser must be a member of the channel. Only the AppInstanceUser who owns the
membership can set preferences. Users in the AppInstanceAdmin and channel moderator roles
can't set preferences for other users. Banned users can't set membership preferences for
the channel from which they are banned.

# Arguments
- `preferences`: The channel membership preferences of an AppInstanceUser .
- `channel_arn`: The ARN of the channel.
- `member_arn`: The AppInstanceUserArn of the member setting the preferences.
- `x-amz-chime-bearer`: The AppInstanceUserARN of the user making the API call.

"""
function put_channel_membership_preferences(
    Preferences,
    channelArn,
    memberArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "PUT",
        "/channels/$(channelArn)/memberships/$(memberArn)/preferences",
        Dict{String,Any}(
            "Preferences" => Preferences,
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function put_channel_membership_preferences(
    Preferences,
    channelArn,
    memberArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "PUT",
        "/channels/$(channelArn)/memberships/$(memberArn)/preferences",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "Preferences" => Preferences,
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    redact_channel_message(channel_arn, message_id, x-amz-chime-bearer)
    redact_channel_message(channel_arn, message_id, x-amz-chime-bearer, params::Dict{String,<:Any})

Redacts message content, but not metadata. The message exists in the back end, but the
action returns null content, and the state shows as redacted.  The x-amz-chime-bearer
request header is mandatory. Use the AppInstanceUserArn of the user that makes the API call
as the value in the header.

# Arguments
- `channel_arn`: The ARN of the channel containing the messages that you want to redact.
- `message_id`: The ID of the message being redacted.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function redact_channel_message(
    channelArn,
    messageId,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)/messages/$(messageId)?operation=redact",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function redact_channel_message(
    channelArn,
    messageId,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)/messages/$(messageId)?operation=redact",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    send_channel_message(client_request_token, content, persistence, type, channel_arn, x-amz-chime-bearer)
    send_channel_message(client_request_token, content, persistence, type, channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Sends a message to a particular channel that the member is a part of.  The
x-amz-chime-bearer request header is mandatory. Use the AppInstanceUserArn of the user that
makes the API call as the value in the header. Also, STANDARD messages can contain 4KB of
data and the 1KB of metadata. CONTROL messages can contain 30 bytes of data and no
metadata.

# Arguments
- `client_request_token`: The Idempotency token for each client request.
- `content`: The content of the message.
- `persistence`: Boolean that controls whether the message is persisted on the back end.
  Required.
- `type`: The type of message, STANDARD or CONTROL.
- `channel_arn`: The ARN of the channel.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"MessageAttributes"`: The attributes for the message, used for message filtering along
  with a FilterRule defined in the PushNotificationPreferences.
- `"Metadata"`: The optional metadata for each message.
- `"PushNotification"`: The push notification configuration of the message.
"""
function send_channel_message(
    ClientRequestToken,
    Content,
    Persistence,
    Type,
    channelArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)/messages",
        Dict{String,Any}(
            "ClientRequestToken" => ClientRequestToken,
            "Content" => Content,
            "Persistence" => Persistence,
            "Type" => Type,
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function send_channel_message(
    ClientRequestToken,
    Content,
    Persistence,
    Type,
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/channels/$(channelArn)/messages",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "ClientRequestToken" => ClientRequestToken,
                    "Content" => Content,
                    "Persistence" => Persistence,
                    "Type" => Type,
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                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})

Applies the specified tags to the specified Amazon Chime SDK messaging resource.

# Arguments
- `resource_arn`: The resource ARN.
- `tags`: The tag key-value pairs.

"""
function tag_resource(ResourceARN, Tags; aws_config::AbstractAWSConfig=global_aws_config())
    return chime_sdk_messaging(
        "POST",
        "/tags?operation=tag-resource",
        Dict{String,Any}("ResourceARN" => ResourceARN, "Tags" => Tags);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function tag_resource(
    ResourceARN,
    Tags,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/tags?operation=tag-resource",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}("ResourceARN" => ResourceARN, "Tags" => Tags),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Removes the specified tags from the specified Amazon Chime SDK messaging resource.

# Arguments
- `resource_arn`: The resource ARN.
- `tag_keys`: The tag keys.

"""
function untag_resource(
    ResourceARN, TagKeys; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "POST",
        "/tags?operation=untag-resource",
        Dict{String,Any}("ResourceARN" => ResourceARN, "TagKeys" => TagKeys);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function untag_resource(
    ResourceARN,
    TagKeys,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "POST",
        "/tags?operation=untag-resource",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}("ResourceARN" => ResourceARN, "TagKeys" => TagKeys),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_channel(mode, name, channel_arn, x-amz-chime-bearer)
    update_channel(mode, name, channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

Update a channel's attributes.  Restriction: You can't change a channel's privacy.   The
x-amz-chime-bearer request header is mandatory. Use the AppInstanceUserArn of the user that
makes the API call as the value in the header.

# Arguments
- `mode`: The mode of the update request.
- `name`: The name of the channel.
- `channel_arn`: The ARN of the channel.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"Metadata"`: The metadata for the update request.
"""
function update_channel(
    Mode,
    Name,
    channelArn,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "PUT",
        "/channels/$(channelArn)",
        Dict{String,Any}(
            "Mode" => Mode,
            "Name" => Name,
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function update_channel(
    Mode,
    Name,
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "PUT",
        "/channels/$(channelArn)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "Mode" => Mode,
                    "Name" => Name,
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_channel_flow(name, processors, channel_flow_arn)
    update_channel_flow(name, processors, channel_flow_arn, params::Dict{String,<:Any})

Updates channel flow attributes. This is a developer API.

# Arguments
- `name`: The name of the channel flow.
- `processors`: Information about the processor Lambda functions
- `channel_flow_arn`: The ARN of the channel flow.

"""
function update_channel_flow(
    Name, Processors, channelFlowArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "PUT",
        "/channel-flows/$(channelFlowArn)",
        Dict{String,Any}("Name" => Name, "Processors" => Processors);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function update_channel_flow(
    Name,
    Processors,
    channelFlowArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "PUT",
        "/channel-flows/$(channelFlowArn)",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("Name" => Name, "Processors" => Processors), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_channel_message(channel_arn, message_id, x-amz-chime-bearer)
    update_channel_message(channel_arn, message_id, x-amz-chime-bearer, params::Dict{String,<:Any})

Updates the content of a message.  The x-amz-chime-bearer request header is mandatory. Use
the AppInstanceUserArn of the user that makes the API call as the value in the header.

# Arguments
- `channel_arn`: The ARN of the channel.
- `message_id`: The ID string of the message being updated.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"Content"`: The content of the message being updated.
- `"Metadata"`: The metadata of the message being updated.
"""
function update_channel_message(
    channelArn,
    messageId,
    x_amz_chime_bearer;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "PUT",
        "/channels/$(channelArn)/messages/$(messageId)",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function update_channel_message(
    channelArn,
    messageId,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "PUT",
        "/channels/$(channelArn)/messages/$(messageId)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_channel_read_marker(channel_arn, x-amz-chime-bearer)
    update_channel_read_marker(channel_arn, x-amz-chime-bearer, params::Dict{String,<:Any})

The details of the time when a user last read messages in a channel.  The
x-amz-chime-bearer request header is mandatory. Use the AppInstanceUserArn of the user that
makes the API call as the value in the header.

# Arguments
- `channel_arn`: The ARN of the channel.
- `x-amz-chime-bearer`: The AppInstanceUserArn of the user that makes the API call.

"""
function update_channel_read_marker(
    channelArn, x_amz_chime_bearer; aws_config::AbstractAWSConfig=global_aws_config()
)
    return chime_sdk_messaging(
        "PUT",
        "/channels/$(channelArn)/readMarker",
        Dict{String,Any}(
            "headers" => Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function update_channel_read_marker(
    channelArn,
    x_amz_chime_bearer,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return chime_sdk_messaging(
        "PUT",
        "/channels/$(channelArn)/readMarker",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "headers" =>
                        Dict{String,Any}("x-amz-chime-bearer" => x_amz_chime_bearer),
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end


text:
""" `sys = tf(num, den, Ts=0), sys = tf(gain, Ts=0)`

Create as a fraction of polynomials:

`sys::TransferFunction{SisoRational{T,TR}} = numerator/denominator`
where T is the type of the coefficients in the polynomial.

`num`: the coefficients of the numerator polynomial. Either scalar or vector to create SISO systems
or an array of vectors to create MIMO system.

`den`: the coefficients of the denominator polynomial. Either vector to create SISO systems
or an array of vectors to create MIMO system.

`Ts`: Sample time or `0` for continuous system.

Other uses:
`tf(sys)`: Convert `sys` to `tf` form.
`tf("s")`, `tf("z")`: Create the continous transferfunction `s`.

See also: `zpk`, `ss`
"""
function tf(num::AbstractVecOrMat{<:AbstractVector{T1}}, den::AbstractVecOrMat{<:AbstractVector{T2}}, Ts::Real=0.0) where {T1<:Number, T2<:Number}
    # Validate input and output dimensions match
    ny, nu = size(num, 1), size(num, 2)
    if (ny, nu) != (size(den, 1), size(den, 2))
        error("num and den dimensions must match")
    end

    T = promote_type(T1,T2)
    matrix = Matrix{SisoRational{T}}(undef, ny, nu)
    for o=1:ny
        for i=1:nu
            matrix[o, i] = SisoRational{T}(Vector{T}(num[o, i]), Vector{T}(den[o, i]))
        end
    end
    return TransferFunction{SisoRational{T}}(matrix, Ts)
end
function tf(num::AbstractVector{T1}, den::AbstractVector{T2}, Ts::Real=0.0) where {T1<:Number, T2<:Number}
    T = promote_type(T1, T2)
    return TransferFunction{SisoRational{T}}(fill(SisoRational{T}(num, den), 1, 1), Ts)
end
tf(num::Number, den::Vector, Ts::Real=0.0) = tf([num], den, Ts)

# Cases for just static gain
function tf(D::AbstractArray{T}, Ts::Real=0.0) where {T<:Number}
    ny, nu = size(D, 1), size(D, 2)

    matrix = Matrix{SisoRational{T}}(undef, ny, nu)
    for i in eachindex(D)
        matrix[i] = SisoRational{T}([D[i]], [one(T)])
    end
    return TransferFunction{SisoRational{T}}(matrix, Float64(Ts))
end
tf(n::Number, Ts::Real=0; kwargs...) = tf([n], Ts; kwargs...)

tf(sys::StateSpace) = convert(TransferFunction, sys) # NOTE: Would perhaps like to write TransferFunction{SisoRational}, but couldn't get this to work...

function tf(G::TransferFunction{<:SisoTf{T}}) where {T<:Number}
    convert(TransferFunction{SisoRational{T}}, G)
end

# Function for creation of 's' or 'z' var
function tf(var::AbstractString)
    var != "s" && error("var must be 's' for continuous time tf.")
    return tf([1, 0], [1])
end
function tf(var::AbstractString, Ts::Real)
    var != "z" && error("var must be 'z' for discrete time tf.")
    Ts == 0 && error("Ts must not be 0 for discrete time tf.")
    return tf([1, 0], [1], Ts)
end

## Constructors for polynomial inputs
function tf(num::AbstractArray{PT}, den::AbstractArray{PT},  Ts::Real=0.0) where {T<:Number, PT <: Polynomials.Polynomial{T}}
    ny, nu = size(num, 1), size(num, 2)
    if (ny, nu) != (size(den, 1), size(den, 2))
        error("num and den dimensions must match")
    end

    matrix = Matrix{SisoRational{T}}(undef, ny, nu)
    for o=1:ny
        for i=1:nu
            matrix[o, i] = SisoRational{T}(num[o, i], den[o, i])
        end
    end
    return TransferFunction{SisoRational{T}}(matrix, Ts)
end

function tf(num::PT, den::PT,  Ts::Real=0.0) where {T<:Number, PT <: Polynomials.Polynomial{T}}
    tf(fill(num,1,1), fill(den,1,1), Ts)
end

ext: jl


text:
function layer_norm(sz::Integer, activation=identity; affine::Bool=true,
                    epsilon::Real=1.0f-5)
    if affine
        return Chain(WrappedFunction(x -> normalise(x, identity; dims=1, epsilon=epsilon)),
                     Scale(sz, activation))
    else
        return WrappedFunction(x -> normalise(x, activation; dims=1, epsilon=epsilon))
    end
end


text:
struct RewardModelMDP1 <: MDP{Int, Int} end
POMDPs.reward(m::RewardModelMDP1, s, a) = s + a
rm = StateActionReward(RewardModelMDP1())
@test rm(1, 1) == 2

struct RewardModelMDP2 <: MDP{Int, Int} end
POMDPs.reward(m::RewardModelMDP2, s, a, sp) = s + a
POMDPs.transition(m::RewardModelMDP2, s, a) = Deterministic(s + a)
POMDPs.states(m::RewardModelMDP2) = 1:10
POMDPs.actions(m::RewardModelMDP2) = 1:10
POMDPs.stateindex(m::RewardModelMDP2, s) = s
POMDPs.actionindex(m::RewardModelMDP2, a) = a
rm = StateActionReward(RewardModelMDP2())
@test rm(1, 1) == 2

struct RewardModelPOMDP1 <: POMDP{Int, Int, Int} end
POMDPs.reward(m::RewardModelPOMDP1, s, a, sp, o) = s + a
POMDPs.transition(m::RewardModelPOMDP1, s, a) = Deterministic(s + a)
POMDPs.states(m::RewardModelPOMDP1) = 1:10
POMDPs.actions(m::RewardModelPOMDP1) = 1:10
POMDPs.observation(m::RewardModelPOMDP1, s, a, sp) = Deterministic(s + a + sp)
POMDPs.stateindex(m::RewardModelPOMDP1, s) = s
POMDPs.actionindex(m::RewardModelPOMDP1, a) = a
rm = StateActionReward(RewardModelPOMDP1())
@test rm(1, 1) == 2

m = BabyPOMDP()
rm = LazyCachedSAR(m)
for s in states(m)
    for a in actions(m)
        @test reward(m, s, a) == rm(s, a)
    end
end

m = SimpleGridWorld()
rm = LazyCachedSAR(m)
for s in states(m)
    for a in actions(m)
        @test reward(m, s, a) == rm(s, a)
    end
end


text:
#######################################################################
# Utilities for using multisets
#######################################################################

# For Julia < 1.5 compatibility
const DICT_MERGE! = @static VERSION >= v"1.5" ? mergewith! : merge!

# Multiset → Int
# Returns the number of unique values in `ms`
lengthUnique(ms :: Multiset) = length(ms.data)

# (Multiset, Multiset...) → Multiset
# SIDE EFFECT: modifies `ms`
# Adds up all data from `others` to `ms`
# For example, ("a":2, "b":1) with ("c":2, "b":2) is ("a":2, "b":3, "c":2)
unionMergeWith!(ms :: Multiset, others :: Multiset...) = begin
    DICT_MERGE!(+, ms.data, map(ms -> ms.data, others)...)
    ms
end

max_stars_repo_name: prl-julia/julia-sub

max_issues_repo_name: prl-julia/julia-sub

max_forks_repo_name: prl-julia/julia-sub


text:
# This file was generated by the Julia Swagger Code Generator
# Do not modify this file directly. Modify the swagger specification instead.

mutable struct FileStatuses <: SwaggerModel
    fileStatus::Any # spec type: Union{ Nothing, Vector{FileStatusProperties} } # spec name: fileStatus

    function FileStatuses(;fileStatus=nothing)
        o = new()
        validate_property(FileStatuses, Symbol("fileStatus"), fileStatus)
        setfield!(o, Symbol("fileStatus"), fileStatus)
        o
    end
end # type FileStatuses

const _property_map_FileStatuses = Dict{Symbol,Symbol}(Symbol("fileStatus")=>Symbol("fileStatus"))
const _property_types_FileStatuses = Dict{Symbol,String}(Symbol("fileStatus")=>"Vector{FileStatusProperties}")
Base.propertynames(::Type{ FileStatuses }) = collect(keys(_property_map_FileStatuses))
Swagger.property_type(::Type{ FileStatuses }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_FileStatuses[name]))}
Swagger.field_name(::Type{ FileStatuses }, property_name::Symbol) =  _property_map_FileStatuses[property_name]

function check_required(o::FileStatuses)
    true
end

function validate_property(::Type{ FileStatuses }, name::Symbol, val)
end


text:
module problem128

description = """
Hexagonal tile differences

A hexagonal tile with number 1 is surrounded by a ring of six hexagonal tiles, starting at "12 o'clock" and numbering the tiles 2 to 7 in an anti-clockwise direction.
New rings are added in the same fashion, with the next rings being numbered 8 to 19, 20 to 37, 38 to 61, and so on. The diagram below shows the first three rings.
By finding the difference between tile n and each its six neighbours we shall define PD(n) to be the number of those differences which are prime.
For example, working clockwise around tile 8 the differences are 12, 29, 11, 6, 1, and 13. So PD(8) = 3.
In the same way, the differences around tile 17 are 1, 17, 16, 1, 11, and 10, hence PD(17) = 2.
It can be shown that the maximum value of PD(n) is 3.

If all of the tiles for which PD(n) = 3 are listed in ascending order to form a sequence, the 10th tile would be 271.
Find the 2000th tile in this sequence.
"""

# Value at the top of each ring is calculated using arithmetic series
# a = First element, d = common difference, n = num terms to sum
arithmetic_series(a, d, n) = div((2*a + (n-1)*d)*n,2)

# The value at the start of each ring
ringstart(ring :: Int) = ring == 1 ? 1 : 2 + arithmetic_series(0, 6, ring-1)

# The value at the start of one side in a ring
sidestart(ring :: Int, side :: Int) = ringstart(ring) + (side-1) * (ring-1)

# The value at a given ring, side and position along the side
valueat(ring :: Int, side :: Int, pos :: Int) = sidestart(ring, side) + (pos-1)

# Calculates the neighbours of a given tile, given by its ring, side and position
# Special care required at side=1,pos=1 and side=6,pos=ring-1
# There are always 2 tiles adjacent in the same ring
# When pos = 1, there are 3 adjacent on the next ring, and 1 on the previous
# otherwise, there are 2 adjacent on the next ring, and 2 on the previous
function neighbours(ring :: Int, side :: Int, pos :: Int)
  a = valueat(ring, side, pos)
  b = (side == 1 && pos == 1) ? valueat(ring, 6, ring-1) : (a-1)
  c = (side == 6 && pos == (ring-1)) ? valueat(ring, 1, 1) : (a+1)
  d = (side == 6 && pos == (ring-1)) ? valueat(ring-1, 1, 1) : valueat(ring-1, side, pos)
  if pos == 1
    e = valueat(ring+1, side, pos)
    f = valueat(ring+1, side, pos+1)
    g = valueat(ring+1, side == 1 ? 6 : side-1, ring)
  else
    e = valueat(ring-1, side, pos-1)
    f = valueat(ring+1, side, pos)
    g = valueat(ring+1, side, pos+1)
  end
  return [b,c,d,e,f,g]
end

# search for the N'th value having 3 adjacent tiles with prime difference
# Testing found that these only occur at side=1, pos=1 and side=6, pos=ring-1
function search(N=2000)
  found = 1 # 1 is a 3 prime diff with 3,4,6
  for ring = 2:Inf, (side, pos) in [(1, 1), (6, ring-1)]
    v = valueat(ring, side, pos)
    n = neighbours(ring, side, pos)
    diffs = abs(n - v)
    if count(isprime, diffs) == 3
      found += 1
    end
    if found == N
      return v
    end
  end
end

using Base.Test

@test ringstart(1) == 1
@test ringstart(2) == 2
@test ringstart(3) == 8
@test ringstart(4) == 20
@test sidestart(2, 1) == 2
@test sidestart(2, 3) == 4
@test sidestart(4, 6) == 35
@test valueat(4, 1, 1) == 20
@test valueat(4, 6, 3) == 37
@test sort(neighbours(2, 1, 1)) == [1, 3, 7, 8, 9, 19]
@test sort(neighbours(3, 2, 2)) == [3, 4, 10, 12, 24, 25]
@test sort(neighbours(3, 6, 2)) == [2, 7, 8, 18, 36, 37]
@test search(10) == 271
end

max_stars_repo_name: mbuhot/mbuhot-euler-solutions

max_issues_repo_name: mbuhot/mbuhot-euler-solutions

max_forks_repo_name: mbuhot/mbuhot-euler-solutions


text:
#= Update all packages in notebooks to most recently tagged =#

using Pkg
Pkg.activate(@__DIR__)

using Pluto

notebooks=["nbproto.jl",
           "api-update.jl",
           "flux-reconstruction.jl",
           "problemcase.jl"
           ]

for notebook in notebooks
    println("Updating packages in $(notebook):")
    Pluto.activate_notebook_environment(joinpath(@__DIR__,notebook))
    Pkg.status()
    Pkg.update()
    Pkg.status()
    println("Updating of  $(notebook) done\n")
    Pkg.activate(@__DIR__)
end